ALGORITMOS PARA IDENTIFICAÇÃO E ANÁLISE DE POSIÇÕES OCULARES NA UTILIZAÇÃO DE COMANDOS PARA MOVIMENTOS DE PACIENTES PARAPLÉGICOS E TETRAPLÉGICOS 

ALGORITHMS FOR IDENTIFICATION AND ANALYSIS OF EYE  POSITIONS IN THE USE OF COMMANDS FOR MOVEMENTS OF  PARAPLEGIC AND TETRAPLEGIC PATIENTS 

REGISTRO DOI: 10.69849/revistaft/ch10202512190624


Arnaldo Cubaski Junior1
Márcio Roberto Covacic2
Ruberlei Gaino3


Resumo 

A Visão Computacional e a Inteligência Artificial trabalham juntas em inúmeras aplicações na ciência.  Desta forma, utilizando estas duas áreas é possível obter informações de imagens e classificá-las em  determinadas classes pré-especificadas, de forma a simplificar ou, até mesmo, minimizar a ação humana  em uma determinada atribuição. Tendo isso em mente, este projeto visa a elaboração de um algoritmo  confiável que detecte posições oculares simples expressas como ‘CIMA’, ‘BAIXO’, ‘ESQUERDA’,  ‘DIREITA’ e ‘PADRÃO’, utilizando como base de processamento a retina e a íris do indivíduo e,  consequentemente, seja capaz de identificar em qual direção tal pessoa está olhando. Sendo assim, o  algoritmo desenvolvido, pode atuar facilitando a manipulação de certos equipamentos e dispositivos  eletrônicos, utilizando os movimentos oculares como uma forma de controle. A exemplo disso, temos  uma cadeira de rodas cujo controle de direção seja através de movimentos oculares, como também  acionar comandos ao neuroestimulador para promover movimentos funcionais de membros. Desta  maneira, evidenciando a capacidade de controle do algoritmo desenvolvido, foi realizado testes nos  quais as posições oculares identificadas pelo algoritmo atuam variando a angulação de um servo motor. 

Palavras-chave: Rastreamento Ocular Visual. Redes Neurais Convolucionais. Tecnologias Assistivas.  Tetraplegia. Visão Computacional. 

1 INTRODUÇÃO 

1.1. Tecnologias Assistivas 

Segundo dados obtidos pelo Instituto Brasileiro de Geografia e Estatística (IBGE) no  ano de 2000, foram constatados cerca de 9.875.510 brasileiros com alguma deficiência motora,  definidas dentre elas, a Paraplegia, a Tetraplegia e a Hemiplegia Permanente. Este valor, na  época, contabilizava aproximadamente 6.55% da população brasileira naquele ano. No ano de  2010 foram constatados cerca de 13.265.599 brasileiros com algum tipo de deficiência motora.  Nesta pesquisa realizada, não foi especificado qual a deficiência motora, apenas classificadas  em “Não Consegue de Modo Algum”, “Grande Dificuldade” e “Alguma Dificuldade”. Este  número expressava cerca de 6.95% da população brasileira naquele ano (INSTITUTO  BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA, 2021a,b).  

O aumento expressivo destes números evidencia a necessidade de uma maior  preocupação com este grupo populacional, de forma a viabilizar a integração destes indivíduos  na sociedade, diminuindo suas dificuldades enfrentadas. A partir deste princípio e devido às  poucas pesquisas desenvolvidas a fim de oferecer melhor qualidade de vida para pessoas com  deficiências motoras, o autor (GAINO, 2009) desenvolveu um sistema de controle em malha  fechada para variação angular da articulação do joelho de pacientes paraplégicos utilizando  estímulos elétricos no músculo quadríceps. Dados do IBGE mais recentes confirmam a  tendência de aumento. 

Em (GOMIDE, 2012), o autor desenvolve um ambiente virtual no formato de jogo  visando a recuperação de pacientes com deficiências motoras nos membros superiores  utilizando de técnicas de Visão Computacional. Além disso, em (SOUSA, 2019), a autora  desenvolve um sistema capaz de extrair imagens dos olhos e boca do usuário, identificar as  posições oculares dos olhos e movimento da boca, além de inclinações na cabeça e associar tais  movimentos ao controle de uma cadeira de rodas. Ambos os projetos abordam tecnologias  assistivas para pessoas com deficiências motoras, de forma a possibilitar uma melhor qualidade  de vida para este grupo de pessoas. 

O controle do movimento de uma cadeira de rodas com base nos movimentos dos olhos  também é abordado em (THARWAT et al., 2022) e (XU et al., 2023). Em (XU et al., 2023), o  controle se baseia em deep learning com redes neurais. 

Uma discussão muito bem apresentada em (DAHMANI et al, 2020) coloca no estado  da arte, os tipos de uso de rastreamento ocular visual, os tipos de redes neurais e a necessidade de reduzir custos. Os softwares comerciais ainda são muito caros para rastreamento ocular visual, tornando economicamente inviável a utilização no acionamento da cadeira de rodas para  pessoas paraplégicas e tetraplégicas. 

