Автоматическое создание датасета для обучения нейросетей

4.9 (1)

Автоматическое создание датасета для обучения нейросетей.

Зачем надо создавать датасеты. Классические подход к созданию датасетов. В чем проблемы.

Появление сверточных нейросетей, технологий  глубокого обучения и основанных на этих технологиях фреймворков ( таких как Caffe, Tensor Flow, PyTorch, Yolo и т.д.) превратили задачи, связанные с детектированием и классификацией графических образов из области “волшебства” в рядовые задачи программирования. Поэтому  элементы компьютерного зрения все чаще используются  в проектах и стартапах.

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

Не так давно, в рамках проекта разработки системы локализации положения беспилотного автомобиля с помощью изображения с камеры,  нам необходимо было разработать модуль для классификации дорожных знаков. 
В тестовой версии количество классов составляло 32. 
Как известно, рекомендуемое количество объектов в датасете должно составлять около 2000 на класс. 
Таким образом перед нами появилась перспектива разметки 64000 изображений, что является само по себе трудозатратной и продолжительной по времени задачей. Так же не надо забывать про  “человеческий фактор”, который всегда присутствует в рутинных задачах и ведет к ошибкам.

Мы не были готовы к тому чтобы тратить несколько рабочих дней на создание датасета, потому решили разработать  программу для автоматического создания и разметки датасета. Мы назвали эту программу Monkey Mark Manager.

Программа для автоматической генерация датасета.

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

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

Модификаторы позволяют выполнить следующие действия:

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

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

В целом работа программы выглядит следующим образом:

Алгоритм работы программы автоматичекгой разметки датасета Monkey Mark Manager

Рис. 1. Алгоритм работы программы Monkey Mark Manager.

Рассмотрим процесс формирования датасета с помощью программы Monkey Mark Manager. 
Для примера возьмем задачу подготовки датасета для распознавания 10 дорожных знаков. 

 

1. Подготавливаем файлы изображений знаков и фонов.

Файлы классов необходимо сохранить в формате PNG с прозрачным фоном. Файлы изображений фонов так же сохраняем в формате PNG. Файлы изображений фонов и классов помещаем в соответствующие папки.

Пример дорожного снака для обучения нейросети
Рис. 2 Пример изображения класса (дорожного знака)
 
 
Дорожные знаки для обучения
Рис. 2 Знаки, которые участвуют в генерации датасета
 
 
 
Рис. 3 Пример изображения фона

2. Добавляем список классов

Для этого надо загрузить файл с названиями классов в программу.

Загрузка классов в прогамму Monkey Mark Manager
Рис. 4 Загрузка классов в прогамму Monkey Mark Manager

3. Настраиваем параметры модификаторов

Настройка параметров производится с помощью графического интерфейса. Для того чтобы получать реалистичные изображения, мы ограничили количество таких модификаций до 4 для одного объекта. 
Два из них обязательные и два опциональные. Какие модификации будут обязательными, а какие опциональные определяет вероятность применения фильтра.

Чем больше вероятность - тем чаще будет применяться модификатор. Два фильтра с максимальными значениями будут обязательными для текущего датасета. Кроме того любой модификатор можно выключить, если для данного датасета он не нужен.

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

Настройка модификаторов для генерации датасета
Рис. 5 Настройка параметров модификаторов

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

Предварительный просмотр результата работы модификаторов
Рис. 6 Предварительный просмотр результата работы модификаторов

 

4. Запуск генерации датасета и результаты работы программы.

Исходные параметры: 

  • количество фоновых изображений - 20;
  • размер фонового изображения - 4096*2168 px;
  • количество классов (дорожных знаков) - 10;
  • модификаторы: изменение размеров, поворот, яркость, контраст, размытие, шум;
  • размер датасета - 20000 изображений.

В результате работы программы сгенерировано заданное количество изображений. Сгенерированы файлы аннотаций. Время работы программы 81 минут.

Пример сгенерированного программой изображения
Рис. 7 Пример сгенерированного программой изображения

5. Результат работы нейросети, натренированного с помощью датасета сгенерированного программой Monkey Mark Manager

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

В качестве вычислительного компьютера для работы нейросети использовался мини компьютер JETSON AGX XAVIER:

  • AI Perf: 32 TOPS
  • GPU: 512-Core Volta GPU with Tensor Cores
  • CPU: 8-Core ARM v8.2 64-Bit CPU, 8 MB L2 + 4 MB L3
  • Memory: 32 GB 256-Bit LPDDR4x | 137 GB/s
  • Storage: 32 GB eMMC 5.1

Время обработки обработки одного изображения (4096 на 2168 точек) 400 мс.

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

Выводы:

Применение автоматического метода создания датасета позволяет быстро 

Комментарий (0)

Войдите с помощью соцсетей:
или
введите свои данные: