Увеличивайте искусственные изображения, чтобы они выглядели как настоящие, для обнаружения объектов TF

Я использую модель Faster R-CNN Inception ResNet v2 из API обнаружения объектов Tensorflow для обучения CNN обнаружению знаков безопасности. Поскольку у меня нет набора данных реального изображения, я написал код, который создает искусственный набор данных, состоящий из нарисованных компьютером изображений знаков и реальных фоновых изображений из общедоступных наборов данных (GTSDB, KITTI и т. Д.). Обученная модель отлично работает с невидимыми искусственными изображениями, но не работает с реальными тестовыми изображениями, которые я сделал с помощью своего iPhone 5SE.

У меня уже есть различные техники увеличения данных из imgaug (https://imgaug.readthedocs.io/en/latest/index.html) и поискал в Интернете решение, но безуспешно для поиска реальных изображений.

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

Одно из моих искусственных изображений, которое я использую для обучения (размер: 640x480, формат: .png): введите описание изображения здесь

И одно из реальных тестовых изображений, которое следует использовать для тестирования модели (размер: 3024x4032, формат: .JPG): введите описание изображения здесь

Я считаю, что мои изображения недостаточно близки к реальным изображениям и, следовательно, классификация последних не работает. Другая идея состоит в том, что мой набор данных не включает достаточно «нормальных» (не сильно расширенных изображений, которые не были дополнены большим количеством гауссовского шума, вращения, масштабирования и т. Д.) Обучающих изображений. Есть идеи, как сделать мои тренировочные образы более реалистичными? Любой другой вклад также приветствуется.


person Moritz    schedule 08.02.2019    source источник


Ответы (1)


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

Однако, если вы хотите следовать этому подходу, вот подсказки, которые мы сочли полезными:

  • Постарайтесь разместить свои искусственные объекты с умом, поэтому используйте фон, близкий к его яркости, резкости и т. Д., Чтобы он выглядел немного более естественным.
  • Разместите знаки в нужных местах, поэтому на стенах, а не на дороге.
  • Заморозьте свою сеть экстрактора функций
  • Используйте небольшую скорость обучения (что-то вроде 5e-07).

Это просто рекомендации против переобучения.

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

person Dmytro Prylipko    schedule 09.02.2019
comment
Здравствуйте, Дмитрий, большое спасибо за ответ. Я последовал твоему совету и расскажу, как это сработало, так как тренировки сейчас проходят и продлятся до понедельника или около того. Под замораживанием экстрактора функций вы подразумеваете добавление опции freeze_variables:. * FeatureExtractor. * В train_config в файле конфигурации конвейера? По крайней мере, это то, что я обнаружил, было бы неплохо узнать, что это правильное действие. - person Moritz; 15.02.2019
comment
Да, это правильно. Точную схему не помню, но примерно так. - person Dmytro Prylipko; 15.02.2019