2017-01-28 3 views
15

Я пытаюсь обучить мою модель, которая классифицирует изображения. Проблема у меня есть, у них разные размеры. Есть ли возможность тренировать эти изображения, не изменяя их размеры.Как тренировать изображения, когда они имеют разный размер?

+1

Пожалуйста, покажите, что вы пробовали до сих пор, и то, что, похоже, не работает на вас. –

+0

И bam там идет код Inception v4. Я не согласен с этим замечанием. Немного больше ввода было бы неплохо - как то, о какой сети мы говорим, - но нисходящие нити не оправданы вообще. Это реальная проблема. – sunside

+0

Вопрос в том, как ImageNet форматирует данные своих изображений, чтобы быть полезными для обучения? – mskw

ответ

36

Вы не сказали, о какой архитектуре вы говорите. Поскольку вы сказали, что хотите классифицировать изображения, я предполагаю, что это частично сверточная, частично полностью подключенная сеть, такая как AlexNet, GoogLeNet и т. Д. В общем, ответ на ваш вопрос зависит от типа сети, с которой вы работаете.

Если, например, ваша сеть содержит только сверточные единицы - то есть не содержит полностью подключенных слоев - это может быть инвариантным к размеру входного изображения. Такая сеть может обрабатывать входные изображения и, в свою очередь, возвращать другое изображение («сверточное полностью»); вы должны убедиться, что результат соответствует тому, что вы ожидаете, так как вы должны каким-то образом определить потерю.

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

Если это ваша проблема, вот некоторые вещи, которые вы можете сделать:

  • Не заботьтесь о давя изображения. В любом случае сеть может научиться понимать содержание; действительно ли масштаб и перспектива все равно означают контент?
  • Центрируйте изображения до определенного размера. Если вы боитесь, что потеряете данные, делайте несколько культур и используйте их для увеличения ваших входных данных, чтобы исходное изображение было разбито на N на различные изображения правильного размера.
  • Поместите изображения с сплошным цветом в квадрат, затем измените размер.
  • Сделайте комбинацию этого.

Опция дополнения может создать дополнительный источник ошибок для прогнозирования сети, поскольку сеть может (предположительно будет выглядеть) быть смещенной к изображениям, которые содержат такую ​​дополненную границу. Если вам нужны какие-то идеи, посмотрите раздел Images документации TensorFlow, есть такие штуки, как resize_image_with_crop_or_pad, которые забирают большую работу.

Что касается просто не заботясь о выжимании, here's кусок предварительной обработки трубопровода известной сети Начального:

# This resizing operation may distort the images because the aspect 
# ratio is not respected. We select a resize method in a round robin 
# fashion based on the thread number. 
# Note that ResizeMethod contains 4 enumerated resizing methods. 

# We select only 1 case for fast_mode bilinear. 
num_resize_cases = 1 if fast_mode else 4 
distorted_image = apply_with_random_selector(
    distorted_image, 
    lambda x, method: tf.image.resize_images(x, [height, width], method=method), 
    num_cases=num_resize_cases) 

Они полностью осведомлены об этом и сделать это в любом случае.

В зависимости от того, насколько вы хотите, или нужно идти, там на самом деле это бумага here называется Spatial Пирамида Pooling в глубоких сверточных сетях для визуального распознавания, который обрабатывает входы произвольных размеров путем обработки их особым образом.

0

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

Смежные вопросы