• Nenhum resultado encontrado

Departamento de Engenharia Elétrica. Realidade Aumentada na Educação em Engenharia. Aluno: Lucas Vital Alves Da Silva

N/A
N/A
Protected

Academic year: 2021

Share "Departamento de Engenharia Elétrica. Realidade Aumentada na Educação em Engenharia. Aluno: Lucas Vital Alves Da Silva"

Copied!
12
0
0

Texto

(1)

Departamento de Engenharia Elétrica

Realidade Aumentada na Educação em Engenharia

Aluno: Lucas Vital Alves Da Silva - 1713062 Orientador: Ana Maria Beltran Pavani 1 Introdução

Em muitas disciplinas ligadas ao departamento de elétrica observa-se uma certa dificuldade dos alunos em assimilar certos conceitos, tendo-se em vista a isso viu-se a necessidade de buscar mecanismo que tornassem a apresentação de tais conceitos de uma forma mais didática e compreensível. Tendo-se em vista o contexto, a realidade aumentada tornasse uma ferramenta muito útil para tal finalidade, através dessa dela é possível que de forma visual e interativas apresentar tais conceitos o que faz com que seu aprendizado seja mais dinâmico e compreensível, além de também ser utilizado como ferramenta auxiliadora de certa atividades nas disciplinas de laboratório, como o App que será apresentado a seguir.

2 Apresentação do problema

Durante as aulas de laboratório percebeu-se que os alunos tinham uma certa dificuldade e contratempos em ler os valores dos resistores via ao seu código de cores. Geralmente o que se ocorria era que os alunos não conseguiam gravar o código de cores de resistores, sendo assim, toda vez que precisavam ler o seu valor nominal, tinham que consultar a tabela para que em seguida pudessem calcular o valor da resistência, tal processo tinha grande demanda de tempo o que acabava por tornar as atividade de laboratório mais longas, além de erros de cálculos acontecerem, o que dependendo do caso, poderia causa dano ao componentes eletrônicos do circuito em que se deseja montar.

Tendo como finalidade solucionar o problema, pensou-se no desenvolvimento de um App, cuja finalidade era calcular o valor da resistência via a câmera de um smartphone, o que traria mais precisão ao cálculo de resistência e otimizaria significativamente o tempo. O aplicativo em questão tem por nome MAXWELL-AR e seu funcionamento é descrito a seguir.

(2)

3 Funcionamento do App

Para se poder compreender claramente como funciona o aplicativo, vamos levar em consideração todo o caminho percorrido até o resultado que é a exibição do valor nominal do resistor na tela de celular. A primeira etapa evidentemente consiste em montar toda a infraestrutura necessário ao funcionamento do programa, faz-se necessário usar pacotes e bibliotecas internas para se poder ter acesso ao hardware da câmera como também a exibição a imagem na tela, além do carregamento das ferramentas necessária para detecção. A biblioteca em questão para realização de tal tarefa é o OpenCV e aferramenta a ser carregada é denominada de “HaarCascadeClassifier” que é a ferramenta que se está utilizando para se detectar objetos.

Antes de prosseguir, faz-se necessário entender um dos mecanismos essenciais para o funcionamento do aplicativo que é a detecção de objetos. Como anteriormente mencionado estamos usando a ferramenta “HaarCascadeClassifier”, que é uma ferramenta que se utiliza de uma rede neural Deep-Learning” convolucional para a detecção de objetos. A explicação mais detalhada de seu funcionamento segue abaixo. 3.1 Funcionamento do “HaarCascade Classifier”

A primeira coisa necessária ao seu funcionamento é que venhamos, de alguma forma, oferecer a esse sistema dois tipos de imagens. Primeiro as imagens positivas, que são as imagens que possuem o objeto em questão e depois as imagens negativas que são as que não possuem o objeto. Depois dessa etapa, esse sistema estará pronto para começar a detectar objetos e tal processo consiste em quarto etapas, que consistem no processamento de imagens, que computacionalmente falando não são nada mais do que matrizes com 3 páginas ou matriz multidimensional de 3 dimensões, onde cada página ou dimensão, possui números de 0 à 255 que representam ,respectivamente, a intensidade da cor vermelha, verde e azul nas respectivas coordenadas ou dimensões, considerando que a imagem em questão está incialmente está sendo representada no sistema RGB:

