2011 03 01 MindCamp - Kinect y C#

  • 1,900 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,900
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • kinetic," which means to be in motion, and "connect," which means it "connects you to the friends and entertainment you loveNatural User InterfaceMaking Beginners Feel Like Experts
  • Play video if you have time and if people have not seen Kinect in action
  • Color VGA video camera - This video camera aids in facial recognition and other detection features by detecting three color components: red, green and blue. Microsoft calls this an "RGB camera" referring to the color components it detects.Depth sensor - An infrared projector and a monochrome CMOS (complimentary metal-oxide semiconductor) sensor work together to "see" the room in 3-D regardless of the lighting conditions. Complementary metal–oxide–semiconductor (CMOS) (pronounced /ˈsiːmɒs/) is a technology for constructing integrated circuits. CMOS technology is used in microprocessors, microcontrollers, static RAM, and other digital logic circuits. CMOS technology is also used for several analog circuits such as image sensors, data converters, and highly integrated transceivers for many types of communicationMulti-array microphone - This is an array of four microphones that can isolate the voices of the players from the noise in the room. This allows the player to be a few feet away from the microphone and still use voice controls.What comes in the boxKinect sensor for Xbox 360Power supply cableUser's manualWi-Fi extension cableKinect Adventures gameColor VGA Motion Camera 640 x 480 pixel resolution at 30FPSDepth Camera 640 x 480 pixel resolution at 30FPSArray of 4 microphones supporting single speaker voice recognitionKinect's software layer is the essential component to add meaning to what the hardware detects. When you first start up Kinect, it reads the layout of your room and configures the play space you'll be moving in. Then, Kinect detects and tracks 32 points on each player's body, mapping them to a digital reproduction of that player's body shape and skeletal structure, including facial details.http://electronics.howstuffworks.com/microsoft-kinect3.htmhttp://www.popsci.com/gadgets/article/2010-01/exclusive-inside-microsofts-project-natalKinect Software Learns from "Experience"Kinect's software layer is the essential component to add meaning to what the hardware detects. When you first start up Kinect, it reads the layout of your room and configures the play space you'll be moving in. Then, Kinect detects and tracks 48 points on each player's body, mapping them to a digital reproduction of that player's body shape and skeletal structure, including facial details [source: Rule].In an interview with Scientific American, Alex Kipman, Microsoft's Director of Incubation for Xbox 360, explains Project Natal's approach to developing the Kinect software. Kipman explains, "Every single motion of the body is an input," which creates seemingly endless combinations of actions [source: Kuchinskas]. Knowing this, developers decided not to program that seemingly endless combination into pre-established actions and reactions in the software. Instead, it would "teach" the system how to react based on how humans learn: by classifying the gestures of people in the real world.To start the teaching process, Kinect developers gathered massive amounts of data from motion-capture in real-life scenarios. Then, they processed that data using a machine-learning algorithm by Jamie Shotton, a researcher at Microsoft Research Cambridge in England. Ultimately, the developers were able to map the data to models representing people of different ages, body types, genders and clothing. With select data, developers were able to teach the system to classify the skeletal movements of each model, emphasizing the joints and distances between those joints. An article in Popular Science describes the four steps Kinect's "brain" goes through 30 times per second to read and respond to your movements [source: Duffy].The Kinect software goes a step further than just detecting and reacting to what it can "see." Kinect can also distinguish players and their movements even if they're partially hidden. Kinect extrapolates what the rest of your body is doing as long as it can detect some parts of it. This allows players to jump in front of each other during a game or to stand behind pieces of furniture in the room.
  • Depth sensor. An infrared projector combined with a monochrome CMOS sensor allows Kinect to see the room in 3-D (as opposed to inferring the room from a 2-D image) under any lighting conditions.
  • a 320×240 depth stream. Depth is recovered by projecting invisible infrared (IR) dots into a room. The way the optical system works, on a hardware level, is fairly basic. A class 1 laser is projected into the room. The sensor is able to detect what's going on based on what's reflected back at it. Together, the projector and sensor create a depth map. The regular old video camera is held at a specific distance away from the 3D part of the optical system in a precise alignment, so that Kinect can blend together the depth map and RGB picture for dynamic, on-the-fly green screening.
  • RGB camera. Kinect has a video camera that delivers the three basic color components. As part of the Kinect sensor, the RGB camera helps enable facial recognition and more.
  • Four different microphones allow Kinect to figure out where the sound is coming from
  • Multiarray microphone. Kinect has a microphone that is able to locate voices by sound and extract ambient noise. The multiarray microphone enables headset-free Xbox LIVE party chat and more.
  • Microsoft software. A proprietary software layer makes the magic of Kinect possible. This layer differentiates Kinect from any other technology on the market through its ability to enable human body recognition and extract other visual noise.
  • Micron scale tolerances on large componentsManufacturing process to yield ~1 device / 1.5 seconds
  • http://research.microsoft.com/apps/video/default.aspx?id=139295
  • http://research.microsoft.com/apps/video/default.aspx?id=139295
  • http://research.microsoft.com/en-us/projects/DryadLINQ/DryadLINQ is a simple, powerful, and elegant programming environment for writing large-scale data parallel applications running on large PC clusters.

