Работа с комплектом разработчика Azure Kinect

Microsoft анонсировала свои модули камеры Azure Kinect вместе с HoloLens 2 в начале 2019 года. Оба устройства используют один и тот же модуль камеры смешанной реальности, использующий датчик глубины времени полета для сопоставления объектов вокруг камеры. Но там, где HoloLens - это носимое устройство смешанной реальности, модули Azure Kinect предназначены для предоставления размещаемых в Azure приложений машинного обучения с подключенными датчиками, которые можно установить в любом месте рабочей области.

Azure Kinect является прямым потомком модулей Kinect второго поколения, которые поставлялись с Xbox One, но вместо того, чтобы предоставлять реальные входные данные для игр, он нацелен на корпоративных пользователей и приложения. Предназначенный для работы с когнитивными службами Azure, первый комплект разработчика Azure Kinect начал поставляться в конце 2019 года в США, добавив несколько других стран в начале 2020 года.

Открытие коробки

Комплект разработчика Azure Kinect за 399 долларов - это небольшой белый блок с двумя объективами камеры, один для широкоугольной камеры RGB, другой для датчика глубины Kinect, и набором микрофонов. Он имеет датчик ориентации, позволяющий использовать камеру для создания сложных трехмерных изображений окружающей среды, готовых для использования в смешанной реальности. Вы можете связать несколько устройств вместе для быстрого трехмерного сканирования или охвата всей комнаты, используя датчик ориентации, чтобы понять положение устройства.

Вместе с камерой вы получаете блок питания, шестигранный ключ для снятия крышки соединительных портов и USB-кабель для подключения к компьютеру разработчика. Я бы порекомендовал приобрести настольный штатив или другой тип крепления, поскольку пластиковая подставка в комплекте довольно мала и не работает с большинством столов или мониторов. В комплекте нет программного обеспечения, только ссылка на онлайн-документацию, по которой вы можете скачать SDK устройства.

Перед тем как начать, следует обновить прошивку устройства. Он поставляется с SDK и включает инструмент установки из командной строки. Когда вы запускаете программу обновления, она сначала проверяет текущее состояние прошивки перед установкой прошивки камеры и устройства и последующей перезагрузкой. После перезагрузки камеры используйте тот же инструмент, чтобы убедиться, что обновление успешно установлено. Если есть проблема с установкой, вы можете использовать аппаратный сброс камеры (скрытый под креплением штатива), чтобы восстановить исходный заводской образ.

Чувствуя мир

Установив SDK, вы получаете доступ к датчикам устройства из своего кода. Существует три пакета SDK: один для низкоуровневого доступа ко всем датчикам камеры, другой для использования знакомых функций отслеживания тела Kinect и один для связи массива микрофонов камеры с речевыми службами Azure. Готовое приложение Kinect Viewer показывает доступные виды камеры и передает данные с датчиков устройства. Вы получаете доступ к широкоугольной камере RGB, обзору камеры глубины и изображению с инфракрасной камеры датчика глубины. SDK доступны как для Windows, так и для Linux, в частности для выпуска Canonical Ubuntu 18.04 LTS, и могут быть загружены непосредственно с Microsoft или с GitHub.

Хорошая идея - поиграть с Kinect Viewer. Он позволяет вам увидеть, как работают различные режимы камеры глубины, помогая выбрать узкое или широкое поле зрения. Вы можете видеть данные с датчиков положения, акселерометра и гироскопа, а также с массива микрофонов. Когда комплект разработчика Azure Kinect подключен к компьютеру для разработки и работает, вы можете начать писать для него код. Приложение для записи из командной строки можно использовать для захвата данных для воспроизведения в средстве просмотра, сохраняя информацию о глубине в файле формата MKV (Matroska Video).

Создание вашего первого приложения для измерения глубины

Microsoft предоставляет образец кода для создания простого приложения C для работы с Azure Kinect Development Kit. Нужна только одна библиотека, и она предоставляет объекты и методы, необходимые для работы с камерой. Любое приложение сначала должно проверить, сколько камер подключено к главному компьютеру, прежде чем настраивать потоки данных устройства. Устройства идентифицируются по серийному номеру, поэтому вы можете использовать его для адресации конкретной камеры при работе с несколькими, подключенными к одному ПК или соединенными в цепочку.