O nosso grupo tem experiência com outras opções de acionamento, que foram abordadas  pelo nosso estudo em (INPI, 2022a), (INPI, 2002b) e (LEÔNCIO JUNIOR et al., 2025). Uma  outra colaboração de desenvolvimento foi apresentada pela interação do Programa de Pós Graduação da Engenharia Elétrica da Universidade Estadual de Londrina com o curso de  Engenharia Elétrica da Unicesumar, cujo projeto consiste no controle da cadeira de rodas pelo  rastreamento ocular visual com uso de controle (SILVA; MAGAN; OLIVEIRA, 2021). 

Neste artigo, foi apresentado uma possibilidade de reduzir os custos, com a utilização  de softwares open source e microcontrolador acessíveis com a utilização da linguagem Python.  As imagens a serem analisadas podem ser obtidas com a câmera de um telefone celular,  reduzindo ainda mais o custo da tecnologia. Os comandos de posição ocular acionam um servo  motor que tem como objetivo acionar os motores da cadeira de rodas. 

O acionamento ocular a baixo custo (DAHMANI et al., 2020) mostra-se uma opção  viável e incentivou os nossos estudos, culminando, neste artigo, na criação de um sistema com  custos menores, utilizando softwares open source, biblioteca Python, Arduino e telefone  celular. 

Para o acionamento de uma cadeira de rodas, a eletrônica empregada, os sensores e os  estágios de potência são apresentados em (GENTILHO JUNIOR, 2014) e (NUNES, 2015). 

1.2. Visão Computacional 

A Visão Computacional trata-se de uma técnica de análise que permite interpretar  imagens do mundo real por meio de um software. Desta maneira, com a devida programação,  é possível desenvolver algoritmos capazes de realizar ações que necessitam da habilidade  cognitiva de interpretação de imagens pelos seres humanos, facilitando assim, atividades  realizadas pelo homem. Trata-se de um tema interdisciplinar, no qual pode atuar em diversos  campos, como na agricultura, no setor industrial, na biologia, na medicina, dentre outros. 

Em (NEVES; NETO; GONZAGA, 2012), os autores apresentam 20 trabalhos sobre  visão computacional e suas aplicações. Estes trabalhos foram selecionados no evento VII  Workshop de Visão Computacional (WVC 2011), realizado na Universidade Federal do Paraná,  em Curitiba, no ano de 2011. A partir deste livro, é possível perceber a ampla gama de  aplicabilidades da Visão Computacional. São apresentados trabalhos na área da medicina, agricultura, processamento de imagens, sistemas automatizados de identificação,  reconhecimento de padrões, dentre outros. 

1.3. Inteligência Artificial 

Segundo (PEREIRA, 2003), a Inteligência Artificial (IA) é uma disciplina científica que  utiliza as capacidades de processamento computacional com a finalidade de desenvolver  métodos genéricos para automatizar atividades perceptivas, cognitivas e manipulativas,  utilizando de hardwares. 

Ainda, em (NORVIG; RUSSEL, 2013), os autores apresentam definições para a  Inteligência Artificial sob quatro categorias diferentes. Estas categorias são: “Pensando como  um Humano”, “Pensando Racionalmente”, “Agindo como Seres Vivos” e “Agindo  Racionalmente”. Segundo os autores estas quatro categorias são estratégias para se definir a IA.  Desta forma, subentende-se que uma IA deve simular o raciocínio humano e desenvolver  habilidades perceptivas e de tomadas de decisão, elevando ao máximo estas habilidades  procurando sempre o melhor desempenho. 

1.4. Redes Neurais Artificiais 

De acordo com o autor (SPÖRL; CASTRO; LUCHIARI, 2011), as Redes Neurais  Artificiais (RNA’s) são algoritmos computadorizados que possuem seu modelo matemático  semelhante a estrutura neural de seres inteligentes, que tentam simular o funcionamento de um  cérebro humano, ainda que de forma simplificada. Desta maneira, a partir de um aprendizado  prévio, as Redes Neurais Artificiais conseguem desempenhar processos de estimação, com base  neste aprendizado. O fato de serem capazes de “aprender” certo método de classificação e  posteriormente reproduzi-la, possibilitou que as RNA’s sejam utilizadas nas mais diversas  áreas, ofertando análises de imagens, diagnósticos médicos, identificação de pragas na  agricultura, dentre outras. 

De forma a compreender com mais facilidade os conceitos de uma RNA, é preciso  previamente estudar o modelo real de um neurônio. Desta maneira, o autor (BIANCHINI, 2001)  nos apresenta a representação de um neurônio real, bem como a identificação de cada uma de  suas estruturas, mostrada na Figura 1. As dendrites são as estruturas responsáveis por receber  os impulsos elétricos de outros neurônios. O corpo celular é responsável pelo processamento  do sinal recebido. O axônio é a estrutura que permite a retransmissão do sinal recebido e  processado. A conexão do axônio de um neurônio com a dendrite de outro, configurando uma  troca de informações, é denominado de Sinapse.

Figura 1 – Modelo Neurônio Real 

Fonte: (BIANCHINI, 2001). 

O modelo de neurônio artificial também é apresentado pelo autor Bianchini  (BIANCHINI, 2001) e é mostrado na Figura 2. Nesta representação, as sinapses representam  os valores de entrada, que deverão ser multiplicadas a diferentes valores de pesos, configurando  uma ponderação de sinal. Estes sinais serão somados através de um somador e posteriormente  aplicado à uma função de ativação, realizando o processamento do sinal. 

Figura 2 – Modelo Neurônio Artificial 

Fonte: (BIANCHINI, 2001). 

