Классификация изображений с высоким разрешением

Обычно предварительно обученные сети, такие как VGG16 / Inception и т. Д., Работают с низким разрешением, например ‹500px.

Можно ли добавить сверточный слой (или два) с высоким разрешением перед самым первым слоем предварительно обученного VGG16 / Inception, чтобы сеть могла потреблять изображения с высоким разрешением?

Насколько я знаю - первые уровни труднее всего обучать, для обучения требовалось много данных и ресурсов.

Интересно, удастся ли заморозить предварительно обученную сеть и обучить только недавно подключенный слой с высоким разрешением на средней карте графического процессора и около 3000 примеров? Можно ли это сделать за пару часов?

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

P.S.

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


person Sergey Devitsyn    schedule 22.06.2017    source источник
comment
каков размер ваших входных изображений?   -  person Harsha Pokkalla    schedule 23.06.2017
comment
Около 1024x1024   -  person Sergey Devitsyn    schedule 23.06.2017


Ответы (2)


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

Вместо этого вы можете попробовать изменить архитектуру сети так, чтобы начальный уровень действительно принимал изображения 1024x1024, прежде чем выполнять масштабирование с использованием объединения или шага.

Например, вы можете попробовать настроить шаг для первого слоя свертки в определении модели Slim в Inception V3 на 8 вместо 2: https://github.com/tensorflow/models/blob/master/slim/nets/inception_v3.py

Это позволит вам читать изображения в 4 раза больше, при этом остальная часть сети остается неизменной. Я полагаю, что вам, к сожалению, придется пройти полную переподготовку.

person Pete Warden    schedule 26.06.2017

Чтобы применить обученные модели ImageNet к вашей проблеме, вы можете подумать о размещении новых слоев на задней стороне, а не на передней. Первый уровень в моделях ImageNet CNN обучен обнаруживать «универсальные» низкоуровневые особенности (горизонтальные / вертикальные / диагональные края, цветные пятна и т. Д.). Эти сверточные слои не требуют фиксированного размера изображения (размер изображений обычно изменяется до стандартного). размеры из-за ожидаемого масштаба объектов на изображении и / или для размещения размеров полностью связанных слоев).

Таким образом, вы можете попробовать оставить первые N сверточные слои как есть, а затем добавить пользовательские слои для обучения вашему набору данных. После обучения пользовательских слоев вы можете решить, имеет ли смысл разморозить существующие слои ImageNet и обновить их.

person bogatron    schedule 03.07.2017