Как реализовать интеллектуальный кроппер (убирать рамки с изображения) с помощью глубокого обучения (keras, tensorflow, theano)?
Здравствуйте. Есть необходимость в интеллектуальном кроппере изображений(если на изображении есть рамка, ее нужно убирать и возвращать исходное изображение без рамки, как бы кропнутое).
Предполагаю, что на вход нужно подавать самые разные изображения(с рамками и без), а на выход(ставить в соответствие) -точно такие же изображения, но кропнутые (и возможно растянутые до изначального размера) в случае, если на исходном изображении была рамка.
Для обучения хочу использовать Keras/ Tensorflow и многослойные глубокие сети (convolution/pooling), но еще не до конца (в силу малого опыта работы с нейросетями и Keras) понимаю, как организовать структуру сети и правильную ли относительно датасета философию я выбрал.
Возможно, стоит сделать бинарный классификатор (определять, есть/ нет на изображении рамки), и только потом как-то кропать(вохможно, другим инструментом, например с помощью openCV или других инструментов работы с изображениями)
Если кто занимался подобным вопросом, посоветуйте, пожалуйста, в какую сторону копать. Заранее премного благодарен за потраченное на чтение и возможную помощь время.
вот и я смотрю в эту сторону, но не до конца понимаю, как сформулировать задачу. то ли сделать так, чтобы просто определялись рамки и по их координатам кропать изображение, то ли сделать так, чтобы на вход подавалось изображение, а на выходе, если изображение было с рамкой, то оно было без рамки.
https://towardsdatascience.com/background-removal-... -- вот хорошая статья на почти похожую тему -- они пытаются отделить фон с изображения
В идеале U-net тебе даст чёрно-белое изображение, где пиксели принадлежащие рамке окрашены в чёрный, а всё остальное -- в белый. По этому выходу обрезать рамку можно уже как угодно.
Для обучения, конечно потребуется набор размеченных изображений(25-30 должно хватить), на которых выделена рамка ( в таком-же формате, как и хочется получать результат.
Также по идее должно получиться обучить сетку выдавать координаты левого-верхнего и правого-нижнего внутренних углов рамки -- взять что-то типа обученного на ImageNet-е res-net/yolo/ssd выкинуть полносвязные слои и дообучить на свою задачу, но для этого скорее-всего потребуется большая обучающая выборка..
оно то как бы так, но рамка может быть как фоном по контуру, так и рамкой картины, например. мне кажется, что без интеллектуальной составляющей эту задачу не решить