Dependendo do tipo de Rede Neural e de sua finalidade, podem ser utilizados centenas  e milhares de estruturas citadas acima, dispostas em diversas camadas.

1.5. Redes Neurais Convolucionais 

As autoras (VARGAS; CARVALHO; VASCONCELOS, 2016) apresentam que uma  Rede Neural Convolucional (CNN) é uma variação das redes neurais mais básicas, sendo  principalmente usada para processamento de dados visuais. Uma CNN apresenta diversas  camadas com diferentes funções. Majoritariamente, os dados de entrada são aplicados sobre  uma camada de convolução. Esta camada é constituída de diversos neurônios como expressos  na Figura 2. Cada neurônio aplica um filtro sobre uma partição específica da imagem. 

Além disso, as autoras ainda explicam que neste tipo de Rede Neural, apenas um  subconjunto de entradas é conectado a cada neurônio, de forma que cada neurônio realiza a  análise de pequenas porções da imagem, os chamados campos perceptivos locais. 

Outra estrutura importante deste tipo de Rede Neural é a camada de agrupamento  (pooling) cuja principal função é reduzir a dimensão dos dados trabalhados garantindo agilidade  no treinamento e criar a chamada variância espacial, que permite o reconhecimento de padrões  em qualquer local da imagem. 

A combinação destas camadas, juntamente com outras diversas que não foram  abordadas neste texto, formam as chamadas Arquiteturas, que consistem, basicamente, no  esqueleto da Rede Neural e apresentam todos os processos a serem realizados sob determinados  dados de entrada. 

Tendo em vista os pontos levantados, o escopo deste projeto visa o desenvolvimento de  um algoritmo capaz de identificar a região dos olhos em uma face, tendo como dados de entrada  um vídeo em tempo real. Com os olhos identificados, ocorre a extração desta região de interesse  da imagem original, e por meio de uma Rede Neural Convolucional, é possível identificar a  posição que o olho se encontra. 

Este trabalho se justifica pelo uso de uma câmera de baixo custo, como uma câmera de  celular, e um microcontrolador Arduino e um software open library para machines learning.  Cria-se assim, um kit de fácil acesso que utiliza machine learning com redes neurais, usando  equipamento de baixo custo. 

2 METODOLOGIA  

Para este projeto foram consideradas posições oculares simples, denotadas como  PADRÃO, DIREITA, ESQUERDA, BAIXO e CIMA, caso o usuário esteja olhando para a  frente, direita, esquerda, baixo e cima, respectivamente. Com o resultado proveniente da CNN é possível realizar a comunicação serial com um hardware, de forma a controlar um servo motor, através de posições oculares simples. 

O desenvolvimento do algoritmo foi dividido em algumas partes de forma a facilitar o  processo. Desta forma, temos a Construção do Banco de Dados, o Desenvolvimento da Rede  Neural, a Obtenção da Região de Interesse e o Desenvolvimento do Código Final. 

2.1. Construção do Banco de Dados 

A eficiência de uma Rede Neural é um reflexo direto de seu banco de dados. Desta  forma, para uma Rede Neural consistente é necessário também um banco de dados consistente,  bem organizado e bem variado. 

É possível encontrar diversos bancos de dados na internet sobre diversos tipos de  conteúdo. Para este caso, foi necessário encontrar um banco de dados de olhos que atendessem  as especificações deste projeto. Assim, foi necessário obter um dataset de imagens de olhos sob  diferentes índices de luminosidade no qual houvessem diferentes posições oculares presentes. 

O vídeo a ser analisado pelo algoritmo final será obtido através da câmera frontal de um  celular Xiaomi Redmi Note 7, com especificações de 13MP, f/2.0, 1.12µm. Visando uma  melhor eficiência da Rede Neural, de forma que os dados de treinamento sejam semelhantes  aos da- dos trabalhados no resultado final, o banco de dados para treinamento da CNN foi  desenvolvido pelo autor através de um algoritmo auxiliar. 

De maneira a simular um método de controle a partir do algoritmo desenvolvido, foi  utilizada a biblioteca Pyserial, de forma a realizar uma comunicação serial com  microcontrolador Arduino UNO. Este microcontrolador foi utilizado devido a sua praticidade  e facilidade na programação. Desta forma, para cada resultado obtido pela rede neural, é  enviado um conjunto de bits diferentes pela comunicação serial, no qual o Arduino UNO ajusta  a posição angular de um servo motor. A programação utilizada no Arduino realiza apenas a  verificação do conjunto de bits recebidos pela comunicação serial e ajusta-os. 

Foram gravados cerca de 7 vídeos, de aproximadamente 35 segundos cada, no qual o  usuário filmava seu rosto e olhava para as 5 diferentes posições oculares trabalhadas, sob  diferentes índices de luminosidades. Estas imagens obtidas foram utilizadas no treinamento e  vali- dação da rede neural desenvolvida. 

Para o desenvolvimento do algoritmo foram utilizadas bibliotecas específicas para o  reconhecimento facial e ocular, manipulação dos dados e conceitos de visão computacional.  Estas bibliotecas são, respectivamente, o Dlib-ml, Numpy e o OpenCV.

Utilizada pelas funções específicas de reconhecimento facial, a biblioteca Dlib-ml é uma  biblioteca open source voltada para engenheiros e pesquisadores científicos que visa fornecer  um ambiente igualmente rico para desenvolvimento de algoritmos de aprendizagem de máquina  (KING, 2009). Para o reconhecimento facial, existem funções específicas capazes de identificar  faces, além de predizer pontos de interesse localizados na face identificada. 