(3)

3.2 Etapa 1: Detecção de Aspectos

A primeira etapa é a extração de aspectos da imagem da seguinte, tal etapa se através da aplicação de filtros de detecção como os que podemos ver abaixo:

Figura 2 - Detectores de Aspectos.

Tais filtros são matrizes tal como normalmente se conhece, e a dimensão dessas matrizes está definida varia ao longo do processo. A aplicação desses filtros consiste na seguinte forma: obtêm-se a soma dos pixels da parte branca e subtrai-se pela soma da parte branca, a esse processo de extração de aspectos da imagem. Cada um dos filtros é aplicado em diferentes tamanhos o que permite calcular muitos aspectos em uma imagem, contudo muitos deles são irrelevantes, o que causaria a realização de processos desnecessários e que em nada ajudariam na detecção do objeto desejado e que, por sua vez, tornariam o processamento dos dados inviável, uma vez que se tivesse uma quantidade de dados absurda para serem processados computacionalmente.

(4)

3.3 Etapa 2: Criação de Imagens De integração

Por seguinte, a segunda etapa consiste na criação de imagens de integração (o termo mais correto seria o que está em inglês é “integral Images”). A criação dessas imagens consiste em somar todos os pixels de uma determinada área delimitada, segue a seguir uma ilustração do procedimento:

Figura 3 - Exemplo de obtenção de imagem de integração.

Para se ter uma compreensão mais clara de como se cria uma imagem de integração, segue-se o exemplo a seguir:

(5)

A imagem em que se deseja aplicar o algoritmo é a parte em vermelha, conduto o algoritmo só obtém uma soma acima e à esquerda de um determinado ponto, pois uma área nesse algoritmo é definido pelas coordenadas x menores e y maiores com relação a esse determinado ponto, evidentemente que áreas indesejadas são selecionadas, para corrigir o problema , basta aplicar o algoritmos para o ponto B e o ponto C, e assim obtemos a formula geral da nossa algoritmo:

Figura 5 - Cálculo Envolvendo os pixels numa Imagem de integração.

A justificativa para tal procedimento é que ele torna o processo muito mais rápido. Note que a área do retângulo definido pelo ponto A é somada, justamente porque a área desse retângulo é subtraída duas vezes quando se subtrai a área equivalente ao retângulo B e C. 3.4 Etapa 3: Implementação do Algoritmo Adaboost

A fim de eliminar os aspectos irrelevantes que foram detectados, uma nova etapa entra em cena, a que usa o algoritmo de “Adaboost”, que seleciona os melhores aspectos e treina os classificadores que os usam. Ela constrói classificadores mais precisos através da combinação linear dos pesos dos classificadores não muito precisos. Para se uma ideia uma imagem de uns rosto, ao passar pela etapa de detecção de aspectos, teria para mais de 160 mil aspectos, após a aplicação do algoritmo Adaboost esse número reduza drasticamente para 6000, o que representa um enorme ganho computacional, o que torna a detecção de objetos viável além de precisa, segundo o site do OpenCV, a detecção de faces, por exemplo, tem 95% de precisão, o que representa uma detecção bastante precisa.

3.5 Etapa 4: Classificação

Por fim a última etapa consiste na classificação da imagem em questão, que consiste em determinar se o objeto em questão está ou não na imagem. Tal tarefa é possível porque o Cascade Classifier é uma coleção de estágios, onde cada estágio é uma reunião de “weak learnings”, ou seja, de pequenas partes responsáveis por captar uma característica em específico do objeto em questão. Em cada estágio temos um treinamento muito preciso através de um algoritmo chamado Bosting( que é o AdaBoosting) que por sua vez vai se encarregar de tomar as características que realmente são relevantes para identificação do objeto.

(6)

3.6 Funcionamento do HaarCascades na Prática

De forma prática, o Cascade Classifier funciona desenhando vários retângulos na imagem. Para cada dimensão de retângulo, ele começar desenhando um no canto superior esquerdo, depois desenha outro um pouco deslocado à direita, terminada a largura da imagem, ele faz o mesmo processo deslocado um pouco abaixo, e tudo isso se repete até chegar no canto inferior direito da imagem, onde ou o processo se reinicia para um retângulo de outra dimensão ou termina caso não haja mais retângulos numa lista que é previamente passada ao Cascade. É importante ressaltar que para cada posição, todos os estágios são realizados, e tudo se repete até que acabe a imagem. Se em algum momento o objeto for identificar numa das posições, um retângulo é desenhado em volta do objeto, como pode ser ilustrado abaixo:

