Появление сверточных нейросетей, технологий глубокого обучения и основанных на этих технологиях фреймворков ( таких как Caffe, Tensor Flow, PyTorch, Yolo и т.д.) превратили задачи, связанные с детектированием и классификацией графических образов из области “волшебства” в рядовые задачи программирования. Поэтому элементы компьютерного зрения все чаще используются в проектах и стартапах.
Несмотря на огромный прогресс в области алгоритмов и их практической реализации, одним из самых трудозатратных этапов решения задач компьютерного зрения с помощью нейросетей остается подготовка данных для обучения или, иначе говоря создание датасетов.
Не так давно, в рамках проекта разработки системы локализации положения беспилотного автомобиля с помощью изображения с камеры, нам необходимо было разработать модуль для классификации дорожных знаков.
В тестовой версии количество классов составляло 32.
Как известно, рекомендуемое количество объектов в датасете должно составлять около 2000 на класс.
Таким образом перед нами появилась перспектива разметки 64000 изображений, что является само по себе трудозатратной и продолжительной по времени задачей. Так же не надо забывать про “человеческий фактор”, который всегда присутствует в рутинных задачах и ведет к ошибкам.
Мы не были готовы к тому чтобы тратить несколько рабочих дней на создание датасета, потому решили разработать программу для автоматического создания и разметки датасета. Мы назвали эту программу Monkey Mark Manager.
Идея состоит в том, что программа автоматически случайным образом размещает изображения классов (дорожных знаков) на изображение фона. По каждому такому размещению (группе размещений) создается и сохраняется отдельное изображение. Так как программа знает размер знака и его координаты в пределах фонового изображения, то она может автоматически сформировать запись в файле аннотации.
Для того чтобы получить достаточное количество уникальных изображений и приблизить их к реальным условиям, мы добавили модификаторы для изображений классов.
Модификаторы позволяют выполнить следующие действия:
Таким образом с помощью наложения модификаторов мы можем получить огромное количество вариаций одного изображения и автоматически сформировать аннотации для тренировки нейросети.
В целом работа программы выглядит следующим образом:
Рис. 1. Алгоритм работы программы Monkey Mark Manager.
Рассмотрим процесс формирования датасета с помощью программы Monkey Mark Manager.
Для примера возьмем задачу подготовки датасета для распознавания 10 дорожных знаков.
1. Подготавливаем файлы изображений знаков и фонов.
Файлы классов необходимо сохранить в формате PNG с прозрачным фоном. Файлы изображений фонов так же сохраняем в формате PNG. Файлы изображений фонов и классов помещаем в соответствующие папки.
2. Добавляем список классов
Для этого надо загрузить файл с названиями классов в программу.
3. Настраиваем параметры модификаторов
Настройка параметров производится с помощью графического интерфейса. Для того чтобы получать реалистичные изображения, мы ограничили количество таких модификаций до 4 для одного объекта.
Два из них обязательные и два опциональные. Какие модификации будут обязательными, а какие опциональные определяет вероятность применения фильтра.
Чем больше вероятность - тем чаще будет применяться модификатор. Два фильтра с максимальными значениями будут обязательными для текущего датасета. Кроме того любой модификатор можно выключить, если для данного датасета он не нужен.
Для каждого модификатора мы добавили возможность дополнительной настройки (например, для изменения размера - минимальное и максимальное значение, для шаблона наложения - путь к шаблону и позиция размещения).
Для контроля настройки каждого фильтра предусмотрен режим предварительного просмотра. Например, для модификатора поворота программа отобразит различные варианты работы модификатора в пределах заданных минимума и максимума. При помощи такого просмотра можно точнее определить настройки модификатора.
4. Запуск генерации датасета и результаты работы программы.
Исходные параметры:
В результате работы программы сгенерировано заданное количество изображений. Сгенерированы файлы аннотаций. Время работы программы 81 минут.
5. Результат работы нейросети, натренированного с помощью датасета сгенерированного программой Monkey Mark Manager
Для запуска программы распознавания дорожных знаков мы использовали однопроходный нейросеть YOLO. Время обучения нейросети составило около 350 часов.
В качестве вычислительного компьютера для работы нейросети использовался мини компьютер JETSON AGX XAVIER:
Время обработки обработки одного изображения (4096 на 2168 точек) 400 мс.
Выводы:
Применение автоматического метода создания датасета позволяет быстро
Комментарий (0)