Suradnja s Azure Kinect Developer Kitom

Microsoft je najavio svoje module kamere Azure Kinect uz HoloLens 2 početkom 2019. Oba uređaja koriste isti modul kamere s miješanom stvarnošću, koristeći senzor dubine vremena leta za mapiranje objekata oko kamere. No tamo gdje je HoloLens nosivi uređaj s mješovitom stvarnošću, moduli Azure Kinect namijenjeni su pružanju aplikacija za strojno učenje koje hostiraju Azure s povezanim senzorima koji se mogu montirati bilo gdje u radnom prostoru.

Azure Kinect izravni je potomak druge generacije Kinect modula koji su isporučeni s Xbox Oneom, ali umjesto da pruža stvarne ulaze za igre, usmjeren je na poslovne korisnike i aplikacije. Namijenjen radu s Azureovim kognitivnim uslugama, prvi Azure Kinect komplet za programere počeo se isporučivati ​​krajem 2019. godine u Sjedinjenim Državama, dodajući još nekoliko zemalja početkom 2020. godine.

Otvaranje kutije

Azure Kinect Developer Kit, čija je cijena 399 dolara, mala je bijela jedinica s dvije leće kamere, jednom za RGB kameru s širokim kutom i senzorom za dubinu Kinect te nizom mikrofona. Ima senzor orijentacije koji vam omogućuje da pomoću kamere napravite složene trodimenzionalne slike okruženja, spremnih za upotrebu u mješovitoj stvarnosti. Možete povezati više uređaja zajedno za brzo 3-D skeniranje ili za osiguranje pokrivenosti cijele sobe, koristeći senzor orijentacije kako biste lakše razumjeli položaj uređaja.

Zajedno s jedinicom kamere dobivate napajanje, imbus ključ za uklanjanje poklopca lančanih priključaka i USB kabel za povezivanje s razvojnim računalom. Preporučio bih da nabavite stativ za stol ili drugu vrstu nosača, jer je priloženo plastično postolje prilično malo i ne radi s većinom stolova ili monitora. U kutiji nema softvera, postoji samo veza do mrežne dokumentacije s koje možete preuzeti SDK za uređaj.

Prije nego što započnete, trebali biste ažurirati firmver uređaja. To se isporučuje s SDK-om i uključuje alat za instalaciju naredbenog retka. Kada pokrenete program za ažuriranje, prvo provjerava trenutno stanje firmvera prije instaliranja firmvera kamere i uređaja, a zatim ponovno pokretanje. Nakon što se kamera ponovno pokrene, istim alatom provjerite je li nadogradnja uspješno instalirana. Ako postoji problem s instalacijom, možete upotrijebiti resetiranje hardvera fotoaparata (skriven ispod nosača stativa) za vraćanje izvorne tvorničke slike.

Osjetivši svijet

Instaliranim SDK-om dobivate pristup senzorima uređaja iz vašeg koda. Postoje tri SDK-a: jedan za pristup na niskoj razini svim senzorima kamere, drugi za upotrebu poznatih Kinect značajki za praćenje tijela i jedan za povezivanje niza mikrofona kamere s Azureovim govornim uslugama. Unaprijed izrađena aplikacija Kinect Viewer prikazuje dostupne poglede kamere i struji podatke sa senzora uređaja. Pristup širokokutnoj RGB kameri, pogledu dubinske kamere i slici putem infracrvene kamere senzora dubine. SDK-ovi su dostupni i za Windows i za Linux, posebno za Canonical-ovo izdanje Ubuntu 18.04 LTS, a mogu se preuzeti izravno s Microsofta ili s GitHub-a.

Dobro je provesti neko vrijeme igrajući se s Kinect Viewerom. Omogućuje vam da vidite kako rade različiti režimi dubinske kamere, pomažući vam u odabiru uskog ili širokog vidnog polja. Možete vidjeti podatke iz senzora položaja, i akcelerometra i žiroskopa, i iz niza mikrofona. Kad je Azure Kinect Developer Kit povezan s razvojnim računalom i radi, možete početi pisati kod za njega. Aplikacija za snimanje naredbenog retka može se koristiti za hvatanje podataka za reprodukciju u pregledniku, pohranjujući podatke o dubini u datoteku formata MKV (Matroska Video).

Izrada vaše prve aplikacije za otkrivanje dubine

Microsoft nudi uzorak koda za izgradnju jednostavne C aplikacije za rad s Azure Kinect Development Kitom. Potrebna je samo jedna knjižnica, koja pruža objekte i metode potrebne za rad s fotoaparatom. Bilo koja aplikacija najprije mora provjeriti koliko je kamera spojeno na glavno računalo prije nego što konfigurirate protoke podataka na uređaju. Uređaji se prepoznaju po serijskom broju, tako da ih možete koristiti za obraćanje određenoj kameri kada radite s nekoliko povezanih na isto računalo ili povezanih u lance.

