Utilização de técnicas de processamento de imagem e Máquina de
Transcrição
Utilização de técnicas de processamento de imagem e Máquina de
Utilização de técnicas de processamento de imagem e Máquina de Vetor de Suporte para detecção do nı́vel de desatenção em motoristas de automóveis Leonardo Dorneles Figueiredo Silva ∗ , Aristófanes C. Silva ∗ e Anselmo C. Paiva ∗ ∗ Núcleo de Computação Aplicada (NCA) Universidade Federal do Maranhão (UFMA), São Luı́s, Brasil Email: [email protected], [email protected], [email protected] Resumo—O cansaço e a fadiga contribuem para que motoristas de veı́culos automotores se envolvam em um grande número de acidentes. Esse número poderia ser reduzido caso fosse possı́vel detectar o momento de desatenção e avisar ao motorista das suas condição. Um sistema que seja capaz de fazer essa detecção de forma automática deve ser capaz de processar as informações da situação atual do motorista e fornecer a resposta em tempo real de acordo com o seu comportamento e também não atrapalhe o motorista na sua forma natural de dirigir. Nesse trabalho foi desenvolvido um sistema que utiliza técnicas de processamento de imagens, Máquina de Vetor de Suporte e caracterı́sticas fı́sicas dos olhos para a detecção da região dos olhos e análise de seu comportamento com o objetivo de verificar o nı́vel de desatenção de motoristas de automotores. Keywords-Máquina de Vetor de Suporte; detecção de cansaço visual; transformada de Wavelets; I. I NTRODUÇ ÃO Motoristas que dormem na direção causam entre 27% e 32% dos acidentes de trânsito e por 17% a 19% das mortes nas vias [1]. A maior parte dos acidentes que acontecem em retas é resultado de alguns segundos de sono. Muitas vezes, o motorista não percebe o adormecimento e, por essa razão, não é possı́vel definir o real motivo da colisão ou da capotagem. Uma forma de ajudar na prevenção de acidentes causados por motoristas sonolentos é a utilização de sistemas capazes de identificar irregularidades no comportamento do motorista que indicam comprometimento da atenção e avisálos da sua situação. Existem vários sistemas para a detecção de sono do motorista. Alguns deles se baseiam em métodos bastante eficientes como medidas fisiológicas de pulso ou saturação de oxigênio no sangue, instalação de sensores e radar anticolisão, mas pouco práticos, pois requerem algum tipo de configuração do motorista, ou a instalação de aparelhos que possuem custo elevado ou dificultam a forma natural de dirigir. Uma metodologia de detecção visual exigiria, como aparato externo, apenas uma câmera instalada no painel do veı́culo de forma que não atrapalhasse a visão e o conforto do motorista. Mas tal facilidade para o usuário apresenta um grande desafio para o desenvolvimento. Pois por ser baseado apenas nos sinais visuais, é preciso resolver problemas resultantes de diferentes nı́veis de iluminação, posições variáveis do motorista e diferentes tipos de rostos, cabelos e olhos. Nesse artigo será descrita uma metodologia que utilizará técnicas de processamento de imagem e aprendizado de máquina para tentar contornar algumas dessas dificuldades. II. T RABALHOS R ELACIONADOS Muitos trabalhos na literatura propõem metódos em tempo real para monitorar o comportamento do motorista através da região dos olhos: Técnicas que se aproveitam das caracterı́sticas circulares da ı́ris e redes neurais [2], que possuem um bom desempenho em tempo real porque o cı́rculo é uma curva de fácil manipulação e olhos são capazes de fornecer caracterı́sticas que os diferenciam do resto do rosto ou ambiente para treinamento da rede, técnicas que aproveitam o comportamento da ı́ris sob luz infravermelha [3] ( bright pupil) que apresentam bons resultados em ambientes escuros mas possuem pontos negativos como ofuscamento pela luz do sol e reflexo caso o motorista utilize óculos, utilizando template matching e AdaBoost [4], que também dependem muito do ambiente e são sensı́veis a transformações de rotação e escala. Também a segmentação do rosto para detecção das possı́veis regiões dos olhos utilizando o Algoritmo CAMSHIFT e análise de componentes principais [5] que apresentou resultados robustos, mas que comprometeram a exigência de tempo real. Por apresentar bons resultados e por ser promissor em uma aplicação em tempo real o trabalho apresentado em [2] foi utilizado como base para este trabalho, principalmente o algoritmo de transformada de Hough proposto e a representação através de transformadas de Wavelets das áreas de interesse para treino e verificação do classificador. Algumas mudanças foram feitas, como a substituição de Redes Neurais por Máquina de Vetor de Suporte no algoritmo de classificação, visando tornar o metôdo mais rápido e independente dos parâmetros de configuração da Rede Neural. Tambêm foi feita uma adição, que é a utilização do movimento simétrico dos olhos para ajudar no problemas de rotação e translação para evitar uma busca global da região dos olhos nos quadros analisados. III. F UNDAMENTAÇ ÃO T E ÓRICA A. Suavização Gaussiana Os efeitos de ruı́do em uma imagem podem ser reduzidos por suavização, isto é, substituir cada pixel por uma media ponderada dos seus vizinhos. O filtro mais usual para esta operação é baseado na função Gaussiana. A função gaussiana satisfaz um grande número de propriedades matemáticas e descreve uma vasta variedade de fenômenos fı́sicos e probabilı́sticos. Dentre essas propriedades algumas são imediatamente relevantes para visão computacional: A primeira delas é quantitativa: a função gaussiana é simétrica, ela também enfatiza os pixels mais próximos em relação aos mais distantes. Essa propriedade reduz o borramento enquanto ainda mantem propriedades médias de ruido. A segunda é que ela nunca cruza o zero, uma vez que é sempre positiva. Essa propriedade é muito importante quando se utiliza suavização junto com algoritmos detectores de borda que utilizam os cruzamentos de zero para identificar uma borda, porque que ela não introduz seus próprios zeros na imagem. Figura 1. Núcleos de Sobel. Figura 2. Imagem Original. B. Operador de Sobel O operador Sobel calcula o gradiente da intensidade da imagem em cada ponto, dado a direção do maior aumento possı́vel de claro para o escuro e o grau de mudança nessa direção. O resultado do operador mostra o quanto abruptamente ou suavemente a imagem muda naquele ponto, e também o quanto que aquela posição representa uma borda e como essa borda esta orientada. Matematicamente, o gradiente de uma função de duas variáveis (no caso a função de intensidade da imagem) é em cada ponto da imagem um vetor com duas dimensões, com os componentes dados pelas derivadas nas direções verticais e horizontais. A cada ponto da imagem, o vetor gradiente aponta para a direção do maior aumento de intensidade possı́vel, e o tamanho do vetor gradiente corresponde ao grau de mudança nessa direção. O operador utiliza dois núcleos 3x3, (Figura 1) que são convolucionados na imagem original (Figura 2) para calcular a aproximação das derivadas, uma para as mudanças horizontais(Figura 4) e uma para as verticais(Figura 3). C. Transformada de Hough O princı́pio básico da Transformada de Hough consiste em obter, através das transformações do gradiente e da limiarização, pontos de uma imagem. A idéia é aplicar na imagem uma transformação tal que todos os pontos pertencentes a uma mesma curva sejam mapeados em um único ponto de um novo espaço de parametrização da curva procurada. A Transformada de Hough tem como vantagem o fato de que pode ser aplicada ao tratamento de qualquer tipo de curva e, além disso, apresenta muita eficiência em imagens fortemente ruidosas. A transformada de Hough na circunferência pode ser formulada como uma convolução[6] na qual os coeficientes da máscara binária são atribuı́dos um nas bordas do cı́rculo e zero nos outros lugares. Esse convolução é aplicada em uma imagem de borda ou então nas derivadas parciais da imagem. RR ~ − x, β − y) ~g (α, β).O(α D(x,y) (x, y) = (1) 2π(Rmin − Rmax ) onde : O Domı́nio D(x, y) é definido por: 2 D(x, y) = (α, β) ∈ R2 |Rmin 2 ≤ (α − x)2 + (β − y)2 ≤ Rmax (2) ~g é o vetor gradiente ~g (x, y) = [ ∂I(x, y) ∂I(x, y) T , ] ∂x ∂y ~ é o vetor núcleo O cos(arctan(y/x)) sin(arctan(y/x)) T ~ p p , ] O(x, y) = [ x2 + y 2 x2 + y 2 (3) (4) No domı́nio discreto o núcleo da Transformada de Hough discreta é implementado como dois filtros, um para cada componente do vetor [2]. (Figura 5) e (Figura 6) D. Erro Médio Absoluto(EMA) O EMA é uma medida simples de similaridade que é calculada através da comparação individual de pixels correspondentes entre duas regiões. No cálculo do EMA será levado em consideração que as regiões são espelhadas. valores de w e b tais que a seguinte relação seja satisfeita: yi ((wxi ) + b) ≥ 1 (6) Os valores ótimos de w e b serão encontrados ao minimizar a seguinte equação, de acordo com a restrição dada pela Equação 6 [7]. Figura 3. Derivada da Figura 2 utilizando núcleo Gx. Figura 4. Derivada da Figura 2 utilizando núcleo Gy. Figura 5. Componente X do ~ no domı́nio D(x,y). núcleo O Figura 6. Componente Y do ~ no domı́nio D(x,y). núcleo O Cálculo do EMA: PN PM i=1 j=1 aij − bi(M −j+1) N.M w2 (7) 2 MVS ainda possibilita encontrar um hiperplano que minimize a ocorrência de erros de classificação nos casos em que uma perfeita separação entre as duas classes não for possı́vel. Isso graças a inclusão de variáveis de folga, que permitem que as restrições presentes na Equação 6 sejam quebradas. O problema de otimização passa a ser então a minimização da Equação 7, de acordo com a restrição imposta pela Equação 6. C é um parâmetro de treinamento que estabelece um equilı́brio entre a complexidade do modelo e o erro de treinamento e deve ser selecionado pelo usuário. φ (w) = N (5) onde M e N representam o número de colunas e de linhas das duas regiões comparadas. aij e bij são os pixels das regiões que estão sendo comparadas. E. Máquina de Vetor de Suporte A Máquina de Vetor de Suporte é um método de aprendizagem supervisionada usado para estimar uma função com o objetivo de classificar dados em duas classes através da construção de um hiperplano que atua como superfı́cie de decisão de forma que as distâncias entre as classes e o hiperplano sejam máximas. Esse hiperplano é obtido na fase de treinamento da Máquina de Vetor de Suporte através de um conjunto de amostras composto por duas classes separáveis. Um classificador MVS é capaz de encontrar um hiperplano baseado em um conjunto de pontos denominados ”vetores de suporte”, o qual maximiza a margem de separação entre as classes. Por hiperplano entende-se uma superfı́cie de separação de duas regiões num espaço multidimensional, onde o número de dimensões possı́veis pode ser, até, infinito. Mesmo quando as duas classes não são separáveis, a MVS é capaz de encontrar um hiperplano através do uso de conceitos pertencentes à teoria da otimização. Seja o conjunto de amostras de treinamento (xi , yi ), sendo xi no vetor de entrada yi a classificação correta das amostras e i = 1,...n o ı́ndice de cada ponto amostral. O objetivo da classificação é estimar a função f : Rn → {±1}, que separe corretamente os exemplos de teste em classes distintas. A etapa de treinamento estima a função, procurando por Φ (w, ξ) = X (w2 ) ξi +C 2 i=1 yi ((wxi ) + b) + ξ ≥ 1 (8) (9) Através da teoria dos multiplicadores de Lagrange, chegase à Equação 10. O objetivo então passa a ser encontrar os multiplicadores de Lagrange αi ótimos que satisfaçam a Equação 11 [7]. w(α) = N X i=1 N X N αi − 1X αi αj γi γj (xi xj ) 2 j=1 αi γi = 0, 0 ≤ αi ≤ C (10) (11) i=1 Apenas os pontos onde a restrição 6 seja exatamente igual à unidade têm correspondentes αi 6= 0. Esses pontos são chamados de vetores de suporte, pois se localizam geometricamente sobre as margens. Tais pontos têm fundamental importância na definição do hiperplano ótimo, pois os mesmos delimitam a margem do conjunto de treinamento. A Figura 7 destaca os pontos que representam os vetores de suporte. Os pontos além da margem não influenciam decisivamente na determinação do hiperplano, enquanto que os vetores de suporte, por terem pesos não nulos, são decisivos. Para que a MVS possa classificar amostras que não são linearmente separáveis, é necessária uma transformação nãolinear que transforme o espaço entrada (dados) para um novo espaço (espaço de caracterı́sticas). Esse espaço deve apresentar dimensão suficientemente grande, e através dele, a amostra pode ser linearmente separável. Dessa maneira, o informações de textura e forma do objeto da imagem. Dessa maneira é possı́vel distinguir o objeto procurado de outros que possam ter em comum um ou dois desses aspectos. Figura 7. Vetores de Suporte ( sobre a linha pontilhada ). Figura 8. hiperplano de separação é definido como uma função linear de vetores retirados do espaço de caracterı́sticas ao invés do espaço de entrada original. Essa construção depende do cálculo de uma função K de núcleo de um produto interno [8]. A função K pode realizar o mapeamento das amostras para um espaço de dimensão muito elevada sem aumentar a complexidade dos cálculos. A Equação 12 mostra o resultado da Equação 10 com a utilização de um núcleo. w(α) = N X i=1 N αi − 1X αi αj γi γj K (xi xj ) 2 j=1 (12) Uma importante famı́lia de funções de núcleo é a função de base radial, muito utilizada em problemas de reconhecimento de padrões e também utilizada neste trabalho. A função de base radial é definida por: K (xi , yi ) = exp (−γ kxi − xj k) (13) F. Transformadas de Wavelet A transformada de Wavelet permite caracterizar as frequências de uma imagem e localiza-las. Nesse artigo foi utilizada a transformada de wavelet discreta, que fornece uma representação hierárquica na imagem implementada com a aplicação iterativa de dois filtros: Filtro de Passa Baixa(PB, aproximador) e os seu complementar na frequência : Filtro de Passa Alta(PA, filtro de detalhe). Em cada passo a transformada de Wavelet quebra a imagem em quatro sub-amostras (sub-imagens), aplicando primeiro nas linhas e depois nas colunas o esquema de filtro PBPA. A Figura 10 mostra o esquema de distribuição das sub-imagens do terceiro nı́vel da transformada de Haar. As letras maiúsculas em cada sub-imagem representam o tipo de filtro que foi aplicado no nı́vel anterior. A primeira letra é o filtro que foi aplicado na direção horizontal, enquanto a segunda letra representa o filtro que foi aplicado na direção vertical. A banda BB é uma aproximação coarsa da imagem original. As bandas BA e AB mostram as mudanças na imagem nas direções horizontais e verticais. A banda AA mostra os componentes de alta frequência da imagem. As decomposições são feitas na banda BB. Os coeficientes da transformadas de wavelets mantém Imagem original Figura 9. Imagem original após aplicação da transformada de Haar até o nı́vel 3 G. Estatı́sticas Baseadas no Comportamento das Pálpebras dos Olhos O nı́vel de desatenção do motorista é baseado na medida PERCLOS (Percentual Eyelid Closure) pois ela pode ser considerada confiável e válida para determinar o nı́vel de desatenção do motorista [9]. O cálculo aproximado do PERCLOS é feito utilizando duas métricas que são fatores para sua determinação: duração de fechamento dos olhos e a frequência de fechamento dos olhos. IV. M ETODOLOGIA A primeira etapa é a captura do vı́deo. A fonte do vı́deo é uma webcam capaz de gravar vı́deos coloridos com resolução de 640x480 a uma taxa de 30 quadros por segundo, os vı́deos utilizados foram capturados em horários com boas condições de iluminação natural ou utilizando iluminação artificial adequada. A manipulação do vı́deo e dos seu quadros é feita utilizando a Biblioteca OpenCV. O vı́deo é então capturado quadro a quadro e convertido em tons de cinza de 8 bits. Após a captura do vı́deo é utilizado uma suavização gaussiana para amenizar o efeito do ruido que é comum em imagens naturais. então para cada quadro é capturado é calculada a derivada parcial com orientação em X e em Y. O núcleo da Transformada de Hough na circunferência é então convoluido: sua componente em X na derivada parcial em X da imagem e sua componente em Y na derivada parcial em Y da imagem. O resultado das duas Figura 10. Transformada de Haar até o nı́vel 3. convoluções é somado e a imagem resultante representa o acumulador da transformada de Hough, quanto maior valor em uma posição, maior a chance dessa posição representar o centro do cı́rculo. Mas algumas regiões mesmo sendo menos circulares apresentam uma grande concentração de valores altos. Para evitar que apenas uma região participe dos próximos passos do algoritmo é utilizada a seguinte estratégia: para cada pico local no acumulador a sua posição é usado, mas os seus vizinhos, utilizando uma janela arbitraria são marcados, de forma que eles não participem da busca por regiões contendo olhos. Após essa etapa então é utilizada a medida de Erro Médio Absoluto para verificar se existem regiões simétricas em relação a cada posição que foi escolhida. Com isso são eliminados muitas regiões circulares, mas que não apresentam olhos, entretanto ainda sobram muitas regiões candidatas a região dos olhos. Para verificar as regiões que realmente representam olhos é utilizado um classificador baseado em Máquina de Vetor de Suporte. o primeiro passo é treiná-lo. Para isso são feitas extrações de forma manual da região dos olhos que serão treinadas como regiões positivas e de outras regiões da face ou do ambiente que serão treinadas como regiões negativas. A representação dessas regiões na Máquina de Vetor de suporte é através dos coeficientes da Transformada de Haar de terceiro nı́vel de cada uma dessas regiões extraı́das. A transformada de Haar foi escolhida por ser de fácil implementação, computacionalmente pouco custosa e apresentar caracterı́sticas de forma e textura. O treinamento é feito offline. O classificador, utilizando as informações adquiridas na fase de treinamento é então utilizado. Cada uma das posições que ainda sobraram como candidatas após as fases anteriores são verificadas. Com isso a região dos olhos é encontrada, e para diminuir o espaço de busca nos quadros de vı́deo seguintes e garantir o desempenho em tempo real é delimitado uma região de interesse de 400 pixels de largura e 125 de altura com centro na metade da distância entre os dois olhos. A largura da região de interesse é maior que a altura porque os movimentos do motorista podem ser mais amplos na horizontal que na vertical. A movimentação simétrica dos olhos é utilizada para diminuir ainda mais o custo computacional da busca dos olhos. A idéia é posicionar no vı́deo duas janelas nas posições que inicialmente correspondem a localização dos olhos encontrados nos passos anteriores e aplicando a transformada de Hough nessas regiões, é possı́vel reposicionar essas janelas de acordo com movimento dos picos dos se acumuladores. A movimentação dos dois em um mesmo sentido significam uma translação, se um deles se movimenta para cima e outro para baixo isso indica uma inclinação para o lado direito ou esquerdo. A posição das janelas é recalculada de acordo com o movimento. Após encontrada a posição dos olhos o nı́vel de desatenção é calculado com as medidas baseadas na estatı́stica PERCLOS. A duração do tempo dos olhos fechados (TOF) é feita conferindo quantos segundos passaram desde a última vez que os olhos foram encontrados. A frequência de fechamento dos olhos (FFO) é calculada contando quantas vezes em um intervalo de um minuto os olhos não são encontrados. Para as duas medidas são definidos dois limiares.O primeiro é para alertar sobre pequenas anomalias e o segundo para quando o comportamento visual chega em um nı́vel perigoso. V. R ESULTADOS O sistema foi implementado utilizando a linguagem C++, utilizando o Eclipse CDT em uma máquina com processador AMD Athlon 5600 de 2.8GHZ com 1GB de memória. Na Tabela I está descrito o tempo necessário para as principais etapas do sistema utilizando essa configuração. Os resultados (Figura 11) foram obtidos utilizando a escolha da região dos olhos com dimensões de 64x64 pixels. Essa dimensão foi escolhida de forma empı́rica e depende da resolução da fonte de captura. A distância entre os olhos para o cálculo da medida de similaridade Erro Médio Absoluto fica no intervalo [86 94] pixels e foi obtida através dos testes feitos em pessoas de diferentes idades e pequenas variações de distância em relação a câmera. O classificador foi treinado utilizando 300 amostras de imagens representando olhos e 400 imagens representando não-olhos. Os vı́deos utilizados na Tabela II já com os resultados do rastreamento e da identificação do nı́vel de desatenção do motorista podem ser encontrados em: http://www.labpai.dee.ufma.br/˜dorneles/downloads/ Tabela I T EMPO DE PROCESSAMENTO DAS PRINCIPAIS ETAPAS DO SISTEMA Etapa Validação MVS Transformada de Hough em todo o quadro Transformada de Hough apenas na região de interesse Transformada de Hough na região do olho Tempo(s) 0.0023 0.0765 0.0133 0.0020 Tabela II R ESULTADO DO RASTREAMENTO DE OLHOS Total de Quadros Olhos encontrados Taxa de acerto(%) Vı́deo 1 2005 3633 90.5 Vı́deo 2 694 1152 82.9 Vı́deo 3 629 1200 95.3 VI. C ONCLUS ÃO Nesse trabalho foi implementado um sistema capaz de identificar a região dos olhos partindo das suas propriedades fı́sicas singulares de formato e textura. Foi verificado que enquanto a iluminação do ambiente ainda permita uma sensı́vel diferenciação da região da ı́ris em relação a esclera o algoritmo de detecção de cı́rculos é capaz de detector um pico nas regiões que apresentam o centro dos olhos(ı́ris). E que nessas condições as caracterı́sticas escolhidas baseadas na terceira decomposição da Transformada de Wavelet, implementada utilizando filtros de Haar, são capazes de diferenciar as regiões que contêm olhos das que não contêm olhos, mesmo contendo um número reduzido de coeficientes em relação aos pixels da região de análise. Com isso a sua utilização como entrada para o classificador, baseado em Máquina de Vetor de Suporte forneceu bons resultados para a validação dos olhos. Verificamos que essa abordagem possui dificuldades. A primeira delas é a iluminação, que dificulta e até mesmo impossibilita a utilização do detector de circunferências por ele ser baseado em detector de bordas que utilizam informações do gradiente da imagem e este é fortemente influenciado pela iluminação. A segunda é sobre o próprio funcionamento do algoritmo: como estamos procurando regiões circulares o algoritmo não é capaz de verificar se os olhos estão fechados, mas apenas se ele não encontrou os olhos na cena. Essa dificuldade implica que se vamos utilizar a informação de um olho não encontrada como sinônimo de olho fechado o algoritmo precisa ainda ser mais refinado. R EFER ÊNCIAS [1] DETRAN-RS, “De olhos bem abertos,” in http://www.detran.rs.gov.br/clipping/20080308/01.htm, 2008. [2] T. D´Orazio, C. Guaragnella, M. Leo, and A. Distante, “A visual approach for driver inattention detection,” in Pattern Recognition 40. Elsevier Ltd, 2007, pp. 2341–2355. [3] F. Jiao and G. He, “Real-time eye detection and tracking under various light conditions,” in Data Science Journal, Volume 6, Supplement, 29 September 2007, 2007. [4] T. K. Luhandjula, “Submitted in fulfilment of the requirements for the degree of magister technologiae: Digital technology in the graduate school of electrical and electronic engineering and the french south african technical institute in electronics,” in Closed eye detection for fatigue monitoring, 2007. [5] Z. Savas, “Real-time detection and tracking of human eyes in video sequences,” in A Thesis Submitted To The Graduate School Of Natural And Applied Sciences Of Middle East Technical University, 2005. [6] T. Atherton and D. Kerbyson, “Size invariant circle detection,” in Image Vision Comput. 17. Elsevier Ltd, 1999, pp. 795–803. [7] A. C. F. Chaves, “Extração de regras fuzzy para máquinas de vetor de suporte (svm) para classicação em múltiplas classes,” in PhD thesis.Pontificia Universidade Catolica do Rio de Janeiro., 2006. [8] S. Haykin and P. Engel, “Redes neurais: Principios e pratica.bookman,” 2001. [9] D. Dinges and R. Grace, “Perclos: A valid psychophysiological measure of alertness as assessed by psychomotor vigilance,” in US Department of Transportation, Federal Highway Administration, TechBrief, FHWA-MCRT-98-006. Elsevier Ltd, 1998. Figura 11. Resultado do algoritmo de detecção de olhos proposto.Os quadrados representam as regiões que foram validadas pelo classificador e representam os olhos. A taxa de quadros por segundo foi reduzido para 10 para melhor visualização.