Figura 6 - Funcionamento do HaarCascades.

Para ver com mais detalhes acesse o link:https://www.youtube.com/watch?v=L0JkjIwz2II

Os retângulos desenhado em volta do objeto são devidamente armazenados numa lista, assim fica simples dizer à um programa se o objeto foi ou não identificando, bastando apenas checar se a lista está vazia, caso sim, então não detectamos nenhum objeto, caso contrário, pelo menos uma vez o objeto foi identificado pelo processamento da imagem delimitada por algum retângulo.

(7)

3.7 Como o App utiliza o HaarCascades

Por fim, o app se utiliza da definição da presença do objeto posta no parágrafo acima, sendo assim ele tira 50 fotos para cada vez que o usuário põe o dedo na tela. O motivo é de ser 50 fotos é bem simples, para cada vez que um resistor for detectado uma imagem do objeto em questão será armazenado, pelo fato do ambiente em questão ter variações de luminosidade ao longo do tempo, mesmo que pequenas isso vai interferir na detecção das cores, então as 50 fotos serviram para determinar com mais precisão a sequência cores nas faixas dos resistores, tal processo será descrito com mais detalhes abaixo.

pelo fato de estar-se lidando com um ambiente dinâmico, as cores captadas na câmera podem variar, sendo assim o objetivo é captar qual é a sequência de cores nas bandas que mais ocorre, para assim determinar o valor da resistência precisamente, mais detalhes sobre o cálculo da resistência serão descritos abaixo.

3.8 Determinação da sequência de cores nas bandas do Resistor Detectado

Por seguinte, será verificada qual é a sequência de cores que mais ocorrem nas três primeiras bandas mediantes as 50 fotos. Para cada detecção, como dito anteriormente um retângulo é desenhado em volta do resistor, a partir disso a imagem será recortada por esse retângulo, e uma mascará para cada cor será aplicada, caso a máscara identifique uma cor um contorno retangular, porque a banda é aproximadamente retangular na imagem, é desenhado em volta, a partir disso o centroide da banda é determinado como também a distância da esquerda para direita e todos esses dados relativos a banda são armazenados num vetor, lembrando que como só três bandas que significam o valor nominal do resistor, por foto só serão armazenados dados relativos as três primeiras bandas caso o resistor seja detectado. A seguir uma ilustração do que acontece para cada vez que um resistor é detectado.

(8)

Para cada foto, teremos uma tripla ordenada com as informações de cada banda, através das distância no eixo x dos centroides conseguimos determinar a ordem correta das cores, pois a cor da primeira banda é o retângulo cujo o centroide tem a menor distância no eixo X, com relação à segunda banda a de temos um retângulo cujo o centroide tem a segunda menor distância no eixo X, e a terceira um retângulo cuja o centroide tem a maior distância no eixo X, assim para se ter a sequência correta para ordenar a tripla ordenada por distância dos centroides de forma ascendente.

Ao fim das 50 fotos teremos uma lista de triplas com as ordens cores já ordenadas corretamente, assim basta verificar qual é a sequência que mais ocorre, para determinar qual é a sequência correta. Uma vez tendo a sequência correta, finalmente consegue-se calcular o valor nominal presente no resistor simplesmente implementando o algoritmo de cálculo presente no código de resistores.

4 Sobre projeto e o que foi feito nele:

Ao começar no projeto da confecção do MAXWELL-AR, nosso aplicativo de realidade aumentada, já se começou a trabalhar nele numa versão quase pronta, toda a parte de codificação e layout do aplicativo já estava praticamente pronta pois toda essa parte já havia sido feita por outro estagiário que antes estava no laboratório. A Tarefa desse aplicativo é primeiramente detectar um resistor e depois calcular o respectivo valor nominal de resistência por meio das bandas de cores. Contudo foi constatado nos testes com os diversos resistores e câmeras de celulares que o aplicativo não funcionava e foi constatado que a detecção de resistores não estava muito precisa. Por conta disso agiu-se no sentido de descobrir o que estava causando o mau funcionamento do aplicativo como também em descobrir alguma solução para tal problema.