NumPy é uma biblioteca open source fundamental para computação científica em  Python. É uma biblioteca que fornece um objeto de matriz multidimensional, vários objetos  derivados (como matrizes e matrizes mascaradas) e uma variedade de rotinas para operações  rápidas em matrizes (NUMPY, 2021). Desta maneira, utilizando a biblioteca NumPy operações  vetoriais são feitas com extrema rapidez e velocidade. 

A biblioteca OpenCV trata-se de uma biblioteca open source utilizada para  processamento de visão computacional. Um dos objetivos do OpenCV é proporcionar uma  arquitetura de fácil implementação que ajude o usuário a desenvolver sofisticados algoritmos  de visão computacional. Esta biblioteca contém mais de 500 funções que abrange diversas áreas  em visão computacional, como inspeção de produtos em fábricas, imagens médicas, segurança,  calibração de câmeras, dentre outras (BRADSKI; KAEHLER, 2008). 

A cada 5 frames, o algoritmo realiza a análise da imagem. Isto evita que sejam  analisadas imagens contendo informações muito parecidas. A cada frame analisado é  identificado o rosto e seus pontos de interesse com a biblioteca Dlib-ml. Após isso, é realizada  uma segmentação da imagem original de forma a conter todos os pontos de interesse ao redor  dos olhos, abrangendo assim, toda a informação dos olhos dentro da segmentação. Esta  segmentação, contendo a informação dos olhos, é sobreposta sobre um fundo branco e  redimensionada de forma a possuir 30×30 pixels. É importante que esta imagem possua  dimensão pequena para agilizar o processo de treinamento e predição da rede neural. Com a  informação dos olhos extraída da imagem original, esta nova imagem é salva em um diretório  específico. 

Com as imagens salvas, elas são novamente analisadas, agora manualmente, e o usuário  adiciona a posição ocular, observada na imagem, em seu nome. Desta forma, é possível,  posteriormente, facilitar a criação dos labels do banco de dados para o treinamento da rede  neural. 

2.2. Desenvolvimento da Rede Neural 

A arquitetura utilizada para o treinamento da Rede Neural utilizada foi baseada na CNN  desenvolvida em (KINLI, 2018). A arquitetura original foi desenvolvida para o treinamento de uma rede neural de reconhecimento de emoções faciais, utilizando o banco de dados fer2013.  Este banco de dados consiste em 35887 imagens de faces sob diferentes expressões. A partir de  testes realizados com diversas arquiteturas diferentes, foi verificado um melhor resultado  utilizando a arquitetura proposta em (KINLI, 2018). 

Para o processamento dos dados de entrada, estruturação da arquitetura, treinamento da  Rede Neural e dos testes realizados, foi desenvolvido um algoritmo em Python utilizando as  bibliotecas OpenCV, NumPy e o Tensorflow. 

O NumPy é uma biblioteca open-source fundamental para computação científica em  Python. É uma biblioteca que fornece um objeto de matriz multidimensional, vários objetos  derivados (como matrizes e matrizes mascaradas) e uma variedade de rotinas para operações  rápidas em matrizes (NUMPY, 2021). Desta maneira, utilizando a biblioteca NumPy, as  operações vetoriais são feitas com extrema rapidez e velocidade. 

TensorFlow é uma biblioteca open source utilizada para computação numérica que  utiliza gráficos de fluxos de dados para habilitar pesquisadores de aprendizagem de máquina a  realizar mais computação intensiva de dados (ZACCONE; KARIM; MEN-SHAWY, 2017). O  TensorFlow é um framework, ou seja, um conjunto de códigos que objetivam uma determinada  aplicação. No contexto de Redes Neurais, esta biblioteca possui inúmeras funções para o  desenvolvimento de CNNs que implementam arquiteturas, funções de ativações, algoritmos de  otimização, funções de custo, dentre outras. Desta maneira, a estruturação, treinamento e teste  de uma rede neural completa é severamente facilitada com o uso desta biblioteca. 

O banco de dados de treinamento apresentado na seção anterior é processado de forma  a atender as especificações necessárias. Para isso, todas as imagens são convertidas para tons  de cinza, ou seja, a intensidade de cada pixel da imagem varia somente de 0 a 255, no qual 0  equivale ao preto de 255 ao branco. Estes valores são normalizados de forma a facilitar o  treinamento da rede neural. Além disso, é definido um label para cada imagem, de acordo com  a posição ocular especificada em seu nome. Desta forma, o treinamento da rede neural consegue  associar a imagem a uma posição ocular. 

Com as imagens do banco de dados já processadas, foi realizado uma divisão deste  dataset, de forma aleatória, obtendo grupos de imagens para serem utilizados no treinamento,  na validação e no teste da rede neural. Desta forma, o banco de dados de treinamento contou  com 518 imagens, o de validação com 130 imagens e o de teste 162 imagens. A arquitetura  consiste em 8 camadas convolucionais, responsáveis por gerar filtros que contém informações  presentes na imagem de entrada. Para cada camada de convolução, é utilizado a função de  ativação conhecida como ‘Relu’. Esta função de ativação serve para trazer uma não-linearidade para a CNN, sendo uma solução mais prática e eficiente do ponto de vista computacional,  resultando em uma melhor convergência. Esta função zera os valores negativos na entrada do  neurônio, sendo descrita como: 