Komplet za razvojne programere Azure Kinect isporučuje samo streaming podatke, tako da aplikacije trebaju konfigurirati brzinu prijenosa podataka u okvirima u sekundi, zajedno s formatima i rezolucijama boja slika. Nakon što stvorite konfiguracijski objekt, možete otvoriti vezu pomoću svog konfiguracijskog objekta, spremnog za strujanje podataka. Kad završite s čitanjem podatkovnog toka, zaustavite i zatvorite uređaj.

Slike se snimaju u objekt za snimanje, s dubinskom slikom, IC slikom i slikom u boji za svaku pojedinu sliku, snimljenu iz toka uređaja. Nakon snimanja možete izdvojiti pojedinačne slike spremne za upotrebu u vašoj aplikaciji. Slikovni objekti mogu se dostaviti u Azure API-je za strojni vid, spremni za prepoznavanje objekata ili otkrivanje anomalija. Jedan od primjera koje je Microsoft koristio u demonstracijama je aplikacija koja koristi snimljeni videozapis za otkrivanje kada se radnik na tvorničkom katu previše približi upravljanju strojevima; drugi otkrije da netko puši u blizini benzinske pumpe.

Sličan postupak daje vam podatke sa senzora položaja i pokreta. Budući da se podaci o kretanju hvataju većom brzinom od podataka o slici, morate implementirati neki oblik sinkronizacije u svoj kôd kako biste izbjegli gubitak podataka. Audio podaci snimaju se pomoću standardnih Windows API-ja, uključujući one koje koriste Azureove govorne usluge.

Iako hardver Azure Kinect bilježi puno podataka, SDK funkcije pomažu u pretvaranju u uporabljiv oblik; na primjer, dodavanje podataka o dubini u RGB sliku za stvaranje RGB-D slika koje se transformiraju u stajalište RGB kamere (i obrnuto). Budući da su dva senzora isključena, to zahtijeva iskrivljenje mrežice slike kako bi se spojile točke gledišta dviju kamera, koristeći GPU vašeg računala. Druga transformacija generira oblak točaka, omogućujući vam dobivanje podataka o dubini za svaki piksel u hvatanju. Jedna korisna opcija u SDK-u je mogućnost snimanja video zapisa i tokova podataka u datoteku u formatu Matroska. Ovaj pristup omogućuje uređajima s ograničenom širinom pojasa da grupiraju podatke i isporučuju ih, recimo, Azure Stack Edge uređajima s spremnicima Cognitive Services za skupnu obradu.

Tijelo koje prati digitalni kostur

Izvorni Kinect hardver predstavio je praćenje tijela, sa skeletnim modelom koji se mogao koristiti za brzu procjenu držanja i gesta. Isti se pristup nastavlja u Azure Kinect Body Tracking SDK, koji koristi Nvidijinu CUDA GPU tehnologiju paralelne obrade za rad s 3-D slikovnim podacima iz senzora dubine vašeg uređaja. Paket primjera aplikacije prikazuje neke od značajki SDK-a, uključujući mogućnost praćenja više osoba odjednom. 

SDK za praćenje tijela nadograđuje se na Azure Kinect SDK, koristeći ga za konfiguriranje i povezivanje s uređajem. Podaci o zarobljenim slikama obrađuju se pomoću programa za praćenje, pohranjujući podatke u strukturu podataka okvira tijela. Sadrži zbirku skeletnih struktura za identificirana tijela, 2-D indeksnu kartu koja pomaže u vizualizaciji vaših podataka, zajedno s temeljnim 2-D i 3-D slikama koje su korištene za izradu podataka praćenja. Svaki kadar može se koristiti za izradu animacija ili za dodavanje informacija alatima za strojno učenje koji mogu pomoći u obradi praćenih položaja u odnosu na kartu sobe ili na idealne položaje.

Azureove kognitivne usluge moćan su alat za obradu podataka, a dodatak Azure Kinect-a omogućuje njihovu upotrebu u širokom rasponu industrijskih i poslovnih scenarija. Usredotočujući se na 3D prepoznavanje slika na radnom mjestu, Microsoft pokušava pokazati kako se prepoznavanje slika može koristiti za smanjenje rizika i poboljšanje sigurnosti. Postoji čak i mogućnost upotrebe niza uređaja kao brzog volumetrijskog sustava za hvatanje, koji može pomoći u izgradnji okoliša s miješanom stvarnošću i pružiti izvorne podatke za CAD i druge alate za dizajn. Rezultat je fleksibilni uređaj koji s malo koda postaje vrlo moćan senzorski uređaj.