Escolar Documentos
Profissional Documentos
Cultura Documentos
4. Implementação
A metodologia de desenvolvimento adotada nesse
projeto consistiu em inicialmente realizar uma análise
de desempenho sobre o código de referência utilizado
[8]. O código está escrito em C++ e utilizou-se o
Figura 2. Ao final do treinamento teremos as
Microsoft Visual Studio 2008 para compilá-lo. Através
distribuições de probabilidade montadas. da busca por possíveis “gargalos” na execução do
Na fase de reconhecimento, basta passar o patch algoritmo original, verificou-se que aproximadamente
em questão por cada Fern, e somar as distribuições de 99% do tempo é gasto em três etapas: construção da
cada Fern, para cada uma das classes. Finalmente, a pirâmide gaussiana (17,04%), extração de pontos
distribuição com maior valor é escolhida. A Figura 3 chave (11,78%) e classificação dos mesmos utilizando
ilustra este processo. Ferns (70,30%). Uma análise posterior constatou que
todas essas três etapas apresentavam características
favoráveis à paralelização (sequência bem definida de
operações, poucos desvios no fluxo de dados,
independência entre os dados processados etc.). Sendo
assim, este trabalho focou na implementação e
otimização dessas três etapas em GPU.
Pretende-se, como trabalhos futuros, implementar [5] Oscar Mateo Lozano and Kazuhiro Otsuka, "Real-time
o algoritmo por completo em GPU, ambas as fases de Visual Tracker by Stream Processing," Journal of Signal
treinamento e rastreamento. Além das novas partes a Processing Systems, vol. 57, no. 2, 2009, pp. 285-295.
serem implementadas, existem muitas otimizações que
podem ser feitas, envolvendo a não utilização de [6] Mustafa Özuysal, Michael Calonder, Vincent Lepetit, and
operações atômicas, melhor utilização dos kernels Pascal Fua, "Fast Keypoint Recognition using Random
Ferns”, TPAMI 32(3), IEEE Computer Society, Washington,
disponíveis, e aplicação da memória de textura sempre
2010, pp. 448-461.
que possível. Além disso, pretende-se implementar
suporte à plataformas multi-GPU e utilizar o conceito
[7] A Semi-Naive Bayesian Classifier for Fast Patch
de threads persistentes, de forma a balancear melhor a Classification.
carga de processamento entre as diferentes threads na http://cvlab.epfl.ch/alumni/oezuysal/ferns.html, 2010.
placa de vídeo. Outro trabalho futuro, que seria uma
contribuição para este trabalho é a implementação do [8] Ferns: Planar Object Detection Demo.
algoritmo para CPU Multi-core, e realizar uma http://cvlab.epfl.ch/software/ferns/index.php, 2010.
comparação de desempenho com a versão em GPU.
[9] Vincent Lepetit and Pascal Fua, "Towards Recognizing
7. Referências Feature Points using Classification Trees," Swiss Federal
Institute of Technology, Lausanne, Switzerland, 2004.
[1] T. Farias et al., "High Performance Computing: CUDA as
a Supporting Technology for Next Generation Augmented [10] R. Azuma et al., "Recent advances in augmented
Reality Applications," in Livro dos Minicursos do SVR 2008. reality," Computer Graphics and Applications, IEEE, vol. 21,
Recife: Gráfica e Copiadora Naciona, 2008, pp. 91-116. no. 6, Nov. 2001, pp. 34 -47.