DACOSTALONDEROMARÇAL2008Relatório
Monografia apresentada à disciplina Oficina de Integração I do Curso de Engenharia de Computação da Universidade Tecnológica Federal do Paraná como requisito parcial para obtenção de nota.
Orientador: Professor Gustavo Alberto Gimenéz Lugo
Esta monografia foi apresentada às_____________________________ do dia 29 de outubro de 2008 como requisito parcial para obtenção de nota, Disciplina Oficina de Integração I, Curso de Engenharia de Computação, Universidade Tecnológica Federal do Paraná. A equipe foi avaliada pelos professores abaixo assinados. Após deliberação, a Banca Examinadora considerou o trabalho________________________ ________________.
________________________________ ________________________ Professor Arandi Ginane Bezerra Junior Professor Luiz Ernesto Merkle (UTFPR) (UTFPR)
_________________________________
Professor Gustavo Alberto Gimenéz Lugo
(UTFPR)
Orientador
_________________________________
RESUMO
DA COSTA, Ricardo Fantin; MARÇAL, Marlon Subtil; LONDERO, Djonantam. Reconhecimento automático de expressões faciais. 2008. Cc p. Monografia (Oficina de Integração I) – Universidade Tecnológica Federal do Paraná, Curitiba, 2008.
Esta pesquisa apresenta uma abordagem teórico-conceitual da questão do reconhecimento automático de expressões faciais, com foco na implementação de um software capaz de realizar a classificação de expressões faciais básicas. Discute os conceitos de reconhecimento de objetos e suas possíveis aplicações, bem como sua relação com o reconhecimento de expressões faciais e com o tratamento de imagens necessário. Apresenta conceitos de aquisição de imagem, pré-processamento, extração de características, classificação e pós-processamento. Discute os obstáculos ao reconhecimento efetivo em condições de ambiente normais e abordagens afim de superá-los, com base na documentação pertinente ao tema. Baseado numa extensa livraria, com código fonte aberto, sobre tópicos de visão computacional, o estudo verificou, por meio da adaptação de algoritmos, como ocorre o reconhecimento de objetos por meio do treinamento a partir de banco de imagens. Traz como resultado do estudo um panorama das possibilidades do reconhecimento de expressões faciais no incipiente ramo da visão computacional.
Palavras-chave:Reconhecimento. Expressão Facial. Automático. Reconhecimento Automático de Expressões Faciais.
ABSTRACT
DA COSTA, Ricardo Fantin; MARÇAL, Marlon Subtil; LONDERO, Djonantam. Automatic facial expressions recognition. 2008. Cc p. Monografia (Oficina de Integração I) – Universidade Tecnológica Federal do Paraná, Curitiba, 2008.
It presents a theoretician-conceptual boarding of the question of the automatic facial expressions recognition, with focus in the implementation of a software capable to performing the classification of basic facial expressions. It argues the concept of object recognition and its possible aplications, as well as its relation with the facial expression recognition and the needed image treatment. It presents the concepts of image aquisition, pre-processing, feature extration, classification and post-processing. It argues the obstacles to the effective recognition in a normal environment and approaches in order to overcome them, based on the documentation concerning to the subject. Based on large library, with open source code, about topics of computer vision, the study verified, through the adaptation of algorithms, as is the recognition of objects by means of training from banks of images. As resulted of the study, it brings a panorama of the possibilities of facial expressions recognition on the incipient branch of computer vision.
Key-words:Recognition. Facial Expression. Automatic. Automatic Facial Expressions Recognition.
LISTA DE SIGLAS E ABREVIATURAS
Action Units: Na classificação do rosto usa-se os action units ao invés de diretamente a contração dos músculos.Bash: Linguagem de Scripts usada nesta monografia para copiar ou converter muitos arquivos segundo uma expressão regular.Expressão Regular: as expressões regulares são um método flexível de identificar padrões de palavras em uma lista.FACS: Facial Action Coding System, é um modelo que caracteriza a expressão facial baseado em diversos músculos do rosto.GIMP: GNU Image Manipulation Program, programa de manipulação de imagem usado para modificar algumas imagens do trabalho.JNI: Java Native Interface, é a interface que permite o java chamar funções escritas em outras linguagens ou acessar bibliotecas do sistema operacional.OpenCV: Open Computer Vision Library, é uma biblioteca para análise de imagens, esta melhor explicada no item 3.4.OSS: Open Source Software.ROI: Region of Interest, normalmente um classificador retorna diversas regiões prováveis de ser a região procurada.
SVM: Support Vector Machine, dados muitos dados de entrada positivos e negativos, o SVM encontra o limite que classifica uma entrada como positiva ou negativa.
Web Service: é um sistema de software desenvolvido para suportar interação entre computadores pela internet.
XML: eXtensible Markup Language, é um modelo para guardas os dados de modo que seja fácil implementar um algoritmo para ler os dados depois.
Table of Contents1INTRODUÇÃO9
1.1DELIMITAÇÃO DO TEMA10
1.2PROBLEMA A SER PESQUISADO11
1.3OBJETIVOS11
1.3.1Objetivo geral12
1.3.2Objetivos específicos12
1.4JUSTIFICATIVA12
1.5METODOLOGIA13
1.6ESTRUTURA14
2PROCESSAMENTO DE IMAGENS PARA RECONHECIMENTO DE EXPRESSÕES15
2.1Visão Computacional15
2.2Extração de Características27
2.3Classificação31
3SOFTWARES DE VISÃO COMPUTACIONAL34
3.1OpenCV36
3.2CVHaarClassifier37
3.3Estrutura do classificador Haar XML37
4IMPLEMENTAÇÃO DE UM SISTEMA DE RECONHECIMENTO DE EXPRESSÕES40
4.1AQUISIÇÃO DA BASE DE DADOS40
4.2MODELO PROPOSTO DE ANÁLISE DE IMAGENS42
5IMPLEMENTAÇÃO DO SOFTWARE45
5.1TREINAMENTO46
6RESULTADOS E ANÁLISES48
7CONSIDERAÇÕES FINAIS50
8REFERÊNCIAS51
9Anexos53
9.1Uso de programas nativos no Java53
9.2Compilar o código em C++ no Linux55
9.3Ponteiros em C56
9.4Diagrama UML do software56= INTRODUÇÃO = Um dos maiores desafios da atualidade para os pesquisadores na área de computação em geral é a tentativa de imitar o mais refinado dos sentidos humanos, a visão. Poder-se-ia então indagar: “Mas porque iríamos querer imitar a visão?”. Para responder a essa pergunta com um pouco mais de critério, pensemos no quanto seria vantajoso se pudéssemos realizar operações num computador, sem ao menos precisarmos tocá-los, o quanto de tempo isso nos salvaria. É difícil não concordar que a nossa interação com o computador poderia ser bem mais eficiente e, conseqüentemente, bem mais produtiva se simplesmente dispuséssemos de um meio de comunicação mais natural com ele, principalmente numa época em que os computadores “tomaram de assalto” os lares e escritórios em todo o mundo. Com certeza, alternativas aos tradicionais mouse e teclado hoje em dia é o que não faltam. O mouse e o teclado, apesar de servirem muito bem aos seus propósitos, serão gradualmente substituídos, pois a tendência das interações entre humanos e máquinas caminha para tecnologias que automatizem tarefas repetitivas e que visem a reduzir ao máximo qualquer esforço físico [1]. Aí, nós poderíamos incluir o reconhecimento de gestos faciais, como o movimento dos olhos, por exemplo, para substituir a função do mouse.
Outra possibilidade seria a aplicação não só do reconhecimento, mas de todos os complexos caminhos seguidos pelo nosso cérebro para processar informações visuais, na geração de robôs autônomos, os quais poderiam desempenhar trabalhos que não exijam inteligência humana abstrata ou interpretações subjetivas. Além disso, também poderíamos empregar processos automatizados de processamento de imagens nas mais variadas áreas, como a prática clínica ou a ciência comportamental para citar algumas, visto que a informática se desenvolve continuamente e devido à sua relativa exatidão, pode ser conveniente delegarmos às máquinas atividades que exijam extrema perícia.
Para isso se concretizar, no entanto, seria necessário, em primeiro lugar, que um dispositivo realizando adequadamente o reconhecimento estivesse presente. Esta monografia expõe alguns dos problemas enfrentados por quem se propôs e obteve êxito em solucionar alguns dos obstáculos pertinentes ao tema do reconhecimento de expressões faciais, bem como apresenta as variadas soluções para um mesmo problema.
Os capítulos seguintes irão fornecer uma visão geral dos trabalhos existentes nessa área (visão computacional). Além disso, possibilitarão um contato aprofundado com os trabalhos que lidam especificamente com reconhecimento de expressões faciais e apresentarão as ferramentas existentes para consecução do reconhecimento, além de uma exposição detalhada das ferramentas escolhidas para este projeto, e sua aplicação.
Tabela de conteúdo |
DELIMITAÇÃO DO TEMA
Durante a introdução, o tema reconhecimento de expressões faciais foi abordado de maneira genérica. Esse item pretende delimitar o tema no qual nós nos concentraremos daqui em diante, ou seja, do que exatamente trata o reconhecimento automático de expressões faciais.
Dentro do universo de possibilidades derivadas diretamente da ‘Visão Computacional’, existe uma que particularmente nos interessa: reconhecer emoções expressas pela face. Um ser humano pode, e faz isso freqüentemente e com relativa facilidade. No entanto, quando se espera que um computador o faça, precisamos traduzir o caminho seguido pelo nosso cérebro, que muitas vezes não conhecemos totalmente, em algoritmos racionais e palpáveis, e é aí que se instala o desafio. É claro que nós, seres humanos, iremos emprestar conceitos de emoções à máquina e mais do que isso, iremos estabelecer um limiar para eles.
Assim, todo o processo de reconhecimento se concentra basicamente em cinco processos: 1) obter uma imagem contendo um objeto de interesse (nesse caso, uma face), processo a que chamamos ‘aquisição de imagem’. 2) Identificar e isolar o objeto almejado de outros que não são úteis, além de algumas vezes corrigir ‘defeitos’ como ruídos, ou posição desfavorável, processo esse chamado ‘pré-processamento’. 3) Uma vez que o objeto foi isolado e corrigido, extrair dele os elementos que serão analisados para enquadrá-lo numa das categorias pré-definidas, essa etapa é chamada ‘extração de características’. 4) A partir dos elementos obtidos, processar e produzir uma saída, um rótulo para o objeto, essa é a etapa conhecida como ‘classificação’. 5) Finalmente, se a saída do processo anterior necessitar de um processamento adicional para se chegar à saída definitiva, ou seja, à classificação efetiva, pode-se implementar uma quinta etapa chamada de ‘pós-processamento’. Todos esses processos serão vistos com mais detalhes no capítulo seguinte.
PROBLEMA A SER PESQUISADO
Logo, o problema a ser pesquisado nesse projeto trata basicamente das técnicas de implementação possíveis para o desenvolvimento de um software capaz de reconhecer expressões faciais. Para isso, precisaremos pesquisar, dentre outros, métodos para processar a imagem de uma dada pessoa, fazendo com que seja submetida a um teste para classificação da respectiva expressão facial observada. Além disso, mostra-se necessário um aprofundamento teórico com relação a algoritmos para classificação do tipo de expressão, fazendo o julgamento com uma precisão adequada para obter resultados satisfatórios.
OBJETIVOS
Objetivo geral
O objetivo geral deste projeto é ser uma via pioneira para futuros pesquisadores que se interessem pelo tema do reconhecimento automático de expressões faciais, visto que atualmente o assunto carece de trabalhos documentados que abordem diretamente o processo de análise de expressões faciais. Não temos a pretensão de realizar qualquer inovação nessa área de pesquisa, mas apenas fornecer material para introduzir quem se interessar por ela, e, por acaso, quiser se aprofundar, a partir das referências fornecidas.
Objetivos específicos
Enquanto o objetivo geral é a provisão de material para iniciar novatos no assunto, os objetivos específicos são mais voltados para a aquisição de conhecimentos envolvendo áreas que abrangem o Curso de Engenharia de Computação. Com isso, queremos dizer que todo o processo de pesquisa já é um objetivo em si, pois nos possibilita termos contato com temas que possivelmente seremos confrontados no futuro, pois envolvem a área de atuação do curso. Além disso, a disciplina de Oficinas de Integração I permite nos familiarizar com o trabalho por detrás da realização de um projeto, o que nos será de significante utilidade futuramente.
JUSTIFICATIVA
A justificativa para o tema “Reconhecimento Automático de Expressões Faciais” é um tanto polêmica, porém aqui vamos abordar apenas argumentos favoráveis à expansão desse recurso relativamente novo. Um argumento favorável já foi, inclusive, mencionado: é uma área relativamente recente e que está amplamente em aberto para desenvolvedores se aventurarem. Junte a isso, o fato de muitas indústrias estarem interessadas nessa nova tecnologia, entre elas está a indústria de máquinas fotográficas. Agora abordando menos o potencial econômico do assunto e focalizando no aspecto social: uma ferramenta de reconhecimento de expressões faciais teria um valor didático inestimável, no momento em que, se um aluno, ou um usuário de computador demonstrasse dúvidas em relação a algo sendo apresentado na tela, um algoritmo de busca poderia varrer a rede, contatar outros usuários ou o mesmo professor, tudo feito automaticamente em prol da dissolução de qualquer dúvida mediante a apresentação de informações relevantes em relação ao tema que originou o problema. Esse é apenas um exemplo das possibilidades de aplicação dessa ferramenta. Um argumento com um caráter um pouco mais prático em prol do reconhecimento automático de expressões faciais é o fato de que não haver nenhum software livre ou algum documento que aborde diretamente o processo de análise de expressões faciais. O trabalho pretende contribuir na área em três tarefas principais: documentar a função de detecção de objetos do OpenCV, mostrar as soluções existentes e apresentar uma nova maneira para automatizar a criação de base de imagens.
METODOLOGIA
O nosso método de trabalho consistiu em pesquisar artigos e livros, na internet e na biblioteca de pós-graduação da UTFPR, referentes à visão computacional, a tratamento de imagens e a reconhecimento de expressões faciais. Possuindo certa base de conhecimento do assunto, partimos para a implementação do projeto que se deu em conjunto com a estrutura do software OpenCV, a qual nos ajudou muito a entender como funciona, em termos de construção de código em linguagem de programação, os algoritmos de suavização e de detecção de bordas de objetos contidos na imagem. A fase final da implementação prática certamente funcionará com base nos algoritmos que estão contidos no código-fonte do OpenCV, porém temos o foco de com isso entender o funcionamento de um programa processador de imagens além de compreender, dentro do que nos é possível, a teoria de tratamento e de extração de características de matrizes que caracterizam as imagens de interesse.
ESTRUTURA
Este texto é composto por seis capítulos. Este primeiro caracteriza uma introdução ao tema e à nossa proposta de implementação de um sistema de reconhecimento de expressões. Definimos também o porquê nós estamos fazendo esse projeto, onde queremos chegar e o método de estudo que estamos adotando. No próximo capítulo serão apresentados os conceitos que definem a área de Visão Computacional e de Processamento de Imagens, bem como sua teoria e seus conceitos matemáticos de manipulação de matrizes de imagens, tais como: operações aritméticas e lógicas entre matrizes, operações de convolução com operadores matriciais (denominados máscaras), histogramas que indicam percentagens de tons de cor em uma imagem e os diversos tipos de operadores diferentes que produzem matrizes distintas para posterior tratamento. O terceiro capítulo trata de programas produzidos por terceiros que realizam algum tipo de processamento de imagens. Faremos a análise destes programas e mostraremos se os resultados que eles produziram para nós foram satisfatórios ou não. Já no quinto capítulo, demonstraremos tudo sobre o que foi feito por nós em termos práticos e tudo o que ainda pretendemos ainda construir no nosso projeto. No sexto capítulo deixaremos à mostra os resultados obtidos da nossa implementação e a análise destes resultados. Por fim, no sétimo capítulo refletiremos qualitativamente sobre o projeto realizado, tanto sobre suas partes quantitativas como, também, suas partes qualitativas.