G4: Edinaldo de Alencar / Igor Freire / Ramon Araújo / Ricardo Ribeiro
18 de dezembro de 2014
Dados fornecidos pelo Dr. Yoshua Bengio, da University of Montreal
Dados disponíveis na base:
NaN
para dados (coordenadas) ausentesInt8
de dimensões \(96 \times 96\)Os outliers e as imagens positivas com coordenadas da boca ausentes são descartadas
Patch médio de todas as bocas na base de dados:
Definir coordenada:
coord <- "mouth_center_top_lip"
Definir dimensão do patch:
patch_size <- 15 # e.x. 10 significaria um quadrado de 21x21 pixels (10+1+10).
Calcular patch médio:
mean.patch <- meanPatch(coord, patch_size, TRUE)
Observar enantiomorfismo:
Ver (Petterson 2014)
source('predictWithCorrelation.R')
Definir intervalo de busca:
search_size <- 20 # e.g. would give a 5x5 (2+1+2)
iImg = 4 # Escolher imagem
# Estimar coordenadas usando correlacao e plotar em vermelho:
estimated_p <- predictWithCorrelation(coord, search_size, mean.patch, iImg, TRUE)
## Warning: executing %dopar% sequentially: no parallel backend registered
# Plotar coordenadas reais em verde:
points(96 - d.test[iImg, coord_x], 96 - d.test[iImg, coord_y], col="green")
# RMSE:
real_p <- c(d.test$mouth_center_top_lip_x[iImg], d.test$mouth_center_top_lip_y[iImg])
err <- estimated_p - real_p
sqrt(mean(err^2))
## [1] 0.1078
RMSE:
## [1] 4.791
RMSE:
## [1] 0.6544
RMSE:
## [1] 0.6883
im <- matrix(data=rev(im.test[iImg,]), nrow=96, ncol=96)
image(1:96, 1:96, im, col=gray((0:255)/255))
xleft <- 96 - d_mouth_left_corner[1]
ybottom <- 96 - d_mouth_center_bottom_lip_x[2]
xright <- 96 - d_mouth_right_corner[1]
ytop <- 96 - d_mouth_center_top_lip[2]
rect(xleft, ybottom, xright, ytop, lwd=2, border="green" );
Dados de treino
1702 imagens positivas
Janelas de pixels (patch) de \(11\times 11\), \(13\times 13\) a \(23\times 23\)
Descreve a fração de verdadeiros positivos \((FVP)\) em função da fração de falsos positivos \((FFP)\)
Sensibilidade: \[ FVP = \frac{VP}{VP+FN} = \frac{VP}{P} \]
Especificidade: \[ FFP = \frac{FP}{FP+VN} = \frac{FP}{N} \]
Dados de teste
425 imagens positivas \((P=425)\)
1000 imagens negativas \((N=1000)\)
Pesquisa em janelas de pixels de \(5\times 5\), \(7\times 7\) e \(9\times 9\) centradas na média dos pontos-chave das imagens de treino.
Fixando a pesquisa em janelas de pixels de \(7\times 7\) e variando o tamanho do patch, vem:
Fixando o tamanho do patch em janelas de \(11\times 11\) pixels e variando a janela de pesquisa, vem:
Ver (P. Viola 2001) (Jones and Viola 2001)
Nota: custo computacional para calcular um feature é baixo, mas o número de features possíveis em uma imagem é extremamente elevado
* Uma imagem 24 x 24 possui mais de 160 mil features!
vision.CascadeObjectDetector
(MATLAB)imadjust
A toolbox Computer Vision
do MATLAB contém um classificador de reconhecimento de faces, invocado por vision.CascadeObjectDetector('Mouth')
É possível também treinar um classificador por meio da função \[ \begin{aligned} \text{trainCascadeObjectDetector}&\text{(outputXML, positiveData, negativeData,} \\ &\text{'FalseAlarmRate', FAR} \\ &\text{'TruePositiveRate', TPR,} \\ &\text{'NumCascadeStages', numStages,} \\ &\text{'FeatureType', 'Haar',} \\ & \text{'ObjectTrainingSize', [height width])} \end{aligned} \]
Detectores Utilizados nos Testes:
Computer Vision
do MATLABPrimeiramente, toma-se o erro médio quadrático (RMSE), de forma independente, das distâncias entre o ponto real e detectado de cada uma das 4 coordenadas da boca
O RMSE geral é a média aritmética entre os 4 RMSEs acima
Jones, Michael J, and Paul Viola. 2001. “Robust Real-Time Object Detection.” In Workshop on Statistical and Computational Theories of Vision. Vol. 266.
P. Viola, M. Jones. 2001. “Rapid Object Detection Using a Boosted Cascade of Simple Features.” Computer Vision and Pattern Recognition, 2001. CVPR 2001. Proceedings of the 2001 IEEE Computer Society Conference on 1: I–511–I–518.
Petterson, James. 2014. “Getting Started with R.” https://www.kaggle.com/c/facial-keypoints-detection/details/getting-started-with-r.