Além disso, nas camadas convolucionais é utilizado um padding com o parâmetro  ‘same’. Isto garante que todos as extremidades da informação sejam analisadas pela CNN,  incluindo colunas ou linhas de valor igual a 0 na informação, caso necessário. 

A fim reduzir a informação das camadas anteriores, são utilizadas 4 camadas de Polling.  Assim, é definida uma região de 2×2 pixels, que percorre toda a informação. Esta região é  utilizada para resumir a informação contidas nos pixels em um único valor. 

Com o objetivo de acelerar o processo de treinamento, são utilizadas 7 camadas de  ‘Batch Normalization’. Estas camadas padronizam as entradas de cada camada de forma  automática. 

São utilizadas ainda, 7 camadas de Dropout. Estas camadas desativam alguns neurônios,  aleatoriamente, durante o treinamento, de forma a obter diferentes valores de pesos e vieses.  Assim, o Dropout garante que não serão realizados grandes ajustes de pesos e vieses, evitando  assim, um over-fitting na Rede Neural. 

A fim de organizar todos os dados em um único vetor, é utilizada uma camada de  Flatten. 

Por fim, são utilizadas 4 camadas densas, que possuem todos os neurônios conectados.  Para as camadas densas, é utilizado a função de ativação ‘Softmax’. Esta função retorna a  probabilidade da imagem analisada pela rede neural pertencer a cada um dos labels especificados. A classe que possuir maior probabilidade é a resposta estimada pela rede. Sua  equação pode ser visualizada abaixo, no qual xi são valores pertencentes ao vetor resposta. 

Vale ressaltar também que entre as camadas densas, são utilizadas mais camadas de  ‘Dropout’, visando reduzir o overfitting do modelo.

Para o treinamento, a função de erro utilizada foi a ‘categorical crossentropy’. Este  parâmetro é utilizado principalmente em casos onde há mais de uma classificação possível para  a imagem trabalhada, e a rede neural precisa predizer qual classificação é a correta. 

Como otimizador, foi utilizado o otimizador ‘Adam’. Este otimizador, serve para  minimizar o erro encontrado, de forma eficiente, atualizando os valores dos pesos, sendo  utilizado em aplicações envolvendo visão computacional. 

A avaliação do modelo, ou seja, o parâmetro adotado para verificar se a rede neural  apresenta bons resultados foi a Acurácia. 

2.3. Desenvolvimento do Algoritmo Final 

O último algoritmo desenvolvido trata-se da extração da região de interesse do vídeo de  entrada, predição desta região de interesse a partir da rede neural treinada, exposição da posição  ocular identificada e variação na posição de um servo motor com base no resultado obtido. As  bibliotecas utilizadas são a OpenCV, Numpy, Dlib-ml, TensorFlow e a PySerial. 

A biblioteca Pyserial realiza a conexão com as por- tas seriais, possibilitando a  comunicação da programação Python com um microcontrolador ou hardware utilizado. Desta  maneira, este algoritmo realiza a extração da região de interesse (olhos direito e esquerdo) de  forma semelhante à desenvolvida para a criação do banco de dados de treinamento da Rede  Neural. É utilizada a biblioteca Dlib-ml para identificar todos os pontos da face detectada no  vídeo. Os pontos que contornam os olhos (36-41 para o olho direito e 42-47 para o esquerdo)  são extraídos da imagem original e adicionados sobre um fundo branco de 30×30 pixels. No  decorrer deste processo, são aplicados alguns filtros sobre a imagem de forma a suavizar  contornos e reduzir ruídos indesejados presentes na imagem. 

A função principal analisa frame a frame do vídeo recebido em tempo real. Em cada um  dos frames é realizada a detecção de faces e, caso encontrada, são identificados os pontos de  interesse facial. Posteriormente, são extraídos os olhos, como já explicado, e ambas as imagens  (olho direito e esquerdo) são utilizadas como entradas na rede neural desenvolvida. Após a  predição realizada pela rede neural, é retornado a probabilidade da imagem de entrada pertencer  a cada um dos labels do treinamento (CIMA, DIREITA, ESQUERDA, PADRÃO). A classe  que possuir maior probabilidade é exibida juntamente com o vídeo, indicando a posição ocular  no qual o usuário está indicando. Considerando a câmera localizada na frente do usuário, a  posição ocular BAIXO acaba por aproximar os landmarks obtidos pela biblioteca Dlib-ml, de  forma que a imagem isolada dos olhos apresenta muita pouca informação, não sendo possível  realizar a predição com a rede neural. Desta forma, para viabilizar a identificação da posição ocular ‘BAIXO’, foi utilizado um método semelhante ao apresentado no detector de piscadas,  desenvolvido em (ROSEBROCK, 2017). Assim, foi realizado o cálculo da distância entre dois  landmarks opostos verticalmente e horizontalmente. Após isso, é realizado uma operação de  proporção, na qual, caso o valor resultante seja inferior a uma constante definida por meio de  testes realizados, os olhos do usuário podem ser considerados semi-abertos e no contexto deste  trabalho, pode ser considerada a posição ‘BAIXO’. 

