&
Presentano:BUILD live – Torino
Introduzione a Microsoft Kinect
Gianni Rosa [email protected]://embeddedlounge.blogspot.com
Marina [email protected]
Agenda Cos’è Microsoft Kinect?
Cosa si può fare con Kinect?
L’hardware
La tecnologia• Video• Body tracking• Audio
Microsoft Kinect SDK• Architettura• Come si usa
2 / 21
Cos’è Microsoft Kinect?• E’ un dispositivo embedded, costituito da:
• un insieme di sensori audio/video: Videocamera RGB Sensori di profondità 3D Microfoni
• software proprietario per: Computer Vision Tracciatura del corpo Riconoscimento facciale Riconoscimento vocale
• Pensato per la console Microsoft Xbox 360, in modo da permettere una modalità di gioco senza controller e coinvolgente
• Ha fatto la sua prima apparizione ufficiale nel 2009, prima era noto con il nome in codice Project Natal.
3 / 21
L’hardware
VIDEOCAMERA RGB
SENSORI PROFONDITA’ 3D
MICROFONI MOTORINO INCLINAZIONE
5 / 21
L’hardware
http://www.ifixit.com/Teardown/Microsoft-Kinect-Teardown/4066
6 / 21
Cavo USB e alimentazione
Il motorino di inclinazione richiede più corrente di quanta le sole porte USB possano fornire
Si ha un connettore proprietario che combina USB standard e maggiore potenza di alimentazione
La versione di Kinect acquistabile stand-alone fornisce questo alimentatore esterno, che è NECESSARIO per poterla collegare anche ad un PC di sviluppo.
7 / 21
La tecnologia• Frutto di decenni di ricerche accademiche, dell’industria, di Microsoft Research e del gruppo Xbox nel campo della Computer Vision
• Basata sulle soluzioni tecnologiche dell’israeliana PrimeSense
I problemi che Kinect risolve:
Trova una o più persone in una scena, ignorando lo sfondo
Riconosce gli arti e i giunti, associandoli alla persona corretta
Trova e traccia i gesti delle persone
Mappa i gesti su significati e comandi
Inoltre: Riconosce le facce Riconosce la voce (Permette anche di giocare!)
8 / 21
La tecnologia9 / 21
Sembra magia ma… è
Computer Vision +Data Analysis +
Intelligenza Artificiale
Machine Learning
Valuta miliardi di possibili posture del corpo umano sulla base di 32 segmenti connessi (scheletro)
• Ogni fotogramma• A 30 fotogrammi al secondo• Consumando meno del 10% di CPU
La tecnologia10 / 21
La tecnologia
Algoritmo di visione
Real-Time Human Pose Recognition in Partsfrom a Single Depth Image
Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby Sharp, Mark Finocchio, Richard Moore, Alex Kipman, Andrew Blake
http://research.microsoft.com/apps/pubs/default.aspx?id=145347
11 / 21
La tecnologiaNon dimentichiamo l’audio!
I problemi che Kinect risolve:
Isola la voce dal rumore di fondo
Riduce/elimina riverberi ed echi dovuti all’ambiente circostante
Rileva direzionalmente la sorgente audio
Riconosce il parlato
Sembra magia ma… è
Batteria di microfoni +DSP +
Data Analysis +Intelligenza Artificiale
12 / 21
La tecnologia
Algoritmi audio
• Presentazione al MIX 2011 di Ivan Tashev
http://channel9.msdn.com/events/MIX/MIX11/RES01
• E’ l’architect della maggior parte del processing audio di Kinect
• Ha introdotto notevoli avanzamenti nel campo del processing audio in real-time e attualmente sta lavorando al problema dell’identificazione del parlatore
13 / 21
14 / 21
Windows Kinect SDK• Microsoft Research ha rilasciato una versione beta del Kinect SDK per
Windows il 16 giugno:
http://research.microsoft.com/kinectsdk
• L’SDK installa: i driver per i sensori Kinect API di programmazione C++ e .NET (C# / VB.NET) documentazione applicativi di esempio + codice sorgente
• Attenzione! SOLO Windows 7 (x86 / x64), NON in macchina virtuale
• Per poter usare le librerie Kinect su una macchina NON di sviluppo, occorre comunque installare l’SDK e tutte le sue dipendenze
• In questo momento l’SDK si può utilizzare solo per scopi personali o di ricerca. NON si possono realizzare prodotti commerciali.
15 / 21
ArchitetturaI sensori di Kinect inviano al sistema tre flussi di dati:
• Flusso videoPuò essere visualizzato come una normale webcam. Sono disponibili due risoluzioni: 640x480 @ 30fps e 1280x1024 @ 15fps
• Flusso di profonditàE’ una matrice di interi i cui valori indicano la profondità spaziale (in mm) di ogni pixel di un flusso video a 320x240. Può essere interpretato come video B/N oppure, con qualche elaborazione aggiuntiva, si può rendere colorato
• Flusso audioE’ l’audio proveniente dalla batteria di microfoni, combinato in un unico flusso di dati
16 / 21
Tracciatura del corpoQuando Kinect sta tracciando una persona, vengono frequentemente forniti allo sviluppatore informazioni sullo scheletro riconosciuto.
Lo scheletro consiste nei seguenti 20 punti chiave, i giunti:
17 / 21
Come si usa?• Per usare le librerie Kinect in un’applicazione .NET, è necessario
includere solo una reference alla DLL Microsoft.Research.Kinect.dll
• Sono disponibili due namespace:
Microsoft.Research.Kinect.Nuiper accedere ai flussi video, profondità e body tracking
Microsoft.Research.Kinect.Audioper accedere ai dati audio
• Successivamente, bisogna aprire i flussi audio/video prima di poterli utilizzare nel proprio applicativo, specificandone tipologia, risoluzione e altri parametri specifici di ogni flusso
• Prima di poter utilizzare la libreria NUI, bisogna instanziare un oggetto della classe Runtime, specificando i flussi a cui si vuole accedere
18 / 21
Come si usa?La libreria NUI funziona ad eventi: ogni qualvolta i sensori hanno dei dati disponibili, vengono notificati degli eventi a cui bisogna registrarsi per poter ricevere ed utilizzare le informazioni:
DepthFrameReadyRende disponibile la matrice dei dati di profondità acquisiti dai sensori IR
SkeletonFrameReadyRende disponibili i dati dei giunti di uno o due corpi completamente tracciati. I dati sui giunti possono essere validi o meno, è necessario verificarne lo stato prima di utilizzarli in elaborazioni successive.
VideoFrameReadyRende disponibile il fotogramma acquisito dalla webcam
19 / 21
Come si usa?Per gestire l’audio, invece, è sufficiente instanziare un oggetto di tipo KinectAudioSource:
Con questo oggetto si possono avere:
• i dati audio veri e propri (16KHz, 16bit PCM)– da un singolo microfono o dalla battaria completa– con opzionale cancellazione del rumore e dell’eco (AEC)
• informazioni sulla direzione della sorgente (beamforming)– se attivato, i dati vengono recuperati registrandosi all’evento BeamChanged– l’informazione è espressa in gradi radianti: 0 nella posizione frontale rispetto al sensore
Kinect; <0 a sinistra, >0 a destra.–È disponibile, come per i giunti, un parametro per stabilire la qualità dell’informazione
• integrazione con le Speech API di Windows per fare riconoscimento vocale
20 / 21
Risorse aggiuntiveCoding For Fun – Kinect Toolkithttp://c4fkinect.codeplex.com/
Kinect Gestures (Blog di David Catuhe)http://blogs.msdn.com/b/eternalcoding/archive/2011/07/04/gestures-and-tools-for-kinect.aspx
Alimentatore per Kinect (Microsoft Store)http://www.microsoftstore.com/store/msstore/en_US/buy/pageType.product/externalRefID.9A4CFC08
Kinect VS2010 Templateshttp://kinectcontrib.codeplex.com/
Lingue aggiuntive per Speech Recognition / Text To Speechhttp://www.microsoft.com/download/en/details.aspx?displaylang=en&CTT=1&id=3971
Video, esempi, training (Channel9)http://channel9.msdn.com/coding4fun/kinect/http://channel9.msdn.com/Series/KinectSDKQuickstarts
Blog di Gianni Rosa Gallinahttp://embeddedlounge.blogspot.com
21 / 21
DEMO
Domande & Risposte
Gianni Rosa [email protected]://embeddedlounge.blogspot.com
Marina [email protected]