Большое количество высококачественных данных — ключ к созданию отличных моделей глубокого обучения. Но хорошие данные даются нелегко, и их нехватка может помешать разработке хорошей модели. Для модели относительно легко идентифицировать вещи по изображению, когда все «в самый раз» — правильный уровень освещения и масштабирования, правильная перспектива и т. д. Но когда изображения не настолько идеальны, модель изо всех сил пытается дать разумный прогноз. Поэтому, как правило, желательно обучать сеть изображениям, которые «не так идеальны», чтобы помочь ей лучше предсказывать. Но как получить такие данные? Ну, вы в основном имитируете это, беря обычное изображение и используя увеличение данных.

Умные подходы к программному расширению данных могут увеличить размер вашей обучающей выборки в 10 и более раз. Более того, ваша модель часто будет более надежной (и предотвратит переоснащение) и может быть даже проще благодаря лучшему обучающему набору. То, что вы пытаетесь сделать, это научить вашу нейронную сеть тому, что называется инвариантностью, которая в основном представляет собой способность распознавать («классифицировать») объект независимо от условий, в которых он представлен, — таких как размер, точка зрения, освещение и перевод. .

Для создания расширенных библиотек данных можно использовать такие библиотеки, как Augmentor и imgaug. Эти пакеты Python предназначены для помощи в искусственном создании данных изображений для задач машинного обучения. Ниже приведены несколько примеров (и не исчерпывающий список) различных дополнений, которые вы можете попробовать при обучении модели.

Черно-белое
Это увеличение преобразует изображение в черно-белое. Это помогает сделать модель инвариантной к цвету.


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


Контраст
. Это увеличение повышает контрастность изображения и может помочь в правильном различении различных элементов изображения.


Произвольное
отражение Отражение изображения по вертикали или горизонтали помогает модели стать инвариантной по отношению к ориентации и положению объектов на изображении.


Регулировка гаммы
Это увеличение управляет яркостью изображения.


Сдвиг HSV
Это дополнение смещает канал оттенка изображения и должно помочь сети стать инвариантной к цвету.


Поворот без обрезки
Увеличение поворота делает сеть инвариантной к ориентации объектов на изображении.


Поворот с обрезкой
В отличие от поворота без обрезки (предыдущая аугментация), вы не получаете «черных областей» по бокам изображения, и это предпочтительный подход для задач семантической сегментации.


Случайное искажение
Этот метод полезен, когда вам нужно предсказать объекты, которые не имеют фиксированной формы. Например, обнаружение водоемов по спутниковым снимкам и т. д.

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


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

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


Shear
Это дополнение срезает изображение на произвольную величину.


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


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


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


Теперь, когда мы рассмотрели несколько методов дополнения, может возникнуть вопрос: как убедиться, что метод увеличения данных будет для вас актуальным? Что ж, обычно вы делаете это вручную — выясняете, в чем проблема, возможные сценарии и выбираете.

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

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