Baixe o app para aproveitar ainda mais
Prévia do material em texto
Classificador de dígitos MNIST Richard Nunes Scherdien1 1Graduando em Engenharia Elétrica Instituto Federal Sul-rio-grandense (IFSul) – Pelotas, RS – Brasil richardscherdien@gmail.com Abstract. In this article there will be showed de results of the execution of a computational intelligence algorithm, with was developed with the objective of recognize numeric values trough Neural Networks. The steps included in the development of this algorithm and the used methodologies are going to be showed as well. Resumo. Neste artigo serão apresentados os resultados obtidos a partir da execução de um algoritmo de inteligência computacional que foi desenvolvido com o objetivo de reconhecer valores numéricos por meio de Redes Neurais. Também serão exibidas as etapas do desenvolvimento deste algoritmo, bem como a metodologia empregada. 1. Introdução Neste trabalho houve o desenvolvimento de um sistema com base em inteligência computacional. Este sistema pode ser útil caso haja a necessidade de se reconhecer caracteres para a automatização de tarefas que, até o presente momento, necessitam de interferência humana. Através do sistema desenvolvido podem-se reconhecer caracteres para classificação de acordo com a necessidade. Por meio deste, também é possível transformar textos de imagens em arquivos de texto com caracteres em formato ASCII. Foram utilizadas bibliotecas específicas que permitiram o trabalho com bancos de dados de alta capacidade e enorme precisão. Sem a utilização da biblioteca e sem o seu respectivo banco de dados, os testes e treinamento da rede neural não seriam possíveis. O uso da biblioteca facilita no desenvolvimento no trabalho dado que seus métodos já foram testados e validados pela comunidade científica. 2. Materiais e Métodos O sistema OCR é um sistema de visão computacional. Seu funcionamento consiste na digitalização da imagem pretendida, seguido da normalização da mesma em tons de cinza e posterior segmentação de cada caractere de acordo com sua respectiva borda. De forma mais resumida: o sistema realiza uma conferência do caractere lido com os caracteres presentes em seu banco de dados, confirmando assim o caractere lido. Tendo o MNIST como base de dados, foi construída a classificação dos dígitos. Esta referida base de dados possui sete mil caracteres distintos em imagens quadradas de vinte e oito pixels de lado. Para a realização do treinamento do sistema implementado foram utilizados três conjuntos de dados, os quais possuíam, respectivamente, cem dígitos, dez mil dígitos e sessenta mil dígitos. Fez-se necessário, também, o uso da biblioteca MLP, já utilizada em trabalhos anteriores. Para a obtenção de uma precisão satisfatória, realizou-se o treinamento com as amostras de sessenta mil imagens. A matriz confusão foi gerada e utilizada para análise. Os pesos foram obtidos através de um script escrito em linguagem Python conforme já foi realizado em trabalhos anteriores. De acordo com os aspectos dos métodos heurísticos, pode-se realizar a escolha correta da topologia a ser utilizada. As topologias testadas e a precisão obtida são listadas abaixo: Topologia Neurônios na 1º camada Neurônios na 2º camada Precisão 1 50 x 0,9421 2 100 x 0,9497 3 1497 x 0,9646 4 100 100 0,9476 5 1497 100 0,9597 6 1497 798 0,9524 Os testes foram realizados em um computador portátil da marca HP, modelo r051br com processador Intel Core i3-4005u 64 bits com 1,696 GigaHertz de clock, dois núcleos e 8 GigaBytes de memória RAM. Para a escrita e compilação do script foi utilizado o compilador Spyder 3 do Anaconda Navigator em linguagem Python 3. 3. Resultados e Discussão Através da utilização dos algoritmos descritos durante as aulas da disciplina, foi possível realizar o teste e treinamento de uma rede para o reconhecimento de dígitos. Para implementar o algoritmo utilizamos a função MLP.Classifier da biblioteca sklern.neural_network. A taxa de aprendizagem passada como parâmetro foi de 0.1 e tolerância de 0.0001 utilizado como critério de parada, alguns parâmetros foram deixados padrão. Após a realização de um teste curto a rede era escolhida, então o treinamento com 60000 amostras era realizado. Como critério de escolha foi definido a precisão média da rede. Entretanto esse critério não se mostrou satisfatório, pois outras redes obtinham resultados semelhantes, mesmo sendo um pouco menores. Como os resultados obtidos não era bons optou-se por forçar a utilização da maior rede para analisar os resultados. Topologia 1 2 3 4 5 6 Score 0,6824 0,736 0,7421 0,7527 0,7275 0,7275 Os resultados obtidos foram considerados satisfatórios, pois se chegou a quase 90% de precisão. Abaixo, pode-se ver a matriz obtida: Figura 1 – Matriz de confusão com rede de uma e duas camadas para o arquivo mnist_100.csv Figura 2 – Matriz de confusão para o arquivo mnist_10000.csv Como o treinamento é realizado uma única vez, optou-se por melhor precisão invés de um treinamento mais rápido. O fator tempo neste caso não possui tanta importância quanto a precisão, sendo que na segunda opção a precisão é aumentada em 10%. Por este motivo a última topologia foi escolhida, pois obteve melhor resultado. 4. Conclusão É de se considerar que o resultado obtido é satisfatório. Porém, a utilização de outros parâmetros da função MLP.Classifier ou a utilização de mais um algoritmo responsável pelo reconhecimento em caso dúvida poderia aumentar a precisão. Considera-se que este algoritmo pode ser utilizado em outros casos, desde que as imagens de entrada sejam padronizadas da mesma forma ou semelhantemente às imagens pertencentes ao banco de dados. Abaixo se pode analisar uma imagem que o algoritmo identificou. Pode-se perceber que a identificação é difícil até mesmo visualmente e que alguns erros podem até ser esperados devido à baixa qualidade da imagem e da caligrafia empregada. A utilização de OCR na digitalização de documentos, por exemplo, poderia aumentar a precisão do sistema, pois contaria com um mecanismo de análise combinacional das letras presentes. Por exemplo, se houvesse a identificação de letra “i” como sendo “l” na palavra “baixa”, outro algoritmo de busca poderia verificar uma árvore de palavras e realizar a correção. Figura 2 - Resultado Referências BRAGA, A. de P.; CARVALHO, A. P. L. F.; LUDERMIR, Teresa Bernarda. (2000) “Redes Neurais Artificiais: Teoria e Aplicações”. Rio de Janeiro: Livros Técnicos e Científicos. FLORES, Franklin César; PERES, Sarajane Marques. (2001) “Revisão Bibliográfica: Análise de Componentes Principais Linear e Não Linear X Redes Neurais”. Campinas: UNICAMP. Material da disciplina
Compartilhar