Redes Neurais

15
 UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA E INFORMÁTICA INDUSTRIAL REDES NEURAIS ARTIFIC IAIS DIOGO WACHTEL GRANADO SISTEMA DE RECONHECIMENTO DE CARACTERES MANUSCRITOS CURITIBA 2015

description

Redes Neurais top

Transcript of Redes Neurais

UNIVERSIDADE TECNOLGICA FEDERAL DO PARAN

PROGRAMA DE PS-GRADUAO EM ENGENHARIA ELTRICA E INFORMTICA INDUSTRIAL

REDES NEURAIS ARTIFICIAIS

DIOGO WACHTEL GRANADO

SISTEMA DE RECONHECIMENTO DE CARACTERES MANUSCRITOS

CURITIBA 2015

DIOGO WACHTEL GRANADO

SISTEMA DE RECONHECIMENTO DE CARACTERES MANUSCRITOS

Relatrio de projeto apresentado disciplina de Redes Neurais Artificiais do Programa de Ps-Graduao em Engenharia Eltrica e Informtica Industrial da Universidade Tecnolgica Federal do Paran, como requisito parcial para a aprovao na disciplina.Orientador: Prof. Dr. Lcia Valria Arruda.

CURITIBA2015

Sumrio1.Introduo42.Objetivos53.Desenvolvimento63.1.Processamento da Imagem63.1.1.Pr-processamento de Imagem63.1.2.Extrao imagem113.2.Treinamento da rede Neural123.2.1.Inicializando a rede neural123.3.Verificao do Resultado134.Concluso145.Bibliografia15

Introduo

O reconhecimento do de caracteres escritos a mo, conhecida como uma das primeiras aplicaes de redes neurais artificiais, em que simula o reconhecimento humana em uma rede artificial. Existem varias dificuldades ao reconhecer caracteres de um documento digitalizado, Mtodos clssicos de reconhecimento no so suficientes pois a escrita tem alguns padres particulares, como por exemplo, o mesmo caractere possui tamanho e estilo diferentes at mesmo para a mesma pessoa, a imagem suscetvel a rudos, no ha regra definida para padro de escrita, essas regras devem ser deduzidas eucaristicamente. Mesmo com todas estas dificuldades o sistema de viso humano excelente para identificao de caracteres, pois consegue se adaptar as mnima mudanas e erros, consegue aprender por experincia e rapidamente novos padres.

Objetivos

O Reconhecimento ticos de caracteres(OCR), para ser utilizado, primeiramente deve-se preparar o a material a ser lido, utilizando scanner pticos ou at leitores mais especficos, para que este possa ser lido com um bitmap, para que possa ser entendido pelos softwares, estes por sua vez, precisam processar a imagem para determinar em qual rea existe texto, para ento terminar quais letras esto escritas. Sistemas antigos analisavam estas imagens, com um banco de dados com fontes especficas, este sistema de reconhecimento apresentava muito erros, de falta de acurcia. Nos sistemas novos de OCR, a construo do algoritmo composto de redes neurais para analisar as bordas, a descontinuidade entre os caracteres e o plano de fundo que a imagem se encontra. Permitindo que irregularidades como diferenas de impresso, no influenciem muito no resultado, resultando em uma leitura confivel. Entretanto, apesar dos softwares OCR conseguirem reconhecer uma alta gama de variedade de fontes, o manuscrito ainda um problema. Para resolverem este problema mais potente a rede neural deve ser implementada.As redes neurais podem ser usadas,caso possuam um mnimo quantidades de dados para treinamento e aprendizado. O conjunto de dados o mais importante quando uma nova rede criada, caso contrrio a rede ser ineficaz. Tambm o pr-processamento importante pois necessrio que os caracteres analisados sejam corretamente inseridos, caso contrrio pode-se pegar dados errneos para o treinamento e analise. O objetivo deste trabalho identificar corretamente caracteres escritos a mo. Deve-se construir corretamente a rede neural e treinar propriamente. O programa a ser desenvolvido deve extrair de uma imagem o mapa de caracteres para o treinamento, aps o processo automtico da imagem, o mapa de caracteres deve ser utilizado para treinar a rede neural. O programa ser escrito em linguagem MATLAB.

Desenvolvimento

O projeto de reconhecimento de caracteres escritos a mo, foi desenvolvido com o Neural Network, dividido em duas partes, o pr-processamento de imagem, extrao e reconhecimento do caractere.

1. 2. 3. Processamento da Imagem

3.1.1. Pr-processamento de Imagem

A imagem deve ser lida, convertida para escala de cinza e ento binarizada.Figura 1: Original

I = imread('Amostra3.bmp'); imshow(I);

Figura 2 Escala Cinza

Igray = rgb2gray(I); imshow(Igray)

Figura 3 Binarizada

Ibw = im2bw(Igray,graythresh(Igray)); imshow(Ibw)

Aps a imagem ser convertida em binria, pode-se ento aplicar tratamentos para delimitar e identificar melhor cada posio do caractere.

Figura 4 Identificacao das bordas

Iedge = edge(uint8(Ibw));imshow(Iedge)

Figura 5 Preenchimento entre bordas

