Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
Roberto Kenji Hiramatsu
Sistema de Visão Computacional sobre Processadores com Arquitetura Multi Núcleos
Tese apresentada à Escola Politécnica da Universidade de São Paulo para obtenção do Título de Doutor em Engenharia Elétrica.Área de Concentração:Sistemas Eletrônicos
São Paulo2008
2
Roberto Kenji Hiramatsu
Sistema de Visão Computacional sobre Processadores com Arquitetura Multi Núcleos
Tese apresentada à Escola Politécnica da Universidade de São Paulo para obtenção do Título de Doutor em Engenharia Elétrica.Área de Concentração:Sistemas Eletrônicos
Orientador:Prof. Dr. Sergio Takeo Kofuji
São Paulo2008
3
ResumoEsta tese apresenta um estudo sobre a implementação de sistema de detecção e
reconhecimento de faces no processador CELL na plataforma CBE, utilizando um sistema
Playstation 3. Inicialmente, diversas abordagens para reconhecimento e detecção de faces são
estudadas, bem como arquiteturas de processador multi núcleos. São apresentadas três
implementação, sendo a segunda implementação premiada com quarto colocado no IBM
CELL UNIVERSITY CHALLENGE 2007 para desenvolvimento de programas para
plataforma Cell BE. A terceira implementação apresenta os resultados interessantes
relacionados a vetorização do processamento dos dados da detecção de objetos e os recursos
adotados para obter o melhor desempenho.
4
AbstractThis thesis presents a study of face detection implementation on CBE plataform and
employ the system with Playstation 3 hardware. Several approaches for face detection and
recognition are studied as well as multicore processor architetures. We implemented three
versions of system. First implementation was a naive reference implementation with worst
performance. Second implementation granted fourth prize in IBM CELL UNIVERSITY
CHALLENGE 2007 that incentive development on CBE plataform. Third implementation
had most interesting results with vectorized approaches on code of object detection.
5
Agradecimentos
Agradeço a minha família, aos colegas do LSI/USP, a FINEP e IBM pelo apoio
contínuo a este trabalho.
Agradeço ao professor doutor Sergio Takeo Kofuji pelo grande apoio e confiança
dado a este trabalho.
6
Sumário 1 Introdução...............................................................................................................................1
1.1 Tese.................................................................................................................................2 1.2 Objetivo...........................................................................................................................3 1.3 Hipótese...........................................................................................................................3 1.4 Justificativa......................................................................................................................4 1.5 Motivação........................................................................................................................4 1.6 Metodologia.....................................................................................................................5 1.7 Revisão bibliográfica.....................................................................................................10 1.8 Estrutura da tese............................................................................................................11
2 Detecção de objetos e reconhecimento de faces...................................................................13 2.1 Introdução......................................................................................................................13 2.2 Detecção de objetos.......................................................................................................14 2.3 Reconhecimento de faces..............................................................................................20
2.3.1 Análise Linear Discriminante para reconhecimento de faces (LDA)....................20 2.3.2 Combinação de Grafos em Grupos Elásticos (EBGM) ........................................23
3 A plataforma CELL Broadband Engine, recursos e técnicas de programação paralela.......26 3.1 A arquitetura do Cell Broadband Engine......................................................................26 3.2 Modelo de programação................................................................................................28
3.2.1 Modelo Offload de Função...................................................................................28 3.3 Acesso direto à Memória (DMA) e uso de múltiplo buffers.........................................29
4 Implementação do Sistema de visão computacional.............................................................31 4.1 Estudo do problema da detecção de faces.....................................................................31 4.2 Implementação da Detecção de objetos........................................................................33
4.2.1 Implementação inicial............................................................................................34 4.2.2 Segunda implementação: Carregando os classificadores para a memoria local da SPE..................................................................................................................................35 4.2.3 Terceira implementação: Vetorização do estágio inicial.......................................38
4.3 Estratégia de geração de classificadores fortes.............................................................39 4.3.1 Criação de classificadores com características combinadas..................................39 4.3.2 Criação de classificadores fortes por redução do valor máximo falso alarme......40
4.4 A otimização interna na SPE........................................................................................41 4.4.1 A vetorização dos classificadores..........................................................................42
5 Avaliações e discussão dos resultados.................................................................................50 5.1 Resultados da implementação dois................................................................................50 5.2 Comparação do desempenho baseado em peso de processamento..............................52
7
5.3 Extensão da vetorização em múltiplos estágios............................................................56 5.3.1 Avaliação do processamento com distribuição em várias SPEs............................57
5.4 Comparação geral entre as implementações 2 e 3.........................................................60 6 Conclusões............................................................................................................................64
6.1 Contribuições................................................................................................................66 6.2 Limitações.....................................................................................................................66 6.3 Trabalhos futuros...........................................................................................................67
8
Índice de FigurasFigura 1: Esquema geral do sistema de identificação.................................................................6Figura 2: Módulo de Rastreamento.............................................................................................8Figura 3: Módulo de Reconhecimento LDA...............................................................................9Figura 4: Módulo de reconhecimento EBGM.............................................................................9Figura 5: Exemplo de características. Fonte:(VIOLA; JONES, 2001)....................................15Figura 6: Esquema do cálculo de característica........................................................................16Figura 7: Detector em cascata. O classificador inicial elimina grande parte das sub janelas negativas com rapidez. As camadas subseqüentes eliminam mais sub janelas, mas requerer processamento adicional...........................................................................................................18Figura 8: Uma característica Haarlike combinada(MITA; KANEKO; HORI, 2005).............19Figura 9: O método proposto por (MITA; KANEKO; HORI, 2005) ......................................19Figura 10: Valor do poder de discriminação em uma parte horizontal do rosto. Fonte:(ETEMAD; CHELLAPPA, 1997)..................................................................................22Figura 11: Processo para criação do grafo da imagem. Fonte:(WISKOTT et al., 1997)..........24Figura 12: Esquema do processador Cell. Fonte:(KAHLE et al. 2005)...................................26Figura 13: SPE em detalhes. Fonte:(FLACHS et al. 2006)......................................................27Figura 14: Sobreposição entre comunicação e processamento(CHEN at al. 2006).................29Figura 15: Computação maior que comunicação(CHEN at al. 2006)......................................29Figura 16: A janela do detector e as sub janelas formadas pelo detector sobre a imagem.......30Figura 17: Comparação do tempo de processamento a) redimensionamento da imagem b) redimensionamento da janela do detector c) redimensionamento da imagem com reestruturação do algoritmo......................................................................................................32Figura 18: Buffer da imagem integral e janela do detector......................................................36Figura 19: Região de sombra entre duas SPEs.........................................................................36Figura 20: Distribuição de processamento entre as SPEs na terceira implementação..............37Figura 21: Esquema de enquadramento de um rosto................................................................39Figura 22: Os valores P1, P2, P3 e P4 em quatro subjanelas subseqüentes para uso em processamento vetorial..............................................................................................................42Figura 23: Processo para obter os vetores da integral de imagem de P1 e P2 corretos da memória. .................................................................................................................................43Figura 24: Cálculo seqüencial da integral de imagem de um retângulo de uma característica 44Figura 25: Paralelização do cálculo da integral de imagem de um retângulo de uma característica..............................................................................................................................44Figura 26: Expandindo o corpo do laço e reduzindo contenção de barramento com o processamento de integral de imagem de dois retângulos. VCALC_SUMAB e
9
VCALC_SUMAB são desmembramento da soma de integral de imagem da VCALC_SUM apresentado na Figura 25..........................................................................................................45Figura 27: Cálculo de atualização do somatório do classificador forte seqüencial..................46Figura 28: Cálculo de atualização do somatório do classificador forte vetorizado..................46Figura 29: Regiões descartadas das imagens em cada estágio da cascata de classificadores fortes..........................................................................................................................................48Figura 30: Speed Up sobre o Playstation 3 para uma imagem com 1024x768........................49Figura 31: Comparação dos peso de processamento cascata de classificadores fortes............52Figura 32: Comparação entre resultados teóricos e práticos quanto ao Speed Up...................54Figura 33: Speed up com relação ao aumento do número de estágios vetorizados..................56Figura 34: Speed up em relação ao número de SPE.................................................................57Figura 35: Speed up em relação ao número de SPEs. Valores relativos a 1 SPE com respectivos classificadores........................................................................................................58Figura 36: Speed up em relação ao número de SPEs. Valores relativos a 1 SPE com respectivos classificadores........................................................................................................58Figura 37: Comparação em relação a um P4 de 3GHz.............................................................62
10
Índice de TabelasTabela 1: Algumas aplicações típicas de reconhecimento de face. Fonte:(ZHAO et al., 2003)...................................................................................................................................................13Tabela 2: Comparação de speed up entre o algortimo no PS3 e no Simulador........................50Tabela 3: Cascata de classificadores usados.............................................................................51Tabela 4: Medidas de tempo entre implementação seqüencial e versão com vetorização no estágio inicial............................................................................................................................53Tabela 5: Relação de configurações de teste comparativo.......................................................59Tabela 6: Comparação de desempenho com uma imagem de 1024 768, subjanela mínima de 48 por 48...................................................................................................................................60
11
Lista de abreviaturas
API – Application Programming Interface
CBE – Cell Broadband Engine
DMA – Direct Memory Access
EBGM Elastic Bunch Graph Matching
FBG Face Bunch Grap
LDA – Linear Discriminant Analisys
MFC Memory Flow Controller
OpenCV – Open Computer Vision Library
PPE – PowerPC Processor Element
SDK – Software Develop Kit
SPE – Synergistic Processor Element
1 Introdução
Atualmente a capacidade de processamento de consoles de jogos tem aumentado
drasticamente com o uso de processadores múltiplos núcleo, como Xbox, Wii e Playstation 3. Este
aumento de desempenho está associado a fatores tais como:
– necessidade de processamento de vídeos e gráficos de elevada resolução e realismo;
– redução do custo da produção em larga escala, amortizando os custos de
desenvolvimento.
Também se observa a crescente necessidade de processamento de dados pessoais para fins
de identificação de pessoas e interação em ambientes domésticos e escritórios. Assim, conforto e
comodidades podem ser obtidos por meio de gestos e/ou comandos de voz de forma personalizada
para cada usuário.
No editorial da revista Image and Vision Computing, Gorodnichy destaca a invenção do
cinema que no século 20 foi a revolução tecnológica capaz de apresentar quadros mais rápidos que
a percepção humana. Agora, no século 21, ocorre outro fascinante fenômeno em relação a
tecnologias avançadas em computação e hardware de vídeo, a qual habilita processamento em
tempo real em novas aplicações e tecnologias baseadas em visão (GORODNICHY, 2006). Estas
aplicações, tais como: interfaces homemmáquina multimídia com imersão e ambientes de
colaboração; vídeo conferência; editoração e anotação em vídeos; jogos eletrônicos;
entretenimento; vigilância pública; segurança de informação com identificação biométrica a
distância, tem o processamento da face humana como objeto de interesse.
2
Estes aspectos permitem indicar as possibilidades destes sistemas embarcados serem
cada vez mais interativos com os usuários e ao mesmo tempo oferecer uma segurança
associada ao reconhecimento dos indivíduos.
Neste trabalho foram realizadas otimizações para implementações do processo de
detecção e reconhecimento de faces para plataforma de Cell Broadband Engine (CBE). A
plataforma CBE tem características peculiares de processamento, devido a uma arquitetura de
processadores multi núcleos heterogênea formada por um processador PowerPC multithread e
oito elementos de processamento sinérgico (Synergistic Processor Element SPE ), em que o
acesso à memória principal usa mecanismos de acesso direto à memória (Direct Memory
Access DMA) (KAHLE et al. 2005).
1.1 Tese
O uso de um processador multinúcleo heterogêneo permite um ganho de
desempenho considerável sobre processadores multinúcleos homogêneos para
processamento tempo real para detecção de padrões e identificação. Este aumento está
associado à eficiência de processamento proporcionado aos núcleos orientados a
processamento intensivo vetorizado e controle do fluxo de dados por meio do mecanismo de
acesso direto a memória (Direct Memory Access DMA).
3
1.2 Objetivo
Desenvolvimento de um sistema de reconhecimento de faces modular em uma
arquitetura de processamento múltiplos núcleos heterogêneo baseado na plataforma CBE, que
servirá de base para os sistemas de vigilância de tempo real e múltiplas fontes de vídeo.
Otimização da implementação do algoritmo de detecção de objetos baseada na
versão desenvolvida por (VIOLA; JONES, 2001).
Apresentar abordagens eficientes de vetorização para o algoritmo de detecção de
objetos.
Comparação de consumo de energia extraídos por meio de simulação e sistema físico
para os algoritmos seqüencial e paralelizado.
1.3 Hipótese
A forma de acesso dos dados por meio de acesso direto à memória e os núcleos de
processamento vetoriais do processador Cell tornam possível que os programadores criem
formas eficientes de processamento e de consumo de energia. Entretanto, o desafio será a
criatividade e a flexibilidade para reorganizar o algoritmo.
A implementação de algoritmos, que exploram paralelismo e pipeline de instruções,
dependem muito de aspectos relacionados a padrões de acesso a memória e reorganização dos
dados na memória.
4
1.4 Justificativa
O principal desafio neste sistema é o uso eficiente do recurso computacional com
processadores CBE, considerando a implementação em núcleos de processamento com
quantidade de memória limitada e acesso à memória principal por meio do DMA . Outro
desafio, não menos interessante, é a implementação e investigação de processamento em
outros sistemas multiprocessados e múltiplos núcleos.
1.5 Motivação
O grupo PAD do Laboratório de Sistemas Integráveis da EPUSP, que atua nas áreas
de Sistemas Pervasivos e Computação de Alto Desempenho, tem buscado tecnologias 'estado
da arte' que possam integrar aspectos de segurança, confidencialidade e comodidade aliadas a
Sistemas Pervasivos. O grupo tem pesquisado as possibilidades geradas pela capacidade de
processamento múltiplos núcleos, que são hoje cada vez mais acessíveis, bem como meios de
processamento distribuído em unidades de grade computacional.
O grupo tem recebido apoio da IBM para a criação de um Centro de Excelência em
Desenvolvimento e Ensino para a plataforma CBE. Por outro lado, o grupo atua no
desenvolvimento e avaliação de sistemas para aglomerado de computadores convencionais
5
nos projetos Hipersistemas/FinepPetroPAD/Itautec e mais recentemente com a
Microsoft/BULL.
1.6 Metodologia
A primeira etapa do trabalho está vinculada a uma ampla pesquisa de trabalhos
relacionados à detecção de padrões e reconhecimento. Deste levantamento foram escolhidos
algoritmos que apresentem bom desempenho e flexibilidade de implementação com
granularidade fina.
A partir dos algoritmos escolhidos, foi implementado uma versão seqüencial de
referência na arquitetura do CBE. Posteriormente, as demais implementações foram
comparadas entre si em cada um dos módulos funcionais e no todo. Foi realizado o
levantamento de tempo de cada módulo do sistema para determinar as estratégias de
programação paralela aplicáveis à plataforma CBE e a distribuição de carga em cada um dos
elementos de processamento sinérgico (Synergistic Processor Element SPE).
A abordagem para desenvolvimento deste sistema mostrado na Figura 1 é o
processamento distribuído entre os núcleos para as etapas de:
– detecção de objetos (faces) em um ambiente;
– rastreamento da face;
– ajuste para reconhecimento;
6
– processamento do reconhecimento das faces para fins de identificação e
fornecimento de credenciais a pessoas autorizadas.
O algoritmo de detecção de objetos é baseado nos algoritmos derivados do modelo
proposto por (VIOLA; JONES, 2001). Esta escolha devese ao alto desempenho atingido pela
estrutura de processamento deste algoritmo. Entre os algoritmos de detecção,o trabalho de
(MITA; KANEKO; HORI, 2005), que propôs o uso de características combinadas (joint
Haarlike features) nos classificadores, permitiu a redução do número de características para
classificadores e aumento do desempenho do algoritmo para as mesmas condições se
comparado ao proposto por (VIOLA; JONES, 2001).
O módulo de detecção de objetos usou o algoritmo implementado na biblioteca
OpenCV (http://sourceforge.net/projects/opencvlibrary/) que implementa uma versão do
algoritmo desenvolvido por (VIOLA; JONES, 2001). Este algoritmo foi reescrito para este
trabalho para um permitir fluxo adequado de dados na arquitetura CBE e abordada no
capítulo 4.
Figura 1: Esquema geral do sistema de identificação.
7
O trabalho incluiu o estudo e geração das cascatas de classificadores, que formam o
algoritmo de detecção. Isto é necessário para criar classificadores para detecção de objetos
com melhor estrutura para processamento vetorizado e exigiu a extração de aproximadamente
6000 amostragens de rostos e olhos. A base de olhos foram usados para criar a cascata de
classificadores para localizar a posição dos olhos que são usados no processamento de
reconhecimento.
O rastreamento tem a finalidade de criar um conjunto de amostras para o processo de
reconhecimento num processo similar ao usado por (LIENHART; LUNG; KUMANOV,
2003). Foi estudada a alternativa proposta por (ZHOU; CHELLAPA; MOGHADDAM, 2004)
que permite o processo de reconhecimento e trabalha diretamente com fluxos de vídeo.
O algoritmo de rastreamento com filtro de Kalmann usado no trabalho de
(LIENHART; LUNG; KUMANOV, 2003) que é implementado na biblioteca OpenCV foi
usado em conjunto com o algoritmo de detecção. A Figura 2 mostra a estrutura do módulo de
rastreamento em que o filtro de Kalman é usado para estimar regiões de procura com
equações de movimento de segundo grau.
Figura 2: Módulo de Rastreamento
8
O ajuste de reconhecimento é basicamente uma extensão da detecção de objeto para
localização da posição dos olhos. Esta parametrização é necessária para estabelecer os pontos
referências e posição da face para os algoritmos de reconhecimento.
O módulo de reconhecimento de face tem pelo menos dois algoritmos diferentes para
realizar o reconhecimento. Os algoritmos interessantes são a análise linear discriminante
(Linear Discriminant Analysis LDA) (ETEMAD; CHELLAPPA, 1997), Combinação de
Grafos em Grupos Elásticos (Elastic Bunch Graph Matching – EBGM) (WISKOTT et al.,
1997) e Reconhecimento Probabilístico em Vídeo (ZHOU; KRUEGER; CHELLAPPA,
2003). Assim, esperase a implementação de 2 módulos de processamento de reconhecimento
distintos e processo de combinação de resultados entre os módulos, para uma determinada
face rastreada.
O sistema de reconhecimento usou o algoritmo de reconhecimento LDA (ETEMAD;
CHELLAPPA, 1997) implementados na Sistema de Avaliação de Identificação e disponível
na Universidade do Estado do Corolado (http://www.cs.colostate.edu/evalfacerec/). Este
algoritmo foi adaptado para implementar uma versão seqüencial e versão vetorizada para a
plataforma CBE.
O módulo de reconhecimento LDA necessita de duas etapas de processamento, como
mostradas na Figura 3. A primeira projeta os valores do poder de discriminação da imagem.
A segunda parte compara os maiores valores de poder de discriminação de uma região
característica da face com os valores da base por meio da distância euclidiana.
9
O módulo de reconhecimento EBGM é apresentado na Figura 4. A entrada da
imagem processada pelos detectores deve passar por um processo de transformada de
Wavelet com filtro de Gabor para obter o valores de Jets, usados para representação das
imagens de grafos. A comparação com a base de dados é realizada por meio de similaridade
de grafo. Este processo é descrito e apresentado em detalhes no capítulo 2.
Neste desenvolvimento foram aplicados as técnicas de paralelismo intranúcleo e
internúcleos aos quais os artigos (KAHLE et al. 2005),(IBM, 2007) servem de referência
para a plataforma CBE e o artigo de (CHEN at al. 2006) para direcionar a avaliação e
implementação double buffer e multibuffer nos módulos do sistema.
A implementação dos algoritmos usou o o kit de desenvolvimento SDK 2.1 CBE e
trabalhou no simulador e no Playstation 3 com linux de kernel versão 2.6.21. O Playstation
foi usado com maior freqüência devido à rapidez para avaliação da implementação. A
caracterização foram feitas para avaliações desempenho de deteção, e processamento global
do sistema.
Figura 3: Módulo de Reconhecimento LDA
Figura 4: Módulo de reconhecimento EBGM
10
A implementação foi diretamente com uso da API do SDK 2.1 CBE e o uso pthreads
nativo.
1.7 Revisão bibliográfica
O estudo de caso de (RAMANI; DAVIS, 2007) apresenta a implementação de um
sistema de reconhecimento de face sobre um processador para sistemas embarcados com
múltiplos núcleos heterogêneos especializados e personalizáveis. Estes núcleos especializados
permitem obter requisitos de alto desempenho com baixo consumo de energia. Também, este
trabalho apresenta a caracterização da carga de trabalho geradas pelos módulos que compõe
o sistema de reconhecimento, como detecção da face, ajustes da imagem e processo de
identificação. Este trabalho implementa todo processo de detecção e reconhecimento em
hardware e faz o acesso a este hardware por meio de longas instruções.
Um trabalho que implementou o algoritmo de detecção de face com JointFeatures
(MITA; KANEKO; HORI, 2005) na plataforma CBE e em arquiteturas SMP foi o trabalho de
(IKE; KISHIKAWA; STENGER, 2007). Este trabalho visou a implementação de
reconhecimento de gestos para controle de produtos eletroeletrônicos. Nele houve uma
abordagem de usar a plataforma CBE para avaliar a escalabilidade do algoritmo de (MITA;
KANEKO; HORI, 2005) em uma arquitetura de processadores múltiplos núcleos
11
heterogêneos em comparação à versão seqüencial em um processador Xeon de núcleo simples
de mesma freqüência de processador.
O trabalho de (ZHOU; CHELLAPA; MOGHADDAM, 2004) mostra uma
abordagem de reconhecimento e detecção, usando fluxo de vídeos em que os processos são
processados de forma complementar como mostrado em (ZHOU; KRUEGER; CHELLAPPA,
2003).
1.8 Estrutura da tese
O capítulo 2 discute a detecção de objetos e reconhecimento de faces apresentando
os principais algoritmos de detecção de objetos e padrões e os algoritmos de reconhecimento
para fins de identificação. Deste levantamento serão selecionados os algoritmos usados no
desenvolvimento do sistema.
O Capítulo 3 apresenta plataforma Cell Broadband Engine, recursos e técnicas de
programação paralela, abordando a arquitetura e as principais características da plataforma
CBE, apresentado as técnicas aplicadas no desenvolvimento de programas paralelos para esta
plataforma. São apresentados os pontos mais relevantes para otimização do sistema e as
possíveis abordagens.
12
O Capítulo 4 apresenta as implementação as implementações do módulo de detecção
do Sistema de visão computacional e as abordagem utilizadas em relação aos pontos de
otimização de espaço e paralelização de tarefas.
Os capítulo 5 e 6 avaliam e discutem os dos resultados e as conclusões.
13
2 Detecção de objetos e reconhecimento de faces
2.1 Introdução
No artigo de (ZHAO et al., 2003) que dá um panorama geral sobre reconhecimento
de faces, verificase as áreas típicas para aplicações de reconhecimento de faces, listadas na
Tabela 1.
Tabela 1: Algumas aplicações típicas de reconhecimento de face. Fonte:(ZHAO et al., 2003)
Áreas Aplicação específica
Entretenimento Jogos eletrônicos, realidade virtual, programas de treinamento
Interação homemrobô, interação homem computador
Cartões Inteligentes Habilitação de trânsito
Imigração, identificação nacional, passaportes, registro eleitoral
Assistência social
Segurança e controle de acesso
Controle de censura da TV, autenticação em dispositivos, autenticação em computadores
Segurança na internet, acesso à internet, registros médicos
Autenticação em aplicações, segurança em banco de dados, acesso a dado criptografado
Segurança em terminais bancários
Vigilância Controle de circuito fechado de televisão, câmeras de vigilância avançada.
Controle de portaria, análise de câmeras de segurança
Rastreamento de indivíduos suspeitos e investigação
14
O processo de reconhecimento de faces normalmente trabalha em três etapas:
detecção da face e o posicionamento da face na imagem; extração das características da face;
e o reconhecimento (ZHAO et al., 2003). Nas próximas seções serão apresentado uma
resenha de trabalhos relacionados à detecção e reconhecimento de faces que serão usados na
implementação do sistema.
2.2 Detecção de objetos
As abordagens para aprendizado de máquina usadas em detecção de objetos
propostas por (VIOLA; JONES, 2001), representam uma ruptura quanto ao desempenho em
aplicações de tempo real. As principais contribuições são o conceito de imagem integral para
cálculo das características (features), o algoritmo de aprendizado baseado no AdaBoost e o
uso de classificadores em cascata.
As características são a soma dos valores dos pixels na escala de cinza de uma região
retangular da imagem. O uso de características apresenta uma codificação de informações que
é difícil de ser obtida se comparada ao valor dos pixels para ser usada em uma quantidade
finita de dados para treinamento. Outro fator de uso de características é a rápida computação
dos valores por meio da imagem integral. A Figura 5 mostra alguns exemplos de
características formadas por dois retângulos (A e B), três retângulos (C) e quatro retângulos
15
(D). Nela a soma dos valores dos pixels das regiões brancas são subtraídas das regiões em
cinza para obter o valor de uma característica.
A imagem integral é o valor de um ponto x , y ∈ℕ2 da imagem formada pela
soma do valor de todos os valores dos pixels dos pontos x ' , y ' ∈ℕ2∣x ' x , y ' y e dada
pela equação:
(1)
sendo ii(x,y) é o valor da imagem integral num ponto (x,y) da imagem e i(x',y') é o
valor do pixel na escala de cinza no ponto (x',y') (VIOLA; JONES, 2001).
Figura 5: Exemplo de características. Fonte:(VIOLA; JONES, 2001).
ii x , y = ∑x ' x , y≤ y
i x ' , y '
16
O cálculo do valor da característica do retângulo D da Figura 6 é obtido por:
P4P1−P2P3
onde P1 na localização 1 da figura é a soma dos pixels da área A;
P2 na localização 2 da figura é a soma dos pixels das áreas A e B;
P3 na localização 3 da figura é a soma dos pixels das áreas A e C;
P4 na localização 4 da figura é a soma dos pixels de todas as áreas.
(VIOLA; JONES, 2001) desenvolveram um algoritmo para obter os classificadores
fracos de características retangulares simples com melhor separação de exemplos positivos e
negativos. Este algoritmo de aprendizado determina o melhor valor inicial para função
classificação que minimiza a classificação incorreta para cada característica. Assim, a função
do classificador fraco é definida na Equação 2.
Figura 6: Esquema do cálculo de característica
17
(2)
sendo fj é o valor da característica;
pj é a paridade para indicar o sentido da inequação;
θj é o valor inicial.
O algoritmo de detecção de objetos é construído com cascata de classificadores
fortes que permitem a eliminação da maior parte da imagem de fundo nos primeiros estágios
dos classificadores de forte que são mais simples se comparado aos classificadores nos
estágios avançados da cascata.
Os classificadores fortes são formados por combinação de classificadores fracos que
são treinados com adaptação da técnica AdaBoost proposto por (FREUND; SCHAPIRE,
1999). A equação do classificador forte é apresentada na Equação 3.
(3)
A cascata de classificadores fortes tem classificadores fortes mais simples nos níveis
iniciais para permitir processamento rápido de descarte da maior parte das subjanelas da
imagem e tornamse mais complexos nos níveis posteriores para descartar mais subjanelas.
H x =sign∑t=1
T
ht x
18
Após uma subjanela passar por todos os classificadores sem ser descartada, esta subjanela
da imagem é tida com grande probabilidade de ser a imagem do objeto para ser usada em
processamento posterior. A Figura 7 mostra o esquema de processamento dos classificadores
fortes em cascata.
Todas as subjanelas passam por processo de normalização para minimizar os efeitos
da iluminação durante o treinamento e detecção. Através dos valores da imagem integral é
obtido os valores de média e desvio padrão.
A biblioteca OpenCV implementa a versão desenvolvida por Vila e Jones e tem uma
melhoria do processo de detecção com extensão das características desenvolvido por
(LIENHART; MAYDT, 2002) e uma estrutura de árvores para os classificadores
(LIENHART; LUNG; KUMANOV, 2003).
O artigo de (MITA; KANEKO; HORI, 2005) é a base para o algoritmo de detecção
de objetos que implementa múltiplas combinações de características retangulares para os
Figura 7: Detector em cascata. O classificador inicial elimina grande parte das sub janelas negativas com rapidez. As camadas subseqüentes eliminam mais sub janelas, mas requerer processamento adicional.
19
classificadores fracos. Este classificador fraco apresentado na Figura 8 é denominado
característica Haarlike combinada. Esta abordagem permite a diminuição da quantidade de
características, proposto por (VIOLA; JONES, 2001). A Figura 9 mostra uma idéia do
funcionamento do algoritmo proposto por (MITA; KANEKO; HORI, 2005).
Figura 8: Uma característica Haarlike combinada(MITA; KANEKO; HORI, 2005)
Figura 9: O método proposto por (MITA; KANEKO; HORI, 2005)
20
2.3 Reconhecimento de faces
2.3.1 Análise Linear Discriminante para reconhecimento de faces (LDA)
O uso de Análise Linear Discriminante (Linear Discriminant Analysis LDA) para
reconhecimento de faces foi proposto por (ETEMAD; CHELLAPPA, 1997) e (SWETS;
WENG, 1996) em que cada componente facial tem um poder de discriminação para
identificar uma pessoa ou sexo, raça e idade das pessoas.
Segundo o artigo de (ETEMAD; CHELLAPPA, 1997), o processo para
determinação do poder de discriminação de uma imagem V é dada pela Equação 4:
(4)
Sendo J v o valor do poder de discriminação de uma da representação de V.
A matriz de classe de separação e medida de separabilidade S V
é dada pela
Equação 5.
(5)
J v=sep V =trace S v
S V =S w
−1 S b
21
As matrizes Sw e Sb são respectivamente matrizes de espalhamento intraclasse
Equação 6 e interclasse Equação 7.
(6)
(7)
(8)
Sw representa a matriz de dispersão intraclasse formada pela média dos valores de Σi
dado pela Equação 8, onde os valores de μi é a média na classe e o é a média geralμ .
Pr(Ci) é a probabilidade da iésima na classe Ci.
Considerando Ф a base de dados de faces Equação 9:
(9)
(10)
Na Equação 10 temos a coleção de imagens com espelhamentos e com ruídos.
A Equação 11 estabelece o autovalor (λi) e o autovetor (ui) da matriz de separação
S(Ф). Estes valores podem ser obtidos pela resolução das Equação 12 e Equação 13.
Ф={ФS : S=1,2 ,... , N S }
ФS={Ф iS , Ф i
S , Ф iS: i=1,2 , ... , N E , v=[N O ,σ2
]m×n
}
SwV =∑
i=1
L
Pr C iΣi
SbV=∑
i=1
L
Pr C iμ−μiμ−μiT
Σi=E [ V −μi×V −μiT∣C=C i ]
22
(11)
(12)
(13)
O reconhecimento neste caso baseiase no princípio semelhante do algoritmo de
reconhecimento de Análise do Componente Principal (Principal Component Analysis
PCA)(TURK; PENTLAND, 1991). Neste caso é usada a matriz de separação ao invés da
matriz de variância para gerar a redução do espaço vetorial.
A Figura 10 mostra os valores do poder de discriminação para uma parte horizontal
do rosto.
A similaridade da imagem com relação à base de dados é dada pela Equação 14.
Figura 10: Valor do poder de discriminação em uma parte horizontal do rosto. Fonte:(ETEMAD; CHELLAPPA, 1997)
eig {S Ф}={λi , u i ,i=1,... , N s−1,λiλi1}
Sb u i= Sλ w ui
∣Sb−λi Sw∣=0
23
∀ u∈U m :Ф u=⟨Ф , u⟩ ,∀ s∈S : d u=∣Фu−F us∣
(14)
sendo Ф é a imagem de entrada e Ф(u) é a projeção da imagem no espaço vetorial.
2.3.2 Combinação de Grafos em Grupos Elásticos (EBGM)
A Combinação Grafos em Grupos de Elásticos (Elastic Bunch Graph Matching –
EBGM) foi proposto por (WISKOTT et al., 1997).
Nesta abordagem a imagem da face deve ser préprocessada com o uso de Gabor
Wavelets para obter os jets. Os jets são baseados numa transformação wavelet, definada na
Equação 15.
(15)
onde ψj x é a família de núcleos de transformadas Gabor em várias direções e
freqüências.
A comparação entre os jets é realizada pela função de similaridade, apresentado na
Equação 16.
(16)
J j=∫ I x ψj x−xt
SФ J , J ' =∑
ja j a j
' cos Ф j−Ф j−d k j
∑ja j
2∑
ja j
' 2
πФ , s =1−d uФ , s∑s∈S
d uФ , s
24
sendo aj representa a amplitude, Фj representa a fase, kj o vetor do núcleo da
transformada.
(WISKOTT et al., 1997) define um conjunto de pontos faciais como pupilas, cantos
da boca, ponta do nariz, parte inferior e superior da orelha etc. Estes pontos são usados para
criar a representação de um grafo nomeado. A variação dos pontos faciais, que varia de
pessoa para pessoa, é contornado com a representação de cada ponto facial como grupo de
grafos em uma estrutura semelhante a uma pilha, que é denominada grafo de grupo de faces
(Face Bunch Graph FBG).
A criação da base de dados de grafos é baseada na obtenção de grafos para cada
pose. A base inicial é construída manualmente para definição do modelo. Após a obtenção de
70 grafos, a base de dados é suficientemente grande para processar de forma automatizada.
Na Figura 11, apresenta o processo para criação da grafo da imagem que passa pelo
préprocessamento, obtenção dos jets e posicionamento dos jets no grafo.
Figura 11: Processo para criação do grafo da imagem. Fonte:(WISKOTT et al., 1997)
25
O processo de reconhecimento é realizado após os grafos extraídos dos modelos e
da galeria de imagens com relativa facilidade, pois comparase o grafo extraído que apresenta
similaridade mais elevada dentre os modelos. Este processo é realizado com uma certa
facilidade computacional.
O processo para localização da face necessita processar os seguintes passos:
– encontrar a posição aproximada da face;
– definir a posição é o tamanho da face;
– redefinir e encontrar as dimensões;
– distorção local.
Para minimizar o esforço computacional e otimizar a contabilidade, (WISKOTT et
al., 1997) extrai a representação facial em dois estágios. O primeiro estágio é chamado de
estágio de normalização que tem o propósito de estimar a posição e o tamanho da face na
imagem original para que seja recortada em um tamanho padrão. O segundo estágio extrai o
grafo de imagem para propósito de reconhecimento.
26
3 A plataforma CELL Broadband Engine, recursos e técnicas de programação paralela.
3.1 A arquitetura do Cell Broadband Engine
O Cell Broadband Engine (CBE) é uma arquitetura com múltiplos núcleos
heterogênea com nove núcleos. A primeira geração do CBE inclui um processador PowerPC
multithread de 64 bits de processamento genérico denominado Elemento de processamento
Power (PPE Power processor element) e oito processadores elementos de processamento
sinérgico (SPE synergistic processor element), conectados por um barramento de alto
desempenho (EIB – Element Interconnect Bus). O PPE tem dois níveis de cache no
processador e também suporta o VMX para acelerar aplicações multimídia, usando unidades
SIMD (KAHLE et al. 2005). A Figura 12 mostra um esquema detalhado dos elementos de
processamento e o fluxo de dados.
27
O SPE mostrado na Figura 13 é um processador especializado a qual consiste de uma
unidade de processamento sinérgico (Synergistic Processor Unit SPU ) com 256 Kbyte de
armazenamento local e o controlador de fluxo de memória (Memory Flow Controller – MFC)
(FLACHS et al. 2006)(KAHLE et al. 2005).
Figura 12: Esquema do processador Cell. Fonte:(KAHLEet al. 2005)
28
3.2 Modelo de programação
3.2.1 Modelo Offload de Função
Figura 13: SPE em detalhes. Fonte:(FLACHS et al. 2006)
29
O modelo offload de função(Function Offload Model) é gerenciada por um programa
de controle na PPE que tem a responsabilidade de coordenar a execução dos programas
trabalhadores nas SPEs (KAHLE et al. 2005).
De acordo com (EINCHENBERGER et al., 2006) para extrair paralelismo, o PPE e o
SPE devem trabalhar cooperativamente e com transferência de dados e programas entre o
sistema da memória principal e a limitada memória local do SPE.
3.3 Acesso direto à Memória (DMA) e uso de múltiplo buffers
O principal questão de acesso direto à memória pela SPEs é discutida no artigo de
(CHEN at al. 2006) e está relacionada com a latências de acesso a memória principal.
O processamento na SPEs podem ser dívidas em 2 momentos de operação:
• computação em que ocorre o processamento útil;
• espera de carga do DMA.
A melhor situação é alcançada quando o tempo de computação entre interações de
um laço se sobrepõem mostrado na Figura 14 e Figura 15. Nestas figuras são apresentadas
os termos S que representa carga inicial, D taxa de comunicação , C taxa de computação e bf
que e o tamanho do buffer a ser carregado.
30
Figura 14: Sobreposição entre comunicação e processamento(CHEN at al. 2006)
Figura 15: Computação maior que comunicação(CHEN at al.2006)
31
4 Implementação do Sistema de visão computacional
4.1 Estudo do problema da detecção de faces
O algoritmo de detecção de objetos carrega a imagem e executa as funções de
transformação da imagem, equalização, cálculo da imagem integral e detecção dos objetos.
A detecção de faces apresenta uma estrutura de processamento com 5 níveis de laço:
• 1) redimensionamento da imagem ou da janela do detector de tamanho n x n
(Figura 16);
• 2) varredura das sub janelas de tamanho n x n;
• 3) processamento da cascata de classificadores fortes ou de uma sub janela
(Equação 2 da página 17);
• 4) processamento dos classificadores fracos em um classificador forte (Equação
3 da página 17);
5) processamento da características em um classificador fraco.
Figura 16: A janela do detector e as sub janelas formadas pelo detector sobre a imagem
32
O redimensionamento da imagem ou dos parâmetros da janela do detector está
relacionada com as diferentes tamanho da janela de detector sobre a imagem que desejase
processar. A biblioteca OpenCV (http://opencvlibrary.sourceforge.net/) implementa as duas
formas de redimensionamento e apresenta melhor resultado quando redimensiona os
parâmetros, pois o custo de redimensionar parâmetros e menor que o custo de redimensionar
a imagem.
Outro ponto importante é identificar as funções que mais dispendem tempo de
processamento. O procedimento usado para determinar estes tempos é a instrumentação do
código fonte feitos via ferramenta de compilação ou manualmente, e posteriormente a
visualização com dos resultados gerados pela instrumentação do código fonte.
A instrumentação do código fonte foi realizada pela chave de compilação pg do
GNU gcc e posterior visualização com gprof. O código da aplicação de detecção de face e
dos códigos fontes associados a detecção de face foram compilados estaticamente.
O resultado da instrumentação para os caso de redimensionamento da imagem e
redimensionamento da janela do detector da imagem é apresentado na Figura 17. A função
que mais consume tempo de processamento nos casos a e b é o
cvRunHaarClassifierCascadeStump que é a função que processa a cascata de classificadores
fortes ou o processamento de uma sub janela. O caso c da Figura 17 referese as
implementações 2 e 3 apresentadas nas próximas seções.
33
Figura 17: Comparação do tempo de processamento a) redimensionamento da imagem b) redimensionamento da janela do detector c) redimensionamento da imagem com reestruturação do algoritmo.
4.2 Implementação da Detecção de objetos
O módulo de detecção de objetos para detecção de faces humanas apresentou 3
implementações apresentadas a seguir. A implementação inicial somente portou a função de
34
processamento do detector para processamento na SPE. Nas outras duas abordagens o código
fonte foi reescrito para acomodar melhor o processamento direto na SPE.
As implementações foram feitas com o ambiente de desenvolvimento integrado
Eclipse para Cell 2.1 e o SDK 2.1 para CBE. Os testes de funcionamento foram realizados
tanto no Simulador completo da IBM para Cell BE e também no console de jogo Playstation 3
(PS3 3.2 Ghz 60GB).
4.2.1 Implementação inicial
Nesta implementação, foram carregados os dados de computação de cada
característica e classificador fraco a cada iteração do laço de processamento do classificador
fraco. O programa na SPE recebe o endereço de cada classificador fraco com os ponteiros
iniciais da imagem integral. A cada iteração são realizadas a computação do endereço para
cada sub imagem e são carregados em uma lista de DMA para obter os dados.
O resultado desta implementação inicial indicou um resultado 3 vezes mais lento que
a se comparada ao programa de detecção usando biblioteca OpenCV na PPE. A comparação
deste resultado com relação ao mesmo programa em um computador Pentium 4 3GHz e 5
vezes mais lenta.
O motivo do fraco desempenho é devido á combinação da preparação do
processamento do DMA e do baixo paralelismo em processar os dados recebidos.
35
4.2.2 Segunda implementação: Carregando os classificadores para a memoria local da SPE.
Nesta implementação o principal objetivo foi carregar os dados dos classificadores
fortes, fracos e parâmetros das características na memória local da SPE. Assim, os dados
foram divididos em três matrizes alinhadas 128 bytes, contendo os dados dos classificadores
fortes, classificadores fracos e das características. Enquanto, a biblioteca OpenCV estrutura
os parâmetros dos classificadores fortes, fracos e das características na memória com
ponteiros e listas ligadas.
A otimização do espaço de armazenamento na memória local foi obtida com
substituição de tipos de armazenamento por equivalentes que ocupam menos espaço na
memória. Um exemplo é a utilização de unsigned char ou unsigned short, que tem tamanhos
de 1 e 2 bytes respectivamente, no lugar de um número inteiro de 4 bytes. Assim, podese
substituir índices das características nos classificadores fracos por unsigned int ao invés de
int.
Esta implementação restringiu o uso de janelas de detector de 24 x 24 pixels e
processamento tipo entroncamento (stump – árvore com somente um nó) da biblioteca
OpenCV. Na inicialização da SPE, podem ser carregados no máximo 32 estágios de
classificador, cerca de 3000 classificadores, 9000 características e 1500 ponteiros referentes
36
às linhas de imagem integral e valores ao quadrado da imagem integral na memória local da
SPE.
A estratégia do laço externo foi manter a janela do detector fixo e redimensionar a
imagem. O motivo desta abordagem devese à forma de transferência dos dados a memória
local da SPE por DMA e o processamento do dados na SPU que neste caso apresentase mais
compacto. Portanto, não é necessário transferir por DMA dados de regiões esparsas da
memória principal e podem ser aproveitadas para processar várias sub janelas de uma imagem
redimensionada.
Nesta implementação, o laço relacionado à varredura sobre a imagem integral foi
totalmente implementada na SPE com os dados relacionados à imagem integral carregados
em blocos de 25 linhas por 160 colunas (veja a Figura 18). Após a carga inicial do bloco da
imagem integral, o processo da varredura seguinte reordena as 24 linhas do bloco anterior e
somente processa a carga do DMA de apenas 1 linha adicional, diminuindo a sobrecarga
sobre o DMA num esquema de multibuffer. Neste caso são necessários 26 linhas de dados
para mater os dados da imagem integral na memória local na qual uma linha sempre será
usada para carregar a linha seguinte.
37
A figura 19 mostra que a distribuição de processamento entre 2 SPEs é baseada em
divisão vertical da imagem para aproveitar melhor a transferência de DMA com esquema de
multibuffer apresentado anteriormente. A região de sombra de 32 colunas devese a
necessidade da janela do detector varrer todos os pontos entre as imagens distribuídas entre as
SPEs.
Figura 19: Região de sombra entre duas SPEs
Figura 18: Buffer da imagem integral e janela do detector
38
Os resultados da implementação dois estão apresentados no item 5.1 do capítulo 5.
4.2.3 Terceira implementação: Vetorização do estágio inicial
Esta implementação consiste em oferecer maior flexibilidade e aproveitamento da
memória da SPE para o processamento do detector. As alterações em relação a
implementação dois são:
• vetorização dos primeiros estágios de classificadores fortes da cascata de
classificadores;
• a alocação dinâmica dos dados de parâmetros dos classificadores ( fortes, fracos
e das características) e buffer da imagem integral e buffer de processamento auxiliar;
• distribuição de processamento entre SPEs de imagens redimensionadas por meio
de filas de processamento como mostra a Figura 20.
Figura 20: Distribuição de processamento entre as SPEs na terceira implementação
39
Esta implementação depende de um classificador forte no estágio inicial que
apresente um peso maior do tempo de processamento se comparado as demais estágios. Os
motivos para este estágio inicial com maior peso são a possibilidade de processar até 4
instruções de ponto flutuante por ciclo de processamento e a disposição dos dados da imagem
integral em blocos contínuos de dados. A formulação e estratégias de classificadores fortes
compactos serão discutido na próxima seção.
4.3 Estratégia de geração de classificadores fortes
4.3.1 Criação de classificadores com características combinadas.
Nós criamos uma variação do classificador fraco combinado apresentado por
(MITA; KANEKO; HORI, 2005), em que usose a base da geração dos classificadores fracos
da biblioteca OpenCV. A implementação do treinador de classificador fraco usou o número
de ocorrências ao invés da combinação binária proposta originalmente.
Os resultados preliminares indicam que os classificadores fortes formados por
classificadores fracos combinados não atingiram os desempenhos registrados no artigo de
(MITA; KANEKO; HORI, 2005) se comparado ao gerado pelo OpenCV com mesmo
conjunto de classificadores fracos. Em uma verificação posterior, observouse que o treinador
de classificador fraco é baseado numa variação do Adaboost denominado GAB (Gentle
Adaboost) de (FRIEDMAN, HASTIE, TIBSHIRANI, 2000). Esta variação apresenta melhor
40
desempenho que a versão usada por (VIOLA; JONES, 2001) para classificação do
classificador fraco.
4.3.2 Criação de classificadores fortes por redução do valor máximo falso alarme
A configuração padrão para o valor do máximo falso alarme do treinador de
classificador forte na biblioteca OpenCV é 0.5. Este valor representa que ocorrerá no
máximo a ocorrência de 50% de falsos positivos. Assim, para obter falsos alarmes com
3.0x108, são necessários 25 estágios de classificadores fortes em cascata com máximo falso
alarme de 0.5.
Foi criado uma base de 6000 rostos retirados de LFW para como o modelo
apresentado na Figura 21. A obtenção da localização de cada rosto foi realizada
manualmente com auxílio de um programa que permite a seleção de 5 pontos na face e estima
a região do rosto. Os pontos selecionados na face foram os cantos dos olhos, cantos da boca e
a ponta do nariz.
Figura 21: Esquema de enquadramento de um rosto
41
No processo de treino para obtenção da cascata de classificadores fortes foram
usadas 6000 amostras positivas e 10000 amostras negativas. Foram obtidos 3 cascatas de
classificadores com as seguintes características:
• Cascata C1: cascata de classificador de 19 x 19, máximo alarme falso de 0.25 por
estágio, 12 estágios e taxa de acerto de 0.998 ;
• Cascata C2: cascata de classificador de 19 x19, máximo alarme false de 0.125
por estagio, 8 estágios e taxa de acerto de 0.998;
• Cascata C3: cascata de classificador de 20 x 20, máximo alarme falso de 0.01 por
estágio, 3 estágios e taxa de acerto de 0.998.
As cascata de classificadores C1 e C2 tem teoricamente o desempenho de 6.0 x 108 e
C3 de 106 .
4.4 A otimização interna na SPE
A avaliação do peso de processamento pode ser baseada na quantidade de
classificadores fracos em relação a taxa de sub janelas processadas em um determinado
estágio da cascata de classificadores fortes.
42
Assim, podese formular a Equação 17 em que PT é o processamento total, T é a taxa
de sub janelas processadas em um estágio de classificador forte de nível i e Cl é o número de
classificadores fracos em um classificador forte. Nesta equação o valor de T(0) é igual a 1,
pois o classificador forte no estágio inicial da cascata de classificadores sempre receberá todas
as sub janelas para processamento. Também, considerase que os tempos de processamento
de cada classificador fracos são iguais.
(17)
Segundo (KAHLE et al. 2005) e (CHEN at al. 2005), as instruções SIMD da SPU
permitem processar em um ciclo dezesseis inteiros de 8 bits, oito inteiros de 16 bits, 4 inteiros
de 32 bits e 4 pontos flutuantes de precisão simples. Então se considerar que teoricamente faz
4 operações no classificador inicial podemos reescrever a Equação 17 e obter a Equação 18.
(18)
4.4.1 A vetorização dos classificadores
O núcleo da otimização na SPE está concentrado no processamento de cada
classificador fraco que são compostos compostos pelo cálculos das integrais de imagem sobre
uma característica. O cálculo da integral de imagem de um retângulo apresentado na Figura 6
PT=∑i=0
n
T i ∗Cl i
PT=Cl 0
4∑
i=0
n
T i ∗Cl i
43
da página 16, usando os pontos P1, P2, P3 e P4 da integral de imagem e é calculado por
I=P4+P1(P2+P3). A vetorização começa com o cálculo das integrais de imagem agrupados 4
subjanelas de detecção como mostra a Figura 22.
Figura 22: Os valores P1, P2, P3 e P4 em quatro subjanelas subseqüentes para uso em processamento vetorial.
44
O processamento vetorizado exige dados alinhados na memória durante a carga para
os registradores. Os dados de P1, P2, P3 e P4 podem não estar alinhados durante a carga,
exigindo processo de embaralhamento (shuffle). A Figura 23 ilustra a carga dos de P1 de P2
para os registradores da SPU, onde os valores 1, 2, 3 e 4 indicam os valores da integral de
imagem em um vetor.
A eficiência de vetorização depende de manter o fluxo de carga de dados contínuo e
diminuir os desvios durante o processamento. A Figura 24 apresenta o cálculo da integral de
imagem de um retângulo de uma característica com peso. Assim, a primeira estruturação
vetorial do código de apresentado na Figura 25 mostra um fase de preparação (1) e uma parte
de processamento em laço (2) que calcula para todos os valores disponíveis no buffer da SPE
.
Figura 23: Processo para obter os vetores da integral de imagem de P1 e P2 corretos da memória.
45
Ao analisar o código de montagem com a ferramenta “sputiming”, verificase a
existência de vários pontos de contenção de barramento, devido a espera de processamento
Figura 24: Cálculo seqüencial da integral de imagem de um retângulo de uma característica
Figura 25: Paralelização do cálculo da integral de imagem de um retângulo de uma característica
46
parcial de da integral de imagem e no momento da multiplicação da integral pelo peso. A
Figura 26 mostra a expansão do corpo do laço com o cálculo da integral de imagem de dois
retângulos. Esta abordagem aumentou o desempenho em torno de 7% no processamento da
sessão vetorial.
Figura 26: Expandindo o corpo do laço e reduzindo contenção de barramento com o processamento de integral de imagem de dois retângulos. VCALC_SUMAB e VCALC_SUMAB são desmembramento da soma de integral de imagem da VCALC_SUM apresentado na Figura 25.
47
A expansão do laço foi aumentada com o processamento de 8 subjanelas ao invés de
quatro subjanelas em uma única iteração do laço. O resultado desta expansão gerou um
aumento de desempenho de 16%.
Outro ponto otimizado é o cálculo de atualização do somatório do classificador forte
apresentado na Figura 28 que é derivado da versão seqüencial mostrado na figura Figura 27.
A Figura 10 mostra a expansão do laço de atualização do somatório de classificador
forte vetorizado. O resultado desta otimização gera um aumento de desempenho de 20% na
região de código vetorizado.
Figura 27: Cálculo de atualização do somatório do classificador forte seqüencial.
Figura 28: Cálculo de atualização do somatório do classificador forte vetorizado
48
O resultado geral de otimização do processamento vetorial em um classificador forte
é aproximadamente 50%.
A expansão da vetorização é possível em vários estágios de uma cascata de
classificadores fortes. A Figura 29 mostra que as regiões a serem processadas (região em
preto das figuras b, c, d, e e f) são contínuas na memória que podem ser observadas nas
ampliações das imagens em c e d das imagens e e f. Para aproveitar este comportamento foi
indexado as regiões que devem ser processadas durante o processamento vetorial.
A avaliação em múltiplos estágios foi avaliada com o uso de dois classificadores
fortes:
– o classificador disponível na biblioteca OpenCV do arquivo
haarcascade_frontalface_alt.xml com características de falso alarme de 0.5 por estágio de
classificador forte, janela de detecção de 20x20 e identificado nos gráficos com alt;
– um classificador forte gerado com 12400 amostras positivas formadas com 6200
faces e seus espelhamentos, valor de máximo falso alarme de 0.33 e taxa de acerto de
0.998 e janela de detecção de 20x20. Este classificador é identificado nos gráficos por
c33.
49
Figura 29: Regiões descartadas das imagens em cada estágio da cascata de classificadores fortes.
50
5 Avaliações e discussão dos resultados
5.1 Resultados da implementação dois
Foram realizadas avaliações, usando o Playstation 3 com instalação de um linux com
kernel 2.6.16 e também com o simulador da IBM. Foi usado uma imagem de 1024x768 e as
varreduras iniciadas com imagens de referência 48x48 pixels (menor área de imagem a ser
detectada) até o tamanho máximo na imagem (768x768). Na Figura 30 com medidas de
“speed up” realizadas no PS3, temos “PPE Lib Fast”e “PPE Lib scale” como resultados
gerados pelo programa original da biblioteca OpenCV. As medidas “SPE 1x 2x 3x 4x 5x e
6x” são os resultados gerados por 1, 2, 3, 4, 5 e 6 SPEs respectivamente e valores
normalizados em relação à reimplementação do algoritmo na PPE (“PPE reimple”).
Figura 30: Speed Up sobre o Playstation 3 para uma imagem com 1024x768
51
Verificamos que o desempenho entre 1 e 2 SPE apresenta uma boa escalabilidade,
porém o desempenho com mais de 3 SPE é baixo. A razão para este baixo desempenho se
deve à carga do bloco de dados da imagem integral que fica em 64 colunas por SPE,
reduzindo a eficiência do uso da DMA.
Na análise comparativa entre simulador e Playstation 3, apresentada na Tabela 2 em
relação ao tempo de processamento de uma imagem de 1024x768. Observamos valores
semelhantes de speed up com base no número de SPEs. Também observamos que o
desempenho do algoritmo de detecção de objetos e menor na PPE.
Tabela 2: Comparação de speed up entre o algortimo no PS3 e no Simulador
Os valores obtidos dos indicadores de desempenho do simulador indicam o número
ciclos por instrução (CPI) na SPE para o algoritmo de 0.95 ciclos por instrução. Este valor
significa que há um impacto mínimo quanto ao processo de DMA.
Outro valor referente à contenção das unidades de ponto flutuante (FP6) indica 64%,
sendo que a outra unidade (FP7) apresenta 1%. Isto representa baixo aproveitamento dos
canais despacho de instruções que neste algoritmo é inevitável.
tempo (ms) ps3 tempo (ms) sim speed up ps3 speed up simPpu reimple 1164,530 438,38 0,721 1,916Spu 1x 839,362 840,11 1,000 1,000spu 2x 496,855 468,02 1,689 1,795spu 3x 416,067 397,14 2,017 2,115
52
5.2 Comparação do desempenho baseado em peso de processamento
A Tabela 3 indica as cascatas de classificadores usadas na comparação de
desempenho teórico e a mostra os resultados das Equações 17 e 18 com valores obtidos de
Cl(i) para uma figura de 512 x 512 (arquivo lena.jpg disponível no OpenCV) com menor sub
janela iniciada me 30 x 30 e fator de redimensionamento em 1.1. As colunas C1v, C2v, C3v,
Cv front defaut v e Cv Front Alt v no gráfico da Figura 31 são os equivalentes às cascatas de
classificadores C1, C2, C3, Cv Front defaut e Cv Front Alt com classificador forte inicial
vetorizado.
Tabela 3: Cascata de classificadores usados
Nome da cascata de classificador
Número de estágios
Alarme Falso estimado
Observações
Cascata C1 3 106 Falso alarme por estágio de 0.01
Cascata C2 8 6 x 108 Falso alarme por estágio de 0.125
Cascata C3 12 6 x 108 Falso alarme por estágio de 0.25
Cascata C33 15 6 x 108 Falso alarme por estágio de 0.33
Cv Front Default 25 3 x 108 Classificador usado na implementação 2 e disponível no OpenCV no arquivo haarcascade_frontalface_default.xml
Cv Front Alt 22 2 x 106 Disponível no OpenCV no arquivo haarcascade_frontalface_alt.xml
Comparação dos pesos de processamento
53
A Figura 31 mostra uma sensível redução do peso de processamento nos caso C1 ,
C2 e C3 que representa uma speed up de 1.7, 1.9 e 3.3 respectivamente. Isto não ocorre nos
casos de Cv front default e Cv front alt, pois como comentado anteriormente o máximo
alarme falso por estágio de classificador forte nos caso das arquivo da biblioteca OpenCV tem
valor 0.5 e gera classificadores fortes formados por uma quantidade menor de classificadores
fracos.
A Tabela 4 foi obtida com a instrumentação do código fonte na SPE para medição
dos contadores de processamento nos trechos de código relacionados ao processamento do
detector em uma SPE. Numa comparação entre cascata de classificadores C1 e C2 com
Figura 31: Comparação dos peso de processamento cascata de classificadores fortes
C1 C1v C2 C2v C3 C3v Cv front default Cv front alt0
5
10
15
20
25
30
35
40
45
50
55
i>0I=0
54
janela de detector de mesmo tamanho usando a mesma base de dados, observamos que o
resultado é melhor para a cascata de classificadores C1 que tem mais estágios. Este resultado
mostra o processamento da região seqüencial influência muito nesta abordagem e precisa de
um estudo mais detalhado do comportamento do classificador.
Outro resultado que podemos obter da Tabela 4 é que o melhor desempenho ocorreu
com C3 que tem janela de detector de 20 x 20 contra a cascata de classificadores C1 e C2
com 19 x 19.
Tabela 4: Medidas de tempo entre implementação seqüencial e versão com vetorização no estágio inicial
Estágio vetorizado (ms)
Estágio sequencial(ms)
Tempo total no processamento do detector (ms)
C1 0 221 221
C1v 27,8 84,4 112,2
C2 0 318 318
C2v 44,7 112,8 157,5
C3 0 210,5 210,5
C3v 22,5 55,4 77,9
Cv front alt 0 578,5 578,5
Cv front alt v 7,6 548 555,6
A Figura 32 é a comparação de desempenho de speed up entre o peso de
processamento entre os valores teóricos e os valores práticos. Este resultado mostra que
55
5.3 Extensão da vetorização em múltiplos estágios
O gráfico da Figura 33 mostra o speed up com relação ao número de estágios de
classificador forte. Estes resultados foram medidos com 100 imagens de 640 pixels por 480
pixels com tamanho da subjanela mínima de 30 por 30. Os valores de execução na SPE sem
vetorização são 842±17.4ms e 313±9.2ms para os classificadores alt e c33. Os valores de
desvio padrão das demais medidas foram no máximo 2.5% e 4% para os classificadores alt e
c33.
No gráfico da Figura 33, o número de estágios vetorizados para obter um
desempenho ótimo dependem da cascata de classificadores fortes. A cascata de classificador
Figura 32: Comparação entre resultados teóricos e práticos quanto ao Speed Up
C1 C2 C3 Cv front alt0
0,250,5
0,751
1,251,5
1,752
2,252,5
2,753
3,253,5
TeóricoExperimental
56
alt tem valor ótimo em 8. Enquanto a cascata de classificador c33 indica 4 estágios para ter
este valor. Os tempos de processamento destes pontos de ótimo são 470±6.2ms e 209±6.8ms
ou 79% e 50% de aumento de desempenho geral para alt e c33. Este resultado aponta uma
presença de pontos contínuos de processamento em estágios avançados na cascata de
classificador forte alt se comparada à cascata de classificador forte c33. Também, apresenta
um aumento de desempenho maior na cascata de classificador alt, porém não representa um
tempo menor que ótimo para a cascata de classificador c33.
5.3.1 Avaliação do processamento com distribuição em várias SPEs
A Figura 34 apresenta os valores de speed up em relação ao número de SPEs para
100 imagens de 640 por 480 e subjanela mínima de 30 por 30. Estes valores de speed up são
Figura 33: Speed up com relação ao aumento do número de estágios vetorizados
57
relativos à versão seqüencial na SPE e foram configurados com o valor ótimo de estágios
vetorizados em uma SPE. O resultado indica um speed up de 8.4 e 5.4 vezes ou 100.8±1.2ms
e 58.6±1.2ms de tempo de execução para as cascatas de classificador forte alt e c33.
A Figura 35 mostra os resultados comparados em relação a 1 SPE com respectivas cascatas de
classificadores. Neste gráfico foi apresentado o desempenho do programa de detecção de
imagem desenvolvido pela Fixstars (www.fixstars.com) e identificado por fix, usando o
mesma cascata de classificadores fortes de alt e também apresenta as mesmas condições de
medição de alt e c33. O valor máximo do programa da Fixstars é 91.6±2.4ms com 6 SPEs.
Na comparação das curvas da Figura 35 com o valor ideal, verificase que os pontos da curva
c33 e do fix se coincidem, porém com valores de tempo menores em c33. Um dos possíveis
motivos para um desempenho moderado de speed up em c33 é o custo do processamento de
Figura 34: Speed up em relação ao número de SPE.
58
redução da imagem e geração da imagem integral que são seqüenciais e não estão
implementados na SPE.
Figura 35: Speed up em relação ao número de SPEs. Valores relativos a 1 SPE com respectivos classificadores
59
Figura 36: Speed up em relação ao número de SPEs. Valores relativos a 1 SPE com respectivos classificadores
60
5.4 Comparação geral entre as implementações 2 e 3Tabela 5: Relação de configurações de teste comparativo
Ppu lib fast default Implementação padrão do OpenCV executado na PPE com cascata de classificador OpenCV default
Ppu lib scale default Implementação padrão do OpenCV executado na PPE com cascata de classificador OpenCV default e redução das dimensões da imagem
Ppu lib scale alt Implementação padrão do OpenCV executado na PPE com cascata de classificador OpenCV alt e redução das dimensões da imagem
Ppu reimple. 2nd imp. default Reimplementação da versão 2 com redução das dimensões da imagem na PPE e uso de cascata de classificador OpenCV default
Amd64 64 lib fast 1.6GHz default Implementação padrão do OpenCV executado em um AMD Turion 64 1.6GHz com cascata de classificador OpenCV default
P4 d 3GHz 64 bits lib fast default Implementação padrão do OpenCV executado em um Pentium 4 3GHz com cascata de classificador OpenCV default
Spe 1x 2nd imp. default Reimplementação da versão 2 com redução das dimensões da imagem na SPE e uso de cascata de classificador OpenCV default – uso de uma SPE para processamento
Spe 6x 2nd imp. default Reimplementação da versão 2 com redução das dimensões da imagem na SPE e uso de cascata de classificador OpenCV default – uso de 6 SPE
Spe 1x 3rd imp default Reimplementação da versão 3 com redução das dimensões da imagem na SPE, vetorizado e uso de cascata de classificador OpenCV default – uso de uma SPE para processamento
Spe 6x 3rd imp. default Reimplementação da versão 3 com redução das dimensões da imagem na SPE, vetorizado e uso de cascata de classificador OpenCV default – uso de 6 SPE
Spe 1x 3rd imp. alt Reimplementação da versão 3 com redução das dimensões da imagem na SPE, vetorizado e uso de cascata de classificador OpenCV alt – uso de uma SPE para processamento
Spe 6x 3rd imp. alt Reimplementação da versão 3 com redução das dimensões da imagem na SPE, vetorizado e uso de cascata de classificador OpenCV alt – uso de 6 SPE
Spe 1x 3rd imp. c33 Reimplementação da versão 3 com redução das dimensões da imagem na SPE, vetorizado e uso de cascata de classificador preparado c33 – uso de uma SPE para processamento
Spe 6x 3rd imp. c33 Reimplementação da versão 3 com redução das dimensões da
61
imagem na SPE, vetorizado e uso de cascata de classificador preparado c33 – uso de 6 SPE
Spe 1x fix alt Implementação da biblioteca OpenCV porta pela Fixstars com cascata de classificador OpenCV alt e uso de 1 SPE
Spe 6x fix alt Implementação da biblioteca OpenCV porta pela Fixstars com cascata de classificador OpenCV alt e uso de 1 SPE
Tabela 6: Comparação de desempenho com uma imagem de 1024 768, subjanela mínima de 48 por 48
A Tabela 6 apresenta uma comparação de desempenhos das várias implementações e
com diferentes cascata de classificadores fortes listados na Tabela 5. O gráfico apresentado na
Figura 36 apresenta um resultado interessante com 6 SPEs para a terceira implementação com
uma cascata de classificador forte c33, atingindo um desempenho de 9 vezes o desempenho
de um Pentium 4 e é 62 vezes o desempenho do classificador default processado na PPE
com redução das dimensões da imagem. Este resultado reflete a combinação de desempenho
da otimização na SPE e o desempenho da cascata de classificador.
62
Numa comparação mais conservadora em que comparase o desempenho com o
mesma cascata de classificador, observase um desempenho de 3,44 vezes para a terceira
implementação contra o Pentium 4 com a cascata de classificador OpenCV default. Porém o
classificador OpenCV default não apresenta o melhor desempenho, pois os classificadores
com janela de detecção de 20 por 20 dos classificadores c33, OpenCV alt apresentam um
melhor desempenho que o classificador OpenCV default de 24 por 24. Um motivo para
apresentar melhor desempenho é a necessidade buffers menores para carregar os dados na
SPE.
Outro dado interessante é quanto ao desempenho mesmo em uma SPE se comparada
ao desempenho na PPE. Todos os desempenhos com uma SPE são superiores em 4 vezes o
desempenho na PPE.
Figura 37: Comparação em relação a um P4 de 3GHz
63
6 Conclusões
Arquiteturas de processadores com múltiplos núcleos homogêneos e heterogêneos
são uma necessidade atual para suprir as exigências de capacidade de processamento de dados
e requisitos de eficiência de consumo de energia, pois as limitações de projeto de
processadores super escalares de um núcleo com freqüência elevadas em silício são grandes,
devido a problemas de aquecimento e vazamento de energia.
Contudo, a implementação da arquitetura de múltiplos núcleos homogêneos é
complexa em termos de circuito e ineficiente quanto ao desempenho do consumo de energia.
Por outro lado, as arquiteturas de processadores com núcleos heterogêneos, que apresentam
um implementação de circuito mais simples e maior eficiência de consumo de energia.
Contudo exigem implementação de aplicações com acesso explícito a memória.
Os desafios da implementação de aplicações eficientes em plataformas de múltiplos
núcleos é muito grande, pois transfere para os desenvolvedores de software a
responsabilidade de aproveitar melhor o desempenho da arquitetura. Em arquiteturas de
múltiplos núcleos homogêneas, o desafio de aproveitar o desempenho depende do modo
escalonamento dos programas nos núcleos e o acesso a memória que é transparente. Nas
plataformas de núcleos heterogêneos apresentam uma complexidade maior para este acesso.
A primeira implementação do algoritmo do detector de objetos em que os acesso a
memória são realizadas no laço de processamento do classificadores fracos em um
classficador forte, é ineficiente, pois os dados na memória principal não apresentam uma
64
organização ineficiente para transferências para SPE e exige um processamento adicional
para transferir os dados mesmo com uso de multibuffer.
A segunda implementação apresentou uma melhora significativa do processamento
de faces em uma imagem, pois reorganizou os dados na memória principal para melhorar a
eficiência de transferência por mecanismo de DMA.
A terceira implementação que flexibiliza a alocação dos dados na memória e também
considera a premissa de uso de classificados adequados para processamento vetorial. O
resultado indica uma melhoria significativa no processamento intra nó se comparado as duas
implementações anteriores.
A implementação de softwares genéricos construídos sobre processadores
convencionais exigem um grande conhecimento de específico da arquitetura, mecanismos de
comunicação e processamento para desenvolver um programa. Assim, o desenvolvimento de
aplicações para a plataforma de processadores de núcleos heterogêneos é válida quando temos
necessidade de criar aplicações específicas que usem muito processamento vetorial como
jogos e vídeos de alta definição. O caso da detecção de faces (objetos) é válida quando temos
inclusive geração de cascata de classificadores adequados a forma de processamento esperada
por esta plataforma.
Pontos importantes do desenvolvimento nesta plataforma é conhecer muito bem o
funcionamento do algoritmo a ser implementado para mapear o fluxo de dados, que devem
ser contínuos para processamento vetorial efetivo da SPU.
65
6.1 Contribuições
As contribuições deste trabalho são:
– apresentar as abordagens de implementação em sistemas como o processador
Cell que apresenta SPE com restrições de armazenamento local em 256 kbytes e acesso de
dados por meio acesso direto à memória (DMA);
– desenvolvimento da parte de detecção do sistema de reconhecimento de faces de
tempo real para fluxos de vídeo de alta resolução;
– levantamento de características de de processamento
– código fonte disponível em http://facedetecspu.sourceforge.net sobre licença
GPL.
6.2 Limitações
As limitações:
– uso de somente um processador CELL com 6 SPE úteis;
– quantidade reduzida de memória local na SPE em 256k e limitações da memória
principal 256Mb;
– tamanho das imagens de 1024 x 768;
– tamanho mínimo da sub janela de deteção em 30 x 30;
66
– geração de uma base de rostos para treinamento e geração da cascata de detector
em 6000 amostras de rostos;
6.3 Trabalhos futuros
• Implementação em um sistema IBM Blade CELL para caracterização e
avaliações de desempenho;
• Implementação dos sistema completo com sistema de reconhecimento de de
faces;
• Investigação de novos classificadores forte mais eficentes em termos de tamanho
e desempenho;
• Outros modelos de programação com OpenMP, MPI, RapidMind, Memoria
compartilhada distribuída.
67
Referências Bibliográficas(BELLENS et al.,2006) Bellens, Pieter; Perez, Josep M.; Badia, Rosa M.; Jesus,
Labarta, “CellSs: A Programming Model for the Cell BE Architecture”, Proceedings of the
ACM/IEEE SC 2006 Conference, Novembro de 2006.
(CHEN at al. 2005) Chen, Thomas; Raghavan, Ram; Dale, Jason; Iwata, Eiji “Cell
Broadband Engine Architecture and its first implementation”, IBM Journal of Research and
Development, 29 Novembro de 2005.
http://www.ibm.com/developerworks/power/library/pacellperf/ acessado em 01 de
agosto de 2007
(CHEN at al. 2006) Chen, Tong; Sura, Zehra; O'Brien, Kathryn; O'Brien, Kevin
“Optimizing the Use of Static Buffers for DMA on a CELL Chip”, 19th International
Workshop on Languages and Compilers for Parallel Computing (LCPC 2006), New Orleans,
Louisiana, Novembro de 2006
(ETEMAD; CHELLAPPA, 1997) Etemad, K.; Chellappa, R.; “Discriminant
Analysis for Recognition of Human Face Images”, Journal of the Optical Society of America
A, Vol. 14, No. 8, Agosto 1997, pp. 17241733
(EINCHENBERGER et al., 2006) A.E. Einchenberger, J.K. O'Brien, et al. “Using
advanced compiler technology to exploit the performance of Cell Broadband Engine
architecture”, IBM System Journal, VOL.45, Novembro de 2006.
68
<http://researchweb.watson.ibm.com/journal/sj/451/eichenberger.html> em
28/09/2007
(FLACHS et al. 2006) Flachs, B.; Asano, S.; Dhong, S.H.; Hofstee, H.P.; Gervais,
G.; Roy Kim; Le, T.; Peichun Liu; Leenstra, J.; Liberty, J.; Michael, B.; HwaJoon Oh;
Mueller, S.M.; Takahashi, O.; Hatakeyama, A.; Watanabe, Y.; Yano, N.; Brokenshire, D.A.;
Peyravian, M.; Iwata, E.;, “The microarchitecture of the synergistic processor for a cell
processor”, Journal of SolidState Circuits, IEEE, janeiro de 2006 Volume: 41, No: 1 pp:
63 70
(FREUND; SCHAPIRE, 1995)Freund, Yoav; e Robert E. Schapire. A decision
theoretic generalization of online learning and an application to boosting. In Computational
Learning Theory: Eurocolt ’95, pp 23–37. SpringerVerlag, 1995.
(FREUND; SCHAPIRE, 1999) Freund, Y.; Schapire, Robert E;.“A short
Introduction of Boosting”, Journal of Japanese Society for Artificial Intelligence, 14(5):771
780, September, 1999.
(FRIEDMAN, HASTIE, TIBSHIRANI, 2000) Friedman, J.; Hastie, T.; Tibshirani,
R. “Additive Logistic Regression: A Statistical View of Boosting”, Annals of Statistics, vol
28, pp. 337374, 2000
69
(GORODNICHY, 2006) Gorodnichy, D., “Seeing Faces in Video by Computers”,
Editorial in Image and Video Computing, Vol. 24, No. 6 (Special Issue on Face Processing in
Video Sequences). Maio de 2006. pp 551556.
(IBM, 2007)IBM,“Cell Broadband Engine Programming Handbook” capítulo 21
Parallel Programming, 2007,pp601, rev 24/04/07
<http://www
01.ibm.com/chips/techlib/techlib.nsf/techdocs/9F820A5FFA3ECE8C8725716A0062585F>
acessado em 28/09/2007
(IKE; KISHIKAWA; STENGER, 2007)Ike, T.; Kishikawa, N.; Stenger, B. “A Real
Time Hand Gesture Interface Implemented on a MultiCore Processor”, Proc. Machine Vision
Applications (MVA), pp 912, Tokyo, Japan, Maio 2007.
(KAHLE et al. 2005) Kahle,J. A.; Day, M. N.; Hofstee, H. P.; Johns, C. R.; Maeurer,
T. R.; e Shippy, D., “Introduction to the Cell multiprocessor”, IBM Journal of Research and
Development, 1 de Junho de 2005.
<http://www.research.ibm.com/journal/rd/494/kahle.html > acessado em 17/08/2007
(KATO; TAKEUCHI, 2006) Kato, N; Takeuchi, K; et al. “Digital Media
Applications on A CELL Software Platform”, ICCE 2006, Consumer Electronics, ed 711,
ISBN 0780394593.
70
(KUMAR et al., 2006)Kumar, Arum;Jayam, Naresh; Senthilkumar, Ganapathy;
Krishna, Murali; Baruah Pallav K.; Srinivasan, Ashok; Kapoor, Shakti; Sharma, Raghunath,
“Exploration of the Potential Cell Architecture for MPI Applications”, International
Conference on High Performance Computing – HiPC06, Blangore, India, 2006.
< http://www.hipc.org/hipc2006/hipc2006posters.html> acessado em 28/09/2007
(LIENHART; MAYDT, 2002) Rainer Lienhart and Jochen Maydt, “An Extended Set
of Haarlike Features for Rapid Object Detection”IEEE ICIP 2002, Vol. 1, pp. 900903
(LIENHART; LUNG; KUMANOV, 2003) Lienhart, Rainer; Liang, Luhong;
Kuranov, Alexander, “A Detector Tree of Boosted Classifiers for Realtime Object Detection
and Tracking”. IEEE ICME2003
(MITA; KANEKO; HORI, 2005)T. Mita, T. Kaneko, O. Hori, “Joint Haarlike
Features for Face Detection”,Proc. of the 10 IEEE International Conference on Computer
Vision Volume 2, p.16191625,2005
(RAMANI; DAVIS, 2007) Ramani, K., Davis, A., “Application Driven Embedded
System Design: A Face Recognition Case Study”,International Conference on Compilers,
Architectures, and Synthesis for Embedded Systems (CASES), Austria,2007
(SWETS; WENG, 1996) Swets, Daniel L.; Weng, John, “Using Discriminant
Eigenfeatures for Image Retrieval”, IEEE Transactions On Pattern Analysis and Machine
Intelligence, Vol 18 N 8 , Agosto de 1996
71
(TURK; PENTLAND, 1991)M. Turk, A. Pentland, “Eigenfaces for Recognition”,
Journal of Cognitive Neurosicence, Vol. 3, No. 1, 1991, pp. 7186
(VIOLA; JONES, 2001) Viola, P.; Jones, M., “Rapid Object Detection using a
Boosted Cascade of Simple Features”, Procedings of CVPR, p.511518, 2001.
(WISKOTT et al., 1997)Wiskott, L., Fellous, J.M., Krueuger, N., von der
Malsburg, C., “Face Recognition by Elastic Bunch Graph Matching”, IEEE Trans. on Pattern
Analysis and Machine Intelligence, Vol. 19, No. 7, 1997, pp. 776779
(ZHAO et al., 2003)Zhao, W., Chellappa, R., Phillips P. J. e Rosenfeld, A., “Face
Recognition: A Literature Survey”, ACM Computing Surveys (CSUR), Volume 35 , No 4
(Dezembro de 2003) pp: 399 458
(ZHOU; CHELLAPA; MOGHADDAM, 2004) Zhou, S., Chellappa, R. e
Moghaddam, B., “Visual tracking and recognition using appearanceadaptive models in
particle filters”, IEEE Trans. on Image Processing, Vol. 13, No. 11, pp. 14911506, 2004
(ZHOU; KRUEGER; CHELLAPPA, 2003)Zhou, S., Krueger, V., Chellappa, R.,
“Probabilistic recognition of human faces from video”, Computer Vision and Image
Understanding, Vol. 91, 2003, pp. 214245