A primeira coisa a se levar em consideração para se entender o problema se está utilizando o OpenCV para atuar em toda a etapa de detecção e processamento de imagem em prol do objetivo de calcular o valor nominal do resistor ao qual a câmera do celular está apontada. A partir disso, foi pesquisado quais conceitos e ferramentas estavam por detrás das linhas de código, e com isso foi descoberto que a essência de toda detecção é o uso de a uma sistema Deep-Learning convolucional que, por sua vez recebe um treinamento para os ajustes de seus pesos por meio do banco de dados que lhe é oferecido, nesse caso um banco de imagens, afim de que o algoritmo (HaarCascades classifier) realize a função desejada que é a detecção do objeto em questão.

(9)

Sendo assim pôde-se perceber que durante os testes, na esmagadora maioria das vezes o aplicativo nem se quer detectava o resistor, e com isso pode-se concluir que a rede foi treinada com um banco de dados de imagens muito inferior ao necessário para correta detecção, apenas 100 imagens foram utilizadas e por isso o algoritmo não conseguia realizar a detecção dos resistores no aplicativo, ou seja, estava-se diante de um problema de “Underfitting”. Para se ter uma ideia do quanto era insuficiente o banco de dados anteriormente utilizado, pesquisas online e consulta com algumas pessoas que já mexeram com coisas semelhantes sugeriram em torno de 10 mil imagens para o funcionamento de uma detecção razoável.

Sendo assim viu-se que era necessário atualizar o banco de dados que anteriormente foi utilizado pelo outro estagiário. Houve-se assim a tentativa de se achar algum na internet, contudo não foi encontrado nenhum disponível. Desse modo foi necessário que fosse gerado um banco de imagens próprio a partir de resistores que estão no LET, laboratório de eletrônica localizado na PUC-RIO ao qual pertence ao departamento de engenharia elétrica da universidade. Nesse sentido, tirou-se fotos de todos os valores de resistores que se encontravam no LET variando-se o ângulo da câmera e a distância da mesma com relação aos resistores.

O banco de dados atualmente encontra-se disponível em:

https://www.maxwell.vrac.puc-rio.br/colecao.php?strSearch=lucas+vital&strTit=&strAut=

Onde tem-se em cada seção equivalente a um valor fixo com seus múltiplos de dez nos diretórios subsequentes.

Após ter sido gerado o novo banco de imagens, gerou-se o XML necessário para detecção de objetos usados pelo OpenCV da seguinte forma: Usando a divisão que outrora fora definida no banco de dados que havia sido construído, foi criado por partes uma imensa lista de retângulos, um por imagem do banco de dados. Em seguida, após finalmente terminar de gerar essa lista, alguns arquivos bats foram rodados para que por fim se obtivesse um arquivo XML, nesse arquivo é a fonte de onde o app obtém todos os parâmetros necessário para identificar o resistor, como também todos as dimensões de retângulos para realizar o processamento de imagem pelo Cascade exatamente como foi descrito em seções anteriores.

(10)

Após ter gerado o novo XML e o ter colocado no App, observou-se uma melhora expressiva na detecção de resistores, pôde-se detectar tipos mais variados além de conseguir também detectar em diferentes distâncias. Todavia, deparou-se com o seguinte problema: O app não conseguia encontrar as cores das faixas, fato que era sinalizado pela mensagem “Not Found” no canto superior da tela:

Figura 8 - Funcionamento do App mal sucedido.

Pretendendo-se investigar o porquê do ocorrido, uma nova análise do código do app foi realizada e constatou-se que duas funções são cruciais nesse processo:

Primeiro a função é a “InRange”, que detecta as cores na imagem pelo intervalo de cores que oferecemos a ela:

(11)

Essa função gera uma mascará(imagem binária, com na imagem acima à direita), que por sua fez é o filtro entre a cor que se deseja detectar entre as outras cores, e isso se faz simplesmente multiplicando elemento a elemento da mascara pela imagem original, a parte preta são os pixels em 0 e a branco em 1, sendo assim obtemos o seguinte resultado:

Figura 10 - Funcionamento da Detecção de Cor no OpenCV.