Iedge2 = imdilate(Iedge, se); imshow(Iedge2);

Figura 6 Preenchimento da imagem

Ifill= imfill(Iedge2,'holes');imshow(Ifill)

Pode-se agora verificar em quais posies e possvel encontrar um caractere.

Figura 7: Posicoes que exitem caracteres

Iprops = regionprops(Ilabel); Ibox = [Iprops.BoundingBox];imshow(I) hold on; Ibox = reshape(Ibox,[4 60]); for cnt = 1:60 rectangle('position',Ibox(:,cnt),'edgecolor','r'); end

3.1.2. Extrao imagem

As imagens devem ser extradas para ter reduzidas ao tamanho de suas bordas, a otimizao da imagem feita levando em considerao em qual regio possui maior concentrao de bit uns, ou seja onde a imagem de concentra, a partir desta rea a imagem analisada at encontra ou uma coluna ou linha completa de bits zeros. Figura 8: Otimizao da imagem

Ic = [Iprops.Centroid];Ic = reshape(Ic,[2 60]);Ic = Ic';Ic(:,3) = (mean(Ic.^2,2)).^(1/2);Ic(:,4) = 1:60;

Aps a otimizao a imagem novamente redimensionada em uma matriz 5x7 para atender os paramentros da rede neural.Figura 9 Caracter redimensionado

bw_7050=imresize(bw2,[70,50]);for cnt=1:7 for cnt2=1:5 Atemp=sum(bw_7050((cnt*10-9:cnt*10),(cnt2*10-9:cnt2*10))); lett((cnt-1)*5+cnt2)=sum(Atemp); endend lett=((100-lett)/100);lett=lett';

Treinamento da rede Neural3.1.3. Inicializando a rede neuralA rede neural criada, ser composta de 5 conjuntos de caracteres para treinar a rede neural, sero dez caracteres cada conjunto. Com ajuda da toolbox do Matlab Neural Network Training definimos e criamos a rede neural. Devido a natureza do problema,foi utilizado a rede neural multi nivel perceptron, MLP.

Figura 10:TreinamentoP = out(:,1:50); T = [eye(10) eye(10) eye(10) eye(10) eye(10) ];Ptest = out(:,51:60); alphabet = P;targets = T; [R,Q] = size(alphabet);[S2,Q] = size(targets);S1 = 10;net = newff(minmax(alphabet),[S1 S2],{'logsig' 'logsig'},'traingdx');net.LW{2,1} = net.LW{2,1}*0.01;net.b{2} = net.b{2}*0.01;net.performFcn = 'sse'; net.trainParam.goal = 0.001; net.trainParam.show = 20; net.trainParam.epochs = 50000; net.trainParam.mc = 0.95; P = alphabet;T = targets;[net,tr] = train(net,P,T);

Verificao do Resultado

Podemos simular a rede neural para verificar o funcionamento da rede, foi anasilado a sequencia de 1 a 9 entao 0. Pode-se confirmar que o resultado foi satisfatrio.

Figura 11:SimulaoPtest = out(:,1:10);[a,b]=max(sim(net,Ptest));disp(b)

Concluso

A Rede neural artificial utilizada foi a Multilayer Perceptron com duas camadas ocultas de 35, e 10 neuronios como rede neural. O programa foi todo construido em MATLAB o que facilitou e muito a contruo e teste do programa. O reconhecimento da caracteres manustritos um problema complexo, sem soluo trivial. A principal dificuldade foi encontrar alguma base de dados para que se possa fazer provar a rede neural. Existem diversos banco de dados, porm no h muitoa informao de como foi feito a formatao e processamento dessas imagens, que um fator muito importante para que se possa aplicar a rede neural artificial. Devido a essa dificuldade elaborei meu prprio banco de dados de caracteres. O resultado final pode-se provar que a rede neural artifical realmente funciona com uma taxa baixa de erro, porm devido a pequena amostra, qualquer erro na escrita algum caracter como por exemplo o 8, pode-se verificar que a taxa de erro maior, ainda que mesmo a quantidade de caracteres possvel seja baixa. Para se obter um resultado muito satisfatrio foi necessrio copiar cada caracter e verifica se houve alguma imperfeio durante a digitalizao.

Bibliografia

[1] Simon Haykin, Neural Networks: A comprehensive foundation, 2nd Edition, Prentice Hall, 1998.

[2] Character Recognition, disponvel em: < http://www.mathworks.com/help/nnet/examples/character-recognition.html> acesso em 10/02/2015.

[3] A Matlab Project in Optical Character Recognition (OCR) < http://www.ele.uri.edu/~hansenj/projects/ele585/OCR/OCR.pdf> acesso em 05/02/2015.

[4] Applying Neural Networks to Character Recognition< http://www.ccs.neu.edu/home/feneric/charrecnn.html> acesso em 10/01/2015.

[5] A. Rajavelu , M. T. Musavi and M. V Shirvaikar "A Neural Network Approach to Character Recognition",Neural Networks, vol. 2, pp.387 -393 1989.

[6] Araokar, Shashank, Visual Character Recognition using Artificial Neural Networks, CoRR, Vol abs/cs/0505016, 2005