Este documento descreve um sistema desenvolvido para detectar estados emocionais de usuários através do reconhecimento facial utilizando o sensor Microsoft Kinect. O sistema usa a API do Kinect para rastrear características faciais e mapear coordenadas que são comparadas a lógicas de unidades de ação para identificar alegria ou tristeza. O trabalho teve como objetivo principal criar um software capaz de reconhecer experiências emocionais básicas de usuários para aplicações em saúde e tecnologia.
Análise Facial Computadorizada para Identificação da Experiência Emocional Utilizando Kinect
1. ANÁLISE FACIAL COMPUTADORIZADA PARA IDENTIFICAÇÃO DA
EXPERIÊNCIA EMOCIONAL UTILIZANDO O KINECT
Defesa de Monografia – Sistemas de Informação (CEULP/ULBRA)
Orientador: Msc. Fernando L. Oliveira
Gabriel Vaz Aires
2. Importância
A análise facial para a identificação da experiência emocional do
usuário é fundamental para áreas da saúde e da tecnologia, sendo que
com a identificação certa e a análise feita de forma adequada é possível
descobrir algumas irregularidade na saúde de uma pessoa, tanto
sentimental como física e também se há uma interação adequada com
tecnologias atuais.
3. Objetivo
O objetivo principal deste trabalho é a criação de um sistema capaz de
detectar estados emocionais de um usuário através do reconhecimento
facial do Sensor Microsoft Kinect.
Como foi feito o reconhecimento?
Através de uma API disponibilizada pelo SDK do Sensor Microsoft
Kinect 2.0. Esta API disponibiliza algumas funções que por meio de
vários sensores do Kinect é possível o rastreamento facial do usuário.
5. Experiência Emocional
Experiência emocional, segundo Picard (2003), é a forma como são percebidos os estados emocionais, que estão ligados
à consciência.
Fonte: (Adaptado JAQUES e VICCARI, 2005)
Figura 1 - Representação dos ramos de pesquisa da Computação Afetiva
8. Funcionalidades
● Inicializar sensor Kinect;
● Inicializar sensor de cor RGB;
● Inicializar sensor de corpo;
● Rastreio Facial;
● Mapeamento de Coordenadas;
● Atualização de pontos faciais;
● Comparar estado emocional através
da lógica das UA’s;
14. Considerações Finais
O trabalho teve como objetivo o desenvolvimento de um software para o reconhecimento do estado
emocional através da identificação da experiência emocional, mais precisamente os estados de alegria e
tristeza, utilizando o Sensor Microsoft Kinect.
Uma das etapas mais complexa realizada nesse trabalho foi a elaboração da lógica de intervalo das
UA’s, pois nos estudos foram propostos as algumas variáveis, mas o SDK do Sensor Microsoft Kinect,
através da HD FACE API disponibiliza algumas UA’s automaticamente para a realização do rastreio.
Como trabalhos futuros, pode-se citar: utilizar outros recursos no que tange estados afetivos, como por
exemplo, o reconhecimento de novos estados afetivos como, raiva e surpresa, a fim de melhorar a quantidade
de emoções rastreada e reconhecida pelo software.
Dessa forma, conclui-se que com o uso dos recursos do Sensor Microsoft Kinect v2 junto com
recursos de sua API fornecida pelo SDK, é possível que se obtenha uma representação do estado afetivo do
usuário.
15. ANÁLISE FACIAL COMPUTADORIZADA PARA IDENTIFICAÇÃO DA
EXPERIÊNCIA EMOCIONAL UTILIZANDO O KINECT
Defesa de Monografia – Sistemas de Informação (CEULP/ULBRA)
Orientador: Msc. Fernando L. Oliveira
Gabriel Vaz Aires
Notas do Editor
Para atingir os objetivos propostos, utilizou-se como desenho de estudo uma pesquisa com finalidade metodológica textual, sendo realizado em laboratório com procedimento de pesquisa.
A metodologia adotada no trabalho segue um conjunto de etapas que foram de grande importância para a conclusão do mesmo.
Na primeira etapa ‘Estudo do Tema’ foram realizadas pesquisas acerca de experiência emocional, interação afetiva baseada na expressão facial, reconhecimento afetivo, classificações das expressões faciais, detecção facial, rastreamento e reconhecimento facial, por fim, Sensor Microsoft Kinect v2.
Após os estudos para embasamento e entendimento do trabalho, no segundo passo foi desenvolvido o referencial teórico, que aborda textos sobre experiência emocional, onde foi tratado as formas como são reconhecidas os estados afetivos e também sobre interação afetiva baseada na expressão facial, abordando também o reconhecimento da afetividade, classificações das expressões faciais, detecção facial, rastreamento facial e, por fim, o reconhecimento facial.
Após o levantamento teórico realizado, no terceiro passo foi realizado uma análise sobre o sistema chamado FisioKinect que já é utilizado no Laboratório de Tecnologia e Saúde, esta análise envolve o entendimento de como são criados os módulos para que o módulo em desenvolvimento neste trabalho seja adicionado. Além disto, foi realizado uma análise das ferramentas que foram utilizadas para o entendimento e funcionamento deste módulo.
Logo após, foi feito uma análise com base nos estudos do referencial teórico sobre as APIs a serem utilizadas no desenvolvimento, após esse levantamento foi identificado que para o processo de implementação era preciso realizar uma análise na documentação da API escolhida chamada HD FACE API que é disponibilizado no site da Microsoft.
Logo após, através da análise dos conceitos que envolvia o reconhecimento dos estados afetivos, foi realizado o passo de Desenvolvimento da Aplicação. Nesta etapa foi efetuada a codificação do software por meio do software Visual Studio 2013. Vale ressaltar que o módulo desenvolvido tem por objetivo auxiliar no reconhecimento do estado afetivo de um usuário por meio do Sensor Microsoft Kinect.
No quinto e último passo, ‘Execução Demonstrativa da Aplicação’ houve algumas execuções do sistema de carácter de testes não científico e demonstrativo. Ao relizar esse passo foi identificado alguns erros e com isso foi possível retornar ao passo anterior para que este erros fossem corrigidos.
funções básicas para o funcionamento dos componentes do Sensor Microsoft Kinect. Essas funções foram feitas em classes básicas que são responsáveis pela configuração do sensor de profundidade e câmera RGB assim como a inicialização do Sensor Microsoft Kinect.
Após a realização das configurações básicas do sistema, a próxima etapa foi a implementação do rastreamento facial. Para isso, foi utilizada a imagem que o sensor RGB do Sensor Microsoft Kinect consegue captar do ambiente. Após esse processo foi observado que, para o rastreamento ser preciso, deve-se criar um método que rastreia o corpo do usuário.
A quarta etapa teve como objetivo o desenvolvimento de uma técnica para verificação dos pontos na face. Para esse propósito, foi desenvolvido um método para a atualização dos pontos rastreáveis na face. O Sensor Microsoft Kinect trabalha com imagens sendo renderizada em loop ou tempo real, esses pontos serão atualizados a cada movimento que o usuário fizer ou enquanto o sistema estiver ativo.
O método de atualização dos pontos da face cria ellipses 2D ma forma do rosto do usuário. Logo após é feito um processo de repetição para que cada ponto rastreável seja ocupado por uma dessas ellipses 2D para que seja formado uma malha em 3D sobre o rosto do usuário,
O mesmo carrega os sensores e ao estar de acordo com a distância do sensor entre o usuário, que é aproximadamente a 46cm, será mostrado na tela a malha 3D que aparecerá sobre o rosto do usuário.
Na linha 35 é definido a variável alinhamentoFace que é uma instância da classe FaceAlignment
que é utilizada para o mapeamento da face, esse mapeamento identifica cada ponto do rosto do
usuário passando para uma função que irá determinar as coordenadas X, Y e Z de cada ponto identificado.
Na linha 36 é criado uma variável modeloFace que é uma instância de classe FaceModel, nela é determinado um modelo de face.
FELIZ: A variável bocaCantoEsquerdo1X e bocaCantoEsquerdo1Y é o índice correspondente ao canto da boca esquerda na coordenada X e Y.
A variável buchechaEsquerdaX corresponde ao centro da bochecha esquerda.
TRISTE : A variável bocaCantoEsquerdo1X de estar em um intervalo menor que 0.06 e a diferença entre os pontos da boca que é armazenado na variável dif deve estar em um intervalo entre 0.050 e 0.054.
Para a detecção a API do SDK do Kinect 2.0 fornece alguns pontos já predefinidos, chamados através da classe HighDetailFacePoints, esses pontos são numerados em cada elipse, que são os pontos azuis que aparecem na malha 3D no rosto do usuário.
Cada ellipse tem como propriedade os valores em metros das coordenadas X, Y e Z.
Para que esses resultados tenham efeito o Sensor Microsoft Kinect o usuário deve estar em uma
posição em que a altura de seu nariz deve estar na frente da câmera e possuir uma distância de +/- 50 cm
do Sensor Microsoft Kinect para que o rastreio não traga erros e um rastreio não válido.