Навчання нейронної мережі, приклад - готуємо матеріали для розпізнавання 8 Навчання нейронної мережі, приклад - готуємо матеріали для розпізнавання 9 Навчання нейронної мережі, приклад - готуємо матеріали для розпізнавання 10

Підготовка матеріалів для навчання нейронної мережі за допомогою рендерів з віртуальної студії

#Машинне навчання #Нейронні мережі #Розпізнавання образів #e-Commerce #Кейси

Навчання нейромережі починається з підготовки матеріалів - розмічених зображень об'єктів, які потрібно буде розпізнавати. З їхньою допомогою ми навчаємо нейронну мережу розпізнавати, що зображено на фото. Завдання цього проекту - створити систему, що розпізнає точну модель пульта з фотографії, зробленої на мобільний телефон. Процес ускладнюється тим, що існує велика кількість пультів і багато з них схожі як брати-близнюки. Зараз для того, щоб людина навчилася розрізняти моделі пультів, випускають спеціальні катологи або плакати, на яких показують, чим один пульт відрізняється від іншого.

pulti відмінності

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

Вирішити проблему нам допоміг Blender. На його основі ми створили віртуальну студію, за допомогою якої згенерували розмічені зображення (матеріал) для навчання нейромережі. Давайте розглянемо, як це можна зробити через студію, а як - вручну.

Процес підготовки матеріалів за допомогою віртуальної студії

Все почалося з того, що ми зробили по одному фото кожного пульта і підібрали велику кількість різних фонових зображень. За допомогою скрипту, підключеного до Blender, ми автоматично підставляємо зображення пульта на кожний фон. В розгорнутій студії є віртуальна камера (чорний трикутник на фото нижче), вона наближається, змінює положення. В процесі анімації скрипт робить рендери кожного кадру, і у нас з'являється база зображень (матеріалів) для подальшого навчання. Цей процес (отримання зображень за допомогою 3D програми) називається рендерингом.

Ось так виглядає Blender із зображенням пульта (по центру) та готовим рендером - пульт поставлений на фон і повернений вліво.

візуальна студія

Рендер - це зображення, яке виходить в результаті прорахунку тривимірної моделі в зображення.

У процесі рендерингу наш скрипт робить автоматичну розмітку матеріалів (її називають labelling, або боксинг). В результаті ми отримаємо базу рендерів (всі пульти, на всіх фонах, в різних положеннях) і відповідні кожному рендеру xml-файли із зазначенням точних координат об'єкта на зображенні.

рендери пульта

Так виглядає набір рендерів одного пульта, тільки фонів і положень набагато більше.

Всі отримані матеріали наша віртуальна студія відразу ділить на дві папки test і train. Папка train буде використовуватися для навчання нейромережі, а папка test (куди потрапляє кожен п'ятий рендер) буде базою для самотестування мережі.

Під час навчання мережа робить так звані чекпоінти - перевіряє, наскільки правильно йде процес. Для цього потрібен матеріал подібний тому, якого навчають, але не ідентичний. 

Такий метод навчання універсальний для будь-яких об'єктів, які має  навчитися розпізнавати нейромережа, і називається він навчанням нейронної мережі на основі синтетичних матеріалів.

Як би виглядав процес підготовки матеріалів без рендерингу "ручна розмітка"

Використання рендерів автоматизує та істотно прискорює процес підготовки необхідних даних для навчання нейромережі. Якби не віртуальна студія на основі Blender, весь матеріал для навчання ми б готували "руками": робили велику кількість фотографій кожного пульта в різних умовах, розмічали їх кожен окремо і вручну розподіляли на навчальний і тестовий матеріал. На це пішло б багато фінансів і часу.

розмітка пульта

Якісно підготовлені матеріали - запорука успішного навчання нейромережі

На процес навчання нейромережі впливає кількість, різноманітність матеріалів, і якість самих зображень. Якість зображення шуканого предмета при розпізнаванні має бути ідентична тій, при якій навчалась мережа. У нашому проекті пульти потрібно буде розпізнавати по фото з телефону. Тому для навчання мережі окрім якісних зображень ми використовуємо і фото низької якості.

Після підготовки матеріалів ми приступили до безпосередньо навчання нейромережі. Але це вже тема наступної статті.

Якщо вас цікавить розпізнавання об'єктів - пишіть, ми допоможемо вам раціонально застосувати наші розробки для розвитку вашого бізнесу.

10.12.2018
Зображення, використані в статті, були взяті з відкритих джерел і використовуються як ілюстрації.
Хочете обговорити ваш проект або замовити розробку?
Надіслати
Цей сайт є українською мовою. Ви можете переключити мову у меню, або зробити це зараз.