3.3 Revisão de Características
6.2.3 Extrator de Características
Este módulo é responsável por extrair, a partir de imagens de palavras segmentadas na forma de arquivos PNG (Portable Network Graphics), valores numéricos corres- pondentes às características exploradas neste trabalho. Este formato foi escolhido
por ser o mesmo presente no banco de dados público utilizado nos experimentos. O resultado desse processo é o armazenamento das seguintes informações para cada patch:
• Valores numéricos normalizados de todas as características; • Classe correspondente (manuscrito ou impresso);
• No caso de impressos, tipo de fonte (Times New Roman, Calibri, etc) e variação (normal, negrito ou itálico);
• Índice para separação dos dados em folds conforme será detalhado nos expe- rimentos (Capítulo 7).
Nesta proposta, adotamos 52 das características descritas no Capítulo 3. São elas: 1. Proporção de Aspecto (CAS1);
2. Razão entre a Zona Ascendente e o Corpo Principal (CAS2);
3. Razão entre a Zona Descendente e o Corpo Principal (CAS3);
4. Razão entre a Área e o Valor Máximo da Projeção Horizontal do Perfil Superior- Inferior (CP R1);
5. Variação da Projeção Vertical (CP R2);
6. Maior Diferença de Projeção Horizontal (CP R3);
7. Densidade Geral (CDE1);
8. Distribuição de Pixels (CDE2);
9. Razão entre Pontos da Linha Inferior e a Largura (CDE3);
10. Soma das Razões de Pixels de Cada Linha pela Largura (CDE4);
11. Razão entre o Maior Contorno Vertical e a Altura (CSE1);
12. Razão entre a Soma dos Comprimentos dos Contornos Verticais e a Área (CSE2);
13. Comprimento de Caminho Horizontal Máximo (CSE3);
14. Comprimento de Caminho Médio (CSE4);
16. Transições Verticais (CT R2);
17. Número de Pontos Máximos do Perfil Superior (CP E1);
18. Número de Pontos Mínimos do Perfil Superior (CP E2);
19. Número de Pontos Máximos do Perfil Inferior (CP E3);
20. Número de Pontos Mínimos do Perfil Inferior (CP E4);
21. Máximo Normalizado dos Pontos Máximos do Perfil Superior (CP E5);
22. Máximo Normalizado dos Pontos Mínimos do Perfil Superior (CP E6);
23. Máximo Normalizado dos Pontos Máximos do Perfil Inferior (CP E7);
24. Máximo Normalizado dos Pontos Mínimos do Perfil Inferior (CP E8);
25. Mínimo Normalizado dos Pontos Máximos do Perfil Superior (CP E9);
26. Mínimo Normalizado dos Pontos Mínimos do Perfil Superior (CP E10);
27. Mínimo Normalizado dos Pontos Máximos do Perfil Inferior (CP E11);
28. Mínimo Normalizado dos Pontos Mínimos do Perfil Inferior (CP E12);
29. Média Normalizada dos Pontos Máximos do Perfil Superior (CP E13);
30. Média Normalizada dos Pontos Mínimos do Perfil Superior (CP E14);
31. Média Normalizada dos Pontos Máximos do Perfil Inferior (CP E15);
32. Média Normalizada dos Pontos mínimos do Perfil inferior (CP E16);
33. Desvio Padrão dos Pontos Máximos do Perfil Superior (CP E17);
34. Desvio Padrão dos Pontos Mínimos do Perfil Superior (CP E18);
35. Desvio Padrão dos Pontos Máximos do Perfil Superior (CP E19);
36. Desvio Padrão dos Pontos Mínimos do Perfil Superior (CP E20);
37. Máximo Normalizado do Vetor de Diferenças de Máximos Superiores (CP E21);
38. Máximo Normalizado do Vetor de Diferenças de Mínimos Superiores (CP E22);
39. Máximo Normalizado do Vetor de Diferenças de Máximos Inferiores (CP E23);
41. Mínimo Normalizado do Vetor de Diferenças de Máximos Superiores (CP E25);
42. Mínimo Normalizado do Vetor de Diferenças de Mínimos Superiores (CP E26);
43. Mínimo Normalizado do Vetor de Diferenças de Máximos Inferiores (CP E27);
44. Mínimo Normalizado do Vetor de Diferenças de Mínimos Inferiores (CP E28);
45. Média do Vetor de Diferenças de Máximos Superiores (CP E29);
46. Média do Vetor de Diferenças de Máximos Inferiores (CP E30);
47. Média do Vetor de Diferenças de Mínimos Superiores (CP E31);
48. Média do Vetor de Diferenças de Mínimos Inferiores (CP E32);
49. Desvio Padrão do Vetor de Diferenças de Máximos Superiores (CP E33);
50. Desvio Padrão do Vetor de Diferenças de Máximos Inferiores (CP E34);
51. Desvio Padrão do Vetor de Diferenças de Mínimos Superiores (CP E35);
52. Desvio Padrão do Vetor de Diferenças de Mínimos Inferiores (CP E36).
O processo de extração de características promove ainda a binarização e normali- zação do banco de imagens. A binarização resulta na redução de dados a serem tratados, facilitando a extração de características. A normalização, por sua vez, garante uma maior homogeneidade em relação ao tamanho dos patches;
Desta forma, todas as características são extraídas a partir de imagens em branco e preto com 75 pixels de altura e largura proporcional. A altura de normalização dos patches foi definida em função da média de alturas conforme será detalhado do Capítulo 7.
O Extrator de Características providencia ainda a normalização dos valores numé- ricos de características extraídos a partir dos patches. Esta segunda normalização é necessária em decorrência da natureza das diversas características que as posici- ona em escalas de valores, muitas vezes, bastante diferentes. Esse processo ocorre segundo a seguinte expressão:
xnorm =
x − xmin
xmax− xmin
Sendo xnorm o valor normalizado calculado sobre o valor original x e xmin e xmax são
os valores mínimo e máximo do conjunto de dados. O resultado da normalização retornará valores de características entre 0 e 1.
6.2.4 Seletor de Características
Outro elemento importante é o Seletor de Características. Este módulo faz uso de um Algoritmo Genético binário para otimizar o resultado de classificação. A cada geração, o Seletor de Características submete a solução atual, ou seja, um cromossomo binário de tamanho igual ao número de características implementadas, ao Módulo Avaliador que retorna o erro de classificação obtido e verifica se o critério de parada foi atingido.
6.2.5 Avaliador
O Módulo Avaliador trabalha em conjunto com o Seletor de Características rece- bendo como parâmetro, a cada geração do AG, o cromossomo binário que identifica as características a serem consideradas em seu processo interno de classificação (seja usando kNN ou Redes Neurais). A relação entre o cromossomo binário e identifica- ção das característica selecionadas pode ser vista na Figura 6.3:
Figura 6.3: Relação entre cromossomo e características selecionadas
Sendo cada alelo binário e Gi o gene no locus i, sempre que o mesmo assumir valor
igual a 0 (zero) o Módulo Avaliador entenderá que a característica de igual posição não deverá ser considerada e, desta forma, não recuperá seus valores. No exemplo da imagem acima, C3, C5 e C8 ficariam desativadas e não seriam utilizadas para obtenção do erro de classificação. Este módulo trabalha então como Função de Avaliação para o Algoritmo Genético que recebe a taxa de erro de classificação do mesmo como parâmetro de minimização a cada nova geração.
6.3 Arquitetura de Testes
Na fase de teste verificamos se, com a melhor solução apontada na fase de treina- mento, o erro de classificação se comporta de maneira semelhante para um conjunto
de dados diferente fazendo novamente uso de classificadores kNN e Redes Neurais. Os resultados desta etapa podem demonstrar a hipótese de que os resultados obti- dos, após o processo de redução de dimensionalidade, devam ser iguais ou melhores aos obtidos sem seleção de características. Para este fim, fazemos uso da seguinte arquitetura:
Figura 6.4: Arquitetura de Teste
Como vimos, ao compor a base de dados normalizados, uma parte dos dados (1 10) é isolada do processo de seleção de características para uso na etapa de teste. Os dados de teste (1) devem ser obtidos de maneira aleatória e igualmente distribuídas entre manuscritos e impressos a partir do total de dados disponíveis.
Na Figura 6.4 observamos que, na etapa de teste, fazemos uso de um classificador (3) que recebe como parâmetro, além de dados de teste, o resultado da etapa de treinamento, ou seja, o cromossomo binário que representa a melhor solução após o processo de otimização com AG (2).
Na etapa de teste, o classificador faz dois treinamentos. No primeiro, utiliza o cromossomo binário e filtra apenas as características selecionadas (com os genes correspondentes a cada característica iguais a 1). No segundo, realiza o treinamento utilizando todas as características implementadas. Este processo é feito com os dois tipos de classificadores utilizados na etapa de treinamento (kNN e Rede Neural). Os resultados (4) das duas situações (com e sem seleção de características) são então armazenados para análise e comparação.
7 Experimentos e Resultados
7.1 Apresentação
Este capítulo detalha os experimentos realizados neste trabalho. Inicialmente apre- sentamos a estrutura do programa desenvolvido de modo a associar seus módulos à arquitetura proposta no Capítulo 6. Em seguida, tratamos da construção da base de dados abordando questões como origem dos dados, resolução e normalização além da variação de fontes e estilos (para o caso de patches impressos).
Dando continuidade, detalhamos a parametrização utilizada para realização dos tes- tes e o uso da validação cruzada K-fold como técnica para verificação da capacidade de generalização do modelo. Concluímos com a apresentação dos resultados obtidos fazendo uso dos classificadores kNN e Redes Neurais MLP e com a apresentação de alguns experimentos complementares.
7.2 Estrutura do Programa
Para codificação dos experimentos, fizemos uso da ferramenta MATLAB1 através da sua toolbox para processamento de imagens. A escolha desta ferramenta se deu por sua praticidade, facilidade de uso além da grande comunidade de usuários e vasta documentação disponível. O programa desenvolvido está organizado em 10 scripts ".m" que implementam diversas funções. São eles:
• segmentation_tool.m: Faz a segmentação de imagens de documentos im- pressos em patches. Utilizado para construção do banco de dados de impressos; • get_average_dim.m: Calcula as médias de alturas e larguras a partir das dimensões de todos os patches. Estes valores são utilizados como parâmetro para normalização dos patches durante o processo de extração de característi- cas;
1MATLAB (MATrix LABoratory) é um software interativo da empresa Mathworks que integra
análise numérica, cálculo com matrizes, processamento de sinais e construção de gráficos em ambiente integrado e voltado ao uso científico. A versão utilizada foi a R2012a de 64bits.
• features_extractor.m: Extrai características de um único patch. Recebe como entrada o caminho físico do patch e retorna um array com valores de características normalizadas entre 0 e 1;
• features_persist.m: Persiste em disco os valores numéricos corresponden- tes às características extraídas de cada patch além de suas respectivas classes, fontes e estilos (no caso de impressos), índices que serão utilizados para vali- dação k-fold e nomes dos respectivos arquivos. Produz como saída o arquivo persisted_data.mat.
• hidden_size_identifier.m: Script utilizado para definir experimentalmente o número de neurônios da camada escondida para parametrização das Redes Neurais que serão treinadas no experimento.
• fitness_knn.m e fitness_rna.m: Implementações das funções de avali- ação para o Algoritmo Genético utilizando, respectivamente, kNN e Redes Neurais. Recebem cromossomos binários e retornam os erros de classificação para cada geração do AG;
• features_filter.m: Implementa filtro de características. Recebe um cro- mossomo binário e retorna, a partir dos dados persistidos, apenas os valores de características ativadas, ou seja, aquelas cujo o gene correspondente no cromossomo possuir valor igual a 1;
• main_knn.m e main_Rna: Executam o fluxo principal do script utili- zando, respectivamente, kNN e Redes Neurais como classificador. Realizam chamadas às demais funções e gerenciam a execução do Algoritmo Genético. São também responsáveis pela implementação da Validação Cruzada K-fold.