Позволит ли добавление channel_shift_range к предварительной обработке Keras (увеличение изображения) модель использовать в ситуациях с переменным освещением? - PullRequest
0 голосов
/ 21 января 2020

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

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

В настоящее время я использую

train_datagen = ImageDataGenerator(
        rotation_range=360,
        width_shift_range=0.2,
        height_shift_range=0.2,
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        channel_shift_range=100,
        data_format=ch_format,
        brightness_range=(0.75, 1.25),
        fill_mode='nearest')

test_datagen = ImageDataGenerator(rescale = 1./255,
                                  data_format=ch_format)

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

На концептуальном уровне это сработает и даст желаемые результаты? Кроме того, если я добавлю channel_shift_range к test_datagen, будет ли он более точно отражать производительность моей модели в условиях переменного освещения?

Спасибо за любую помощь!

1 Ответ

1 голос
/ 21 января 2020

Как правило, вы хотите применить все виды дополнения данных, а не только channel_shift_range.

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

Идея использования дополнения состоит в том, чтобы предоставить модели множество примеров, так что он надежен, когда идет «в производство». Если вы дополнили истинный набор тестовых данных точно так же, как увеличивали тренировочный набор, вы бы просто использовали «мини-чит»; как вы знаете, вы привели много примеров, скажем, channel_shift_range со значением K для вашего обучающего набора, и предоставление того же точного значения для набора испытаний было бы почти равносильно копированию данных обучения в данные теста; Вы не хотите этого делать.

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

...