Увеличение данных перед разбиением - PullRequest
0 голосов
/ 01 июня 2018

за мой экзамен, основанный на обработке данных, мы получили небольшой набор данных симпсонов из 4 символов (Барт, Гомер, Лиза, Мардж) для построения сверточной нейронной сети.Тем не менее, набор данных содержит лишь небольшое количество изображений: около 2200, которые можно разделить на тестирование и обучение.

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

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

так:

a) МожетВы расширяете свои данные перед тем, как разделить их с помощью sklearn TrainTestSplit, не влияя на результаты неверным образом?

б) если мой метод неверен, какой другой метод я могу попробовать?

Заранее спасибо!

1 Ответ

0 голосов
/ 01 июня 2018

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

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

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

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

  • Поворот изображения
  • Сдвиг изображения
  • Увеличение изображения (обрезка и повторное масштабирование)
  • Добавление шума
  • Небольшое смещение оттенка
  • Сдвиг изображения
  • Заполнение изображения
  • Размытие изображения
  • Тиснение изображения

Эта библиотека Github имеетхороший обзор классических методов увеличения изображения: https://github.com/aleju/imgaug (я не использовал эту библиотеку. Таким образом, я не могу подтвердить ее скорость или качество реализации, но их обзор в README.md кажется довольно полным.)

Некоторые библиотеки нейронных сетей уже имеют некоторые утилиты для этого.Например: у Keras есть методы для предварительной обработки изображений https://keras.io/preprocessing/image/

...