Может ли сверточная нейронная сеть принимать в качестве входных изображений разные размеры?

10

Я работаю в сети свертки для распознавания изображений, и мне было интересно, смогу ли я вводить изображения разных размеров (хотя и не сильно отличается).

Об этом проекте: https://github.com/harvardnlp/im2markup

Они говорят:

and group images of similar sizes to facilitate batching

Таким образом, даже после предварительной обработки изображения по-прежнему имеют разные размеры, что имеет смысл, поскольку они не будут вырезать некоторую часть формулы.

Есть ли проблемы с использованием разных размеров? Если есть, как я должен подойти к этой проблеме (поскольку формулы не будут все соответствовать одному и тому же размеру изображения)?

Любой вклад будет высоко ценится

Грэм Слик
источник

Ответы:

2

Есть ли проблемы с использованием разных размеров? Если есть, как я должен подойти к этой проблеме (поскольку формулы не будут все соответствовать одному и тому же размеру изображения)?

Это зависит от архитектуры нейронной сети. Некоторые архитектуры предполагают, что все изображения имеют одинаковое измерение, другие (например, im2markup) не делают такого предположения. Я полагаю, что тот факт, что im2markup допускает изображения различной ширины, не вызывает никаких проблем, поскольку они используют RNN, который сканирует выходные данные слоя свертки.

введите описание изображения здесь

группировать изображения одинаковых размеров для облегчения дозирования

Это обычно ускоряет процесс, избегая добавления слишком большого количества отступов.

Франк Дернонкур
источник
2

Рассматривали ли вы просто масштабирование изображений на этапе предварительной обработки? Интуитивно понятно, что человек, обращенный к масштабированному изображению, все равно сможет распознавать те же функции и объекты, и нет очевидной причины, по которой CNN не сможет сделать то же самое с масштабированным изображением.

Я думаю, что масштабирование изображений до одинакового размера может быть проще, чем пытаться заставить сверточную сеть обрабатывать изображения разных размеров, что, я думаю, было бы там, на земле «оригинальных исследований». Вы, конечно, можете сделать слои конвона обработкой изображений любого размера без переподготовки. Тем не менее, выводом коннета, как правило, будет какой-то классификатор, и, вероятно, он будет работать не так хорошо, если вы будете вводить входные данные другого размера, я бы предположил.

Другим подходом было бы просто заполнить изображения нулями. Но представьте себе, что вы интуитивно смотрите на крошечную фотографию, дополненную черными полями, или можете увеличить ее, чтобы она представляла разумную дугу в поле зрения. Что бы вы сделали? Что легче увидеть?

Хью Перкинс
источник
масштабирование не снижает качество изображения, внося ошибки и деформируя функции, если изображение уже имеет низкое разрешение, то масштабирование снизит качество изображения до такой степени, что даже люди не смогут легко распознать, но немасштабированное изображение может быть распознано.
Викрам Бхат
1
у вас есть пример изображения, которое можно узнать людям, если вы не примените масштабирование, а затем оно станет неузнаваемым?
Хью Перкинс
Мне тоже интересно Когда я пытаюсь использовать существующую обученную модель из keras, я думаю, что я мог бы масштабировать изображение, чтобы оно соответствовало интерфейсу InceptionV3 (299x299 из 32x32 -> CIFAR10). Я думаю, что масштабирование теряет качество. Но я думаю, что правильным способом было бы исключить выходной FC и указать форму ввода для 32x32. Я думаю, что это потребует переподготовки, так как веса входного слоя будут случайными.
Джои Карсон
Масштабирование снижает качество, но помогает обобщению: есть много работ, в которых отмечается заметный выигрыш в распознавании, когда размытие Гаусса применялось перед тренировкой. Интуитивно понятно, что у вас есть больше разных входных выборок, которые напоминают одно «размытое» изображение, что делает классификацию более надежной.
Матье,