Генератор синтетических данных дефектов труб

Генератор синтетических данных для задачи получения изображений с разметкой

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

Особенности проекта: использование синтетических данных улучшает качество работы нейронных сетей и различных алгоритмов машинного обучения, позволяет активно сокращать процент искажений, а также значительно сокращает объем необходимых «реальных» данных, экономя время и деньги для заказчика.
Поскольку генератор позволяет получать 3D данные, он способен стать источником новых данных не только для задачи классического компьютерного зрения (CV), но и для целого ряда задач геометрического компьютерного зрения (a.k.a 3D ML, GDL), так, например, помимо обычных RGB камер, пространственные сканеры / камеры глубины (RGB-D) позволяют находить менее очевидные человеческому глазу дефекты и реконструировать изучаемые объекты.

Что и как было сделано: на языке Python для Blender 3D написан инструмент для генерации кривых, заполняющих площадь произвольных поверхностей. Вдоль этих кривых на пространственной сцене реализована генерация реалистичных моделей труб, своей конструкцией повторяющих основные особенности труб на реальном предприятии. Под каждый тип поверхности трубы и дефекта настроен фото-реалистичный и полностью процедурный материал, параметры которого легко менять из запускающего скрипта или в настройках сцены.
Настроены цифровые двойники потенциальных камер и накамерного света, используемых на дронах, с которых ведется съемка на реальных объектах. Параллельно с фотореалистичными создаются и черно-белые изображения, на которых отмечены поврежденные участки различных классов дефектов (такие изображения нужны для генерации разметки).
На языке Rust реализован алгоритм пакетной конвертации чёрно-белых изображений с разметкой в разметку формата YOLO (текстовые файлы с координатами и размерами ограничивающих прямоугольников).
С помощью генератора получены тысячи разнообразных снимков с разметкой, которые использовались для дополнения реальных данных.

Сроки: 3 недели

Команда проекта
RnD and CG: Роман Чумак