De maneira a simular um método de controle a partir do algoritmo desenvolvido, foi  utilizada a biblioteca Pyserial, de forma a realizar uma comunicação serial com  microcontrolador Arduino UNO. Este microcontrolador foi utilizado devido a sua praticidade  e facilidade na programação. Desta forma, para cada resultado obtido pela rede neural, é  enviado um conjunto de bits diferentes pela comunicação serial, no qual o Arduino UNO ajusta  a posição angular de um servo motor. A programação utilizada no Arduino realiza apenas a  verificação do conjunto de bits recebidos pela comunicação serial e ajusta a posição angular do  servo motor. 

3 RESULTADOS OBTIDOS 

3.1. Construção do Banco de Dados 

A partir do algoritmo de criação do dataset, utilizado para treinamento da rede neural,  foi possível a partir de 7 vídeos feitos pelo autor, de 35 segundos aproximadamente, obter o  seguinte número de imagens de cada classe, de acordo com a Tabela 1: 

Tabela 1 – Banco de Dados de Treinamento 

Fonte: O Autor. 

Idealmente, é necessário que as classes contenham o mesmo número de imagens para,  desta forma, evitar uma adaptação da rede às imagens em maior quantidade. Outro fato importante em salientar, é que o banco de dados foi construído em cima de  vídeos gravados pelo próprio autor. Desta forma, esta rede neural não é recomendada para generalizações. Assim, no caso de outras pessoas tentarem realizar a predição das posições  oculares, é previsível que os resultados sejam inferiores aos apresentados neste trabalho, uma  vez que a rede neural não está adaptada a possíveis características fisiológicas presentes no  usuário. 

3.2. Desenvolvimento da Rede Neural 

De acordo com a arquitetura utilizada, já apresentada neste trabalho, o treinamento foi  realizado e obteve como resultados os gráficos expressos na Figura 3. De acordo com as  métricas utilizadas, o treinamento obteve uma acurácia de 0.9745 e um erro de 0.1176, ambos  valores satisfatórios para a aplicação. A predição realizada com o banco de dados de teste  obteve uma acurácia de 0.9753 e um erro de 0.1020, sendo novamente, ambos considerados  aceitáveis para a aplicação. 

Figura 3 – Acurácia e Erro da Rede Neural 

Fonte: O autor. 

Para verificar a consistência da Rede Neural treinada, foram construídos outros 6 novos  bancos de dados, sob diferentes níveis de luminosidades em diferentes períodos do dia. Estes  bancos de dados foram pré-processados e especificados suas classes, como visto anteriormente.  Após a predição realizada, foram observadas acurácias superiores a 97% em todos os bancos  de dados utilizados, evidenciando a consistência da rede neural desenvolvida. 

Através dos testes realizados, foi possível perceber que as maiores acurácias decorreram  de ambientes com menor incidência de luz ou incidência de luz artificial. Isto se deve pelo fato  de que, sob baixa luminosidade, a imagem em tons de cinza, sofre um maior contraste entre a  pupila e íris com relação à esclera, facilitando na predição do modelo neural.

A discussão é o local do artigo que abriga os comentários sobre o significado dos  resultados, a comparação com outros achados de pesquisas e a posição do autor sobre o assunto.  Uma discussão sem estrutura coerente desagrada, daí a conveniência de organizar os  temas em tópicos. Cada um dos tópicos informa sobre uma faceta da discussão e seu conjunto  fornece os subsídios para se julgar a adequação dos argumentos, da conclusão e de todo o texto. 

3.3. Desenvolvimento do Algoritmo Final 

O algoritmo final foi desenvolvido para realizar a predição das posições oculares a partir  de um vídeo sendo feito em tempo real, introduzindo, assim, uma nova forma de controle, de  acordo com a Figura 4. 

Figura 4 – Exemplo de imagens do dataset de Treinamento. 

Fonte: O Autor. 

A Figura 5 apresenta o diagrama de fluxo do funciona- mento do algoritmo final, de  forma simplificada. As setas azuis representam o fluxo normal do algoritmo, enquanto as  flechas coloridas expressam condicionais analisados pelo algoritmo. As setas vermelhas  indicam uma condicional negativa e as verdes, positivas. 

Observando a Figura 6 podemos visualizar alguns frames do vídeo analisado. Nestes  frames é exibido a forma como o algoritmo retorna as predições realizadas, exibindo a posição  detectada no canto superior esquerdo do vídeo analisado em tempo real.

Figura 5 – Diagrama de blocos do Algoritmo Final 

Fonte: O Autor. 

Para evidenciar o sistema de controle desenvolvido, foi realizado a comunicação serial  com um Arduino UNO que utiliza o protocolo UART com um baud rate de 9600bps. Este  microcontrolador foi utilizado para alteração da posição angular de um servo motor a partir de  uma programação simples. Desta maneira, foi estabelecido na programação do Arduino UNO,  que a classe ‘PADRÃO’ equivale a 90º. No momento em que o usuário altera sua posição ocular  para ‘DIREITA’, a rede neural realiza a predição desta posição e envia um conjunto de bits para  o microcontrolador. Através da programação estabelecida no Arduino, o valor do ângulo é 

reduzido, movimentando o eixo do servo para a direita. O mesmo acontece com a classe  ‘ESQUERDA’, que neste caso aumenta o valor do ângulo, movimentando o eixo do servo para  a esquerda. 

Figura 6 – Exemplo de predição da Rede Neural com vídeo. 

Fonte: O autor. 

