Автор: Давид Свитов

Редактура: Дмитрий Раков

Введение

Успешное решение любой задачи Deep Learning состоит из двух аспектов:

  1. Умение инженера позаимствовать подходящую архитектуру сети из Github;
  2. Большое количество обучающих данных для этой задачи.

Если кто-то собирается оплатить решение задачи — это значит, что один из пунктов не является тривиальным. Сегодня мы разберём второй случай — вопрос нехватки данных. В этой статье мы обсудим, как с помощью Blender получить синтетические данные практически к любой 2D или 3D-задаче компьютерного зрения.

Умение легко генерировать синтетику под возникшую задачу хоть и не закроет потребность в данных на 100%, но сделает процесс прототипирования и отладки решения более приятным, а также позволит улучшить итоговые метрики. Давайте же познакомимся с Blender’ом и его полезным для программистов функционалом 😊

Программируем в Blender и BPY

Для начала нам нужно скачать Blender. Сделать это можно при помощи инструкции на официальном сайте: https://www.blender.org/download/.

После успешной установки и запуска программы мы увидим привычный интерфейс 3D-редактора:

Рисунок 1. Интерфейс Blender’а с его элементами и возможностями (они выделены и подписаны зелёным цветом)

Рисунок 1. Интерфейс Blender’а с его элементами и возможностями (они выделены и подписаны зелёным цветом)

На старте мы находимся во вкладке Layout — она нужна для создания и комбинирования различных объектов в сцене. Но сегодня нам будет интересна другая вкладка — Scripting. Она позволяет программировать поведение редактора и автоматизировать работу в нём. Давайте перейдём на неё и узнаем, какие возможности автоматизации есть в Blender.

Рисунок 2. Вкладка Scripting: центральное окно помогает создавать и редактировать скрипт, окно слева позволяет обращаться к интерпретатору Python в интерактивном режиме

Рисунок 2. Вкладка Scripting: центральное окно помогает создавать и редактировать скрипт, окно слева позволяет обращаться к интерпретатору Python в интерактивном режиме

Приятный сюрприз, который ждёт нас на этой вкладке: Blender использует Python в качестве скриптового языка. Следовательно, с высокой долей вероятности вам не придётся учить новый язык программирования 😎

Всё, что нам осталось сделать — разобраться с библиотекой BPY. Тогда мы сможем управлять 3D-сценой в Blender с помощью Python.

Итак, библиотека BPY содержит Python API для работы с Blender. Для простого примера взаимодействия Python и Blender давайте обратимся к интерактивной консоли и наберём в ней:

bpy.data.objects.keys()

Так мы напечатаем имена всех объектов в сцене, а именно:

<aside> 📌

['Camera', 'Cube', 'Light']

</aside>