4) { while ($ads2 == $ads1) { $ads2 = rand(1, $slides); } } $ads3 = rand(1, $slides); if ($slides > 4) { while (($ads3 == $ads2) || ($ads3 == $ads1)) { $ads3 = rand(1, $slides); } } ?>
INF1771 - INTELIGÊNCIA ARTIFICIAL  
TRABALHO 3 APRENDIZADO DE MÁQUINA  
O objetivo do Trabalho 3 é desenvolver um sistema de reconhecimento de plantas  
através de imagens de folhas. O sistema deve receber como entrada a imagem de uma  
folha (como a mostrada na Figura 1) e ser capaz de identificar a espécie da planta a qual  
aquela folha pertence.  
Figura 1: Exemplo de folha que o sistema deve ser capaz de reconhecer.  
Para essa tarefa, você tem a disposição um conjunto de 1907 imagens de folhas de 32  
tipos diferentes de plantas. Esse conjunto de imagens foi criado pelos autores do artigo  
A Leaf Recognition Algorithm for Plant Classification Using Probabilistic Neural  
Network[1]. Esse artigo também apresenta o método utilizado pelos autores para  
realizar o processo de classificação, então é uma ótima fonte de informações para o  
desenvolvimento deste trabalho.  
As plantas que compõem o conjunto de imagens são as seguintes:  
ID Nome  
Arquivos  
1001-1059  
1060-1122  
1552-1616  
1123-1194  
1195-1267  
1268-1323  
1324-1385  
1386-1437  
1497-1551  
1438-1496  
2001-2050  
2051-2113  
2114-2165  
1
2
3
4
5
6
7
8
9
1
1
1
1
Pubescent Bamboo  
Chinese Horse Chestnut  
Anhui Barberry  
Chinese Redbud  
True Indigo  
Japanese Maple  
Nanmu  
Castor Aralia  
Chinese Cinnamon  
Goldenrain Tree  
Big-fruited Holly  
Japanese Cheesewood  
Wintersweet  
0
1
2
3
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
3
3
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
Camphortree  
2166-2230  
2231-2290  
2291-2346  
2347-2423  
2424-2485  
2486-2546  
2547-2612  
2616-2675  
3001-3055  
3056-3110  
3111-3175  
3176-3229  
3230-3281  
3282-3334  
3335-3389  
3390-3446  
3447-3510  
3511-3563  
3566-3621  
Japan Arrowwood  
Sweet Osmanthus  
Geodar  
Ginkgo  
Crepe Myrtle  
Oleander  
Yew Plum Pine  
Japanese Flowering Cherry  
Glossy Privet  
Chinese Toon  
Peach  
Ford Woodlotus  
Trident Maple  
Beale's Barberry  
Southern Magnolia  
Canadian Poplar  
Chinese Tulip Tree  
Tangerine  
Para desenvolver o sistema de reconhecimento de plantas você deve utilizar algum  
método de aprendizado de máquina supervisionado, visto que temos um conjunto  
rotulado de exemplos para treinamento (imagens). Para isso, você deve seguir os  
seguintes passos:  
1
) Definir quais serão os atributos que serão usados para descrever os exemplos de  
treinamento.  
2
) Criar um programa para extrair os atributos das imagens de forma a gerar um  
conjunto de treinamento e um conjunto de validação. Normalmente gera-se um  
único conjunto de dados e depois se divide ele em dois conjuntos (treinamento e  
validação). Cada imagem de folha será um exemplo de treinamento.  
3
) Utilizar 4 algoritmos de aprendizado supervisionado, treinando-os com o  
conjunto de treinamento e depois realizando classificação do conjunto de testes  
para verificar qual algoritmo apresenta a melhor taxa de reconhecimento. Devem  
ser utilizados os seguintes algoritmos:  
Árvores de Decisão  
K-Nearest Neighbor (KNN)  
Support Vector Machine (SVM)  
Rede Neural (usando backpropagation)  
Não é necessário programar os algoritmos, é permitida a utilização de  
ferramentas de aprendizado de máquina, como por exemplo, o Weka  
(
http://www.cs.waikato.ac.nz/ml/weka/).  
Se a taxa de reconhecimento estiver muito baixa para todos os algoritmos, deve-  
se retornar para a etapa 1 e selecionar melhor os atributos para descrever os  
exemplos de treinamento.  
4
) Escolher um dos 4 algoritmos e implementa-lo na linguagem de sua preferencia.  
Árvores de Decisão e KNN são os mais simples de serem implementados. No  
caso do SVM, é permitido o uso da biblioteca LibSVM (http://www.csie.ntu.e  
du.tw/~cjlin/libsvm/).  
Programa Base  
O programa base fornecido demonstra como alguns atributos podem ser extraídos das  
imagens de treinamento. Os atributos extraídos pelo programa base são:  
1
2
) Largura do retângulo englobante do maior objeto segmentado encontrado  
imagem.  
) Altura do retângulo englobante do maior objeto segmentado encontrado na  
imagem.  
3
4
5
) Perímetro do maior objeto segmentado encontrado na imagem.  
) Área do maior objeto segmentado encontrado na imagem.  
) momento invariante de Hu do maior objeto segmentado encontrado na  
imagem.  
6
7
8
9
1
1
) momento invariante de Hu do maior objeto segmentado encontrado na  
imagem.  
) momento invariante de Hu do maior objeto segmentado encontrado na  
imagem.  
) momento invariante de Hu do maior objeto segmentado encontrado na  
imagem.  
) momento invariante de Hu do maior objeto segmentado encontrado na  
imagem.  
0) momento invariante de Hu do maior objeto segmentado encontrado na  
imagem.  
1) momento invariante de Hu do maior objeto segmentado encontrado na  
imagem.  
O programa base está disponível no seguinte link:  
https://edirlei.com/aulas/ia_2013_1/Trabalho3ProgramaBase_2013_1.rar  
O programa base foi desenvolvido utilizando a biblioteca de visão computacional  
OpenCV (http://opencv.org/). Mais detalhes sobre o funcionamento do programa base e  
como utilizar o OpenCV serão apresentados durante a aula.  
Informações Adicionais:  
Durante a etapa de teste dos 4 algoritmos não é necessário implementar todos os  
classificadores para realizar os experimentos. É permitida a utilização de  
ferramentas de aprendizado de máquina, como por exemplo, o Weka  
(
http://www.cs.waikato.ac.nz/ml/weka/).  
O download das imagens de treinamento pode ser feito acessando o seguinte  
link:  
http://sourceforge.net/projects/flavia/files/Leaf%20Image%20Dataset/1.0/Leave  
s.tar.bz2/download  
Ou copiado durante as próximas aulas (tragam um pen drive com pelo menos 1  
GB livre).  
A divisão dos exemplos de treinamento e teste deve ser feita de forma aleatória.  
Normalmente 70% dos exemplos devem ser utilizados para treinamento e 30%  
para testes. Você deve garantir também que os exemplos de cada classe sejam  
distribuídos nestas mesmas proporções nos dois conjuntos.  
A implementação de um dos algoritmos pode ser feita em qualquer linguagem  
(
C/C++, C#, Java...), mas aconselha-se utilizar a linguagem C/C++ usando o  
programa base para ler a imagem e realizar a classificação.  
Você deve decidir quais atributos serão utilizados pelos classificadores. A  
classificação pode piorar ou melhorar dependendo do conjunto de atributos  
utilizado. Os atributos extraídos pelo programa base são apenas exemplos de  
atributos que podem ser extraídos. Você deve escolher quais atributos serão  
utilizados e fazer testes para verificar qual conjunto de atributos apresenta  
melhores resultados.  
Para se conseguir melhores resultados será necessário extrair mais características  
das imagens de treinamento. O programa base extrai apenas algumas  
características estruturais, mas existem muitas outras informações uteis que  
podem ser extraídas computacionalmente das imagens.  
Forma de Avaliação:  
Será avaliado se todas as etapas do processo foram cumpridas corretamente. A  
avaliação também será baseada na apresentação dos resultados durante a aula.  
Essa apresentação deverá conter:  
Descrição da modelagem dos exemplos de treinamento:  
o Atributos selecionados para descrever os exemplos;  
o Justificativa para a escolha dos atributos;  
o Estrutura dos exemplos;  
Descrição dos experimentos realizados:  
o Variações na modelagem dos exemplos;  
o Variações no conjunto treinamento e testes;  
o Variação nos parâmetros dos algoritmos;  
Comparação dos algoritmos analisados:  
o Taxa de reconhecimento;  
o Tempo gasto no processo de treinamento;  
o Tempo gasto no processo de classificação de um exemplo desconhecido;  
Implementação:  
o Descrição de como o algoritmo escolhido foi implementado;  
o Resultados alcançados pelo algoritmo que foi implementado (tempo  
gasto no processo de treinamento, tempo gasto no processo de  
classificação de um exemplo desconhecido, taxa de reconhecimento).  
Bônus:  
O trabalho que conseguir uma taxa de reconhecimento acima de 91% receberá  
2
.0 pontos extras na nota.  
O trabalho que implementar uma Rede Neural ou SVM sem utilizar nenhuma  
biblioteca externa receberá 2.0 pontos extras na nota.  
Data de Entrega:  
1/07  
0
Forma de Entrega:  
Os trabalhos devem ser apresentados na aula do dia 01/07 (segunda) e 03/07 (quarta).  
Todos devem enviar o trabalho até o dia 03/07 para o email edirlei.slima@gmail.com.  
Não serão aceitos trabalhos enviados depois desta data.  
Referências:  
1] Stephen Gang Wu, Forrest Sheng Bao, Eric You Xu, Yu-Xuan Wang, Yi-Fan Chang  
[
and Qiao-Liang Xiang. A Leaf Recognition Algorithm for Plant classification Using  
Probabilistic Neural Network. In: IEEE 7th International Symposium on Signal  
Processing and Information Technology, 2007. http://arxiv.org/pdf/0707.4289.pdf