4 CONCLUSÕES 

A alteração da posição angular do servo motor evidencia o êxito no sistema de controle  desenvolvido. Neste caso, foram utilizadas apenas 3 posições oculares, ‘DIREITA’,  ‘ESQUERDA’, ‘PADRÃO’, para o movimento do servo motor. É possível utilizar as demais  posições oculares para outras finalidades, dependendo das especificações do projeto. Desta  maneira, considerando o projeto apresentado em (GAINO, 2009), que visa o desenvolvimento  de uma forma de controle visando pacientes Paraplégicos e Tetraplégicos através de modelos  Fuzzy T-S, é possível associar as demais posições oculares no controle de velocidade, sendo  possível desenvolver uma cadeira de rodas controlada unicamente pelas movimentações  visuais, não dependendo da capacidade motora do usuário, ideal para casos de paraplegia e  tetraplegia.

O fato de ter sido realizado a construção do banco de dados por meio de imagens de  uma única pessoa através de seu celular evidencia a possível aplicação em uma cadeira de rodas  autônoma para portadores de deficiências motoras, uma vez que, a rede neural se adapta  unicamente a cada usuário e as características de qualidade de câmera de seu celular. A  utilização do celular como câmera facilita na execução do projeto, além de baratear custos mas  também, pode ser substituído por câmeras com maior qualidade gráfica em possíveis  aprimoramentos técnicos do trabalho. 

A partir disso, foi aferido que, a partir das posições oculares, uma pessoa é capaz de  realizar movimentos através do servo motor, ainda que movimentos simples. Evidentemente  que este trabalho necessita de inúmeros ajustes e aprimoramentos em seu desenvolvimento,  caso o intuito seja utilizar este sistema no controle de equipamentos elétricos visando  tecnologias assistivas, uma vez que a segurança do usuário é prioridade. O objetivo deste  projeto é introduzir novos conceitos, evidenciando a possibilidade de novos sistemas de  controle que, caso aprimorados e aperfeiçoados, possibilitarão a melhoria de qualidade de vida  de uma grande parcela da população, especialmente grupos de pessoas com algum tipo de  dificuldade motora, uma vez que necessidades físicas poderão ser supridas. 

5 AGRADECIMENTOS

Os autores agradecem imensamente à Universidade Estadual de Londrina, pelo acesso a informação e possibilidade de realização deste trabalho, ao CNPq pelo apoio financeiro.

REFERÊNCIAS 

BAMPI, Luciana Neves da Silva; GUILHEM, Dirce; LIMA, David Duarte. Qualidade de vida em pessoas com lesão medular traumática: um estudo com o WHOQOL-bref. Revista Brasileira de Epidemiologia, v. 11, n. 1, p. 67-77, 2008. 

BIANCHINI, Ângelo. Arquitetura de Redes Neurais para Reconhecimento Facial Baseado em  Neocognitron. São Carlos, 2001. 141 p. Monografia (Ciência da Computação) – Universidade  Federal de São Carlos, São Carlos, 2001. 

BRASIL. Cartilha do censo 2010: pessoas com deficiência. (Org.). OLIVEIRA, L.M.B.  Brasília, DF: SDH-PR/SNDP, 2012. 

BRADSKI, Gary; KAEHLER, Adrian. Learning OpenCV: Computer Vision with the  OpenCV Library. Sebastopol: O’Reilly Media, f. 288, 2008. 575 p. IBGE. CENSO 2010. Disponível em: https://censo2010.ibge.gov.br/apps/mapa/. Acesso em:  01 de maio de 2020). 2010.

DAHMANI M, CHOWDHURY MEH, KHANDAKAR A, RAHMAN T, AL-JAYYOUSI K,  HEFNY A, KIRANYAZ S. An Intelligent and Low-Cost Eye-Tracking System for Motorized  Wheelchair Control. Sensors (Basel). 2020 Jul 15;20(14):3936. doi: 10.3390/s20143936.  PMID: 32679779; PMCID: PMC7412002. 

GAINO, Ruberlei. Controle de Movimentos de Pacientes Paraplégicos Utilizando Modelos  Fuzzy T-S. Ilha Solteira, 2009. 178 p. Tese (FACULDADE DE ENGENHARIA ELETRICA  CAMPUS ILHA SOLTEIRA) – Universidade Estadual Paulista “Julio de Mesquita Filho” – Unesp, Ilha Solteira, 2009. 

GENTILHO JUNIOR, Edno. Instrumentação e Controle PID Embarcado para Cadeiras de  Rodas Elétricas Acionada por Sopro e Sucção. Londrina f. 97, 2014. Dissertação (Mestrado  em Engenharia Elétrica) – Universidade Estadual de Londrina, Londrina, 2014. 

GOMIDE, Renato de Sousa. Ambiente Virtual para Reabilitação de Membros Superiores  Utilizando visão Computacional. Goiânia, f. 89, 2012. Dissertação (Escola de Engenharia  Elétrica e Computação) – Universidade Federal de Goiás, Goiânia, 2012. 

INPI. Motorização de cadeiras de rodas por motores de indução trifásicos com controle  vetorial e comando por joystick e sopro/sucção. Revista da Propriedade Industrial, 2669:632,  2022. 

INPI. Cadeira de rodas movida por sopro e sucção. Revista da Propriedade Industrial,  2708:586, 2022. 