Transcript

  • 1.
  • 2. Bruno Capuano @elbruno
    MVP – Visual Studio ALM
    b.capuano@gmail.com
    Avanade
    www.elbruno.com
    Kinect y C#Otra forma de conquistar el mundo …
  • 3. Una nueva forma de jugar, donde TU eres el mando
    ¿QuéesKinect?
    Voice Recognition
    Gesture Recognition
    Face Recognition
    You Recognition
  • 4. Opción A:
    ¿Porqué Kinect?
  • 5. Opción TU:
    ¿Porqué Kinect?
  • 6.
  • 7. Dispositivo que combina una cámara RGB, un sensor de profundidad y un array de micrófonos
    Cámara RBG para el reconocimiento de los tres colores básicos
    Sensor de Profundidad que permite “ver una habitación en 3D”
    El array de micrófonos detecta las voces y las aisla del ruido ambiental
    Caja negra de software que une todo y hace toda la magia
    ¿Qué es Kinect?
  • 8. ¿Qué es Kinect?



  • 9. ¿Qué es Kinect?
    Source: iFixit
    9
  • 10. 3D Depth Sensors


    ¿Qué es Kinect?
  • 11. Invisible Infrared (IR) Dots
    320x240
  • 12. RGB Camera

    ¿Qué es Kinect?
  • 13. ¿Qué es Kinect?
    IR laser projector
    IR camera
    RGB camera
    Source: iFixit
    13
  • 14. Se utiliza para el reconocimiento facial
    El reconocimiento facial requiere una fase de “training”
    Necesita una buena iluminación
    RGB Camera
    14
  • 15. Multi-array Microphone
    ¿Qué es Kinect?
  • 16. Sensores de sonido
    • 4 channel multi-array microphone
    • 17. Sincronizado con la consola para eliminar el sonido de los juegos
    16
  • 18. Motorized Tilt
    ¿Qué es Kinect?
  • 19. Software
    Research
    Testing
    Data collection
    Y la “cajanegra”
  • 20. Prime Sense Chip
    Xbox Hardware Engineering mejorónotablemente la calidad y velocidadbasado en los diseños de Prime Sense
    19
  • 21. Projected IR pattern
    20
    Source: www.ros.org
  • 22. Depth computation
    Source: http://j.mp/eXsCiE
    21
  • 23. Depth map
    Source: www.insidekinect.com
    22
  • 24. 30 HZ frame rate
    57deg field-of-view
    Salida de video en Kinect
    8-bit VGA RGB640 x 480
    11-bit monochrome320 x 240
    23
  • 25. XBox 360 Hardware
    • Triple Core PowerPC 970, 3.2GHz
    • 26. Hyperthreaded, 2 threads/core
    • 27. 500 MHz ATI graphics card
    • 28. DirectX 9.5
    • 29. 512 MB RAM
    • 30. 2005 performance envelope
    • 31. Must handle
    • 32. real-time vision AND
    • 33. a modern game
    Source: http://www.pcper.com/article.php?aid=940&type=expert
    24
  • 34. ¿Cómo funciona Kinect? (I)
  • 35. 1- ¿Cómo sabe Kinectlo que hago?
    “Xbox?!”
    “Let’s Play!”
  • 36. “Xbox?!”
    “Let’s Play!”
    2- ¿Cómo aprendió Kinecttodo esto?
  • 37. J. Shotton, J. Winn, C. Rother, A. Criminisi, TextonBoost: Joint Appearance, Shape and Context Modeling for Multi-Class Object Recognition and Segmentation. European Conference on Computer Vision, 2006
    MSResearch: Reconocimiento de Objetos
  • 38. Amplio campo de acción
    Pero poca “agilidad”
    Y no es real-time
    MS Research: Human Body Tracking
    R Navaratnam, A Fitzgibbon, R Cipolla The Joint Manifold Model for
    Semi-supervised Multi-valued RegressionIEEE Intl Conf on Computer Vision, 2007
  • 39. Necesitamos un body tracker con
    All body motions…
    Allagilities…
    10x Real-time…
    Formultipleplayers…
    … and it has to be 3D 
    XBOX llama a MSR: Septiembre 2008
  • 40. Paso 1: Recolección de información
    El equipo visita diferentes ubicaciones y se dedica a filmar usuarios reales de Xbox
    Hollywood motion capture studiogeneratesbillions of CG images
    MSR & xBox: Machine Learning
  • 41. Overlay Training Data
  • 42. Identificar cada pixel asociado a una de las 32 partes del cuerpo humano
    Crear un cluster con las posibles configuraciones de “partes” que coincidan con las articulaciones
    Presentar la probabilidad más acercada a la realidad al usuario
    t=1
    t=2
    t=3
    Indenticando el cuerpo
  • 43. Millones de imágenescomoreferncias-> millones de parámetros de clasificación
    Very far from “embarrassingly parallel”
    Nuevo algoritomopara resolver árboles de decisióndistribuidos
    Utilizaciónmasiva de DryadLINQ
    Disponibleparadescargar
    Training
    Distributed Data-Parallel Computing Using a High-Level Programming Language
    M Isard, Y Yu
    International Conference on Management of Data (SIGMOD), July 2009
  • 44. Programmers View
  • 45. ¿Cómo funciona Kinect? (II)
  • 46. Architectura extensible
    Expert 1
    fuses the hypotheses
    Arbiter
    Expert 2
    Expert 3
    probabilistic
    Final
    estimate
    Raw
    data
    Skeleton
    estimates
    Sensor
    Stateless
    Statefull
    37
  • 47. Sensor
    Mapa de
    profundidad
    Separación por jugador
    basado en el fondo
    Paso a paso para el reconocimiento
    38
    Clasificación de
    partes del cuerpo
    Identificación de
    “joints”
    Creación de
    “Skeleton”
  • 48. Ejemplos
    39
  • 49. Sin calibración
    • Sin pose para inicio/pausa
    • 50. Sin calibración para el fondo
    • 51. Sin calibración para el cuerpo
    Uso mínimo de la CPU
    Independiente de la iluminación
    Carta a los reyes manos
    40
  • 52. body size
    hair
    FOV
    body type
    clothes
    angle
    pets
    furniture
    Pruebas: The test matrix
    41
  • 53. Preproceso
    • Identificar el suelo (groundplane)
    • 54. Aislar el fondo (aislar un sofá)
    • 55. Identificar los jugadores
    42
  • 56. Seguimiento de cabeza y manos
    2 “Seguidores” (trackers)
    Seguimiento de cuerpo
    not exposed through SDK
    43
  • 57. El problema del seguimiento de cuerpo
    Classifier
    Input
    Depth map
    Output
    Body parts
    Runs on GPU @ 320x240
    44
  • 58. Entrenando a Kinect
    Comienza desde datos ground-truth
    Alineados con partes del cuerpo
    Es necesario entrenar a Kinect para trabajar con
    Poses
    Posición por escena
    Tamaño y formas del cuerpo
    45
  • 59. Entrenando a Kinect
    Use synthetic data (3D avatar model)
    • Inject noise
    46
  • 60. Motion Capture:
    • Unrealistic environments
    • 61. Unrealistic clothing
    • 62. Low throughput
    Entrenando a Kinect
    47
  • 63. Entrenando a Kinect
    Manual Tagging:
    • Requires training many people
    • 64. Potentially expensive
    • 65. Tagging tool influences biases in data.
    • 66. Quality control is an issue
    • 67. 1000 hrs @ 20 contractors ~= 20 years
    48
  • 68. Entrenando a Kinect
    Amazon Mechanical Turk:
    • Build web based tool
    • 69. Tagging tool is 2D only
    • 70. Quality control can be done with redundant HITS
    • 71. 2000 frames/hr @ $0.04/HIT -> 6 yrs @ $80/hr
    49
  • 72. Compute P(ci|wi)
    pixels i = (x, y)
    body part ci
    image window wi
    Learn classifier P(ci|wi) from training data
    randomized decision forests
    Clasificando pixel a pixel
    example image windows
    window moves with classifier
    50
  • 73. Features
    𝑓𝜃𝐼, 𝑥=𝑑𝐼𝑥+𝑢𝑑𝐼𝑥-𝑑𝐼𝑥+𝑣𝑑𝐼𝑥
     
    𝑑𝐼𝑥
     
    -- depth of pixel x in image I
    -- parameter describing offetsu and v
    𝜃 = (u,v)
     
    51
  • 74. Analizalasposiciones 3D del todaslaspartesidentificadas del cuerpo
    Genera unacolección (posicion, confidence)/parte
    Genera múltiplesopcionesparacada parte del cuerpo
    El trabajo lo realiza la GPU
    Paso 1: «Body» a «Joint Positions»
    52
  • 75. Basado en 3 modelos de “Skeleton“
    El proceso se realiza en:
    Cálculo de distancia entre puntos conectados(relativos al «tamaño del cuerpo»)
    Cercanía de los huesos con las partes del cuerpo
    Aplica además patrones para el «smoothness»
    Paso 2: «Joint Positions» a «Skeleton»
    53
  • 76. Como definir el “skeleton”?
    54
  • 77. DEMO
  • 78. GRACIAS