Reconhecimento de objetos com Kinect
MAC5832 - Profª NinaAlexandre Martins
28 de Outubro de 2012
Classificar objetos conhecidos colocados
sobre uma mesa
1. Aquisição dos dados
2. Mudança de representação
3. Segmentação dos objetos
4. Classificaçãoi. formaii. cor
Roteiro
Aquisição dos dados
Microsoft Kinect (agradecimentos ao hitoshi :)
Câmera RGB - 640x480 @ 30HzSensor de profundidade - 640x480 @ 30Hz
Autores: James Pfaff, Alphathon (Wikipedia). CC-BY-SA 3.0
Aquisição dos dados
Mudança de representação
Quero uma nuvem de pontos 3D, colorida.
Mudança de representação
Modelo: câmera de furo
1) Dado (u, v) na depth image, obtenha a posição (x, y, z) do pontoz = 1 / (depth(u, v) * dc1 + dc2)y = z * (u - px_d) / fx_dx = z * (v - py_d) / fy_d
2) Obtenha a cor (r, g, b) correspondente a (x, y, z)[x' y' z']^t = R [x y z]^t + Tu' = (x' * fx_rgb) / z' + px_rgbv' = (y' * fy_rgb) / z' + py_rgbr = red(u', v'), g = green(u', v'), b = blue(u', v')
Fonte: [1]
Mudança de representação
Já implementado na Point Cloud Library :)
pointclouds.org
Segmentação dos objetos
...que estão dispostos sobre a mesa
Segmentação dos objetos
remova pontos cuja coordenada z é >= limiar
Segmentação dos objetos
"downsample"
Segmentação dos objetos
remova a mesa (???)
Segmentação dos objetos
RANdom SAmple Consensus (RANSAC)
Autor: Msm (Wikipedia). CC-BY-SA 3.0
Segmentação dos objetos
remova a mesa
Segmentação dos objetos
elimine o ruído restante...
Segmentação dos objetos
e extraia os clusters (floodfill)
Classificação
Classifique os clusters por forma e por cor
Classif. 1: forma
Classif. 2: cor
Classif. 3:objeto SAÍDA
Classificação
Classifique os clusters por forma e por cor
Classif. 1: forma
Classif. 2: cor
Classif. 3:objeto SAÍDA
Classificação (forma)
Dado um cluster, quero saber sua forma
Conjunto de classes:{ maçã, banana, caixa, tigela }
Preciso:1) achar um vetor de características2) escolher um classificador3) treiná-lo e testá-lo...
Classificação (forma)
Viewpoint Feature Histogram (VFH) é um descritor para nuvens de pontos 3D que codifica geometria e ponto de vista [2]. VFH é rápido e invariante à escala.
É fixado um ponto de vista (ex: origem)
Classificação (forma)
Dado um ponto p e sua k-vizinhança { pi }, determine a normal à superfície em p.
Use PCA para determinar a direção:
Dado o ponto de vista, vp, ache o sentido:
Fonte: http://pointclouds.org/documentation/tutorials/normal_estimation.php
Classificação (forma)
Dados dois pontos ps e pt, definimos seus desvios angulares <α,Φ,θ> por:
onde:
Fonte: http://pointclouds.org/documentation/tutorials/pfh_estimation.php
Classificação (forma)
Seja c o centróide do cluster.Para cada pi, calculamos três componentes:
1) viewpoint componentβi = ni . (vp - c) / || (vp - c) ||
2) distância normalizada entre pi e c
3) desvios angulares entre pi e cFonte: [2]
Classificação (forma)
... quebramos as componentes em "caixas":
1) viewpoint component: 128 subdivisões
2) distância normalizada: 45 subdivisões
3) desvios angulares: 45*3 subdivisões
... e, usando todos os pontos do cluster, montamos um histograma
Classificação (forma)
Assim, para cada cluster, computamos um feature vector de dimensão 308.
YYYYYEEEEEEESSSSS!!!
Classificação (forma)
Classificador: k nearest neighbors
Autor: Antti Ajanki (Wikipedia). CC-BY-SA 3.0
Classificação (forma)
Distância entre dois histogramas:
kNN já implementado na biblioteca FLANN:Fast Library for Approximate Nearest Neighbors
Fonte: [4]
http://www.cs.ubc.ca/~mariusm/index.php/FLANN/FLANN
Classificação (forma)
Para "treinamento", usamos o RGB-D Dataset da Universidade de Washington [3].
Fonte: http://www.cs.washington.edu/rgbd-dataset/index.html
Classificação (forma)
RGB-D Dataset: objetos capturados com um Kinect com o auxílio de uma mesa giratória.
Imagem extraída de [2]
Classificação (forma)
Testes: validação cruzada (k-fold)k=3 p/ n=2483 amostrasMatriz de confusão:
hmmm..... usando 1 vizinho + próximo...
real \ pred maçã banana caixa tigela
maçã 606 0 0 1
banana 0 725 0 0
caixa 3 0 566 0
tigela 1 0 0 579
Classificação (forma)
Testes: validação cruzada (k-fold)k=3 p/ n=2483 amostras
hmmm.......................
maçã banana caixa tigela
TP 606 725 566 579
TN 1870 1756 1912 1900
FP 4 0 0 1
FN 1 0 3 1
acurácia 99,8% 100% 99,88% 99,9%
precisão 99,34% 100% 100% 99,82%
Classificação (forma)
Testes: validação cruzada (k-fold)k=3 p/ n=2483 amostrasMatriz de confusão:
hmmm..... usando 6 vizinhos + próximos...
real \ pred maçã banana caixa tigela
maçã 607 0 0 0
banana 0 725 0 0
caixa 9 0 558 2
tigela 4 0 0 576
Classificação (forma)
Testes: validação cruzada (k-fold)k=3 p/ n=2483 amostras
hmmm.......................
maçã banana caixa tigela
TP 607 725 558 576
TN 1861 1756 1912 1899
FP 13 0 0 2
FN 0 0 11 4
acurácia 99,47% 100% 99,55% 99,75%
precisão 97,92% 100% 100% 99,65%
Classificação (forma)
Ele generaliza bem?Cjto. treinamento (n=2483) != cjto. teste (n=48)Matriz de confusão:
hmmm..... usando 6 vizinhos + próximos...
real \ pred maçã banana caixa tigela
maçã 16 0 0 0
banana 0 7 1 0
caixa 2 0 22 0
tigela 0 0 0 0
Classificação (forma)
Ele generaliza bem?Cjto. treinamento (n=2483) != cjto. teste (n=48)
hmmm.......................
maçã banana caixa tigela
TP 16 7 22 0
TN 30 40 23 48
FP 2 0 1 0
FN 0 1 2 0
acurácia 96% 97,91% 93,75% 100%
precisão 88,88% 100% 95,65% -
Classificação
Classifique os clusters por forma e por cor
Classif. 1: forma
Classif. 2: cor
Classif. 3:objeto SAÍDA
Classificação (cor)
Dado um cluster, quero saber sua "cor"
Conjunto de "cores":{ maçã, maçã verde, banana, aveia, cx. cereal, livro }
Preciso:1) achar um vetor de características2) escolher um classificador3) treiná-lo e testá-lo...
Classificação (cor)
rg chromacity space
dada uma tripla (R,G,B), calcule:
obs: r + g + b = 1 Fonte: http://en.wikipedia.org/wiki/Rg_chromaticity
Classificação (cor)
sem intensidade!
Autor: Augurar (Wikipedia). CC-BY-SA 3.0.
Classificação (cor)
Cada ponto terá um feature vector: (r, g)
Classificação (cor)
Mistura de Gaussianas
x
Classificação (cor)
Seja x = (x1,...,xn) uma amostra de n observações i.i.d. de uma mistura de duas gaussianas d-dimensionais.
Há n va's "ocultas", z1,..., zn, que determinam de qual gaussiana veio a observação. Ademais,cada zi é uma Bernoulli. zi's são as "etiquetas".
Fonte: http://en.wikipedia.org/wiki/Multivariate_normal_distribution
Classificação (cor)
Sei que:
Quero estimar:
Fonte: http://en.wikipedia.org/wiki/Expectation%E2%80%
93maximization_algorithm
Classificação (cor)
Expectation-Maximization algorithm (EM)
Repita até convergência {
E-step:meu melhor "chute" da prob. de que xi é da gaussiana j
Fonte: http://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm
Classificação (cor)
M-step (similar a MLE):
} Fonte: http://en.wikipedia.org/wiki/Expectation%E2%80%93maximization_algorithm
Classificação (cor)
fdp da "cor" da maçã:
Classificação (cor)
1. Estimei a fdp, no espaço rg, de cada "cor"
2. Classifico todos os pontos do cluster (Bayes)
3. Classifico o cluster como a "cor" + frequente
Classificação (cor)
Classificação dos pontos:
categoria ("cor") %
maçã (vermelha) 70,2465
aveia 18,3099
cx. cereal 5,98592
banana 2,8169
livro 2,46479
maçã verde 0,176056
Classificação (cor)
Testes: validação cruzada (k-fold)k=6 p/ n=48 objetos. Matriz de confusão:
real \pred maçã aveia banana livro cx. cereal m. verde
maçã 8 0 0 0 0 0
aveia 0 5 0 0 0 0
banana 0 0 8 0 0 0
livro 0 0 0 8 0 0
cx. cereal 0 0 1 6 4 0
m. verde 0 0 0 0 0 8
Classificação (cor)
Testes: validação cruzada (k-fold)k=6 p/ n=48 objetos.
maçã aveia banana livro cx. cereal m. verde
TP 8 5 8 8 4 8
TN 40 43 39 34 37 40
FP 0 0 1 6 0 0
FN 0 0 0 0 7 0
acurácia 100% 100% 97,91% 87,5% 85,41% 100%
precisão 100% 100% 88,88% 57,14% 100% 100%
Classificação (cor)
Classificação dos pontos:
hmmmm...
categoria %
cx. cereal 29,9973
banana 28,5373
aveia 15,5296
livro 15,3172
maçã (vermelha) 6,26493
maçã verde 4,3536
Classificação
Classifique os clusters por forma e por cor
Classif. 1: forma
Classif. 2: cor
Classif. 3:objeto SAÍDA
Classificação (objeto)
Universo conhecido:{ maçã, m. verde, banana, aveia, cx. cereal, livro, tigela }
Classificação (objeto)
Árvore de decisão hardcoded...forma?
maçã
cor?
m. verde
maçãvermelha
maçã verde
tigela
tigela
caixa
cx. cereallivro
cor?
...
...
livrodecálculo
caixadecereal
...
m. verm.
...
...
kbô
Referências[1] J. Kramer, et al. Hacking the Kinect. Apress, 2012.
[2] R. B. Rusu, G. Bradski, R. Thibaux e J. Hsu, "Fast 3D Recognition and Pose Using the Viewpoint Feature Histogram", Proceedings of the 23rd IEEE/RS, International Conference on Intelligent Robots and Systems (IROS), 2012.
[3] K. Lai, L. Bo, X. Ren e D. Fox. "A Large-Scale Hierarchical Multi-View RGB-D Object Dataset", IEEE International Conference on Robotics and Automation (ICRA), Maio de 2011.
[4] O. Pele e M. Weman, "The Quadratic-Chi Histogram Distance Family", ECCV 2010.