UNIVERSIDADE FEDERAL FEDERAL DO VALE V ALE DO SÃO FRANCISCO CURSO DE GRADUAÇÃO EM ENGENHARIA ELÉTRICA
Juliana Pires Pereira
DESENVOLVIMENTO DE UMA MESA MES A AUTOMÁTICA PARA SELEÇÃO DE RESISTORES VIA REDES NEURAIS
Juazeiro - BA 2015
JULIANA PIRES PEREIRA
DESENVOLVIMENTO DE UMA MESA MES A AUTOMÁTICA PARA SELEÇÃO DE RESISTORES VIA REDES NEURAIS
Trabalho de Conclusão de Curso apresentado à Universidade Federal do Vale do São Francisco – UNIVASF, Campus Juazeiro, como requisito da obtenção do título de Bacharel em Engenharia Elétrica. Orientador: Prof. Dr. Eduard Montgomery Meira Costa. Co-orientador: Prof. Dr. José Bismark de Medeiros.
Juazeiro – BA 2015
JULIANA PIRES PEREIRA
DESENVOLVIMENTO DE UMA MESA MES A AUTOMÁTICA PARA SELEÇÃO DE RESISTORES VIA REDES NEURAIS
Trabalho de Conclusão de Curso apresentado à Universidade Federal do Vale do São Francisco – UNIVASF, Campus Juazeiro, como requisito da obtenção do título de Bacharel em Engenharia Elétrica. Orientador: Prof. Dr. Eduard Montgomery Meira Costa. Co-orientador: Prof. Dr. José Bismark de Medeiros.
Juazeiro – BA 2015
Pereira, Juliana Pires. P436d
Desenvolvimento de uma mesa automática para seleção de resistores via redes neurais / Juliana Pires Pereira. -- Juazeiro, BA, 2015. 62 f. : il. Trabalho de Conclusão de Curso (Graduação em Engenharia Elétrica) - Universidade Federal do Vale do São Francisco, Campus Juazeiro, Juazeiro, BA, 2015. Orientador: Prof. Dr. Eduard Montgomery Meira Costa. 1. Redes neurais (Computação). 2. Automação. I. Título. II. Universidade Federal do Vale do São Francisco. CDD 006.32
Ficha catalográfica elaborada pelo Sistema Integrado de Biblioteca SIBI/UNIVASF Bibliotecário: Ana Paula Lopes da Silva
Aos meus irmãos, Natanael Pires e Natália Pires, por toda compreensão que tiveram nos meus momentos de ausência, pelo apoio dado em todos meus projetos e por me incentivarem a não me contentar com pouco.
AGRADECIMENTOS
A Deus e Nossa Senhora por me dar força e determinação para a realização desse trabalho. Aos meus pais, Expedito Alves e Eva Pires, pelo amor incondicional, apoio, carinho, paciência, incentivo e compreensão em todos os meus momentos de estresse e angústia, sempre me motivando a chegar mais longe. Aos meus irmãos, Natanael Pires e Natália Pires, por me darem o incentivo necessário para alcançar meus objetivos. Aos meus avós, tios e primos pela confiança que sempre depositaram em mim e por comemorarem comigo cada vitória. Aos meus amigos pelo companheirismo e apoio em tudo, por sempre torcerem por meu sucesso, me ajudarem e estarem do meu lado. A minha família F-Carranca por toda amizade, apoio, motivação, carinho e por acreditarem no meu potencial. Em especial ao meu amigo Carlos Alberto, que foi muito importante na realização desse trabalho, dando um grande auxílio na construção da mesa aqui utilizada. Ao meu orientador, Eduard Montgomery, por toda motivação, confiança e auxílio dado ao longo desse trabalho. Ao meu co-orientador, José Bismark de Medeiros, por toda amizade, paciência, dedicação e apoio imensurável dado ao longo desses anos de orientação.
RESUMO
Este trabalho apresenta o desenvolvimento de uma mesa que separa, de forma automática, resistores de diferentes valores de resistência. Para este propósito, uma câmera webcam é utilizada como elemento de aquisição da imagem do resistor, que passa por um método de extração de características de cor e, posteriormente, é enviado para uma rede neural implementada no MATLAB®, de forma que ela faça o devido reconhecimento do resistor. A partir disso, será enviado um comando para um motor de passo, localizado na mesa, o qual irá girar uma espátula contendo o resistor até a posição indicada para ele, de acordo com sua resistência, e, com auxílio de um servomotor, fará o depósito do mesmo. Foram testadas algumas arquiteturas para a rede neural e dois tipos de descritores, o BIC (Border/Interior Classification) e o histograma, de modo a obter uma configuração que resultaria no melhor desempenho para esse sistema. Erros no descritor de cores BIC foram encontrados e ele se tornou mais eficiente para redes mais complexas, enquanto o histograma se demonstrou bastante eficaz mesmo para redes com arquiteturas mais simples.
Palavras-chave: Mesa automática. Reconhecimento de Padrões. Redes Neurais. BIC. Histograma.
ABSTRACT
This paper shows the development of a table which separates, automatically, resistors with different resistence values. For this purpose, a webcam is used as an acquisition element to obtain the resistor image, which passes through a color feature extraction method and, later, it is sent to a neural network implemented in MATLAB®, so it will do the recognition of the resistor appropriately. Thus, a command will be sent to a stepper motor, which is on the table, thereby, it will turn a spatula containing the resistor to the right position, according to its resistence value and, aided by servomotor, the resistor will be deposited. Some architectures of neural networks were tested for two types of descriptors, BIC (Border/Interior Classification) and histogram, to acquire the best configuration for the recognition system. Mistakes in BIC color descriptor were found and it became more efficient for complex networks, while histogram is shown quite effective even for networks with simple structures.
Keywords: Automatic Table. Pattern Recognition. Neural Networks. BIC. Histogram.
LISTA DE FIGURAS Figura 1: O sistema de automação. ......................................................................... 18 Figura 2: Atuadores utilizados no presente trabalho (a) motor de passo; (b) servomotor …………………………………………………………………………………..19 Figura 3: Representação numérica de uma imagem pela intensidade. .................... 21 Figura 4: Exemplo de segmentação (a) imagem original; (b) segmentação baseada em semelhança de cores; (c) segmentação baseada em bordas ………….................23 Figura 5: Rede Neural................................................................................................25 Figura 6: Exemplo de histograma. ............................................................................ 26 Figura 7: Estrutura do neurônio biológico. ................................................................ 29 Figura 8: Potencial de ação ...................................................................................... 30 Figura 9: Primeiro modelo de neurônio artificial chamado MCP. .............................. 30 Figura 10: Funções de ativação: (a) degrau; (b) sigmoidal; (c) linear; (d) tangente hiperbólica. ................................................................................................................ 31 Figura 11: Arquitetura de redes neurais (a) rede não recorrente; (b) rede não recorrente. ................................................................................................................. 32 Figura 12: Rede neural perceptron.. ......................................................................... 32 Figura 13: Função "XOR".........................................……………..…………………....33 Figura 14: Grafo do fluxo de sinal do processo de aprendizagem por correção de erro.......................................………………………….……………..…………………....35 Figura 15: Primeiro passo para construção da mesa (a) colagem do molde na chapa galvanizada de 1mm; (b) delimitando o espaço para corte; (c) chapa riscada, pronta para corte; (d) corte na guilhotina. ............................................................................. 40 Figura 16: Segundo passo (a) mesa já cortada na guilhotina; (b) mesa com todos os cortes e furos necessários.………….................................................……………….... 40 Figura 17: Fixação do motor de passo. .................................................................... 41 Figura 18: Mesa sem espátula.. ............................................................................... 41 Figura 19: Espátula da mesa. ................................................................................... 42 Figura 20: Mesa automática. .................................................................................... 42 Figura 21: Modelagem da mesa automática no Inventor®... .................................... 43 Figura 22: Caixa para colocar o resistor a ser analisado ......................................... 46 Figura 23: Corte da imagem obtida pela webcam: (a) imagem original; (b) imagem após corte.................................................................................................................. 46 Figura 24: Estrutura de uma das redes utilizadas..................................................... 47 Figura 25: Imagens utilizadas no treinamento da rede neural...................................48 Figura 26: Fluxograma do sistema.............................................................................49 Figura 27: Saída da rede 01 com (a) descritor BIC; (b) histograma.... ……………....52 Figura 28: Saída da rede 02 para (a) descritor BIC; (b) histograma...…………….....53 Figura 29: Saída para rede 03 com (a) descritor BIC; (b) histograma. ..................... 53 Figura 30: Colar arquivo "pde" na pasta de biblioteca do arduino. ........................... 60
Figura 31: Primeiro passo para conexão da Webcam com o MATLAB. ................... 61 Figura 32: Segundo passo... ..................................................................................... 62 Figura 33: Lista de câmeras................................................................………….…....62
LISTA DE TABELAS
Tabela 1: Ângulo de giro do motor de passo correspondente para cada tipo de resistor ...................................................................................................................... 44 Tabela 2: Dados da webcam utilizada. ..................................................................... 45 Tabela 3: Comparação entre as diferentes redes neurais utilizando cada um dos descritores de cor ...................................................................................................... 51
LISTA DE ABREVIATURAS E SIGLAS BIC – Border/Interior Classification IA – Inteligência Artificial MLP – Multi-layer Perceptron (perceptron de múltiplas camadas) PCA - Análise de Componentes Principais RGB – Red (vermelho), Green (verde) e Blue (azul). RNA – Rede Neural Artificial
SUMÁRIO
1
INTRODUÇÃO
14
1.1 1.2
Objetivo Geral Objetivos Específicos
15 15
2
FUNDAMENTAÇÃO TEÓRICA
17
2.1 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3 2.4
Automação Reconhecimento de padrões Aquisição de imagem Pré-processamento Segmentação Representação e Descrição Reconhecimento BIC (Border/Interior Classification) Redes Neurais
17 20 20 21 22 23 24 25 28
2
CONSTRUÇÃO DO PROTÓTIPO
38
3.1 3.2
Materiais Utilizados Procedimentos
38 39
4
DESENVOLVIMENTO DO SISTEMA AUTOMÁTICO
43
5
RESULTADOS E DISCUSSÃO
50
6
CONCLUSÃO
55
6.1
Sugestões para trabalhos futuros
56
REFERÊNCIAS
57
ANEXOS
60
14
1 Introdução
A automação nasceu de uma crescente necessidade de mercado de se produzir de uma forma mais rápida, mais barata e com um alto padrão de qualidade. Além dessas vantagens, ela traz consigo a redução de trabalhos manuais, muitas vezes repetitivos e desgastantes, dando um certo conforto ao trabalhador. A automação industrial consiste em uma gama de métodos envolvendo equipamentos físicos (hardwares) e programas que fazem o controle desses equipamentos (softwares). Para estes, cada vez mais se faz uso da Inteligência Artificial (IA), atribuindo inteligência à operação das máquinas. A IA é uma importante ferramenta da automação, pois ela auxilia na construção de aparelhos inteligentes que substituem o homem em suas atividades. Elas possuem a habilidade de aprender, interpretar dados sensoriais, tomar decisões, entre outras (LUDWIG; COSTA, 2007). Uma das maiores funções sensoriais do homem é a visão e para fazer com que as máquinas possuam uma função similar que seja capaz de interpretar imagens, de associá-las a outras, de detectar possíveis defeitos, utiliza-se o reconhecimento de padrões. De acordo com Theodoridis e Koutroumbas (1999), o reconhecimento de padrões é uma área de pesquisa cujo objetivo é a classificação de objetos (padrões) em um número de categorias ou classes. Para fazer o reconhecimento, pode ser feito o uso de uma ferramenta de Inteligência Artificial chamada rede neural. As redes neurais possuem capacidade de aprendizado e de processamento que servem para obter as identificações de padrões dentro de classes previamente estabelecidas de forma rápida (CRISTINA, 2005). Porém, antes de fazer o reconhecimento, é necessário fazer o treinamento da rede neural, para isso ela passará por um processo de aprendizado através de exemplos. Nesse processo, serão apresentados a ela conjuntos de padrões e a que categoria cada um deles pertence, assim, será colocado um outro conjunto ainda não visto e ela conseguirá classificá-lo em uma das classes antes apresentadas. Isso é possível devido às informações extraídas no processo de aprendizado.
15
Os dados, antes de serem enviados à rede neural, passam por um método de extração de características. Os escolhidos para esse projeto foram o BIC (Border/Interior Classification) e o mais comum, o histograma. O BIC é um método que recebe como entrada uma matriz de pixels de elevada dimensão e dá com saída um vetor constituído de histogramas que mostram a relação de cores apresentadas na imagem. Antes de se fazer o uso desses métodos, deve-se fazer a escolha da quantidade de cores que será utilizada e reduzir o número total de cores da imagem para essa determinada quantidade, através do método chamado quantização.
1.1
Objetivo Geral
Este trabalho tem como objetivo apresentar a construção de uma mesa automática e de um sistema que faz o reconhecimento e a separação de resistores de acordo com suas resistências. Para isso, conta-se com o auxílio de uma ferramenta da Inteligência Artificial, a rede neural, de modo que esse processo não necessite de alguma intervenção humana.
1.2
·
Objetivos Específicos
Compreender e fazer um levantamento bibliográfico acerca do reconhecimento de padrões e de redes neurais;
·
Desenvolver um algoritmo para o método de extração de características, BIC, de modo a se otimizar o processo de reconhecimento;
·
Implementar e treinar a rede neural para que ela realize a função para a qual foi designada e, em seguida, efetuar testes de reconhecimento de resistores;
·
Construir a mesa automática com motor de passo e servomotor, juntamente com o posicionamento a câmera webcam;
16
·
Fazer o controle dos atuadores pelo MATLAB® de modo que eles atuem após o reconhecimento, depositando os resistores em seus devidos lugares;
·
Analisar os resultados obtidos, os erros, entre outros aspectos.
17
2 Fundamentação Teórica
2.1
Automação
No mundo cada vez mais competitivo em que se vive hoje, a automação se faz ainda mais necessária, já que ela traz consigo otimização na produção, fazendo, desse modo, com que seus produtos sejam concebidos a um menor custo e com melhor qualidade. Assim, ela atende às exigentes especificações do mercado, e, proporciona, ainda, um maior controle e melhor planejamento da produção. Além disso, ela propicia uma certa comodidade ao homem, já que a automação o substitui em atividades desconfortáveis, de risco, repetitivas, entre outras. Define-se a automação como sendo qualquer sistema auxiliado por computador que realize um trabalho antes feito pelo homem (MORAES; CASTRUCCI, 2007). Os sistemas podem ser classificados de acordo com seu acionamento: pelo tempo ou por eventos ou, ainda, por ambos. De modo a estabelecer o comportamento estático e dinâmico dos sistemas, é implementado o controle dinâmico nos mesmos. Para isso são utilizadas variáveis de saída em uma realimentação negativa, de modo que se tenha uma medida do erro do processo em relação ao seu valor ideal e, a partir disso, realiza-se o controle. Outro objetivo do controle é fazer com que qualquer perturbação que atinja o sistema seja minimizada (SIGHIERI; NISHINARI, 1973). Outro tipo deste, mais recente, também utilizado nesses sistemas é o controle lógico que tem o objetivo de complementá-los de forma que eles respondam a eventos de acordo com as regras impostas. Para a automação, são utilizados os dois tipos de controle em proporções variáveis dependendo da necessidade e do tipo de sistema. Os sistemas de automação são constituídos como mostrado na figura 1. Conforme observado na mesma, o sistema mecânico passa por diversas medições
18
de modo que se obtenha informações sobre o processo a controlar. Essas medidas são tomadas por elementos denominados sensores. Figura 1 - O sistema de automação.
Fonte: DUNN, 2013.
Sensor é um dispositivo que converte variáveis físicas de uma forma de sinal para outra, de acordo com objetivo (BOLTON, 1933). Em sistemas automáticos, normalmente, ela é transformada em uma grandeza elétrica, que pode ser corrente ou tensão – geralmente, opta-se pela saída do sensor em forma de corrente, fazendo com que sejam reduzidos ruídos no sinal (MORAES; CASTRUCCI, 2007). Caso a saída seja analógica, ela deve passar por um conversor analógicodigital para, em seguida, realizar o seu processamento, que consiste no tratamento ou observação do sinal para que os ajustes necessários sejam feitos e, consequentemente, possa-se controlar o processo em questão. Para fins de automação, o principal objetivo é observar eventos e atuar na presença deles, para isso são utilizados sensores discretos. Estes são divididos em dois tipos: com contato mecânico ou sem (sensores de proximidade). Para aqueles, é necessário que exista uma força entre eles e o objeto de modo a detectá-los, por exemplo, chaves eletromecânicas, chaves de pressão, entre outros. Para os últimos, ocorre a detecção pela simples proximidade com o sensor, são exemplos: sensores indutivos, capacitivos, de efeito Hall, etc. Estes são os mais importantes, pois sofrem menos desgastes, tornando-se mais confiáveis, além de serem mais flexíveis na sua montagem no sistema mecânico (MORAES; CASTRUCCI, 2007).
19
Após o processamento, são definidas ações a serem realizadas de modo que o sistema mecânico atinja o estado desejado, para esse fim são util izados atuadores. Eles convertem o comando dado por um controlador em uma atuação mecânica no processo, melhor dizendo, eles convertem algum outro tipo de energia em energia mecânica (PESSÔA; SPINOLA, 2014). Podem-se classificar os atuadores em três tipos: elétricos, hidráulicos e pneumáticos. A diferença entre os dois últimos é que os hidráulicos utilizam um líquido sob pressão para fazer o movimento enquanto o pneumático utiliza gás. Eles, também, podem ser ditos como lineares ou rotativos. Os lineares fazem movimento de puxar e empurrar e os rotativos um movimento giratório. Estes ainda são divididos em: angulares ou contínuos. Os angulares possuem um ângulo limitado de giro e nos contínuos o número de rotações é indeterminado. Neste trabalho, serão usados os seguintes atuadores rotativos: motor de passo e servomotor, como pode ser visto a figura 2. O primeiro será utilizado para girar a espátula que contém o resistor até a caixa de despacho correta para esse tipo de resistor e, para fazer o despejo do mesmo, será utilizado um servomotor. Figura 2 - Atuadores utilizados no presente trabalho (a) motor de passo; (b) servomotor.
O servomotor é um dispositivo que faz um giro até uma dada posição, podendo, também, sofrer mudanças no sentido de rotação. Vale ressaltar que ele pertence à classe de atuadores giratórios angulares, não chegando, na maioria das vezes, nem a 360º. O motor de passo, por sua vez, pode girar infinitamente, ele recebe pulsos elétricos e cada pulso desse realiza uma rotação angular fixa, conhecida como ângulo
20
de passo (BONACORSO; NOLL, 2006). Este motor não é adequado em aplicações em que seja necessária uma alta velocidade de rotação, pois, devido à inercia, pode ocorrer uma perda nos passos e ele pode não parar na posição correta, causando, assim, um dano à precisão (DUNN, 2013).
2.2
Reconhecimento de Padrões
Define-se “reconhecer ” como identificar, distinguir ou classificar e “padrão” como classe, nível ou categoria. Ou seja, o reconhecimento de padrões serve para distinguir uma classe ou categoria das outras, separar um objeto ou coisa de outros, fazendo a sua distinção, colocando-o em uma determinada categoria. O reconhecimento de padrões acompanha o homem diariamente, por exemplo, quando ele vê alguma coisa com um lugar para sentar que tem quatro pernas, um apoio para as costas e não é tão aconchegante como uma poltrona, ele já sabe que aquilo é uma cadeira, ele a reconhece como tal. O que se acaba de descrever são as características necessárias para reconhecer o objeto como uma cadeira, atributos que mostram um formato peculiar da cadeira que a diferencia de outros objetos. É assim que é feito o reconhecimento de padrões por pessoas, nesse trabalho é mostrado como o computador o realiza. Ainda utilizando o exemplo acima, pode-se perceber que existem características que não são relevantes para saber que o objeto analisado é uma cadeira. Não é importante saber sua cor, de que tipo d e madeira ela é feita, se há um tecido nela e qual é esse tipo de tecido. Observa-se que essas informações não são necessárias para o reconhecimento, assim, o homem faz uma extração das características mais relevantes, deixando as demais de lado. Fazendo uma relação com o modelo citado, há algo bem parecido no procedimento de reconhecimento de padrões feito por computadores. Esse processo segue os seguintes passos: aquisição da imagem, pré-processamento, segmentação, representação e descrição e, por último, o reconhecimento.
21
O homem inicialmente observa o objeto, assim como o computador adquire a imagem e faz o seu pré-processamento que tem como intuito eliminar problemas existentes nos dados recém-adquiridos (CALHEIROS, 2012). Logo em seguida, é feita a segmentação, que separa o objeto em estudo. Depois, chega-se a representação a qual tem como objetivo transformar os dados brutos numa forma mais apropriada para o posterior tratamento computacional. Nessa etapa também é feita a descrição, que é o processo no qual se extraem características a serem realçadas para poder classificar o objeto como algo específico. Isso é o que foi feito ao descrever a cadeira, podendo encaixá-la nesse padrão. Feita a separação dos objetos em classes, o computador faz o reconhecimento utilizando as redes neurais e, então, dá um significado àquela imagem. Assim, pode-se definir o reconhecimento de padrões como sendo um procedimento que extrai dados de uma entrada e os compara com estruturas já conhecidas, posteriormente, classificando-as. Segundo Peter (2005), o reconhecimento de padrões envolve três níveis de processamento: filtragem da entrada, extração de características e classificação. A filtragem engloba os seguintes estágios: aquisição da imagem, pré-processamento e segmentação. A seguir serão mostrados com mais detalhes cada uma dessas etapas.
2.2.1 Aquisição de imagem
O primeiro passo é a aquisição da imagem. Para Marques e Vieira (1999) a aquisição de uma imagem é o processo de conversão de uma cena real tr idimensional em uma imagem analógica. Para os mesmos autores, uma imagem digital pode ser interpretada como uma matriz cujas linhas e colunas identificam um pon to na imagem, que tem um valor o qual corresponde ao nível de cinza da imagem naquele ponto, como ilustrado na figura 3.
22
Figura 3 - Representação numérica de uma imagem pela intensidade.
Para imagens coloridas, cada ponto da imagem é composto por a tripla de cores RGB – R como Red (vermelho), G representando Green (verde) e o B a cor Blue (azul) – e cada intensidade de cor equivale a um número, que é de 0 a 255. Essas cores se
combinam formando todas as outras mudando somente as proporções.
2.2.2 Pré-processamento
O pré-processamento consiste no aprimoramento da imagem que tem como objetivo produzir um resultado mais adequado para uma certa aplicação do que a imagem original (GONZALES; WOODS, 1992). Ele pode ser feito através de duas classes de métodos: alguns no domínio espacial e outros no domínio da frequência. Os métodos no domínio espacial atuam diretamente na imagem, manipulando seus pixels, enquanto os no domínio da frequência se baseiam em técnicas de mudança da transformada de Fourier da imagem. O processo realizado com a imagem no domínio espacial pode ser representado pela expressão 01.
(01)
Onde f(x,y) representa os dados da imagem original, T é o operador de transformação desses dados obtendo, assim, g(x,y) para cada ponto de coordenada (x,y) da imagem.
23
Podem ser usadas técnicas de aumento de contraste, remoção de ruídos, transformação de uma imagem colorida em tons de cinza, detecção de bordas, etc.
2.2.3 Segmentação
A atividade básica da etapa de segmentação é a de decompor uma imagem em suas unidades expressivas, ou seja, nos objetos de interesse que a compõem (MARQUES; VIEIRA, 1999). Ela pode ser baseada em descontinuidades ou similaridades dos diferentes aspectos da imagem. Algumas técnicas estão listadas a seguir: segmentação baseada em regiões, baseada em morfologia matemática, filtragem no domínio espacial, filtragem no domínio da frequência, entre outras. Na figura 4, são mostrados exemplos. Figura 4 - Exemplo de segmentação (a) imagem original; (b) segmentação baseada em semelhança de cores; (c) segmentação baseada em borda.
Fonte: AZEVEDO; CONCI; LETA, 2008.
24
2.2.4 Representação e descrição
A representação da imagem pode ser feita através das características externas ou internas. Opta-se pelas externas quando a atenção é voltada para o formato da região e pela interna quando é voltada para os pixels que constituem a região (ANNADURAI, 2007). A descrição, também chamada de extração de características, consiste na retirada dos atributos mais relevantes da imagem, de modo que, o grande conjunto de dados brutos da imagem seja transformado em uma menor quantidade de dados. Assim, são retiradas características irrelevantes para o reconhecimento e este, por sua vez, será feito de forma mais eficiente. Em posse do novo conjunto de dados, a classificação poderá ser feita. Alguns exemplos de métodos de extração de característicos são: Análise de Componentes Principais (PCA), Coeficiente de Correlação, Momentos Invariantes, BIC, entre outros.
2.2.5 Reconhecimento
O reconhecimento, que é a última etapa, consiste na atribuição de um rótulo a um objeto baseado nas suas características (MARQUES; VIEIRA, 1999). Os padrões são pontos em um espaço multidimensional que, por sua vez, é delimitado por regiões e cada uma destas está relacionada a uma classe. No processo de aprendizado são delimitadas as fronteiras entre regiões e, assim, determina-se a classe a que cada conjunto pertence. Para fazer o reconhecimento dos padrões, faz-se o uso de uma rede neural, como mostrada na figura 5. Quando se utiliza a rede neural para fins de reconhecimento, é utilizado o aprendizado supervisionado, ou seja, são passados os dados de entrada e a classe particular (dado de saída) a que cada padrão contido no
25
conjunto de entrada pertence, de modo que a rede neural possa ajustar seus pesos e níveis de bias. Assim, quando é apresentado um novo conjunto de dados, ela, automaticamente, já o coloca na categoria a que ele pertence e, assim, dá-se o reconhecimento de padrões. Figura 5 - Rede Neural.
2.3
BIC (Border/Interior Classification)
Os métodos de extração de características servem para selecionar os dados que apresentam relevância e não possuem redundâncias. Eles, posteriormente, serão utilizados no reconhecimento de imagens (LUDWIG; COSTA, 2007). Com a redução dos dados de entrada, o treinamento e o reconhecimento feito pela rede neural se tornam mais rápidos e mais fáceis de serem realizados. Para tratar os dados antes de enviá-los às redes neurais podem ser utilizadas dois tipos de técnicas. O primeiro grupo delas almeja retirar do conjunto de dados aqueles que tiverem pouca importância. O segundo aplica transformações ao conjunto de dados de entrada, reduzindo-os. (LUDWIG; COSTA, 2007). No reconhecimento de padrões de imagens, os dados de entrada são dados por matrizes de pixels de grande dimensão. Assim, extrai-se uma quantidade de informações que viabilize o reconhecimento da imagem em uma classe.
26
O método de extração de atributos deve ser escolhido de acordo com o problema apresentado. Um erro na escolha do método causará imprecisão na classificação. Caso as características importantes sejam de forma do objeto, descritores desse tipo serão utilizados, como, por exemplo, Momentos Invariantes. Se forem de cor, são usados os descritores de cor, os quais extraem características relacionadas a cores. Os descritores de cores são classificados em três tipos de acordo com Almeida et al (2008). A primeira classe comporta os Global based que trata a imagem como um todo, observando cada pixel de uma só vez. A segunda, Partition based , separa a imagem em uma quantidade fixa de regiões a as analisa separadamente. E, por último, a Region based decompõe a imagem em regiões que contenham grupos similares de pixels (PICON; ROSSI; PONTI, 2011). O descritor escolhido foi desenvolvido por Stehling, Nascimento e Falco (2002) e é chamado de BIC (Border/Interior Classification). Ele é um algoritmo baseado em histogramas e é bastante eficiente, mesmo para imagens com baixas resoluções como mostrado em Picon, Rossi e Ponti (2011). O histograma nada mais é do que um conjunto de números que mostram a quantidade percentual de pixels da imagem que possuem um determinado tom de cinza, como pode-se ver na figura 6 (MARQUES; VIEIRA, 1999). Figura 6 – Exemplo de histograma.
Fonte: MARQUES, 1999.
Calcula-se cada elemento do conjunto como sendo:
(02)
27
Em que: n: número total de pixels da imagem nk: número de pixels cujo nível de cinza corresponde a k k: nível de cinza (de 0 a L, L sendo o número de níveis de cinza possíveis). Para imagens coloridas, são criados três histogramas, um para cada componente RGB. O método BIC consiste em dividir os dados da imagem em dois histogramas: um para pixels de borda e outro para pixels de interior. Ele é dividido em três etapas. Inicialmente, a imagem é requantizada para um menor número de cores, o que define o tamanho do histograma, cujo número de elementos é igual ao número de cores. Em seguida, são definidos quais pixels são de borda e quais são de interior. Atribui-se a classificação de pixel como interior se ele possuir a mesma cor quantizada dos seus quatro vizinhos, caso contrário o pixel será considerado de borda (ESCOBAR; PONTI 2011). São utilizados quatro vizinhos no lugar de oito, já que isso reduz a complexidade da análise da imagem e a perda em efetividade é insignificante (STEHLING; NASCIMENTO; FALCO, 2002). Assim, são criados dois histogramas, um para cada tipo de pixel e, por fim, esses histogramas são concatenados formando o vetor de características. Para requantizar a imagem para 64 cores, como proposto por Stehling, Nascimento e Falco (2002), foram utilizados os dois bits mais significativos de cada um dos canais RGB. Assim, o que eram 24 bits, oito em cada canal, com mostrado a seguir: [(RRRRRRRR), [GGGGGGGG], [BBBBBBBB]], foram colocados em um único canal no seguinte formato: [ RRGGBB], reduzindo para 6 bits, ou seja, 2 6 = 64 cores (PICON; ROSSI; PONTI, 2011). Porém, foi comprovado por Escobar e Ponti (2011) que o descritor BIC não é drasticamente afetado com a redução de cores e, também, que a partir de 16 cores os resultados possuem uma melhora pequena. A principal vantagem de realizar uma quantização com um menor número de cores é que o vetor de característica final será menor e, com um menor número de dados sendo enviado para o reconhecimento de padrões, a classificação se tornará mais rápida.
28
2.4
Redes Neurais
Provavelmente a primeira referência do que se conhece hoje como Inteligência Artificial foi escrita pela irmã de Pascal, Perr, após ele ter criado uma máquina que realizava operações de adição, subtração e conversão de moedas. Em seu texto, ela escreveu “o espírito foi capturado pela máquina, pois ela podia executar, sem errar, todo tipo de cálculo, coisa extraordinária pois a máquina não usava lápis, e sem que tenham lhe ensinado matemática” (BARRETO, 2001).
A Inteligência Artificial (IA) é definida por quatro frentes diferentes que relacionam processos de pensamento e raciocínio, comportamento, desempenho humano e, por último, conceitos de racionalidade. Assim, nessa área, alguns tentam fazer uma réplica do pensamento humano enquanto outros preferem combinar a engenharia com a matemática de modo a construir máquinas inteligentes (NORVIG; RUSSEL, 2013). Um sistema de Inteligência Artificial deve estar sempre habilitado para armazenar conhecimento (aprender), usar esse conhecimento para resolução de problemas (raciocinar) e ainda deve ser capaz de adquirir novos conhecimentos, através da sua experiência. A palavra “conhecimento”, nesse ramo, refere-se à informação armazenada e
ele pode ser de dois tipos: declarativo ou procedimental. Na primeira classe, ele é representado por uma coleção de fatos, assim, a informação é explícita e, na segunda, ele se encontra dentro de um código executável e é usado de forma subsequente (HAYKIN, 2001). A IA é uma área extremamente ampla e pode ser utilizada em diversas aplicações, abrangendo desde a resolução de complexos problemas de engenharia à elaboração de poesias. Para a sua concepção, foram utilizados conhecimentos de diversas áreas, como: filosofia, economia (como forma de otimizar funções de custo e outras),
29
matemática, neurociência (onde se estuda todo sistema nervoso e, em especial, o cérebro humano), engenharia de computadores, entre outras. Conhecimentos da neurociência foram utilizados com o intuito de entender de que forma o ser humano adquire conhecimento e, então, formalizar essa atividade através de procedimentos matemáticos, de modo a se fazer com que uma máquina consiga também aprender. A estrutura individual do neurônio biológico, apresentada na figura 7, é composta por três principais partes: os dendritos, o corpo do neurônio e o axônio. Os dendritos recebem informações em forma de impulsos nervosos oriundos de outros neurônios e as levam ao corpo celular. Este, por sua vez, realiza uma mesclagem das informações que são, posteriormente, levadas ao axônio, o qual, geralmente, as envia aos dentritos da próxima célula nervosa, de modo que elas sejam passada à frente. Figura 7 - Estrutura do neurônio biológico.
Os neurônio se arranjam de modo complexo a fim de formar o que se chama de sistema nervoso. Essa combinação se dá através da região denominada sinapse, que fica entre os dendritos de um neurônio e o axônio de outro. Ela funciona como uma válvula, controlando a transmissão dos impulsos, de modo que se a soma dos sinais de entrada estiver acima do limiar de excitação, a célula dispara, produzindo um impulso elétrico que é propagado ao neurônio seguinte. Há uma diferença de potencial (d.d.p.) gerada pela concentração de potássio dentro da célula e a de sódio fora dela. Quando o neurônio está em repouso essa ddp equivale a, mais ou menos, -70 mV, na passagem do impulso ela pode ficar positiva, excedendo o limiar de tensão e transmitindo o impulso a outra célula, como mostrado na figura 8.
30
Figura 8 - Potencial de ação.
De acordo com o neurobiologia, pouquíssimos neurônios são dedicados a apenas uma atividade, assim, a sua grande maioria é interligada, de modo que as ações humanas sejam resultados da interação de inúmeras células nervosas. Desse modo, na formação do cérebro é criado um número exorbitante de conexões entre essas células e estas vão se extinguindo com o passar do tempo, através da aprendizagem, e somente as conexões realmente importantes serão mantidas. (CAMPOS; SAITO, 2004) No ano de 1943, em uma associação entre um psicólogo e neurologista, Warren McCulloch, e um recém-formado matemático, Walter Pitts, surgiu um modelo artificial de neurônio chamado MCP (McCulloch e Pitts), mostrado na figura 9. Esse protótipo buscava simular a forma do neurônio biológico e reproduzir funções lógicas, como “OU” e “E” lógicos (CAMPOS, SAITO, 2004). Figura 9 - Primeiro modelo de neurônio artificial chamado MCP.
Inicialmente, ele recebe um ou mais sinais de entrada (representados por “x”),
que são ativações de neurônios anteriores. Estes são ponderados através dos pesos sinápticos (letra “w”) e são somados, resultando na variável “u”, que é a saída do
31
combinador linear. Diferentemente das sinapses encontradas no cerébro, os pesos sinápticos podem ter valores tanto positivos quanto negativos (HAYKIN, 2001). À função “u” é adicionada ao bias de entrada, letra “b”, resultando no campo local
induzido, também conhecido como potencial de ativação, equação 03.
(03)
O potencial de ativação é introduzido na função de ativação, !("), que normalmente é binária (0 ou 1) e decide se o neurônio vai levar a informação adiante, “disparar”, ou não. Essa decisão ocorre através da comparação com o valor de limiar
(threshold ). Existem vários tipos de funções como essa, conforme mostrado na figura 10, função de ativação degrau, sigmoidal, linear, tangente hiperbólica, entre outras. A função de ativação é empregada para evitar o acréscimo progressivo dos valores de saída, já que ela possui valores máximo e mínimo. Figura 10 - Funções de ativação: (a) degrau; (b) sigmoidal; (c) linear; (d) tangente hiperbólica.
A fim de aumentar a capacidade computacional, os neurônios são dispostos em conjunto, conectados por meio de sinapses, formando, desse modo, a rede neural artificial. A forma como eles são colocados na rede é definida pela arquitetura da mesma, que pode ser estática: sem recorrência a sua estrutura, ou seja, as saídas em um momento só dependem das suas entradas nesse instante, figura 11 (a), ou não, figura 11 (b), com sua operação em função da dinâmica de mudança de estados dos neurônios.
32
Figura 11 - Arquitetura de redes neurais (a) rede não recorrente; (b) rede não recorrente.
Em 1958, Rosenblatt apresentou o primeiro modelo de rede neural para aprendizagem supervisionada, chamado “perceptron”, mostrada na figura 12. Essa rede foi feita da maneira mais simples possível, com apenas uma camada de entrada e uma de saída (LUDWIG; COSTA, 2007). No entanto, ela é chamada de percetron de uma camada, pois somente a camada de saída possui propriedades adaptativas (BRAGA; LUDEMIR; CARVALHO, 2011). O perceptron serve para classificar padrões chamados de “linearmente separáveis” , ou seja, padrões com classes dispostas em
lados contrários no espaço, separadas por um hiperplano. Figura 12 - Rede neural perceptron.
Ele possuía um algoritmo de aprendizagem ao qual eram apresentados pares de valores de entrada e sua respectiva saída. Assim, a partir dos valores de entrada, gerava-se uma saída e esta era comparada à saída ideal, que, no caso do perceptron, era 0 ou 1. O valor do erro correspondente à diferença entre as saídas era então usado para ajustar o valor dos pesos calculados a princípio, de modo que a saída se tornasse mais próxima da desejada. Esse ajuste no instante n nos pesos é dado pela equação 04.
33
(04)
(05)
Em que:
Onde “ representa a taxa de aprendizado que mede a rapidez com que se atualiza os valores do peso, “ e” o erro referente à saída e x(n), como já foi visto, o
vetor de entrada. Em 1969, no livro “Perceptrons” de Minsky e Papert, foi feita uma análise matemática do modelo de rede neural apresentado por Rosenblatt e esta veio seguida de duras críticas ao perceptron, como, por exemplo, a incapacidade do perceptron de construir generalizações baseadas no seu aprendizado (HAYKIN, 2001). Um das limitações do perceptron era sua incapacidade de implementar a função “ou exclusivo ” (XOR), pois ela não poderia ser separada no plano, como mostrado na figura 13 (KOVÁCS, 2002). Figura 13 - Função "XOR".
Com isso, dúvidas a respeito da capacidade das redes neurais foram geradas, causando um grande impacto nas pesquisas e desinteresse pela área. Desse modo, o estudo a respeito das redes neurais ficou paralisado até o ínicio da década de 1980. No capítulo final do seu livro, Minsky e Papert atribuem as limitações do perceptron de uma única camada também para as redes neurais de múltiplas camadas. Hoje, com a eficiência comprovada do perceptron de múltiplas camadas, pode-se ver o quanto essa atribuição foi equivocadamente colocada.
34
O perceptron de múltiplas camadas (MLP, multilayer perceptron) possui três características marcantes. A primeira é que cada neurônio possui uma função de ativação não-linear, como, por exemplo, a sigmóide. É importante destacar que essa função deve ser derivável em todo intervalo de tempo, não ocorrendo mudança abruptas, como no perceptron de uma só camada. Outra característica importante é que ela possui uma ou mais camadas intermediárias, o que aumenta o potencial da rede na realização de atividade mais complexas. Além disso, a rede é altamente conectada, possuindo, assim, muitas regiões sinápticas. Com a união dessas características ao seu aprendizado, o MLP se destaca por possuir um alto potencial computacional. Na figura 11(a), é mostrada a arquitetura de um perceptron de múltiplas camadas (MLP), onde, inicialmente, os sinais de entrada (estímulos) passam pela camada de entrada que não são formadas por neurônios e sua única função é representar a distribuição dos dados de entrada para a próxima camada. Em seguida, pode conter uma ou mais camadas ocultas (camadas intermediárias), formadas por neurônios ocultos, que tem como função principal capacitar a rede a extrair estatísticas de elevada ordem. E, por fim, uma camada de saída que dá a resposta da rede ao vetor de entrada. Com o ajuste dos pesos sinápticos e níveis de bias, a rede neural realiza a tarefa de aprendizado. De acordo com Braga, Ludemir e Carvalho (2011, p. 12) o aprendizado consistem em: “[…] um processo iterativo de ajuste de parâmetros da rede, os pesos das
conexões, que guardam, ao final do processo, o conhecimento que a rede adquiriu do ambiente externo.”
O processo de aprendizado de uma rede neural pode ser supervisionado ou não-supervisionado. No primeiro , também conhecido como “aprendizado com professor”, é apresentado a rede neural as saídas desejadas para as respectivas
entradas. O treinamento é feito até a taxa de acerto ser satisfatória. No outro, ela recebe apenas os valores de entrada e os classifica em grupos.
35
A rede neural recebe um treinamento de modo que seus pesos sinápticos e níveis de bias sejam ajustados. Para isso, utilizam-se algoritmos de aprendizagem, por exemplo, aprendizagem por correção de erros, aprendizagem competitiva, aprendizagem hebbiana, etc. Elas são utilizadas em áreas de classificação, aproximação, otimização, categorização e previsão. Na classificação, o objetivo é colocar um padrão desconhecido em uma das classes pré-definidas. Nela, utiliza-se o aprendizado supervisionado, ou seja, são dadas entradas (dados do objeto) e saídas (classes) para o treinamento da rede. Um algoritmo eficiente e lagarmente utilizado é o de retropropagação de erro (back-propagation) para redes multicamadas, apresentado na figura 14. A sua popularização se deu pelo fato dele ser um relativamente poderoso algoritmo e ser muito simples, sendo implementado em poucas linhas de código (CHAUVIN; RUMELHART, 1995).
Figura 14 - Grafo do fluxo de sinal do processo de aprendizagem por correção de erro.
O algoritmo back-propagation possui um treinamento supervisionado e realiza seu aprendizado através da correção de erros. Ele é dividido em duas etapas, uma de
36
propagação e outra de retropropagação. Na primeira, a entrada é aplicada à rede e seu efeito é propagado, resultando na obtenção de uma saída. Na segunda etapa, essa saída adquirida é comparada à saída ideal (já que se trata de um aprendizado supervisionado) gerando um sinal de erro, o qual é retropropagado pela rede, fazendo ajuste nos pesos sinápticos, de modo a corrigir o erro obtido na saída, gerando uma resposta mais próxima da ideal (HAYKIN, 2001). Este método consiste em obter uma saída (y k(n)) no neurônio “k” a partir de um vetor de entradas (x(n)) e compará-la a saída desejada (d k(n)), já que este se trata de um aprendizado supervisonado. Assim, obtem-se um valor de erro (e k(n)) e, com esse valor, percorre-se o sentido inverso, ajustando os pesos sinápticos de modo a minimizar esse erro e obter a resposta mais próxima possível da ideal. O objetivo desse algoritmo é alcançado quando o índice de desempenho (conhecida também como função de custo), E(n) , é minimizado. Esta representa o valor instantâneo da energia do erro e é mostrada abaixo:
(06) Onde e j(n)= d j(n) – y j(n), representando o erro para o neurônio “j” da camada de saída. Considerando N o número total de padrões existentes no conjunto de treinamento, a energia média do erro quadrado é dada por:
(07) O algoritmo back-propagation apresenta problemas de lentidão em diversas aplicações. Mesmo em problemas simples, ele solicita que se apresente os padrões de treinamento milhares de vezes. Assim, várias mudanças foram propostas com o intuito de melhorar o seu desempenho e reduzir o tempo de treinamento. Um delas, bastante usada, chama-se
37
algoritmo Levenberg-Marquardt, que é uma técnica de otimização numérica baseada no método de Newton. Ela exige uma grande complexidade computacional e quantidade de memória.
38
3 Construção do Protótipo
A construção da parte mecânica da mesa de automação foi realizada como segue abaixo.
3.1
Materiais Utilizados
Foram utilizados os seguintes materiais na construção da mesa:
·
1 folha de papel cartão branco;
·
1 folha de papel dupla face branco;
·
1 fita crepe;
·
1 projeto CAD desenvolvido no Inventor como molde;
·
4 parafusos de 3 mm;
·
5 parafusos de 4 mm;
·
Arduino UNO;
·
Chapas galvanizadas 1 mm de 217x329mm, 58x33mm e 50x35mm;
·
Chapas galvanizada 2 mm de 150x100mm, 30x250mm e 30x150;
·
Cola branca comum;
·
Cola epoxy;
Divinycell;
·
·
Dois LEDs brancos de alto brilho;
·
Motor de passo de 5 V com driver ULN2003;
·
Servomotor TowerPro 9g com torque de 1,8 kgf;
·
Tinta spray preto fosco;
Webcam;
·
As ferramentas utilizadas para confecção são mostradas a seguir:
39
Alicate;
·
·
Brocas de 2 mm, 3 mm, 4 mm e 10 mm;
·
Calandra viradeira de chapa;
·
Chave de fenda;
Esquadro;
·
Furadeira;
·
Guilhotina;
·
Morsa;
·
·
Mini retífica;
Martelo;
·
·
Punção de marcação;
·
Régua 30cm;
Riscador;
·
3.2
·
Tesoura comum;
·
Tesoura de cortar chapa;
Procedimentos
Inicialmente, o molde da mesa foi colado na chapa galvanizada de 2 mm utilizando cola branca comum, figura 15 (a), e, com auxílio de uma régua e de um riscador, foi delimitado onde a guilhotina iria cortar a chapa, o que foi realizado em seguida, figura 15 (b).
40
Figura 15 - Primeiro passo para construção da mesa (a) colagem do molde na chapa galvanizada de 1mm; (b) delimitando o espaço para corte; (c) chapa riscada, pronta para corte; (d) corte na guilhotina.
Fonte: o autor, 2015.
Logo depois, a mesa foi cortada com uma tesoura para chapa e foi utilizada a furadeira com as brocas de 4 mm e 10 mm nos locais indicados no molde, figura 16. Figura 16 - Segundo passo (a) mesa já cortada na guilhotina; (b) mesa com todos os cortes e furos necessários.
Fonte: o autor, 2015.
41
Para fixação do motor de passo, foi utilizada uma cola epoxy e parafusos, como mostrado na figura 17. Figura 17 - Fixação do motor de passo.
Fonte: o autor, 2015.
Utilizando uma chapa galvanizada de 1 mm, foram feitos os apoios da mesa e utilizados parafusos para sua união com a mesma, figura 18. Figura 18 - Mesa sem espátula.
Fonte: o autor, 2015.
Para a construção da espátula, onde são colocados os resistores, foram utilizadas chapas galvanizadas de 2 mm e tinta spray preto fosco. Para fixação do
42
servo à estrutura, fez-se uso de divinycell e cola epoxy. E, ainda, foi construída uma caixa com folha branca dupla face e papel cartão com dois LEDs brancos de alto brilho em sua estrutura para iluminação do resistor dentro da caixa, figura 19. Figura 19 - Espátula da mesa.
E, por fim, foi construído um suporte para a webcam na mesa. A mesa completa está apresentada na figura abaixo. Figura 20 - Mesa automática.
Fonte: o autor, 2015.
43
4 Desenvolvimento do Sistema Automático
Conforme os objetivos apresentados, a proposta deste trabalho é a separação de resistores por valores de resistência, os quais são dados pelo padrão de cores apresentado no resistor. Para a construção da mesa automática, foi realizada uma modelagem da mesa no software Inventor®, onde foram colocadas as dimensões da mesa, da espátula, onde os resistores serão colocados, e dos atuadores e, a partir disso, foram simulados os movimentos que a mesa realizará. O sistema desenhado no Inventor é mostrado na figura 21. Figura 21 - Modelagem da mesa automática no Inventor®.
Fonte: o autor, 2015.
Para controle dos atuadores, estes foram conectados fisicamente ao Arduino, que é uma plataforma de prototipagem eletrônica composta por um controlador, entradas e saídas digitais e analógicas e linguagem própria de programação. Ele foi, então, integrado ao software MATLAB® e, para isso, foram seguidos os passos mostrados no Anexo A. O servo coloca a espátula à 30º, inicialmente, de modo que todos os resistores sempre fiquem encostados na parede da caixa, a uma mesma distância da câmera.
44
Ao receber o resistor, ele deixa a espátula em sua posição original, horizontal. Então, a rede neural reconhece o resistor e manda o comando para o motor de passo girar o ângulo correspondente ao tipo de resistor, tabela 1, de modo que ele seja depositado no local correto. Tabela 1 - Ângulo de giro do motor de passo correspondente para cada tipo de resistor.
Resistores
Ângulo que o motor de
Saída
passo irá girar 33,8 •
72º para direita
1000
12 •
144º para direita
0100
47,8 •
72º para esquerda
0010
47 •
144º para esquerda
0001
Desse modo, quando o motor de passo chegar a sua posição final o servo é acionado para mover 30º para baixo de modo a despejar o resistor e depois voltar a sua posição inicial juntamente com o motor de passo. Posteriormente, a tarefa realizada foi a de escolher os parâmetros e métodos utilizados no sistema de reconhecimento. Foi selecionada, para hardware de
45
aquisição da imagem, uma câmera webcam, com as características apresentadas na tabela 2, obtidas na sua conexão com o software MATLAB®. A escolha se deu devido a disponibilidade e baixo custo. Tabela 2 – Dados da webcam utilizada.
Nome
Microsoft LifeCam VX-800
Resolução máxima
640x480
Balanço de branco
6500
Ganho
34
Saturação
4
Brilho
2
Contraste
10
Para fazer a conexão do componente com o software utilizado no trabalho, o MATLAB®, utilizou-se o pacote de suporte de hardware para webcams. Assim, foram realizados os passos apresentados no Anexo B para obtenção desse pacote com o Matlab 2014b. O reconhecimento do padrão do resistor foi feito através da cor, como já mencionado. Porém, existe um grande problema nesse tipo de reconhecimento, quando a iluminação não é constante, a precisão do reconhecimento diminui significativamente, já que a aparência da cor é fortemente afetada pela luminosidade (GEVERS; SMEULDERS, 1999). Em um ambiente aberto não é possível fazer o controle da iluminação. Por isso, o sistema foi isolado da iluminação externa e foram colocados dois LEDs brancos de alto brilho como única forma de iluminação dos resistores, como mostrado na figura 22.
46
Figura 22 - Caixa para colocar o resistor a ser analisado.
Fonte: o autor, 2015.
Após a aquisição, a imagem é cortada de modo a separar o resistor para posterior tratamento. Delimitou-se uma faixa de corte da i magem baseada no princípio de que o resistor sempre estará no fundo da caixa, já que a espátula estará inclinada para recepção do mesmo. O corte é mostrado na figura 23. Figura 23 - Corte da imagem obtida pela webcam: (a) imagem original; (b) imagem após corte.
Fonte: o autor, 2015.
Em seguida, a imagem é levada para etapa de extração de atributos de modo a selecionar as características que devem ser levadas em consideração para o reconhecimento de padrões. Nesse caso, o importante são as características de cores, pois elas vão determinar o valor da resistência de cada resistor. Assim, para esse fim, optou-se pelo descritor de cores chamado BIC (Border/Interior Classification). Esse método foi escolhido por apresentar uma grande eficiência mesmo para imagens com baixas resoluções, como a desse trabalho (PICON; PONTI, 2011).
47
A quantização escolhida foi a de 64 cores, pela facilidade de implementação, mesmo sabendo que ela não é tão mais eficiente do que a de 16 cores e que os dados aumentam de quantidade, como já mencionado. Porém, a quantidade de dados que saí desse método, para esse número de cores, que são 128, é bem inferior ao número de dados apresentados inicialmente, ou seja, ele é bastante eficiente na extração de característica e cumpre o requisito da redução dos dados iniciais. Outro recurso utilizado para obtenção das cores apresentadas no resistor foi o histograma. Os dois métodos foram comparados em termos de eficiência. “newff (•)”. São 128 No treinamento, utilizou-se a função do MATLAB® “newff (•)”.
elementos de entrada da rede para o algoritmo BIC e 64 para o Histograma e foram escolhidos 20 neurônios nas duas camadas intermediárias e quatro na última camada intermediária para a arquitetura de rede mais sofisticada, como mostrado na figura 24. Em seguida, foi feita outra rede com apenas duas camadas intermediárias com dez neurônios cada e outra com 24 cada, com o intuito de comparar a resposta. Figura 24 - Estrutura de uma das redes utilizadas.
Fonte: MATLAB®, 2015.
A função de transferência utilizada nas camadas intermediárias foi a sigmóide, pois os valores de saída serão sempre positivos entre zero e um e é uma função derivável em todo o intervalo de tempo, como é utilizado em MLP. Assim, a resposta sairá compatível com o proposto para as saídas, já mostrado na tabela 1. Na camada de saída foi utilizada a função linear. O aprendizado foi feito com o algoritmo de retropropagação LevenbergMarquardt, que é o mais rápido e mais recomendado para esse tipo de algoritmo supervisionado. Algumas das imagens utilizadas no treinamento são apresentadas na figura 25.
48
Figura 25 - Imagens utilizadas no treinamento da rede neural.
Fonte: o autor, 2015.
49
Assim, o sistema de automação construído segue os passos apresentados na figura 26.
Figura 26 – Fluxograma do sistema.
Fonte: o autor, 2015.
50
5 Resultados e Discussão
O maior desafio no projeto de uma rede neural é dimensioná-la, de modo que ela atenda à complexidade do problema em questão e seja a mais simples possível. A escolha dos seus parâmetros de arquitetura da rede é um tanto empírica, já que não se pode afirmar a existência de uma regra geral que os defina com precisão para a resolução de um determinado problema (BRAGA; LUDEMIR; CARVALHO, 2011). Dois parâmetros que alteram bruscamente o desempenho da rede são o número de neurônios por camada e a quantidade de camadas intermediárias. Para esta, sabe-se que, para um bom número delas, é possível obter representações para qualquer conjunto de dados de entrada. De acordo com Cybenko (1988), duas camadas ocultas é o necessário para obter a aproximação de qualquer f unção. A quantidade de neurônios define a capacidade da rede para a resolução de problemas de um certo grau de dificuldade. Quanto maior o número de neurônios por camada de rede, maior a sua complexidade e abrangência na quantidade de soluções possíveis, aumentando, em geral, a qualidade da aproximação resultante. No entanto, um aumento excessivo desse número provoca efeitos do superdimensionamento. Estes são devidos ao aumento de soluções possíveis com o aumento de neurônios, que faz com que o número de “ soluções bo as” fique menor em
relação ao número de todas soluções. Assim, o objetivo é construir uma rede com arquitetura mínima a qual atenda as exigências de minimização do erro quadrático. Foram criados três tipos de redes neurais: uma mais simples com apenas duas camadas ocultas com 10 neurônios cada (Rede 01), outra com 24 neurônios cada (Rede 02) e uma última com três camadas intermediárias de 20 neurônios as duas primeiras e a outra com quatro (Rede 03). Para as duas últimas redes, ainda foram testados dois tipos de descritores de cores, o BIC e o histograma. As amostras foram separadas em dois conjuntos. Um para ser usado no treinamento, constituída de entrada e saída desejada, com 120 delas, e outro para posterior simulação da rede e comparação dos resultados, com somente dados de entrada, contendo 60 amostras.
51
No treinamento da rede, os dados são divididos em três conjuntos (BEALE; HAGAN; DEMUTH, 2015): ·
Conjunto de Treinamento: é usado para calcular o gradiente e atualizar os pesos da rede e bias.
·
Conjunto de Validação: o seu erro é monitorado durante o processo de treinamento até atingir o erro mínimo e aí, então, os pesos e bias são salvos.
·
Conjunto de Teste: não é utilizado durante o treinamento e o seu erro é calculado. Desse modo, 70% das amostras foram para o conjunto de treinamento, 15%
para o de validação e os outros 15% para o de teste, com os dados escolhidos de forma aleatória. Nos treinamentos, o critério de parada é baseado no número de iterações sucessivas, onde a performace de validação, dada nesse caso pelo erro médio quadrático, não decresce. Quando esse valor chega a seis, o treinamento para. Esse critério pode ser alterado, ajustando o parâmetro “net.trainParam.max_fail”. Os três tipos de rede foram comparados, como apresentado na tabela 3, de modo a escolher a melhor arquitetura para a resolução desse problema e o melhor descritor de cores entre os apresentados. Tabela 3 – Comparação entre as diferentes redes neurais utilizando cada um dos descritores de cor. Parâmetros
Rede 01
Rede 02
Rede 03
BIC
Histograma
BIC
Histograma
BIC
Histograma
3
1
6
3
10
5
30700x10-7
0,4x10-7
2088x10-7
4,9x10-7
9,17x10-7
4,8x10-7
R
0,99669
1
0,99989
1
0,99999
1
Número de
9
20
13
17
28
32
Tempo de treinamento (s) Erro médio quadrático
épocas
52
Pode-se ver que quanto maior o número de épocas (iterações), maior é o aprendizado da rede e menor é o erro médio quadrático apresentado por ela, na sua melhor performace, que é quando os erros e bias são salvos. O valor de R representa a relação entre a saída dada pela rede e a saída desejada. Para o valor de R igual a um, tem-se o resultado perfeito, que é quando obtém-se, através da rede, a saída desejada, que é o caso de todas as redes apresentadas quando utilizado o Histograma como descritor. Quanto maior o número de neurônios, maior o tempo gasto no treinamento devido aos cálculos feitos ao longo da rede para adaptação dos pesos de modo a obter a saída desejada. Isso é comprovado pela tabela 3, onde observa-se que a rede com mais neurônios, possui um maior tempo de treinamento. Assim, pode-se perceber que a rede com melhor desempenho foi a primeira rede utilizando o Histograma, pois apresentou o menor tempo de treinamento e o menor erro médio quadrático. Em seguida, foram preparadas 60 amostras contendo 15 de cada tipo de resistor para simular a rede já treinada e avaliar sua eficiência. Assim, foram construídos gráficos comparando a saída desejada que é um para cada tipo de resistor com a saída obtida. Para a rede com três camadas contendo 10 neurônios cada camada intermediária, obteve os gráficos da figura 27, considerando a saída ideal como um. Figura 27 – Saída da rede 01 com (a) descritor BIC; (b) histograma.
53
No gráfico da figura 27 (a), pode-se observar o grande erro mostrado anteriormente na tabela 3, refletindo no valor da saída. Na figura 27 (b), encontra-se o mesmo erro nos sete primeiros valores e no outro, a saída é praticamente ideal. Para a rede 02, os mesmos gráficos foram feitos, figura 28. Pode-se ver que o histograma continua mais preciso que o descritor BIC, mas que nessa arquitetura, mesmo para esse descritor, ele é eficaz no reconhecimento. Figura 28 - Saída da rede 02 para (a) descritor BIC; (b) histograma.
Para a rede 03, tem-se os gráficos apresentados abaixo, figura 29. Figura 29 - Saída para rede 03 com (a) descritor BIC; (b) histograma.
54
Para o descritor BIC, pode-se ver que uma rede com mais camadas possui uma melhor resposta e, para o histograma, uma rede mais simples é tão eficiente quanto uma mais sofisticada. Vale ressaltar que em cada treinamento realizado na rede neural, os parâmetros são diferentes e podem produzir diferentes soluções. Porém, mesmo passando por diferentes treinamentos, a rede escolhida continua sendo a melhor.
55
6 Conclusão
O principal objetivo desse trabalho foi a construção de uma mesa que reconhecesse automaticamente padrões de cores de resistores diferentes e os separassem de acordo com o valor da sua respectiva resistência, utilizando redes neurais. Algumas topologias de rede foram analisadas e comparadas, chegando a conclusão de que uma rede simples com apenas duas camadas intermediárias e dez neurônios por camadas seria bastante eficiente e precisa para esse sistema de reconhecimento, utilizando histograma como método de extração de características. O que comprova o bom desempenho da rede de duas camadas ocultas abordado por Cybenko (1988). Para esse problema, o histograma se apresentou bem mais preciso do que o descritor BIC, isso se deve aos erros de identificação do que são pixels de borda e de interior. A eficiência do descritor BIC para o reconhecimento aumentou significativamente com o aumento da complexidade da rede neural, obtendo uma boa aproximação na resposta. Outra fonte de erros aqui apresentados é que o histograma, utilizado nos dois métodos de extração de características, é bastante sensível à iluminação. Seus valores são alterados significativamente para uma pequena mudança na luminosidade do resistor, fazendo com que o reconhecimento, em alguns casos, não se torne possível. Uma limitação para esse projeto é que os descritores de cor, aqui utilizados, não diferenciam a ordem das cores no resistor, gerando erros, pois a ordem altera o valor da resistência. Assim, resistores com mesmas cores e diferentes resistências não serão separados. Este trabalho possui inúmeras aplicações, uma delas aqui, no Vale do São Francisco, é a divisão de frutas por maturação, o que é bastante utilizado nas frutas para exportação, ou, até mesmo, para separar as que estão apodrecidas, que não servem mais para o consumo.
56
Além disso, mudando-se o método de extração de característica para um descritor de forma, pode-se separar objetos por tamanho, detectar falhas na produção de determinado produto e, também, criar sistemas de segurança com reconhecimento de digital (utilizado em caixas eletrônicos), de faces, entre outros.
6.1
·
Sugestões para trabalhos futuros
Desenvolver um algoritmo que diferencie resistores não só pela cor como pela ordem delas;
·
Elaborar um algoritmo que desempenhe a função de um descritor de cores e que seja insensível à iluminação;
·
Desenvolver um método que escolha a arquitetura de uma rede neural para determinado problema.
57
7 Referências
ALMEIDA, J.; ROCHA, A.; TORRES, R.; GOLDENSTEIN, S. Making colors worth more than a thousand words. ACM Symposium on Applied Computing (SAC 2008), 1180-1186, 2008. ANNADURAI, S. Fundamentals of Digital Image Processing . Pearson Education India. 2007. AZEVEDO, E.; CONCI, A.; LETA, F. R. Computação Gráfica: Teoria e Prática. Vol 2. Rio de Janeiro: Elsevier. 2008. BARRETO, J. M. Inteligência Artificial no limiar do Século XXI. 3ª ed. Florianópolis. Ppp edições. 2001. BEALE, M. H.; HAGAN, M. T.; DEMUTH, H. B. Neural Network Toolbox – User’s guide. The MathWorks, Inc. 2015. BOLTON, W . Instrumentação & controle. Curitiba: Hemus, 1933. BONACORSO, N.G.; NOLL, V. Automação Eletropneumática. 6ª ed. São Paulo: Érica, 2006. BRAGA, A. P.; LUDEMIR, T. B.; CARVALHO, A. P. L. F. Redes neurais artificiais: Teoria e aplicações. 2ª ed. Rio de Janeiro: LTC, 2011. CALHEIROS, V. Reconhecimento de Padrões. Universidade Federal de Pernambuco. Disponível em: < http://www.cin.ufpe.br/~if114/Monografias/Reconhecimento/ >. Acesso em: 01. fev. 2012. CAMPOS, M. M., SAITO, K. Sistemas Inteligentes em Controle e Automação de Processos. Ed. Ciência Moderna, 2004. CHAUVIN, Y.; RUMELHART, David E. Backpropagation: Theory, Architectures, and Applications. Lawrence Erlbaum, NJ, 1995.
58
CRISTINA, M. Uso de Redes Neurais para o Reconhecimento de Padrões. Trabalho da disciplina Arquiteturas Especiais de Computadores. Universidade Federal do Rio Grande do Sul, 2005. CYBENKO, G. Continuous valued neural networks with two hidden layers are sufficient. Technical report, Departament of Computer Science, Tufts University, 1988. DUNN, W. C. Fundamentos de instrumentação industrial e controle de processos. Porto Alegre: Bookman, 2013. ESCOBAR, L. C.; PONTI, M. P. Quantização de imagens para geração de descritores compactos de cor e textura. Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo, 2011. GEVERS, T.; SMEULDERS, A. Color-based object recognition. Pattern Recognition 32, 453—464, 1999. GONZALES, R. C.; WOODS, R. E. Digital Image Processing . University of Tennessee Perceptics Corporation, 1992. HAYKIN, S. Redes Neurais: Princípios e prática. 2.ed. Porto Alegre: Bookman, 2001. KOVÁCS, Z. L. Redes neurais artificiais: Fundamentos e aplicações. 4.ed. São Paulo: Livraria da Física, 2002. LUDWIG, O. Jr.; COSTA, E.M.M., Redes Neurais: Fundamentos e Aplicações com Programas em C. Ed. Ciência Moderna, Rio de Janeiro, RJ, 2007. MARQUES, O.; VIEIRA, H. Processamento Digital de Imagens. Rio de Janeiro: Brasport, 1999. MINSKY, M.; PAPERT, S. Perceptrons. MIT Press, Cambridge: 1969. MORAES, C. C. de; CASTRUCCI, P. de L. Engenharia de automação industrial . 2. ed. - Rio de Janeiro: LTC, 2007.
59
NORVIG, P.; RUSSEL, S. Inteligência Artificial. 3. ed. 2013. Tradução Regina Célia Simille. – Rio de Janeiro: Elsevier, 2013. PETER, J. The neural approach to pattern recognition , 2005. Ubiquity: An ACM IT Magazine and forum - http://www.acm.org/ubiquity/views/v5i7_jesan.html - Acessado em: 5 jan. 2012. PESSÔA, M. S. de P.; SPINOLA, M. de M. Introdução à Automação. 1. ed. São Paulo: Elsevier Editora Ltda, 2014. PICON, C.; ROSSI, I.; PONTI, M. P. Análise da classificação de imagens por descritores de cor utilizando várias resoluções. Em SIBGRAPI 2011 – Workshop of Undergraduate Works (WUW), 2011. ROSENBLATT, F. The perceptron: a probabilistic model for information storage and retrieval in the brain . Psychological Review, v. 65, p. 386-408, 1958. SIGHIERI, L.; NISHINARI, A. Controle automático de processos industriais: instrumentação. 2. ed. São Paulo: Edgard Blücher, 1973. STEHLING, R. O.; NASCIMENTO, M. A.; FALCO, A. X. A compact and efficient image retrieval approach based on border/interior pixel classification. Em CIKM’02 - 11th ACM Int Conf Information Knowledge Management, 2002. THEODORIDIS, S.; KOUTROUMBAS, K. Pattern Recognition. Academic Press, 1999.
60
ANEXOS
ANEXO A – Integração do Arduino ao MATLAB® 2014b Para conectar o Arduino ao MATLAB® de modo que todo o controle seja feito diretamente na plataforma do MATLAB®, foram seguidos os passos apresentados a seguir: 1) Baixar
o
arquivo
“ArduinoIO”
pelo
site
http://www.mathworks.com/matlabcentral/fileexchange/32374-matlab-supportpackage-for-arduino-aka-arduinoio-package?download=true,
com
as
bibliotecas necessárias para conexão. 2) Copiar a pasta “pde” do arquivo “ArduinoIO” na pasta de bibliotecas do arduino, como mostrado na figura 30. Figura 30 - Colar arquivo "pde" na pasta de biblioteca do arduino.
3) No MATLAB®, na aba “Home”, em “Environment”, clicar em “Set Path”. Escolher “Add with subfolders” e adicionar o arquivo “ArduinoIO”, salvar e
fechar.
61
4) Ir na plataforma de programação do arduino e, com o arduino conectado ao computador, abrir o programa “adioes” em “pde” e compilá-lo.
5) Por último, ver em que porta o arduino está conectado (X = porta) e escrever no prompt de comando do MATLAB®: >> a = arduino(‘COMX’);.
Das próximas vezes, a conexão será feita apenas com o último passo. E se o arduino estiver com outro programa gravado, repetir o passo 4.
ANEXO B – Conexão da webcam com o Matlab 2014b Para utilizar a webcam no projeto como hardware de aquisição da imagem, foi necessário instalar o pacote de suporte para webcams. Os passos seguidos são apresentados abaixo.
Primeiro Passo: No último quadro aba “Home” denominado “Resources”, deve-se clicar no “Add-Ons” e, desse modo, aparecerá “Get Hardware Support Packages”, como mostrado na figura 31, escolher essa opção. Figura 31 - Primeiro passo para conexão da Webcam com o Matlab.
Segundo passo: Escolher a opç ão “Install from Internet” e seguir a diante.