&
Presentano:
BUILD live – Torino
Introduzione a Microsoft Kinect
Gianni Rosa Gallina
[email protected]
http://embeddedlounge.blogspot.com
Marina Sabetta
[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?
3 / 21
• 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.
Cosa si può fare con Kinect?
Fonte: http://kinect.dashhacks.com
4 / 21
L’hardware
SENSORI PROFONDITA’ 3D
VIDEOCAMERA RGB
MICROFONI
MOTORINO INCLINAZIONE
5 / 21
L’hardware
http://www.ifixit.com/Teardown/Microsoft-Kinect-Teardown/4066
6 / 21
Cavo USB e alimentazione
7 / 21
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 standalone fornisce questo alimentatore esterno,
che è NECESSARIO per poterla collegare
anche ad un PC di sviluppo.
La tecnologia
8 / 21
• 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!)
La tecnologia
9 / 21
La tecnologia
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
Sembra magia ma… è
Computer Vision +
Data Analysis +
Intelligenza Artificiale
10 / 21
La tecnologia
Algoritmo di visione
Real-Time Human Pose Recognition in Parts
from 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 tecnologia
Non 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
Architettura
16 / 21
I sensori di Kinect inviano al sistema tre flussi di dati:
• Flusso video
Può 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 audio
E’ l’audio proveniente dalla batteria di microfoni, combinato in un unico
flusso di dati
Tracciatura del corpo
Quando 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?
18 / 21
• 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.Nui
per accedere ai flussi video, profondità e body tracking
Microsoft.Research.Kinect.Audio
per accedere ai dati audio
• Prima di poter utilizzare la libreria NUI, bisogna instanziare un oggetto
della classe Runtime, specificando i flussi a cui si vuole accedere
• Successivamente, bisogna aprire i flussi audio/video prima di poterli
utilizzare nel proprio applicativo, specificandone tipologia, risoluzione e
altri parametri specifici di ogni flusso
Come si usa?
19 / 21
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:
DepthFrameReady
Rende disponibile la matrice dei dati di profondità acquisiti dai sensori IR
SkeletonFrameReady
Rende 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.
VideoFrameReady
Rende disponibile il fotogramma acquisito dalla webcam
Come si usa?
20 / 21
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
Risorse aggiuntive
Coding For Fun –
http://c4fkinect.codeplex.com/
Kinect
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
http://kinectcontrib.codeplex.com/
http://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 Gallina
http://embeddedlounge.blogspot.com
21 / 21
DEMO
Domande & Risposte
Gianni Rosa Gallina
[email protected]
http://embeddedlounge.blogspot.com
Marina Sabetta
[email protected]
Scarica

20110913_Kinetic SDK