INSTITUTO BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA, Tabela 3425 – População  Residente por tipo de Deficiência, segundo a Situação do Domicílio, o Sexo e os Grupos de  Idades. sistema IBGE de Recuperação Automática – SIDRA (2021a). Disponível em:  https://sidra.ibge.gov.br/tabela/3425#resultado. Acesso em: 24 maio 2021. 

INSTITUTO BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA, Tabela 2111 – População  Residente por tipo de Deficiência, segundo a Situação do Domicílio, o Sexo e os Grupos de  Idades. sistema IBGE de Recuperação Automática – SIDRA (2021b). Disponível em:  https://sidra.ibge.gov.br/tabela/2111#resultado. Acesso em: 24 maio 2021. 

KING, Davis. Dlib-ml: A Machine Learning Toolkit. Jour- nal of Machine Learning  Research, Baltimore, Maryland, USA, v. 10, p. 1755-1758, Setembro, 2009. 

KINLI, Furkan. [Deep Learning Lab] Episode-3: fer2013. Disponível em:  https://medium.com/birdortyedi_23820/deep-learning- lab-episode-3-fer2013-c38f2e052280.  Acesso em: 19 jun. 2021. 

LEÔNCIO JUNIOR, A. P.; PERIOTTO, A. J.; NUNES, W. R. B. M.; CAUN, R. P;  COVACIC, M. R.; GAINO, R.. Voice String Throat Vibration Voice Recognition System for  Electric Rotorcraft Navigation. Journal of Engineering Research, v.5, n. 2, p.1 – 11, 2025. 

NEVES, Luiz; NETO, Hugo; GONZAGA, Adilson. Avanços em Visão Computacional.  Curitiba, PR: Omnipax Editora, 2012. 406 p.

NORVIG, PETER; RUSSELL, STUART. INTELIGENCIA ARTIFICIAL: Tradução da  Terceira Edição. GEN LTC, 2013. 1016 p. 

NUMPY. Documentation: Whats NumPy?. Disponível em: https://numpy.org/. Acesso em:  22 mai. 2021. 

NUNES, Willian Ricardo Bispo Murbak. Desenvolvimento de sistemas com motores  trifásicos de indução de alto rendimento, IFOC e comando por joystick para cadeira de rodas.  Londrina f. 248, 2015. Dissertação (Mestrado em Engenharia Elétrica) – Universidade  Estadual de Londrina, Londrina, 2015. 

PEREIRA, Luís. Inteligência Artificial: Mito e Ciência. Ciberscópio, Outubro 2003. 

ROSEBROCK, Adrian. Eye blink detection with OpenCV, Python and Dlib. Pyimagesearch.  Disponível em: https://www.pyimagesearch.com/2017/04/24/eye- blink-detection-opencv python-dlib/. Acesso em: 19 jun. 2021. 

SILVA, M. D. L. da; MAGAN, M. V.; OLIVEIRA, I. H. N. Cadeira de Rodas Motorizada  Controlada pela Íris. Revista Técnico-Científica do CREA-PR, Edição Especial Melhores  TCCs, p. 1-19, Setembro, 2021.  

SOUSA, Ingrid. Estudo e desenvolvimento de um sistema de reconhecimento de expressões  faciais para controle de cadeira de rodas. Brasília, DF, 2019. 65 p. Trabalho de Conclusão de  Curso (Engenharia Eletrônica) – Universidade de Brasília – Unb, Brasília, DF, 2019. 

SPÖRL, Christiane; CASTRO, Emiliano; LUCHIARI, Aílton. Aplicação de Redes Neurais  Artificiais na Con- strução de Modelos de Fragilidade Ambiental. Revista do Departamento  de Geografia, São Paulo, v. 21, p. 113-135, 2011. 

THARWAT, M.; SHALABI, G. SALEH, L.; BADAWOUD, N.; ALFALATI, R., “Eye Controlled Wheelchair,” 2022 5th International Conference on Computing and Informatics  (ICCI), New Cairo, Cairo, Egypt, 2022, pp. 097-101. 

VARGAS, Ana; CARVALHO, Aline; VASCONCELOS, Cristina. Um estudo sobre redes  neurais convolucionais e sua aplicação em detecção de pedestres. In: PROCEED- INGS OF  THE XXIX CONFERENCE ON GRAPHICS. 2016. Proceedings […]. 1-4 p. 

ZACCONE, Giancarlo; KARIM, Md. Rezaul; MEN-SHAWY, Ahmed. Deep Learning with  TensorFlow. Birm- ingham: Packt Publishing Ltd, f. 160, 2017. 320 p. 

XU, J.; HUANG, Z.; LIU, L.; LI, X.; WEI, K. Eye-Gaze Controlled Wheelchair Based on  Deep Learning. Sensors 2023, 23, 6239.


1Engenheiro Eletricista do Curso Superior de Engenharia Elétrica da Universidade Estadual de Londrina Campus Londrina e-mail: arnaldo.cubaski@gmail.com
2Docente do Curso Superior de Engenharia Elétrica da Universidade Estadual de Londrina Campus Londrina.  Doutor em Engenharia Elétrica (FEIS/UNESP). e-mail: marciocovacic@uel.br
3Docente do Curso Superior de Engenharia Elétrica da Universidade Estadual de Londrina Campus Londrina.  Doutor em Engenharia Elétrica (FEIS/UNESP). e-mail: rgaino@uel.br