Работа с Azure Kinect Developer Kit

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, както и множество микрофони. Той има сензор за ориентация, който ви позволява да използвате камерата за изграждане на сложни триизмерни изображения на среди, готови за използване в смесена реалност. Можете да свържете множество устройства заедно за бързо 3-D сканиране или за осигуряване на покритие на цяла стая, като използвате сензора за ориентация, за да разберете позицията на устройството.

Заедно с камерата получавате захранване, шестостен ключ за отстраняване на капака на верижните портове и USB кабел за свързване към компютър за разработка. Бих препоръчал да си вземете настолен статив или друг тип стойка, тъй като в комплекта пластмасова стойка е доста малка и не работи с повечето бюра или монитори. В кутията няма софтуер, има само връзка към онлайн документация, от която можете да изтеглите SDK на устройството.

Преди да започнете, трябва да актуализирате фърмуера на устройството. Това се доставя с SDK и включва инструмент за инсталиране на команден ред. Когато стартирате актуализатора, той първо проверява текущото състояние на фърмуера, преди да инсталира фърмуера на камерата и устройството и след това да рестартира. След като камерата се рестартира, използвайте същия инструмент, за да проверите дали актуализацията е инсталирана успешно. Ако има проблем с инсталирането, можете да използвате хардуерното нулиране на камерата (скрито под стойката), за да възстановите оригиналното фабрично изображение.

Усещане на света

С инсталирания SDK получавате достъп до сензорите на устройството от вашия код. Има три SDK: един за достъп на ниско ниво до всички сензори на камерата, друг за използване на познатите функции за проследяване на тялото на Kinect и един за свързване на микрофонния масив на камерата с речевите услуги на Azure. Предварително изградено приложение Kinect Viewer показва наличните изгледи на камерата и предава данни от сензорите на устройството. Получавате достъп до широкоъгълната RGB камера, изглед на дълбочинна камера и изображението от инфрачервената камера на сензора за дълбочина. SDK са налични както за Windows, така и за Linux, по-специално версията Ubuntu 18.04 LTS на Canonical и могат да бъдат изтеглени директно от Microsoft или от GitHub.

Добре е да прекарате известно време, играейки с Kinect Viewer. Тя ви позволява да видите как работят различните режими на дълбочината на камерата, като ви помага да изберете тесно или широко зрително поле. Можете да видите данни от датчиците за положение, както акселерометъра и жироскопа, така и от масива на микрофона. С Azure Kinect Developer Kit, свързан с компютър за разработка и работещ, можете да започнете да пишете код за него. Приложение за запис на команден ред може да се използва за улавяне на данни за възпроизвеждане в визуализатора, съхраняване на информация за дълбочината във файл с формат MKV (Matroska Video).

Изграждане на вашето първо приложение за засичане на дълбочина

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

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

Изображенията се заснемат в обект за заснемане с изображение с дълбочина, IR изображение и цветно изображение за всяко отделно изображение, взето от потока на устройството. След като направите заснемане, можете да извлечете отделните изображения, готови за използване във вашето приложение. Обектните изображения могат да бъдат доставени до API на машинното зрение на Azure, готови за разпознаване на обекти или откриване на аномалии. Един пример, който Microsoft използва в своите демонстрации, е приложение, което използва заснети видеозаписи, за да открие, когато работник на фабричен етаж се приближи твърде много до работа с машини; друг открива, че някой пуши в близост до газова помпа.

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

Въпреки че хардуерът Azure Kinect улавя много данни, SDK функциите помагат да се трансформира в използваема форма; например добавяне на данни за дълбочина към RGB изображение, за да се получат RGB-D изображения, които се трансформират в гледната точка на RGB камерата (и обратно). Тъй като двата сензора са изключени, това изисква изкривяване на изображението, за да се обединят гледните точки на двете камери, като се използва графичният процесор на вашия компютър. Друга трансформация генерира облак от точки, което ви позволява да получавате данни за дълбочината за всеки пиксел във вашето заснемане. Една полезна опция в SDK е възможността за улавяне на видео и потоци от данни във файл с формат Matroska. Този подход позволява на устройства с ограничена честотна лента да групират данни и да ги доставят, да речем, на устройства на Azure Stack Edge с контейнери за когнитивни услуги за групова обработка.

Тяло, проследяващо дигитален скелет

Оригиналният хардуер на Kinect въведе проследяване на тялото със скелетен модел, който може да се използва за бързо оценяване на стойката и жестовете. Същият подход продължава и в Azure Kinect Body Tracking SDK, който използва технологията за паралелна обработка на графичния процесор CUDA на Nvidia за работа с триизмерни данни от изображения от сензора за дълбочина на вашето устройство. Приложеното примерно приложение показва някои от функциите на SDK, включително възможността да се проследяват повече от един човек наведнъж. 

SDK за проследяване на тялото се основава на SDK на Azure Kinect, като го използва за конфигуриране и свързване с устройство. Данните от заснетите изображения се обработват от тракера, като съхраняват данни в структурата от данни на рамката на тялото. Това съдържа колекция от скелетни структури за идентифицирани тела, 2-D индексна карта, която ви помага да визуализирате вашите данни, заедно с основните 2-D и 3-D изображения, които са били използвани за изграждане на данни за проследяване. Всеки кадър може да се използва за конструиране на анимации или за подаване на информация към инструменти за машинно обучение, които могат да помогнат за обработката на проследени позиции по отношение на карта на стаята или към идеални позиции.

Когнитивните услуги на Azure са мощен инструмент за обработка на данни и добавянето на Azure Kinect прави възможно използването им в широк спектър от индустриални и корпоративни сценарии. С фокус върху триизмерното разпознаване на изображения на работното място, Microsoft се опитва да покаже как разпознаването на изображения може да се използва за намаляване на риска и подобряване на безопасността. Има дори възможност да се използва набор от устройства като система за бързо обемно улавяне, която може да помогне за изграждането на среда със смесена реалност и да предостави изходни данни за CAD и други инструменти за проектиране. Резултатът е гъвкаво устройство, което с малко код се превръща в много мощно сензорно устройство.