Segundo a função do OpenCV que procura os contornos das cores (“FindCountours”) usando a máscara dada pela função “InRange”:

Figura 11 - Funcionamento da Função "FindCountour"..

Assim, tendo em vista todo o processo descrito acima, foi-se constatado o seguinte problema: os intervalo de cores em HSV no script do programa não se encontravam corretos, então nenhuma cor era encontrada e nem mesmo os contornos eram achados corretamente, e assim se fez-se necessário que fosse ajustado os intervalos de cores, conforme o vídeo no link abaixo:

(12)

5 Conclusões

Conseguiu-se: (1) entender como o App realiza a detecção de objetos e todos os conceitos por detrás dos aplicativos; (2) corrigir o problema de detecção de resistores; e (3) gerar 12datasets com imagens de cerca de 11 mil fotos de resistores. Os datasets têm DOIs e podem ser encontrados em Open Research Data @PUC-Rio

(https://www.maxwell.vrac.puc- rio.br/projetosEspeciais/ResearchData/index.php?b=1https://www.maxwell.vrac.puc-rio.br/projetosEspeciais/ResearchData/index.php?b=1).Infelizmente, não se conseguiu corrigir o problema da separação das cores, devido à dificuldades de fazer um ajuste preciso de modo que nenhuma cor seja confundida com outra cor, além disso a luminosidade do ambiente interfere na frequência que chega à câmera do celular o que foi uma dificuldade adicional a ser lidada.

6 Bibliografia

1 ADABOOST. wikipedia, 5 June 2020. Disponivel em:

<https://en.wikipedia.org/wiki/AdaBoost>. Acesso em: 20 Julho 2020.

2 CASCADE Classifier. opencv.org, 2017. Disponivel em:

<https://docs.opencv.org/3.4/db/d28/tutorial_cascade_classifier.html>. Acesso em: 20 Julho 2020.

3 SUMMED-AREA table. Wikipedia, 21 Semptember 2019. Disponivel em:

<https://en.wikipedia.org/wiki/Summed-area_table>. Acesso em: 20 Julho 2020.

4 BERGER, W. DEEP LEARNING HAAR CASCADE EXPLAINED. willberger, 2018. Disponivel em: <http://www.willberger.org/cascade-haar-explained/>. Acesso em: 20 Julho 2020.

5 PRABHU. Understanding of Convolutional Neural Network (CNN) — Deep Learning.

Medium, 4 March 2018. Disponivel em:

<https://medium.com/@RaghavPrabhu/understanding-of-convolutional-neural-network-cnn-deep-learning-99760835f148>. Acesso em: 2020 Julho 20. 6 REZAEI, M. Creating a Cascade of Haar-Like Classifiers: Step by Step.

www.cs.auckland.ac.nz, 2014. Disponivel em:

<https://www.cs.auckland.ac.nz/~m.rezaei/Tutorials/Creating_a_Cascade_of_Haar-Like_Classifiers_Step_by_Step.pdf>. Acesso em: 20 Julho 2020.

Referências

Documentos relacionados

O candidato e seu responsável legalmente investido (no caso de candidato menor de 18 (dezoito) anos não emancipado), são os ÚNICOS responsáveis pelo correto

A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se baseia no fato de que uma

Entrando para a segunda me- tade do encontro com outra di- nâmica, a equipa de Eugénio Bartolomeu mostrou-se mais consistente nas saídas para o contra-ataque, fazendo alguns golos

Implementar um plano de intervenção com vistas à redução da incidência da Diabetes mellitus descompensada na Unidade Básica de Saúde Vilas Reunidas tem uma grande

No caso de falta de limpeza e higiene podem formar-se bactérias, algas e fungos na água... Em todo o caso, recomendamos que os seguintes intervalos de limpeza sejam respeitados. •

o transferência interna: poderá requerer transferência interna o aluno que esteja regularmente matriculado na Universidade no semestre em que solicitar a transferência e

1 — As zonas de navegação livre, delimitadas na planta de síntese, correspondem à área do plano de água que, pelas suas condições naturais, possui aptidão para a navegação,

Centro Caraívas Rodovia Serra dos Pirineus, Km 10 Zona Rural Chiquinha Bar e Restaurante Rua do Rosário Nº 19 Centro Histórico Codornas Bar e Restaurante Rua Luiz Gonzaga