Обучение нейронной сети. Подготовка материалов для обучения с помощью рендеров из виртуальной студии
#Машинное обучение #Нейронные сети #Распознавание образов #e-Commerce #Кейсы
#Машинное обучение #Нейронные сети #Распознавание образов #e-Commerce #Кейсы
Обучение нейросети начинается с подготовки материалов - размеченных изображений объектов, которые нужно будет распознавать. С их помощью мы обучаем нейросеть распознавать что изображено на фото. Задача этого проекта - создать систему распознающую точную модель пульта по фотографии, сделанной на мобильный телефон. Процесс усложняется тем, что существует большое количество пультов, и многие из них похожи как братья близнецы. Сейчас, для того чтобы человек научился различать модели пультов выпускаются специальные каталоги или плакаты, на которых показывают чем один пульт отличается от другого.
Для того чтобы обучить нейронную сеть распознаванию объектов, нам нужно подготовить изображения всех пультов с разными фонами, разным освещением, и в разных положениях. Каждое изображение пульта должно быть размечено, чтобы нейронная сеть понимала где на фото объект, который нужно учиться распознавать. Если делать это всё руками, понадобится очень много времени.
Решить проблему нам помог Blender. На его основе мы создали виртуальную студию, с помощью которой сгенерировали размеченные изображения (материал) для обучения нейросети. Давайте разбираться как это сделать через студию, а как руками.
Все началось с того, что мы сделали по одному фото каждого пульта и подобрали большое количество разных фоновых изображений. С помощью скрипта подключенного к Blender, мы автоматически подставляем изображение пульта на каждый фон. В развернутой студии есть виртуальная камера (черный треугольник на фото ниже), она приближается, меняет положение создавая анимацию. В процессе анимации скрипт делает рендеры каждого кадра, и у нас появляется база изображений (материалов) для дальнейшего обучения. Этот процесс (получение изображений с помощью 3D программы) называется “рендерингом”.
Вот так выглядит Blender с изображением пульта (по центру) и готовым рендером - пульт поставленный на фон и повернутый влево.
Рендер - это изображение, которое получается в результате просчета трехмерной модели в изображение.
В процессе рендеринга, наш скрипт делает автоматическую разметку материалов (ее называют labelling или боксинг). В результате мы получим базу рендеров (все пульты, на всех фонах, в разных положениях), и соответствующие каждому рендеру xml файлы с указанием точных координат объекта на изображении.
Так выглядит набор рендеров одного пульта, только фонов и положений гораздо больше.
Все полученные материалы наша виртуальная студия сразу делит в две папки test и train. Папка train будет использоваться для обучения нейросети, а папка test (куда попадает каждый пятый рендер) будет базой для самотестирования нейронки.
Во время обучения сеть делает так называемые чекпоинты - проверяет насколько правильно идет процесс. Для этого нужен материал подобный обучаемому, но не идентичный.
Такой метод обучения универсален для любых объектов, которые должна будет научиться распознавать нейросеть и называется обучение нейронной сети на основе синтетических материалов.
Использование рендеров автоматизирует, и существенно ускоряет процесс подготовки необходимых данных для обучения нейросети. Если бы не виртуальная студия на основе Blender, весь материал для обучения мы бы подготавливали “руками”: делали большое количество фотографий каждого пульта в разных условиях, размечали их все по отдельности, и вручную распределяли на обучаемый и тестируемый материал. На это ушло бы много ресурсов, как финансовых, так и временных.
На процесс обучения нейросети влияет количество, разнообразность материалов, и качество самих изображений. Качество изображения искомого предмета при распознавании должно быть идентично тому, на которых обучалась сеть. В нашем проекте пульты нужно будет распознавать по фото сделанным, в основном, с телефона. Поэтому, для обучения сети, на ряду с качественными изображениями мы используем и фото низкого качества.
После подготовки материалов, мы приступили к непосредственно обучению нейросети. Но это уже тема следующей статьи.
Если вас интересует обучение нейронной сети и распознавание объектов - пишите, мы поможем вам рационально применить наши разработки для развития вашего бизнеса.