Комплект разработчика Azure Kinect предоставляет только потоковые данные, поэтому приложениям необходимо настраивать скорость передачи данных в кадрах в секунду, а также форматы цвета и разрешения изображения. Создав объект конфигурации, вы можете открыть соединение с помощью объекта конфигурации, готового к потоковой передаче данных. Когда вы закончите читать поток данных, остановите и закройте устройство.

Изображения захватываются в объекте захвата с изображением глубины, ИК-изображением и цветным изображением для каждого отдельного изображения, взятого из потока устройства. После того, как у вас есть захват, вы можете извлечь отдельные изображения, готовые для использования в вашем приложении. Объекты изображений могут быть доставлены в API машинного зрения Azure, готовые к распознаванию объектов или обнаружению аномалий. Одним из примеров, который Microsoft использовала в своих демонстрациях, является приложение, которое использует захваченное видео, чтобы обнаружить, когда рабочий на заводе слишком близко подходит к работающему оборудованию; другой обнаруживает, что кто-то курит возле бензоколонки.

Аналогичный процесс дает вам данные с датчиков положения и движения. Поскольку данные о движении захватываются с большей скоростью, чем данные изображений, вы должны реализовать в своем коде некоторую форму синхронизации, чтобы избежать потери каких-либо данных. Аудиоданные записываются с помощью стандартных API-интерфейсов Windows, включая те, которые используются службами речи Azure.

Хотя оборудование Azure Kinect собирает много данных, функции SDK помогают преобразовать их в удобную для использования форму; например, добавление данных глубины к изображению RGB для создания изображений RGB-D, которые преобразуются в точку обзора камеры RGB (и наоборот). Поскольку два датчика смещены, для этого требуется деформировать сетку изображения, чтобы объединить точки обзора двух камер с помощью графического процессора вашего ПК. Другое преобразование создает облако точек, позволяющее получить данные о глубине для каждого пикселя в вашем захвате. Одна из полезных опций SDK - возможность захвата видео и потоков данных в файл формата Matroska. Этот подход позволяет устройствам с ограниченной пропускной способностью пакетировать данные и доставлять их, скажем, на устройства Azure Stack Edge с контейнерами Cognitive Services для пакетной обработки.

Отслеживание тела по цифровому скелету

Оригинальное оборудование Kinect представило функцию отслеживания тела с моделью скелета, которую можно было использовать для быстрой оценки позы и жестов. Тот же подход применяется в пакете SDK для отслеживания тела Azure Kinect, который использует технологию параллельной обработки графического процессора Nvidia CUDA для работы с данными трехмерного изображения с датчика глубины вашего устройства. Образец связанного приложения демонстрирует некоторые функции SDK, в том числе возможность отслеживать одновременно более одного человека. 

Пакет SDK для отслеживания тела основан на пакете SDK для Azure Kinect и используется для настройки устройства и подключения к нему. Данные захваченного изображения обрабатываются трекером, сохраняя данные в структуре данных основного кадра. Он содержит набор скелетных структур для идентифицированных тел, двумерную индексную карту, чтобы помочь визуализировать ваши данные, а также лежащие в основе двухмерные и трехмерные изображения, которые использовались для построения данных отслеживания. Каждый кадр можно использовать для создания анимации или для передачи информации в инструменты машинного обучения, которые могут помочь в обработке отслеживаемых позиций относительно карты комнаты или идеальных позиций.

Когнитивные службы Azure - это мощный инструмент для обработки данных, а добавление Azure Kinect позволяет использовать их в широком спектре промышленных и корпоративных сценариев. Сосредоточившись на распознавании трехмерных изображений на рабочем месте, Microsoft пытается показать, как распознавание изображений может использоваться для снижения риска и повышения безопасности. Существует даже возможность использования массива устройств в качестве системы быстрого объемного захвата, которая может помочь в создании как сред смешанной реальности, так и предоставить исходные данные для САПР и других инструментов проектирования. В результате получается гибкое устройство, которое с небольшим кодом становится очень мощным сенсорным устройством.