Prof. Adolfo Bauchspiess
|
|
ENE0154 - Inteligência
Computacional
1o Exercício
Reconhecimento de Caracteres com Melhoria da Tolerância a Ruídos
Introdução:
Redes Neurais Artificiais podem ser treinadas para reconhecer uma matriz de pixeis binários, de forma análoga a um sistema de OCR (“Optical Character Recognition”). Cada imagem adquirida pelo sistema deve ser associada a um caracter de um alfabeto de caracteres válidos. A binarização dos pixeis despreza informações específicas dos contornos dos caracteres, mas reduz significativamente o universo de busca para realizar a classificação. Assume-se que no processo de aquisição de imagem OCR, um caracter com ruído é aleatoriamente gerado a partir de um caracter válido no qual alguns bits são invertidos.
Mesmo com caracteres binários o treinamento da RNA não pode ser feito apresentando-se à rede todas as entradas possíveis (27x9 = 9,22e18 padrões válidos para o presente exercício). Treinar a RNA apenas com os padrões que se deseja reconhecer resulta, na fase de operação, em um reconhecimento restrito uma vez que a RNA nunca “viu” a maioria esmagadora dos padrões possíveis. Cada padrão binário possível deve ser associado pela RNA ao caracter do alfabeto que lhe é mais próximo (interpolação).
Uma RNA pode ter sua capacidade de lidar com caracteres ruidosos melhorada se for treinada especificamente para este fim. Como não é possível apresentar todos os padrões possíveis à rede e há o esquecimento progressivo intrínseco associado ao treinamento, deve se adotar um procedimento que considere a plasticidade típica das Redes Neurais Artificiais: Intercalar períodos de treinamento do alfabeto desejado com períodos reduzidos de treinamento com conjuntos distintos de caracteres “contaminados” com níveis sucessivos de ruído.
Objetivo:
Utilizando uma rede multicamadas "feedforward" treinar um sistema que reconheça caracteres ruidosos de uma matriz 7x9.
Procedimento:
- RNA0: treinada só com o alfabeto,
- RNA1: alfabeto e 10 amostras distintas do alfabeto + 10% de ruído,
- RNA2: alfateto;
alfabeto+10% ruído, alfabeto+20% ruído,
- RNA3: alfateto;
alfabeto+10% ruído, alfabeto+20% ruído, alfabeto+30% ruído,
....
*Cada
aluno
deverá criar o seu próprio um conjunto de 16 caracteres seqüenciais,
e.g., iniciados pela primeira letra de seu nome.
Classificação de Padrões
Caracteres Originais |
|
Caracteres com 20% de ruído |
|
Caracteres reconhecidos |
|
Validação:
Para validar o Classificador de Padrões deverão ser feitas simulações com 10%, 20%, 30%, 40% e 50% de ruído (distintas das utilizadas no treinamento!!). Apresentar a porcentagem de erros de uma média de 10 (dez) alfabetos para cada nível de ruído. O gráfico (exemplo abaixo) que resume os resultados apresenta a rede treinada sem ruído para diferentes níveis de ruído e as redes treinadas cumulativamente para o ruído máximo considerado. (Uma rede treinada para 30% de ruído também deve tratar adequadamente 0%, 10% e 20% de ruído, SNR!).
Obs:
- A matriz de padrões pode ser gerada com gerachar.m;
que por sua vez pode ser visualizada por showchar.m.
- Um nível de 10% de ruído é obtido permutando-se o
valor de 10% dos pixeis de escolhidos de
forma aleatória.
- A verificação do classificador com ruído pode ser
feita por verchar.m.
- A
inicialização default dos
pesos utilizada em newff pode levar a
mínimos locais.
* - % erro sem ruído; *
- % erro de treinamento c/ ruído
Exemplo de Resultado do classificador neural
Bom
Trabalho !!