TCC Ia 6

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 74

UNIVERSIDADE DE SÃO PAULO

Instituto de Ciências Matemáticas e de Computação

Departamento de Sistemas de Computação

Sistema de Identificação e Classificação de Mudas


de Plantas para Controle de Pragas em Plantações

Victor Rozzatti Tornisiello

[Nome do Aluno]

São Carlos – SP
Julho/2020
Sistema de Identificação e Classificação de
Mudas de Plantas para Controle de Pragas em
Plantações

Victor Rozzatti Tornisiello

Orientador: Fernando Santos Osório

Monografia referente ao projeto de conclusão de


curso dentro do escopo da disciplina SSC0670 do
Departamento de Sistemas de Computação do
Instituto de Ciências Matemáticas e de
Computação – ICMC-USP para obtenção do
título de Bacharel em Engenheiro(a) de
Computação.

Área de Concentração: Redes Neurais Artificiais


e Aprendizado Profundo.

USP – São Carlos


Julho/2020
Agradecimentos

À Universidade de São Paulo, à Escola de Engenharia de São Carlos e ao Instituto de


Ciências Matemáticas e de Computação e todos seus colaboradores, pela estrutura e ensino
fornecidos no decorrer da graduação, de excelente qualidade.
Ao Prof. Dr. Fernando Santos Osório pela orientação e por todo o apoio fornecido
durante a graduação e o desenvolvimento deste projeto, desde a formulação de sua proposta até
a redação da presente monografia.
Aos meus pais, Marcos e Raquel, pelo incentivo, confiança e apoio constantes durante
todos estes anos, que suavizaram todas as dificuldades enfrentadas nesta trajetória e sem os
quais nada disto seria possível.
Resumo

O presente texto descreve o estudo da implementação de um modelo de deep learning


para a identificação e classificação de mudas de plantas, tornando possível a distinção entre
mudas de plantas e ervas daninhas em uma colheita e buscando uma solução para a remoção de
pragas em plantações de forma autônoma. Foram propostos modelos de redes neurais
convolucionais profundas em conjunto com técnicas de transfer learning, ensemble learning e
data augmentation, e realizados diversos testes adotando diferentes abordagens no treinamento
dos modelos, utilizando uma base de dados pública disponibilizada na internet composta por
milhares de imagens de mudas de plantas de doze espécies diferentes. Para cada abordagem
adotada, foram realizadas predições sobre um conjunto de dados separado da base de dados
original e cada um dos resultados obtidos foi analisado. Baseando-se nestas análises, foram
feitas modificações gradativas no treinamento visando a melhoria de desempenho, até a
obtenção do resultado final, de 98,56% de acurácia.

Palavras-chave: Classificação. Machine learning. Deep learning.


Sumário

CAPÍTULO 1: INTRODUÇÃO ............................................................................................. 10


1.1. Contextualização e Motivação ............................................................................ 10
1.2. Objetivos .............................................................................................................. 11
1.3. Organização do Trabalho .................................................................................... 11
CAPÍTULO 2: REVISÃO BIBLIOGRÁFICA ........................................................................ 12
2.1. Machine Learning .................................................................................................... 12
2.1.1. Deep Learning ................................................................................................... 12
2.1.2. Redes Neurais ................................................................................................... 13
2.1.3. Redes Neurais Convolucionais ........................................................................ 15
2.2. Transfer Learning .................................................................................................... 19
2.2.1. Inception ResNet v2 .......................................................................................... 20
2.3. Ensemble Learning ................................................................................................. 22
2.3.1. Snapshot Ensemble .......................................................................................... 23
CAPÍTULO 3: DESENVOLVIMENTO .................................................................................. 25
3.1. Considerações Iniciais............................................................................................ 25
3.2. Projeto ...................................................................................................................... 25
3.2.1. Base de Dados .................................................................................................. 26
3.2.2. Modelos ............................................................................................................. 32
3.2.3. Pré-Processamentos ........................................................................................ 35
3.2.4 Descrição das Atividades Realizadas .............................................................. 38
3.3. Resultados Obtidos e Discussões ......................................................................... 43
3.3.1. Resultados da Classificação Utilizando Modelo Próprio ............................... 43
3.3.2. Resultados da Classificação Utilizando Transfer Learning ........................... 55
CAPÍTULO 4: CONCLUSÃO .............................................................................................. 70
4.1. Dificuldades e Limitações....................................................................................... 71
4.2. Trabalhos Futuros ................................................................................................... 72
REFERÊNCIAS ................................................................................................................... 73
Lista de Figuras

Figura 1: Comparação das técnicas de machine learning convencional (esquerda) e deep


learning (direita) na categorização de veículos. ....................................................................... 13

Figura 2: Arquitetura de uma rede neural tradicional............................................................... 14

Figura 3: Operação de Convolução com filtro de tamanho 3x3. .............................................. 15

Figura 4: À esquerda, a imagem original. À direita, a imagem resultante após a convolução. 16

Figura 5: Operação de Max Pooling com filtro de tamanho 2x2. ............................................ 17

Figura 6: Montagem feita a partir de imagens coletadas do site Codelabs. À esquerda, a imagem
após a aplicação de uma operação de convolução. À direita, a imagem resultante após a
aplicação de Max Pooling......................................................................................................... 17

Figura 7: Ilustração do funcionamento de uma CNN. .............................................................. 19

Figura 8: Módulo Inception, versão Naive ............................................................................... 21

Figura 9: Conexão Residual ..................................................................................................... 22

Figura 10: Esquerda: ilustração da otimização SGD utilizando taxa de aprendizado programada
convencional. Direita: utilizando a técnica Snapshot Ensemble. ............................................. 23

Figura 11: Curva da taxa de aprendizado durante o treinamento, seguindo o comportamento da


função Cyclic Cosine Annealing. ............................................................................................. 24

Figura 12: Mudas de Black-grass em três diferentes estágios de crescimento. ........................ 27

Figura 13: Mudas de Charlock em três diferentes estágios de crescimento. ............................ 28

Figura 14: Mudas de Cleavers em três diferentes estágios de crescimento.............................. 28

Figura 15: Mudas de Common Chickweed em três diferentes estágios de crescimento. ......... 28

Figura 16: Mudas de Common Wheat em três estágios diferentes de crescimento. ................ 29

Figura 17: Mudas de Fat Hen em três diferentes estágios de crescimento. .............................. 29

Figura 18: Mudas de Loose Silky-bent em três diferentes estágios de crescimento. ............... 29

Figura 19: Mudas de Maize (milho) em três diferentes estágios de crescimento. ................... 30

Figura 20: Mudas de Scentless Mayweed em três diferentes estágios de crescimento. ........... 30
Figura 21: Mudas de Shepherd's Purse em três diferentes estágios de crescimento. ............... 30

Figura 22: Mudas de Small-flowered Cranesbill em três diferentes estágios de crescimento. 31

Figura 23: Mudas de Sugar beet em três diferentes estágios de crescimento........................... 31

Figura 24: Arquitetura do modelo de CNN desenvolvido pelo autor. ...................................... 33

Figura 25: Arquitetura do modelo com transfer learning. ....................................................... 34

Figura 26: Imagens de muda de Maize (milho) geradas a partir de uma imagem original. Da
esquerda para a direita, a imagem foi rotacionada, refletida horizontalmente e deslocada
horizontalmente. ....................................................................................................................... 36

Figura 27: Etapas da segmentação. Da esquerda para a direita temos a imagem original, a
máscara gerada a partir dela e a imagem segmentada. ............................................................. 37

Figura 28: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
weed versus seed com modelo proposto na Figura 24. ............................................................ 43

Figura 29: Curvas de perda obtidas nas etapas de treinamento e validação na classificação weed
versus seed com modelo proposto na Figura 24. ...................................................................... 44

Figura 30: Matriz de Confusão das predições realizadas na classificação weed versus seed com
modelo proposto na Figura 24. ................................................................................................. 45

Figura 31: Curvas de acurácia das etapas de treinamento e validação na classificação


multiclasses, com o modelo proposto na Figura 24. ................................................................ 46

Figura 32: Curvas de perda das etapas de treinamento e validação na classificação multiclasses,
com o modelo proposto na Figura 24. ...................................................................................... 46

Figura 33: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24 e com utilização de data augmentation. . 49

Figura 34: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24 e com utilização de data augmentation. . 49

Figura 35: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24 e com utilização de data augmentation em
tempo real. ................................................................................................................................ 50

Figura 36: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24 e com utilização de data augmentation em
tempo real. ................................................................................................................................ 51
Figura 37: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24, base de dados balanceada e utilização de
data augmentation em tempo real. ........................................................................................... 52

Figura 38: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24, base de dados balanceada e utilização de
data augmentation em tempo real. ........................................................................................... 52

Figura 39: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24, utilização de data augmentation em tempo
real e as imagens segmentadas. ................................................................................................ 53

Figura 40: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24, utilização de data augmentation em tempo
real e as imagens segmentadas. ................................................................................................ 54

Figura 41: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
weed versus seed, com transfer learning. ................................................................................ 55

Figura 42: Curvas de perda obtidas nas etapas de treinamento e validação na classificação weed
versus seed, com transfer learning. .......................................................................................... 56

Figura 43: Matriz de Confusão das predições realizadas na classificação weed versus seed, com
transfer learning. ...................................................................................................................... 57

Figura 44: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com transfer learning. ........................................................................................ 58

Figura 45: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com transfer learning. ........................................................................................ 58

Figura 46: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning, após o fine-tuning............................................................ 59

Figura 47: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning, após o fine-tuning............................................................ 59

Figura 48: Matriz de Confusão das predições realizadas na classificação multiclasse com
transfer learning, após o fine-tuning. ....................................................................................... 60

Figura 49: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
weed versus weed com transfer learning. ................................................................................ 62

Figura 50: Curvas de perda obtidas nas etapas de treinamento e validação na classificação weed
versus weed com transfer learning. ......................................................................................... 62
Figura 51: Matriz de Confusão das predições realizadas na classificação weed vs weed com
transfer learning. ...................................................................................................................... 63

Figura 52: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble......................................................... 64

Figura 53: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble......................................................... 64

Figura 54: Matriz de confusão das predições realizadas na classificação multiclasses com
transfer learning e snapshot ensemble. .................................................................................... 65

Figura 55: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble, utilizando data augmentation em
tempo real. ................................................................................................................................ 66

Figura 56: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble, utilizando data augmentation em
tempo real. ................................................................................................................................ 66

Figura 57: Matriz de confusão das predições realizadas na classificação multiclasses com
transfer learning e snapshot ensemble, utilizando data augmentation em tempo real. ........... 67

Figura 58: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble, utilizando data augmentation em
tempo real e taxa de aprendizado inicial de 0,01. ..................................................................... 68

Figura 59: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble, utilizando data augmentation em
tempo real e taxa de aprendizado inicial de 0,01. ..................................................................... 68

Figura 60: Matriz de confusão das predições realizadas na classificação multiclasses com
transfer learning e snapshot ensemble, utilizando data augmentation em tempo real e taxa de
aprendizado inicial de 0,01. ...................................................................................................... 69
10

CAPÍTULO 1: INTRODUÇÃO

1.1. Contextualização e Motivação

A demanda global por recursos de natureza agrícola aumentou muito nos últimos anos.
Os métodos tradicionais de produção não são mais suficientes para suprir essa demanda e
acompanhar as exigências do mercado, que precisa de produções cada vez maiores e que
forneçam resultados cada vez mais rápidos. Além disso, com o desenvolvimento tecnológico,
cada vez menos pessoas passaram a trabalhar nos campos, o que diminuiu muito a quantidade
de mão-de-obra disponível para a produção agrícola.
Uma das soluções adotadas para estes problemas é a utilização de robôs móveis
autônomos terrestres e aéreos para a coleta de dados e a realização de tarefas, antes realizadas
por trabalhadores humanos, em todo o processo produtivo, desde a etapa de tratamento do solo
e plantio até a etapa de colheita e armazenamento da produção.
Dito isto, uma das possíveis tarefas de serem realizadas é o controle de pragas em
plantações, que traria muitos benefícios em relação à forma como este controle é normalmente
feito - os métodos tradicionais de pulverização, que utilizam aviões e tratores para dispersar
grandes volumes de agrotóxicos sobre a plantação, causam muito desperdício e são nocivos ao
meio ambiente.
Porém, utilizando técnicas de deep learning e visão computacional em conjunto com a
robótica autônoma, é possível realizar este controle localmente através da identificação e
classificação de diferentes tipos de ervas daninhas, tornando possível a pulverização ou
remoção mecânica local, reduzindo significativamente o desperdício de agrotóxicos e, ao
mesmo tempo, evitando a poluição ambiental. Este tipo de abordagem é a que chamamos de
“Agricultura de Precisão”. Isto torna esta aplicação muito interessante tanto do ponto de vista
do produtor, que terá seus gastos reduzidos, quanto do ponto de vista ambiental e do
consumidor, que terá acesso a produtos mais saudáveis.
Assim, o presente projeto pode contribuir para o estudo e desenvolvimento de um
reconhecedor e classificador de ervas daninhas que eventualmente possa ser utilizado, em
conjunto com um robô móvel autônomo, para a remoção local de pragas em plantações.
11

1.2. Objetivos

O objetivo deste projeto é desenvolver um classificador capaz de classificar imagens de


diferentes espécies de mudas de plantas, buscando obter o mais alto desempenho possível em
termos de acurácia. Dessa forma, seria possível diferenciar com precisão as plantas pertencentes
a uma determinada colheita das ervas daninhas presentes na plantação, bem como identificar
espécies específicas de ervas daninhas, possibilitando que a melhor estratégia seja adotada para
o controle de cada uma delas. É considerado que para a base de dados utilizada [2],
performances acima de 90% de acerto nas predições realizadas são bastante adequadas, em
comparação com outros resultados obtidos utilizando a referida base de dados, que podem ser
encontrados em [14].
Mais especificamente, serão treinados modelos de deep learning utilizando a referida
base de dados, do tipo crop versus weed e composta por imagens de mudas de plantas de
espécies distintas, buscando comparar diferentes abordagens de aprendizado como o
aprendizado completo, aprendizado por transferência (transfer learning) e aprendizado em
conjunto (ensemble learning), realizando pré-processamentos nos dados baseados em
processamento de imagens e utilizando técnicas como data augmentation e fine-tuning durante
os treinamentos.
Estes diferentes testes e comparações devem permitir verificar e definir qual a melhor
abordagem a ser adotada em relação à aplicação proposta, de forma que esta possa servir de
referência para a resolução de problemas mais complexos pertencentes ao mesmo domínio de
aplicação.

1.3. Organização do Trabalho

No Capítulo 2 é apresentada uma revisão da terminologia e conceitos básicos utilizados


no projeto, bem como os trabalhos da literatura relacionados ao presente projeto. Em seguida,
no Capítulo 3, descrevem-se as atividades realizadas. Finalmente, no Capítulo 4, apresentam-
se as conclusões e trabalhos futuros.
12

CAPÍTULO 2: REVISÃO BIBLIOGRÁFICA

2.1. Machine Learning

De acordo com [10], aprendizado de máquina ou machine learning é uma técnica que
busca ensinar máquinas a realizar tarefas normalmente desempenhadas por seres humanos,
através da análise de dados e do aprendizado por experiência. Os algoritmos de aprendizado de
máquina conseguem aprender as informações diretamente dos dados, sendo pouco dependentes
da intervenção humana e melhoram seus desempenhos proporcionalmente à quantidade de
dados fornecida. Eles normalmente se baseiam em dois tipos distintos de aprendizado: o
aprendizado supervisionado e o aprendizado não supervisionado.
No primeiro, são utilizados exemplos já rotulados para gerar um preditor capaz de
reconhecer os rótulos de novos exemplos. Assim, os modelos são preditivos e utilizam tanto os
dados de entrada quanto os dados de saída para aprender – são normalmente utilizados para
resolver problemas de classificação e regressão. No segundo, os modelos são descritivos e
utilizam apenas os dados de entrada para aprender – são utilizados para tarefas de agrupamento.
Neste projeto, em se tratando de uma tarefa de classificação, serão utilizadas técnicas
de deep learning, um tipo especializado de aprendizado de máquina supervisionado, para a
solução do problema.

2.1.1. Deep Learning

Segundo [11], deep learning é uma técnica de aprendizado de máquina supervisionado


que utiliza modelos computacionais para realizar tarefas – normalmente de classificação –
diretamente a partir de imagens, textos ou som, com desempenhos superiores às obtidas por
seres humanos em alguns casos.
A principal diferença entre o aprendizado profundo e o aprendizado de máquina
convencional é que, nas técnicas de machine learning comuns, as características relevantes dos
dados de entrada devem ser manualmente extraídas e posteriormente fornecidas a um modelo
que conseguirá utilizá-las para realizar tarefas. Já os modelos de deep learning conseguem
extrair essas características automaticamente a partir de dados não tratados, com o mínimo de
pré-processamento possível. Assim, os modelos de deep learning executam o chamado end-to-
end learning, onde são fornecidos ao modelo dados não tratados e uma tarefa específica – como
13

classificação – e ele aprende a realizá-la automaticamente. A Figura 1 ilustra ambas as


abordagens.

Figura 1: Comparação das técnicas de machine learning convencional (esquerda) e deep


learning (direita) na categorização de veículos. Fonte: https://bit.ly/3auBDEx.

Atualmente, os modelos de deep learning conseguem obter os melhores desempenhos


possíveis em termos de acurácia em relação às outras técnicas de aprendizado de máquina e,
por isso, são amplamente utilizados em diversas aplicações [11]. Porém, apesar de todos estes
pontos positivos, o custo de treinamento de um modelo profundo é muito alto: são necessárias
grandes quantidades de dados rotulados de boa qualidade e um grande poder computacional
para realizar todos os cálculos necessários no treinamento, que pode levar semanas para ser
concluído. Foram por estes motivos que, apesar de os estudos sobre deep learning terem
iniciado na década de 1980, sua utilização se tornou viável somente recentemente, com o
advento de GPU’s, Clusters e computação em nuvem.

2.1.2. Redes Neurais

A grande maioria dos modelos de deep learning são redes neurais convolucionais.
Porém, antes de entrar em detalhes sobre elas, é importante saber como funcionam as redes
neurais tradicionais. Elas são modelos computacionais inspirados no sistema nervoso humano
que adquirem conhecimento através da experiência. Sua estrutura é composta de várias camadas
contendo unidades chamadas de neurônios artificiais, que são interligados entre si por conexões
ponderadas. A Figura 2 ilustra a arquitetura de uma rede neural tradicional (rede neural rasa,
com poucas camadas de neurônios artificiais).
14

Figura 2: Arquitetura de uma rede neural tradicional. Fonte: https://bit.ly/3atx4KN.

Como é possível observar, ela é composta por uma camada de entrada, uma camada de
saída e uma ou mais camadas escondidas, todas elas contendo vários neurônios artificiais
interligados. Estas camadas são chamadas de camadas totalmente conectadas. A cada conexão
é atribuído um valor, chamado de peso, e cada um dos neurônios é responsável por realizar o
somatório de suas entradas, ponderadas pelas suas respectivas conexões, aplicá-lo a uma função
de ativação e propagar o resultado adiante. Além disso, os neurônios também devem possuir
um valor chamado de bias, que tem a função de ajustar o valor da ativação da saída do neurônio
e deve ser considerado nos cálculos.
O funcionamento de uma rede neural tradicional se dá em duas etapas. Na primeira
etapa, chamada de feed-forward, são fornecidos dados de entrada sobre os quais são realizados
cálculos e propagados os resultados, conforme descrito anteriormente, até a saída. Na segunda
etapa, chamada de backpropagation, é onde ocorre o aprendizado do modelo: dadas uma saída
obtida e uma saída desejada, caso a diferença entre ambas seja menor do que uma tolerância, é
considerado que o aprendizado ocorreu; caso contrário, os pesos das conexões da rede são
reajustados, visando diminuir a diferença, ou seja, o erro da resposta, até o valor de tolerância
estipulado.
Essa diferença é o erro total da rede e é uma função de custo a ser minimizada, buscando
melhorar o aprendizado do modelo.
15

2.1.3. Redes Neurais Convolucionais

As redes neurais convolucionais (Convolutional Neural Networks - CNN) são redes


profundas normalmente com muito mais camadas do que as redes neurais tradicionais, que
tipicamente possuem no máximo 2 ou 3 camadas escondidas. A principal característica de uma
CNN é que ela consegue aprender a extrair e detectar as características pertencentes a um
determinado objeto e, com isso, consegue identificar este tipo de objeto em qualquer imagem,
independente das cores, do fundo, e de sua posição e orientação, o que faz com ela tenha uma
excelente capacidade de generalização e dispensa a necessidade de extração manual de features
(características/atributos).

2.1.3.1. Convolução

Para aprender estas características, são utilizadas camadas chamadas de Camadas


Convolucionais que realizam operações de convolução sobre os dados de entrada. Na
convolução, um filtro de tamanho arbitrário é iterado sobre a imagem e o resultado de cada
iteração é dado pela multiplicação entre os pixels cobertos pelo filtro e os valores presentes no
filtro em suas posições correspondentes. A Figura 3 ilustra uma operação de convolução com
um filtro de tamanho 3×3.

Figura 3: Operação de convolução com filtro de tamanho 3×3. Fonte: O autor.

Na figura, o resultado da convolução é dado pelo somatório de todos os pixels


multiplicados pelos pesos nas posições correspondentes do filtro. Assim, o valor do pixel
resultante é dado por 130×0 + 64×1 + 23×0 – 0×1 + 21×1 – 7×1 + 210×0 + 87×1 + 36×0 = 144.
16

Através da alteração dos pesos e do tamanho, é possível criar filtros que extraiam
características específicas da imagem como linhas horizontais, verticais, cantos e etc., que serão
aprendidas pelo modelo e ajudarão na distinção entre as amostras. Além disso, a convolução
também diminui a quantidade de informações necessárias para o treinamento, já que apenas as
características extraídas com propriedades mais locais serão utilizadas, ao invés da imagem
inteira. A Figura 4 ilustra uma operação de convolução onde as linhas verticais de uma imagem
são destacadas, devido à aplicação de um filtro específico.

Figura 4: À esquerda, a imagem original. À direita, a imagem resultante após a convolução.


Fonte: https://bit.ly/3kRlIoI.

2.1.3.2. Pooling

Além da operação de convolução, outra operação presente em todas as CNN’s é a de


Pooling. Na operação de Pooling, um filtro de tamanho arbitrário é iterado sobre a imagem
original e os pixels da imagem resultante são construídos baseando-se no valor dos pixels
cobertos pelo filtro em cada iteração.
Existem diferentes tipos de Pooling, mas os mais comuns são o Average Pooling e o
Max Pooling. No primeiro, a média aritmética dos pixels cobertos pelo filtro é calculada e
atribuída ao pixel correspondente na nova imagem. No segundo, o maior valor dentre os pixels
cobertos pelo filtro é tomado.
Qualquer que seja o tipo, o objetivo desta operação é reduzir a quantidade de informação
presente em uma imagem ao mesmo tempo em que mantém suas características inalteradas.
Assim, as operações de Pooling são executadas sempre após uma operação de convolução,
sobre as características extraídas da imagem original.
17

A Figura 5 abaixo ilustra a execução de uma operação de Max Pooling e a Figura 6


mostra o resultado de uma operação de Max Pooling aplicada à imagem resultante da
convolução na Figura 4. Como é possível observar, as características aprendidas foram
mantidas, mesmo com a quantidade de informação presente na imagem sendo reduzida – note
que o tamanho da imagem após a operação de Max Pooling foi reduzido para ¼ do tamanho da
imagem original.

Figura 5: Operação de Max Pooling com filtro de tamanho 2×2. Fonte: https://bit.ly/3asveK4.

Figura 6: Montagem feita a partir de imagens coletadas do site Codelabs. À esquerda, a


imagem após a aplicação de uma operação de convolução. À direita, a imagem resultante após
a aplicação de Max Pooling. Fonte: https://bit.ly/3kRAYlm.
18

2.1.3.3. Funcionamento

A arquitetura de uma CNN é composta por uma sequência de camadas convolucionais


e de pooling seguidas de camadas totalmente conectadas como aquelas presentes nas
arquiteturas de redes neurais convencionais e recebem como entrada dados brutos com o
mínimo de pré-processamento possível, como normalização e redimensionamento. As camadas
convolucionais e de pooling são responsáveis por extrair as características dos dados de entrada
e, ao final do processo, enviar estas informações para as camadas totalmente conectadas, que
são responsáveis por fornecer as saídas. Isso faz com que as CNN’s sejam excelentes para o
processamento de imagens, pois dispensam a necessidade de extração manual das
características da imagem antes da etapa de classificação – o modelo realiza esta tarefa de forma
automática e eficiente.
É importante notar que quanto maior a profundidade da CNN, ou seja, quanto maior a
quantidade de camadas, mais específicas serão as características extraídas e fornecidas para as
camadas totalmente conectadas, responsáveis pela classificação. Isso porque, as entradas
fornecidas para cada camada convolucional serão as características extraídas pelas camadas
convolucionais anteriores, de forma que características cada vez mais específicas serão
extraídas a partir delas. A Figura 7 ilustra o funcionamento de uma CNN simples com 4 blocos
de camadas convolucionais seguidas de camadas de pooling, e duas camadas totalmente
conectadas na saída.
19

Figura 7: Ilustração do funcionamento de uma CNN. Fonte: https://bit.ly/2PXHmcr.

Observe que, após cada bloco convolucional, características cada vez mais complexas
são extraídas e, ao final, as camadas totalmente conectadas fornecem a saída.

2.2. Transfer Learning

Como mencionado na seção 2.1.1, o treinamento de redes neurais profundas exige


grandes quantidades de dados e é muito custoso computacionalmente, devido ao grande número
de cálculos realizados. Na prática, poucos domínios de aplicação têm conjuntos de dados
grandes o suficiente para possibilitar um treinamento adequado com deep learning.
Uma das soluções para estes problemas é a técnica de transfer learning, que de acordo
com [12], consiste em utilizar caracterísicas já aprendidas em um determinado problema para
solucionar um novo problema similar – normalmente esta técnica é utilizada para tarefas onde
o conjunto de dados disponível não é grande o suficiente para treinar um modelo do zero.
Para tanto, são utilizadas as camadas de um modelo pré-treinado, que já aprendeu
características úteis para o problema em questão. Essas camadas normalmente são congeladas
20

– ou seja, não são atualizadas durante o treinamento – para evitar que seus pesos sejam
desajustados e as informações sejam perdidas durante a retropropagação dos erros. Sobre estas
camadas congeladas, são adicionadas novas camadas que serão treinadas e aprenderão a utilizar
as informações do modelo pré-treinado para realizar predições sobre o novo conjunto de dados.
Além disso, após os pesos das novas camadas estarem ajustados, é possível realizar uma
etapa de fine-tuning, que consiste em descongelar todas as camadas congeladas do modelo, ou
parte delas, e realizar uma nova etapa de treinamento com o novo conjunto de dados, utilizando
uma taxa de aprendizado pequena. Isto fará com que todos os pesos do modelo se ajustem
lentamente ao novo conjunto de dados, o que pode resultar em melhorias consideráveis de
desempenho. Nesta etapa é importante que a taxa de aprendizado seja pequena para evitar que
os pesos das camadas descongeladas sejam desajustados devido à retropropagação dos erros,
evitando o chamado “esquecimento catastrófico” dos conhecimentos previamente adquiridos.
Assim, a técnica de transfer learning é muito útil, pois torna possível o treinamento de
modelos profundos mesmo com bases de dados pequenas. Além disso, ela torna o treinamento
muito mais rápido devido à significativa redução do número de parâmetros treináveis do
modelo, causada pelo congelamento das camadas. A única desvantagem do transfer learning é
que a arquitetura do modelo final se torna restrita à arquitetura do modelo pré-treinado
escolhido como base.

2.2.1. Inception ResNet v2

Neste projeto, o modelo escolhido como base para transfer learning foi o Inception
ResNet v2 [9]. Ele foi escolhido devido ao excelente desempenho obtido na classificação da
base de dados ImageNet [5], onde obteve 3,1% de erro Top-5. Como o problema deste projeto
é de classificação e a métrica escolhida é a acurácia, optou-se por utilizar este modelo como
base, dado o seu conhecido desempenho na classificação de imagens.
A arquitetura do modelo Inception ResNet v2 é composta por vários componentes, mas
os principais são os módulos Inception e as conexões residuais. Nos módulos Inception, ao
invés da operação convencional de convolução seguida de pooling, são realizadas várias
convoluções com filtros de tamanhos diferentes e uma operação de pooling, tudo isto no mesmo
nível da rede. Os resultados destas operações são então concatenados e passados adiante. Desta
forma, o modelo consegue extrair mais características devido à utilização de diferentes
tamanhos de filtros – filtros maiores são mais adequados para extração de características
21

distribuídas globalmente na imagem, enquanto filtros menores são mais adequados para
extração de características distribuídas localmente. A Figura 8 ilustra a versão mais simples do
módulo Inception, utilizado no modelo Inception v1 [8].

Figura 8: Módulo Inception, versão Naive, como apresentado em [8].

Em versões posteriores, como as utilizadas na arquitetura do modelo Inception ResNet


v2, os módulos Inception foram alterados e são utilizadas técnicas para reduzir a dimensão dos
dados, buscando diminuir o custo computacional das operações. Por exemplo, convoluções de
tamanho 5x5 podem ser substituídas por duas convoluções de tamanho 3x3, que são menos
custosas computacionalmente. Além disso, podem ser utilizadas convoluções de tamanho 1x1
previamente às convoluções maiores, para reduzir a quantidade de canais da imagem.
Quanto às conexões residuais [3], elas são “atalhos” que conectam a saída de uma
camada da CNN diretamente à saída de alguma camada seguinte, previamente à aplicação da
função de ativação. Este tipo de conexão faz com que o modelo não se esqueça de características
aprendidas nos níveis mais rasos da arquitetura, propagando-as conforme a profundidade
aumenta, o que pode resultar em melhorias de desempenho consideráveis para modelos de deep
learning. A Figura 9 ilustra uma conexão residual.
22

Figura 9: Conexão Residual, como apresentado em [3].

O esquema geral da arquitetura do modelo Inception ResNet v2 e das arquiteturas dos


blocos que o compõe, devido à limitação do tamanho do texto, não serão detalhados na presente
monografia, mas podem ser conferidos em [9]. Para o desenvolvimento deste projeto, foi
utilizada uma implementação pronta do modelo disponível na API Keras Applications [19] pré-
treinado na base de dados ImageNet, que obteve 80,3% de acurácia Top-1 e 95,3% de acurácia
Top-5 na classificação do conjunto de dados de validação da ImageNet, como pode ser
verificado em [19].

2.3. Ensemble Learning

Ensemble learning, como mencionado em [13], é uma técnica onde são utilizados
múltiplos algoritmos de aprendizado de máquina com o objetivo de obter performances
melhores do que aquelas que seriam possíveis utilizando apenas um algoritmo. É possível, por
exemplo, utilizar várias CNN’s diferentes para resolver um problema de classificação ao invés
de utilizar apenas um modelo, e combinar os resultados obtidos individualmente por cada um
deles a fim de obter o melhor desempenho possível. Normalmente, o resultado final é dado pela
média aritmética de todos os resultados obtidos segundo alguma métrica, como acurácia, por
exemplo.
Porém, é importante notar que esta técnica exige o treinamento de vários modelos
diferentes utilizando os mesmos dados de entrada, de forma que o tempo de treinamento do
23

conjunto como um todo é muito maior do que o tempo de treinamento de um único modelo,
além de exigir maior poder computacional.
Levando em consideração estas limitações e a capacidade de hardware disponível para
a realização deste projeto, optou-se por buscar alternativas menos custosas de ensemble
learning e a técnica de Snapshot Ensemble [4] foi escolhida. Em [14], esta técnica foi adotada
em treinamentos com a mesma base de dados utilizada neste projeto e forneceu excelentes
resultados.

2.3.1. Snapshot Ensemble

A técnica de Snapshot Ensemble consiste em variar a taxa de aprendizado do modelo de


um valor alto – por exemplo, 0,1 – até um valor baixo – como 0,001 – em M ciclos durante o
treinamento, de acordo com uma função periódica.
A vantagem dessa técnica em relação às técnicas convencionais que utilizam taxa de
aprendizado programada é que ela permite que o modelo convirja e depois escape de múltiplos
mínimos locais durante o treinamento, devido ao alto valor da taxa de aprendizado adotada no
início de cada ciclo. Assim, o modelo pode encontrar mínimos locais melhores do que os
anteriores ou até mesmo o mínimo global da função de perda.
A Figura 10 ilustra o processo de otimização SGD (Stochastic Gradient Descent) [1]
utilizando taxa de aprendizado programada convencional e a técnica Snapshot Ensemble.

Figura 10: Esquerda: ilustração da otimização SGD utilizando taxa de aprendizado


programada convencional. Direita: utilizando a técnica Snapshot Ensemble. Fonte: [4].
24

Ao final de cada ciclo o modelo completo é salvo e, ao final do treinamento, é como se


fossem treinados M modelos diferentes. Cada um desses modelos é então avaliado nos dados
do conjunto de testes e a acurácia final é obtida realizando a média aritmética das acurácias dos
m melhores modelos, tal que m ≤ M. Desta forma, a técnica de Snapshot Ensemble permite a
obtenção de M modelos diferentes ao custo de treinamento de apenas um deles.
A função periódica adotada neste projeto é a Cyclic Cosine Annealing (cosseno recozido
cíclico), sugerida em [4]. A Figura 11 apresenta o comportamento da taxa de aprendizado
segundo esta função, em função do número de épocas.

Figura 11: Curva da taxa de aprendizado durante o treinamento, seguindo o comportamento


da função Cyclic Cosine Annealing. Fonte: O autor.
25

CAPÍTULO 3: DESENVOLVIMENTO

3.1. Considerações Iniciais

Neste capítulo, são apresentados em mais detalhes os objetivos e a proposta do presente


projeto, bem como a metodologia adotada no seu desenvolvimento. Também são apresentadas
detalhadamente todas as etapas do desenvolvimento do projeto, desde a escolha da base de
dados até a análise dos resultados finais obtidos.

3.2. Projeto

O objetivo deste projeto é desenvolver um classificador de alto desempenho capaz de


classificar diferentes espécies de mudas de plantas, tomando como métrica a acurácia obtida
nas predições realizadas.
Para tanto, inicialmente foi escolhida a base de dados que será utilizada no treinamento
do classificador, composta de diversas imagens de mudas de plantas de diferentes espécies. Em
seguida, após o pré-processamento dos dados, foram utilizadas redes neurais convolucionais,
aliadas a técnicas de transfer learning e ensemble learning para realizar a classificação.
A base de dados escolhida e os pré-processamentos e modelos utilizados neste projeto
são apresentados detalhadamente nas seções seguintes. Foram testadas diversas abordagens
combinando pré-processamentos e modelos diferentes, na tentativa de obter o melhor
desempenho possível na classificação. Cada uma delas também é descrita em mais detalhes na
seção 3.2.4.
Em todo o desenvolvimento deste projeto, foi utilizada a API Keras [16] para deep
learning em Python com o backend Tensorflow [17].
26

3.2.1. Base de Dados

Um dos maiores desafios no desenvolvimento de classificadores utilizando deep


learning é a coleta de dados. Isso porque, para obter bons resultados utilizando modelos de deep
learning, é necessário que grandes quantidades de dados de boa qualidade sejam utilizadas no
treinamento, e realizar a coleta destes dados em quantidades suficientes é uma tarefa
complicada.
Dada a proposta deste projeto, foi necessário encontrar uma base de dados do tipo crop
versus weed composta por imagens de mudas de plantas de diferentes espécies. A base
escolhida foi a Plant Seedlings Dataset V2 [2], disponibilizada pelo Grupo de Visão
Computacional e Processamento de Sinais de Biossistemas, do Departamento de Engenharia da
Universidade de Aarhus, Dinamarca.
Ela é composta por 5539 imagens em escala RGB de mudas de plantas de 12 espécies
diferentes, em estágios de crescimento distintos. Elas possuem dimensões variáveis e uma
resolução de aproximadamente 10 pixels por milímetro. Sendo uma base de dados criada por
pesquisadores dinamarqueses, as 12 espécies são de plantas comumente encontradas em
plantações na Dinamarca. Os nomes destas espécies em inglês e seus equivalentes em
português, se houverem, podem ser encontrados na Tabela 1, bem como a quantidade de
exemplos disponíveis na base de dados para cada uma delas. Neste documento, apenas os nomes
em inglês serão utilizados para referir-se às espécies.
27

Tabela 1: Nomes em inglês, seus equivalentes em português e quantidade de imagens


disponíveis das espécies de plantas presentes na base de dados utilizada no projeto.

Espécies de Plantas

Inglês Português Quantidade

Maize Milho 309

Common wheat Trigo mole 452

Sugar beet Beterraba-sacarina doce 335

Scentless mayweed Camomila selvagem 713

Common chickweed Morugem 253

Shepherd’s purse Bolsa-de-pastor 538

Cleavers Amor-de-hortelão 762

Charlock Mostarda dos campos 257

Fat Hen - 607

Small-flowered cranesbill - 274

Black-grass Grama-preta 576

Loose silky-bent Casco comum 463

Algumas amostras das imagens de cada espécie presente na base de dados, em diferentes
estágios de crescimento, podem ser observadas nas Figuras 12 a 23.

Figura 12: Mudas de Black-grass em três diferentes estágios de crescimento.


28

Figura 13: Mudas de Charlock em três diferentes estágios de crescimento.

Figura 14: Mudas de Cleavers em três diferentes estágios de crescimento.

Figura 15: Mudas de Common Chickweed em três diferentes estágios de crescimento.


29

Figura 16: Mudas de Common Wheat em três estágios diferentes de crescimento.

Figura 17: Mudas de Fat Hen em três diferentes estágios de crescimento.

Figura 18: Mudas de Loose Silky-bent em três diferentes estágios de crescimento.


30

Figura 19: Mudas de Maize (milho) em três diferentes estágios de crescimento.

Figura 20: Mudas de Scentless Mayweed em três diferentes estágios de crescimento.

Figura 21: Mudas de Shepherd's Purse em três diferentes estágios de crescimento.


31

Figura 22: Mudas de Small-flowered Cranesbill em três diferentes estágios de crescimento.

Figura 23: Mudas de Sugar beet em três diferentes estágios de crescimento.

Como é possível observar, as imagens de plantas de diferentes espécies em estágios


próximos de crescimento possuem muita semelhança de cor e textura e, em alguns casos,
também de formato. Ao mesmo tempo, as imagens de uma mesma espécie de planta,
dependendo do estágio de crescimento, diferem muito umas das outras. Essa baixa variação
interclasse e alta variação intraclasse, à primeira vista, podem oferecer dificuldades ao
classificador.
O fundo das imagens repleto de pequenos pedregulhos e, em alguns casos, mostrando
as bordas das caixas de isopor onde as mudas foram cultivadas, também podem dificultar a
classificação, bem como as quantidades consideravelmente diferentes de imagens disponíveis
de cada espécie, que torna a base desbalanceada. Na tentativa de contornar estes problemas
foram realizados pré-processamentos, que serão descritos nas seções seguintes.
32

Variáveis ambientais não devem influenciar no desempenho, pois as mudas de plantas


foram cultivadas em ambiente fechado e controlado e as fotos foram tiradas sob condições
controladas de iluminação, conforme mencionado em [2].

3.2.2. Modelos

Neste tópico serão apresentadas as arquiteturas dos dois modelos de redes neurais
utilizados no desenvolvimento deste projeto.

3.2.2.1. Modelo Construído Pelo Autor

Este modelo é uma CNN desenvolvida utilizando a classe Sequential [20] da biblioteca
Keras, que permite a construção de redes neurais multicamadas com facilidade. Sua arquitetura
é simples e foi definida empiricamente, a partir da experiência do autor no desenvolvimento de
outros projetos envolvendo deep learning.
A Figura 24 mostra a arquitetura do modelo: os primeiros três blocos são blocos
convolucionais, cada um deles composto de duas camadas de convolução seguidas de camadas
de Max-Pooling. Todas as camadas de convolução do modelo possuem filtros de convolução
de tamanho 3×3 e função de ativação ReLU. Porém, a quantidade de filtros das camadas
convolucionais de cada bloco aumenta gradativamente – 32 no primeiro, 64 no segundo e 128
no terceiro. O tamanho dos filtros de todas as camadas de Max-Pooling do modelo também é o
mesmo, de 2×2.
Na sequência, há um bloco contendo uma camada responsável por planarizar os dados,
seguida de uma camada totalmente conectada com 256 neurônios e função de ativação ReLU,
uma camada de Dropout com probabilidade de 0,5 e, finalmente, uma camada de saída
totalmente conectada com 12 neurônios e função de ativação Softmax. O otimizador padrão
escolhido para este modelo foi o otimizador Adam.
33

Figura 24: Arquitetura do modelo de CNN desenvolvido pelo autor.


34

3.2.2.2 Modelo com Transfer Learning

Utilizando transfer learning, o modelo escolhido como base foi o Inception ResNet v2
disponibilizado pela biblioteca Keras, com os pesos pré-treinados na base de dados ImageNet
e sem as camadas do topo. Sobre ele, foram adicionadas uma camada de Global Average
Pooling 2D, uma camada de Dropout com probabilidade de 0,5 e uma camada totalmente
conectada com 12 neurônios e função de ativação Softmax. A Figura 25 ilustra este modelo com
transfer learning, omitindo a arquitetura do modelo base.

Figura 25: Arquitetura do modelo com transfer learning.

O modelo Inception ResNet v2 foi escolhido como modelo base devido ao seu excelente
desempenho em problemas de classificação, e os pesos pré-treinados na base de dados
ImageNet foram utilizados por já estarem bem ajustados para a extração de características que
podem ser relevantes no problema de classificação deste projeto.
Quanto às outras camadas adicionadas, o modelo Inception ResNet v2 original possui
uma camada de Global Average Pooling que foi retirada quando seu topo foi removido. Assim,
a camada de Global Average Pooling foi adicionada apenas para manter inalterada esta parte
da arquitetura original do modelo base. A camada de Dropout foi adicionada logo em seguida
para evitar que ocorra overfitting durante o treinamento e, por fim, a camada totalmente
conectada com 12 neurônios fornecerá a saída do modelo completo. O otimizador padrão
escolhido para este modelo também foi o otimizador Adam [6].
35

3.2.3. Pré-Processamentos

Nesta seção serão descritos todos os pré-processamentos que foram realizados em


algum momento na base de dados durante o desenvolvimento deste projeto.

3.2.3.1 Redimensionamento

Como mencionado na seção 3.2.1, as imagens possuem dimensões muito variáveis: a


menor delas possui dimensões de 49×49 pixels, enquanto que a maior possui dimensões de
3652 x 3457 pixels. Assim, foi necessário o redimensionamento de cada uma delas para um
valor padrão antes de fornecê-las como entrada para os modelos utilizados na classificação.
Para o modelo com transfer learning, foram utilizadas as mesmas dimensões de entrada
padrão do modelo Inception Resnet v2, de 299×299 pixels. Já para o modelo desenvolvido pelo
autor, foram realizados testes utilizando diferentes dimensões consideradas razoáveis e,
empiricamente, a dimensão escolhida foi de 256×256 pixels.
O redimensionamento das imagens foi utilizado em todas as tentativas de classificação
que serão descritas posteriormente, com os valores das dimensões dependendo do modelo
utilizado.

3.2.3.2 Normalização

Todos os pixels das imagens foram normalizados para assumirem valores entre 0 e 1.
Para isso, os valores RGB de cada um deles, que variam entre 0 e 255, foram simplesmente
divididos por 255. Desta forma, os valores de todos os pixels de todas as imagens se encontram
na mesma escala e a distribuição dos dados originais é mantida, sem nenhuma perda de
informação.
Esta normalização dos dados é necessária em qualquer aplicação de aprendizado de
máquina e foi utilizada em todos os testes realizados neste projeto, para ambos os modelos
apresentados anteriormente.
36

3.2.3.3 Data Augmentation

Foram criadas imagens sintéticas através de modificações realizadas sobre as imagens


originais presentes na base de dados, a saber: rotações, deslocamentos na largura e altura das
imagens, e reflexões horizontais e verticais. Alguns exemplos de imagens modificadas criadas
a partir das imagens originais podem ser observadas na Figura 26.

Figura 26: Imagens de muda de Maize (milho) geradas a partir de uma imagem original. Da
esquerda para a direita, a imagem foi rotacionada, refletida horizontalmente e deslocada
horizontalmente.

A biblioteca de deep learning Keras, utilizada em todo o desenvolvimento deste projeto,


possibilita a criação destas imagens sintéticas previamente ou em tempo real durante o
treinamento. Ambos os tipos de data augmentation – prévio e em tempo real – foram testados
e utilizados em diferentes tentativas de classificação.
37

3.2.3.4 Segmentação

O segmentador utilizado neste projeto é bastante simples e foi desenvolvido utilizando


a biblioteca OpenCV [18] para Python. O passo a passo simplificado de seu funcionamento é
apresentado a seguir:

1. A imagem original é suavizada utilizando um filtro gaussiano, para reduzir ruídos.


2. A imagem suavizada, inicialmente em escala RGB, é convertida para a escala HSV.
3. É construída uma máscara limitando a imagem HSV a uma faixa de tons de verde.
4. É realizada uma operação bit a bit entre a imagem original e a máscara, de forma
que os pixels pertencentes à faixa de tons de verde são mantidos inalterados, e os
demais pixels se tornam pretos.

A Figura 27 mostra o processo de segmentação descrito. Nela podem ser observadas a


imagem original, a máscara gerada e a imagem resultante segmentada, após a realização da
operação bit a bit. A vantagem deste filtro de processamento de imagens é a remoção do fundo
da imagem, preservando apenas a planta em si.

Figura 27: Etapas da segmentação. Da esquerda para a direita temos a imagem original, a
máscara gerada a partir dela e a imagem segmentada.
38

3.2.4 Descrição das Atividades Realizadas

Nesta seção serão descritos todos os procedimentos adotados, na ordem em que foram
realizados, durante o desenvolvimento do projeto. Inicialmente, foi utilizado na classificação o
modelo de CNN construído pelo e autor e, posteriormente, o modelo com transfer learning.

3.2.4.1 Classificação Utilizando Modelo Próprio

Nesta seção serão descritos os procedimentos realizados utilizando o modelo de CNN


construído pelo autor.

3.2.4.1.1 Classificação Binária

Primeiramente, foi realizada uma classificação binária do tipo weed versus seed para
verificar se o modelo proposto consegue distinguir de forma satisfatória as mudas de milho das
mudas de ervas daninhas, quaisquer que sejam suas espécies. Essa verificação é muito
importante pois, caso esta distinção não seja clara, frequentemente mudas de milho serão
confundidas com mudas de ervas daninhas e vice-versa, de forma que, em uma aplicação real,
as mudas pertencentes à plantação serão possivelmente eliminadas. Este é o pior quadro
possível para o problema proposto, prejudicando muito a produção da plantação.
Para isso, o conjunto de dados foi modificado de forma que todas as imagens de ervas
daninhas foram armazenadas em um mesmo diretório e rotuladas com a mesma classe – Weeds.
As imagens restantes, de mudas de milho, foram mantidas em seu diretório original sob o rótulo
Maize. As quantidades de dados pertencentes a cada classe, após as modificações na base dados,
podem ser observadas no Gráfico 1.
39

Gráfico 1 - Quantidade de imagens pertencentes a cada classe do novo conjunto de dados,


utilizado para a classificação binária do tipo weed versus seed.

Como é possível observar, o novo conjunto de dados está bastante desbalanceado, com
257 imagens de milho e 5282 imagens de ervas daninhas. Este desbalanceamento elevado pode
atrapalhar o treinamento do modelo, mas, em se tratando de uma verificação inicial, optou-se
por manter a base de dados inalterada.
Dos dados disponíveis, 80% foram separados para o treinamento e validação do modelo
e 20% foram separados para uma etapa de testes onde serão realizadas predições utilizando o
modelo já treinado.
O treinamento foi realizado com taxa de aprendizado de 0,001 durante 10 épocas, com
lotes (batches) de tamanho 32 e função de perda binary crossentropy. Após o treinamento,
foram realizadas predições nas imagens do conjunto de teste e a matriz de confusão das
predições foi montada para uma análise mais profunda dos resultados obtidos.
40

3.2.4.1.2 Classificação Multiclasses

Na sequência, foi realizada a classificação multiclasses, com a base de dados original.


Cada uma das espécies presentes corresponde a uma classe, totalizando 12, sendo uma delas de
milho – crop – e as outras 11 de diferentes espécies de ervas daninhas – weeds.
Inicialmente, o conjunto de dados original foi dividido nas mesmas proporções
anteriores – 80% para as etapas de treinamento e validação e 20% para a etapa de testes. O
Gráfico 2 mostra a quantidade de imagens disponíveis para treinamento, por espécie.

Gráfico 2 - Quantidade de imagens de treinamento, por espécie.

O modelo foi treinado com taxa de aprendizado de 0,001 durante 50 épocas, com lotes
(batches) de tamanho 32 e função de perda categorial crossentropy. Após a análise dos
resultados do treinamento, foram feitas tentativas de melhoria, a saber:

• Utilização de data augmentation prévio para balanceamento da base de dados.


• Utilização de data augmentation em tempo real durante o treinamento.
• Segmentação das imagens da base de dados.
41

O uso de cada uma destas técnicas será justificado e descrito em mais detalhes
posteriormente, na seção 3.3. Para cada um dos modelos treinados, foram realizadas predições
sobre o conjunto de dados de testes e calculadas as acurácias Top-1 obtidas.

3.2.4.2 Classificação Utilizando Transfer Learning

Nesta seção serão descritos os procedimentos realizados utilizando o modelo com


transfer learning.

3.2.4.2.1. Classificação Binária

Novamente, para verificar se o modelo distingue satisfatoriamente as imagens de mudas


de milho das imagens de mudas de ervas daninhas, foi realizada uma classificação binária do
tipo weed versus seed, com a base de dados modificada da mesma forma descrita no tópico
3.2.4.1.1.
O treinamento foi realizado com taxa de aprendizado de 0,001 durante 30 épocas, com
lotes de tamanho 32 e função de perda binary crossentropy. Após o treinamento, foram
realizadas predições sobre o conjunto de dados separado para testes e a matriz de confusão das
predições foi construída para uma análise mais profunda dos resultados.

3.2.4.2.2 Classificação Multiclasses

Para cada treinamento realizado nesta etapa, também foram realizadas predições sobre
o conjunto de testes e calculadas as acurácias Top-1 obtidas. Primeiramente, seguindo os
mesmos procedimentos realizados anteriormente, foi feita uma classificação multiclasses com
a base de dados original, sem nenhum tipo de pré-processamento exceto a normalização e o
redimensionamento dos dados.
Inicialmente, os pesos de todas as camadas do modelo base – Inception ResNet v2 –
foram congelados, de forma que somente os pesos das camadas adicionadas a ele foram
treinados. Isso porque, os pesos do modelo Inception ResNet v2 pré-treinados na base de dados
ImageNet já estão bem ajustados para o reconhecimento de características que podem ser úteis
na classificação do problema atual. Assim, é desejável mantê-los inalterados em um primeiro
momento, para evitar que eles sejam desajustados devido à retropropagação dos erros que serão
obtidos no treinamento das novas camadas adicionadas. O treinamento foi realizado com taxa
42

de aprendizado de 0,001 durante 30 épocas, com lotes de tamanho 32 e função de perda


categorical crossentropy.
Em seguida, buscando melhorar os resultados, foi realizado o fine-tuning do modelo,
descongelando-se todos os pesos do modelo base. Além disso, o otimizador Adam foi trocado
pelo otimizador SGD com taxa de aprendizado de 0,0001 e termo momentum de 0,9. O
treinamento foi novamente realizado durante 30 épocas, com lotes de tamanho 32.
Após o fine-tuning foram realizadas predições sobre o conjunto de testes e a matriz de
confusão das predições de todas as classes foi construída para verificar e analisar os resultados
obtidos mais detalhadamente.
Feita a análise da matriz de confusão, foram realizadas tentativas de melhorar o
desempenho do classificador. Para isso, as classes que o modelo teve maiores dificuldades em
distinguir foram separadas do conjunto de testes original e foi realizada uma classificação a
parte para verificar a separabilidade entre elas.
Finalmente, em uma última tentativa de melhorar o desempenho do modelo, os pesos
do primeiro treinamento – com as camadas do modelo base congeladas – foram carregados e
foram realizadas três novas etapas de fine-tuning diferentes utilizando a técnica Snapshot
Ensemble, com 100 épocas de treinamento e 5 ciclos utilizando a função cosseno recozido
cíclico da Figura 11. Na primeira delas, não foi utilizado nenhum tipo de data augmentation e
a taxa de aprendizado inicial foi de 0,1. Na segunda, a taxa de aprendizado de 0,1 foi mantida
e foi utilizado data augmentation em tempo real durante o treinamento. Na terceira, foi utilizado
data augmentation em tempo real e a taxa de aprendizado inicial foi reduzida para 0,01. Por
fim, foram feitas predições para cada uma delas e construídas as matrizes de confusão de seus
respectivos resultados.
Todos estes procedimentos serão justificados e seus resultados serão apresentados e
analisados detalhadamente nas seções seguintes.
43

3.3. Resultados Obtidos e Discussões

Nesta seção serão apresentados e discutidos os resultados obtidos seguindo os


procedimentos descritos na seção 3.2.4. Além disso, serão esclarecidas todas as decisões que
foram tomadas no decorrer do projeto, baseando-se em resultados obtidos de etapas anteriores.

3.3.1. Resultados da Classificação Utilizando Modelo Próprio

Nesta seção, serão apresentados e discutidos todos os resultados advindos dos


procedimentos que foram executados utilizando o modelo de CNN da Figura 24.

3.3.1.1. Classificação Binária

As curvas de acurácia e perda obtidas nas etapas de treinamento e validação podem ser
observadas nas Figuras 28 e 29, respectivamente, em função das épocas de treinamento.

Figura 28: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
weed versus seed, com o modelo proposto na Figura 24.
44

Figura 29: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
weed versus seed, com o modelo proposto na Figura 24.

Como é possível observar, em poucas épocas o modelo atingiu acurácias próximas de


98%, tanto na etapa de treinamento quanto na etapa de validação. As curvas de perda revelam
que não está ocorrendo overfitting, pois ambas decaem conforme a quantidade de épocas
aumenta.
Dito isto, apesar de a acurácia obtida pelo modelo ser próxima de 98%, é necessário
uma análise mais profunda de desempenho para verificar se a distinção entre milho e ervas
daninhas está, de fato, sendo realizada. Isso porque a quantidade de imagens de milho
corresponde a aproximadamente 4% da quantidade total de imagens do conjunto de dados
modificado. Assim, é possível que o modelo esteja classificando todas as imagens como ervas
daninhas e, ainda assim, obtendo um bom desempenho em termos de acurácia.
Para fazer essa verificação, foram realizadas predições sobre um conjunto de imagens
de teste separado previamente e construída a matriz de confusão das predições realizadas,
conforme apresentado na Figura 30.
45

Figura 30: Matriz de Confusão das predições realizadas na classificação weed versus seed
com o modelo proposto na Figura 24.

Como é possível observar, mesmo com a base fortemente desbalanceada, o modelo


simples proposto foi capaz de diferenciar de forma satisfatória as imagens de mudas de milho
das imagens de ervas daninhas, acertando aproximadamente 70% das previsões realizadas para
a classe milho – 34 de 49 tentativas.

3.3.1.2. Classificação Multiclasses

As curvas de acurácia e perda nas etapas de treinamento e validação da classificação


multiclasses podem ser observadas nas Figuras 31 e 32, respectivamente, em função das épocas
de treinamento.
46

Figura 31: Curvas de acurácia das etapas de treinamento e validação na classificação


multiclasses, com o modelo proposto na Figura 24.

.
Figura 32: Curvas de perda das etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24.
47

Após o treinamento, foram realizadas predições sobre o conjunto de testes e a acurácia


obtida foi de 81,05%.
As curvas de perda apresentadas na Figura 33 indicam que a perda na etapa de treino
decresce durante todo o treinamento, até atingir valores próximos de zero. Por outro lado, a
perda na etapa de validação, apesar de sofrer variações, começa a aumentar gradativamente
depois de decorridas aproximadamente 10 épocas, caracterizando o comportamento de
overfitting. Isso significa que o modelo está se sobreajustando aos dados apresentados no
treinamento, de forma que sua capacidade de generalização a novos dados é baixa. Esse
sobreajuste pode ocorrer devido a diversos fatores e normalmente é uma combinação dos
seguintes:

• Treinamento muito longo.


• Quantidade de dados insuficiente.
• Modelo muito poderoso para o sistema proposto.

Assim, uma opção para reduzir o overfitting seria reduzir o número de épocas de
treinamento para 10 ou menos. Porém, de acordo com as curvas da Figura 22 isso resultaria em
uma acurácia de menos de 80% na validação. Também não é desejável diminuir a complexidade
do modelo, que já é bastante simples. Portanto, optou-se por aumentar a quantidade de dados
através de data augmentation, mantendo inalteradas a arquitetura do modelo e a quantidade de
épocas de treinamento.
Inicialmente, foi utilizado data augmentation prévio para aumentar a quantidade de dados
disponíveis na base e ao mesmo tempo balanceá-la. Optou-se por fazer o balanceamento através
do oversampling das classes minoritárias até que estas possuíssem a mesma quantidade de
amostras da classe majoritária. As quantidades de imagens disponíveis para treino após a
utilização de data augmentation, por espécie, podem ser observadas no Gráfico 3.
48

Gráfico 3 - Quantidade de imagens de treino disponíveis, por espécie, após a utilização de


data augmentation.

O novo conjunto de dados foi dividido na mesma proporção que anteriormente – 80%
dos dados para treinamento e validação e 20% dos dados para teste. Os resultados do
treinamento estão apresentados nas Figuras 33 e 34 e a acurácia obtida nas predições do
conjunto de testes foi de 85,92%.
49

Figura 33: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24 e com utilização de data augmentation.

Figura 34: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24 e com utilização de data augmentation.
50

A partir das curvas apresentadas, conclui-se que o aumento na quantidade de dados e o


balanceamento da base resultaram em melhorias significativas à capacidade de generalização
do modelo, que não sofre mais com overfitting e atinge acurácias acima de 80% na etapa de
validação. Porém, as curvas de treinamento e de validação ainda estão consideravelmente
afastadas umas das outras.
Na tentativa de melhorar este quadro foi realizado um novo treinamento, desta vez
utilizando o conjunto de dados original, com data augmentation em tempo real. Os resultados
obtidos podem ser observados nas Figuras 35 e 36.

Figura 35: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24 e com utilização de data augmentation em
tempo real.
51

Figura 36: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24 e com utilização de data augmentation em
tempo real.

Nota-se que utilizando data augmentation em tempo real, o modelo também deixa de
sofrer com overfitting e o comportamento das curvas de perda é melhor do que o obtido
anteriormente, com ambas decaindo no decorrer das épocas de treinamento – durante o treino,
mais suavemente, e durante a validação, com pequenas oscilações.
Após este treinamento, foram então realizadas predições sobre o conjunto de testes e a
acurácia obtida foi de 91,34%, o que indica que o modelo realmente foi bem treinado e tem boa
capacidade de generalização.
Em seguida, foi realizado um último treinamento utilizando data augmentation em
tempo real, mas desta vez com a base de dados balanceada. Os resultados estão apresentados
nas Figuras 37 e 38. Como é possível observar, não houveram ganhos significativos neste
treinamento em relação ao anterior, com a utilização de apenas data augmentation em tempo
real. Na verdade, a acurácia obtida na classificação do conjunto de testes nesta abordagem foi
praticamente a mesma da anterior, de 90,97%. Além disso, como a base balanceada é
consideravelmente maior do que a original, o tempo para treinar o modelo também aumenta
consideravelmente e, portanto, apenas data augmentation em tempo real será utilizado daqui
em diante.
52

Figura 37: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24, base de dados balanceada e utilização de
data augmentation em tempo real.

Figura 38: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24, base de dados balanceada e utilização de
data augmentation em tempo real.
53

Finalmente, numa última tentativa de melhorar o desempenho deste modelo, foi


realizado um último treinamento utilizando data augmentation em tempo real, com a base de
dados original e as imagens segmentadas. As Figuras 39 e 40 mostram as curvas de acurácias e
perdas obtidas, respectivamente.

Figura 39: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24, utilização de data augmentation em tempo
real e as imagens segmentadas.
54

Figura 40: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com o modelo proposto na Figura 24, utilização de data augmentation em tempo
real e as imagens segmentadas.

Como é possível observar, não houve nenhuma melhoria de desempenho no treinamento


utilizando as imagens segmentadas em relação ao treinamento utilizando as imagens originais.
Na verdade, o desempenho piorou levemente, com uma acurácia de 90,70% nas predições
realizadas sobre o conjunto de testes.
Isso porque, os modelos de redes neurais convolucionais, por mais simples que sejam,
são robustos o suficiente para evitar que o fundo das imagens atrapalhe na classificação e,
aparentemente, o pré-processamento de imagens com a extração do fundo não contribuiu de
maneira significativa para o resultado final. Além disso, não houve nenhuma redução
significativa no tempo de treinamento. Assim, a partir deste ponto, optou-se por utilizar apenas
as imagens originais nos treinamentos.
55

3.3.2. Resultados da Classificação Utilizando Transfer Learning

Nesta seção, serão apresentados e discutidos todos os resultados advindos dos


procedimentos que foram executados utilizando o modelo de CNN com transfer learning, da
Figura 25.

3.3.2.1 Classificação Binária

Os resultados da classificação weed versus seed realizada com o modelo da Figura 25


podem ser observados nas Figuras 41 e 42.

Figura 41: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
weed versus seed, com transfer learning.
56

Figura 42: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
weed versus seed, com transfer learning.

Nota-se que o modelo se ajustou bem ao conjunto de dados e não sofre com overfitting,
obtendo acurácias acima de 99% ao final de 30 épocas de treinamento.
O fato de a curva de perda na etapa de validação estar abaixo da curva de perda na etapa
de treinamento pode ser explicado pela utilização da camada de dropout na arquitetura do
modelo. Como o dropout só é utilizado durante o treinamento, cada neurônio das camadas
totalmente conectadas ocultas tem uma probabilidade de ser eliminado temporariamente e não
ser utilizado durante uma iteração específica do treinamento. Isso faz com que versões menos
complexas do modelo original sejam utilizadas durante o treino.
Porém, durante a etapa de validação, todos os neurônios são utilizados e, caso o
problema de classificação não seja muito desafiador para o modelo, é possível que o
desempenho dos modelos menos complexos utilizados no treinamento sejam piores do que o
desempenho do modelo completo utilizado na etapa de validação, acarretando em uma perda
maior durante a etapa de treinamento.
Novamente, foram realizadas predições sobre sobre o conjunto de testes e construída a
matriz de confusão correspondente, apresentada na Figura 43.
57

Figura 43: Matriz de Confusão das predições realizadas na classificação weed versus seed,
com transfer learning.

Como é possível observar, das 49 amostras de milho, 44 foram classificadas


corretamente, resultando em uma proporção de acerto de 89%. Assim, é possível concluir que
o modelo consegue facilmente distinguir a classe Milho (Maize) da classe ervas daninhas
(Weeds) e, portanto, pode-se prosseguir para a classificação multiclasses.

3.3.2.2 Classificação Multiclasses

Os resultados do treinamento com todas as camadas do modelo base congeladas podem


ser observados nas Figuras 44 e 45.
58

Figura 44: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses, com transfer learning.

Figura 45: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses, com transfer learning.

Como é possível observar, não ocorreu overfitting durante o treinamento e a acurácia


obtida nas predições foi de aproximadamente 83,3%. Além disso, o treinamento foi executado
59

muito mais rapidamente, devido à significativa redução do número de cálculos realizados


proporcionada pelo transfer learning. Os resultados do fine-tuning, após o descongelamento de
todas as camadas do modelo base, estão apresentados nas Figuras 46 e 47.

Figura 46: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning, após o fine-tuning.

Figura 47: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning, após o fine-tuning.
60

Nota-se que após 10 épocas a perda na validação se mantém aproximadamente


constante, ou seja, o treinamento poderia ter parado neste momento. Porém, como a curva de
perda se estabiliza e não ocorre overfitting, optou-se por não realizar um novo treinamento.
A acurácia final na etapa de treinamento decorridas 30 épocas foi de aproximadamente
97%. Por fim, foram realizadas predições sobre as imagens do conjunto de teste, obtendo
acurácia de 93,59%, 2,25% maior do que a obtida anteriormente com a utilização do modelo
apresentado na Figura 24 e data augmentation em tempo real, após 50 épocas de treinamento.
A matriz de confusão destas predições pode ser observada na Figura 48.

Figura 48: Matriz de Confusão das predições realizadas na classificação multiclasses com
transfer learning, após o fine-tuning.

Nesta matriz de confusão, apenas para fins de melhor visualização, os nomes das 12
espécies foram substituídos pelos índices de suas classes correspondentes (de 0 a 11). Estas
informações podem ser verificadas na Tabela 2.
61

Tabela 2 - Classes do problema e seus índices correspondentes apresentados na matriz de


confusão da Figura 48.

Classes Índices

Black-grass 0

Charlock 1

Cleavers 2

Common Chickweed 3

Common Wheat 4

Fat Hen 5

Loose Silky-bent 6

Maize 7

Scentless Mayweed 8

Shepherd’s Purse 9

Small-flowered Cranesbill 10

Sugar Beet 11

Nota-se que a grande maioria dos erros cometidos pelo modelo se encontra na
classificação das amostras pertencentes às espécies Black-grass (índice 0) e Loose Silky-bent
(índice 6), que são frequentemente confundidas. Das Figuras 12 e 18 apresentadas no tópico
3.2.1, é possível observar que estas espécies de erva-daninha são realmente semelhantes, sendo
difíceis de distinguir até mesmo para os olhos humanos, em alguns casos.
Para verificar a separabilidade específica destas duas espécies, como mencionado no
tópico 3.2.4.2.2., foi feita uma classificação binária, desta vez do tipo weed versus weed,
isolando as amostras pertencentes a estas duas classes do restante do conjunto de dados. Os
resultados do treinamento e das predições realizadas sobre este novo conjunto de dados estão
apresentados nas Figuras 49 a 51.
62

Figura 49: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
weed versus weed com transfer learning.

Figura 50: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
weed versus weed com transfer learning.
63

Figura 51: Matriz de Confusão das predições realizadas na classificação weed versus weed
com transfer learning.

Nota-se que, mesmo isolando as amostras destas duas espécies de ervas-daninhas, ainda
ocorreram quantidades significativas de falsos positivos e negativos nas predições. Assim, é
seguro afirmar que o modelo, no estado em que se encontra, não consegue obter um
desempenho melhor do que o apresentado até então na distinção entre as amostras destas duas
espécies. A confusão entre Black-grass e Loose Silky-bent é inerente ao problema e à base de
dados, porém, o erro entre estas duas classes, apesar de reduzir a taxa global de acerto, não
prejudica a aplicação do classificador em sua tarefa principal na distinção weed versus seed.

3.3.2.3 Classificação Multiclasses Utilizando Snapshot Ensemble

Finalmente, foram realizados treinamentos utilizando a técnica Snapshot Ensemble,


conforme descrito no tópico 3.2.4.2.2. Os resultados obtidos para o primeiro deles, sem
utilização de data augmentation e com taxa de aprendizado inicial de 0,1, podem ser observados
nas Figuras 52 e 53. Pode-se observar que ao final de cada ciclo, devido ao abrupto aumento da
taxa de aprendizado, a perda durante a validação aumenta significativamente e em seguida volta
a diminuir gradativamente conforme a taxa de aprendizado é reduzida.
64

Figura 52: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble.

Figura 53: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble.
65

Também foram realizadas predições sobre o conjunto de testes e a acurácia média obtida
foi de 96,93%. A matriz de confusão correspondente pode ser observada na Figura 54. Nota-se
que, apesar de a maior dificuldade do modelo ainda ser na distinção entre as espécies Black-
grass e Loose Silky-bent, seu desempenho melhorou consideravelmente: Na matriz de confusão
apresentada na Figura 48, pode-se observar que 21 das amostras de Black-grass foram
classificadas erroneamente como Loose Silky-bent e que 15 amostras de Loose Silky-bent foram
classificadas erroneamente como Black-grass. Já na Figura 54, esses números caíram para 11 e
4, respectivamente.

Figura 54: Matriz de confusão das predições realizadas na classificação multiclasses com
transfer learning e snapshot ensemble.

Em seguida, o mesmo treinamento foi reproduzido, porém, desta vez foi utilizado data
augmentation em tempo real. As curvas de acurácia e perda podem ser observadas nas Figuras
55 e 56 e a matriz de confusão da média das predições pode ser observada na Figura 57.
66

Figura 55: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble, utilizando data augmentation em
tempo real.

Figura 56: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble, utilizando data augmentation em
tempo real.
67

Figura 57: Matriz de confusão das predições realizadas na classificação multiclasses com
transfer learning e snapshot ensemble, utilizando data augmentation em tempo real.

Nota-se que, em comparação com a matriz de confusão da Figura 56, não houveram
melhorias na distinção entre as amostras de Black-grass e Loose Silky-bent, mas no geral, a
acurácia média das predições foi de 97,65%, um pouco maior do que a obtida no treinamento
anterior.
Finalmente, no terceiro e último treinamento com snapshot ensemble, foi utilizado data
augmentation em tempo real e a taxa de aprendizado inicial foi reduzida para 0,01. Os
resultados deste treinamento podem ser observados nas Figuras 58 e 59 e a matriz de confusão
da média das predições realizadas é apresentada em seguida, na Figura 60.
68

Figura 58: Curvas de acurácia obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble, utilizando data augmentation em
tempo real e taxa de aprendizado inicial de 0,01.

Figura 59: Curvas de perda obtidas nas etapas de treinamento e validação na classificação
multiclasses com transfer learning e snapshot ensemble, utilizando data augmentation em
tempo real e taxa de aprendizado inicial de 0,01.
69

Figura 60: Matriz de confusão das predições realizadas na classificação multiclasses com
transfer learning e snapshot ensemble, utilizando data augmentation em tempo real e taxa de
aprendizado inicial de 0,01.

Primeiramente, é importante ressaltar que a taxa de aprendizado inicial de 0,01 não foi
capaz de causar as mesmas oscilações bruscas observadas nas Figuras 52, 53, 55 e 56, de forma
que é provável que o modelo não tenha escapado dos mínimos locais. Assim, provavelmente
um treinamento com taxa de aprendizado programada convencional, iniciando em 0,01,
forneceria resultados semelhantes.
Dito isto, ainda assim o treinamento foi efetivo e a acurácia média das predições
realizadas sobre o conjunto de testes foi de 98,56% - a maior obtida neste projeto. Da matriz de
confusão, é possível observar que realmente pouquíssimos erros foram cometidos pelo modelo
e que sua capacidade de distinção entre as espécies Black-grass e Loose Silky-bent melhorou
consideravelmente – apenas 7 das amostras de Black-grass foram classificadas como Loose
Silky-bent e 5 das amostras de Loose Silky-bent foram classificadas como Black-grass.
70

CAPÍTULO 4: CONCLUSÃO

Os modelos propostos para a classificação de mudas de plantas se mostraram efetivos e


tiveram um desempenho excelente na classificação das amostras da base de dados Plant
Seedlings Dataset V2.
A partir dos resultados apresentados, nota-se que a escolha de CNN’s para a solução do
problema proposto se mostrou adequada, de forma que, mesmo utilizando arquiteturas simples
como a proposta na Figura 24, foi possível obter acurácias Top-1 acima de 90% depois de
realizados os pré-processamentos adequados e com a utilização de data augmentation em tempo
real durante o treinamento. Especialmente com a utilização deste modelo, foi possível observar
na prática a importância da qualidade e da quantidade de dados disponíveis em um treinamento
utilizando modelos de deep learning.
Com a utilização de transfer learning foi possível melhorar ainda mais estes resultados,
atingindo uma acurácia Top-1 de 93% nas predições realizadas sobre o conjunto de testes.
Utilizando um modelo muito mais robusto, como o Inception ResNet v2, não foi necessária a
utilização de data augmentation, mas foi possível realizar na prática todo o processo de
transferência de aprendizado, desde o treinamento inicial das novas camadas adicionadas ao
modelo base, até a etapa de fine-tuning.
Além disso, para atingir os melhores resultados apresentados, de aproximadamente 98%
de acurácia Top-1, foi necessário utilizar a técnica de transfer learning em conjunto com a
técnica de aprendizado em conjunto snapshot ensemble.
Assim, este projeto proporcionou experiências valiosas através da solução de um
problema que possui aplicações reais e foi uma oportunidade de aprendizado ao autor, que pôde
trabalhar na prática com todas as etapas de um processo de aprendizado de máquina, desde a
coleta e análise dos dados, até a utilização do modelo para a tarefa de classificação, passando
pelas áreas de deep learning, transfer learning e ensemble learning.
71

4.1. Dificuldades e Limitações

Durante o desenvolvimento deste projeto, uma das principais dificuldades enfrentadas


foi a obtenção das arquiteturas finais dos modelos apresentados nas Figuras 24 e 25, que foram
definidas empiricamente através de treinamentos realizados utilizando arquiteturas diferentes,
variando por exemplo a quantidade de camadas convolucionais presentes nos modelos, bem
como a quantidade e o tamanho dos filtros presentes em cada uma delas.
Após a definição das arquiteturas dos modelos, outro obstáculo foi a definição dos
treinamentos a serem realizados. Até a obtenção dos resultados finais de cada uma das etapas
apresentadas na seção 3.3., foi necessário realizar diversos treinamentos variando os
hiperparâmetros relacionados aos modelos, como a taxa de aprendizado, e também ao
treinamento, como o número de épocas e o batch size, apesar de apenas as arquiteturas e os
treinamentos finais terem sido apresentados neste documento.
Além disso, especificamente para o modelo da Figura 24, foram realizados treinamentos
variando o tamanho das imagens até o tamanho de 256×256 ser escolhido e, especificamente
para o modelo da Figura 25, durante a etapa de fine-tuning, foram realizados vários
treinamentos variando a quantidade de camadas descongeladas do modelo base até a quantidade
final ser escolhida, como apresentada na seção 3.3.2.2. Também foram realizados testes para a
definição da quantidade total de épocas e de ciclos utilizados e apresentados na sessão 3.3.2.3.
nos treinamentos com snapshot ensemble.
Devido a limitações de hardware, foi necessária a utilização de serviços de computação
em nuvem, como o Google Colaboratory [21], para acelerar todos estes treinamentos
realizados. Mesmo assim, eles tomaram uma parcela consideravelmente grande do tempo
disponível para o desenvolvimento do projeto.
Ao final dos treinamentos, os resultados obtidos foram satisfatórios, de forma que a
abordagem adotada no projeto se mostrou adequada. Porém, é importante salientar que apesar
de a base de dados utilizada ser adequada ao projeto, as plantas foram cultivadas em ambiente
fechado e as fotos tiradas das plantas são de qualidade razoavelmente boa, com iluminação
controlada e pouca ou nenhuma interferência de variáveis ambientais. Assim, os resultados aqui
apresentados servem apenas como referência para o desenvolvimento de modelos a serem
aplicados na prática em plantações reais em ambiente aberto.
72

4.2. Trabalhos Futuros

Além de realizar a classificação, seria interessante modificar os modelos para que eles
consigam localizar as mudas de plantas na imagem. Dessa forma, em uma aplicação real, um
robô autônomo poderia aplicar o agrotóxico com precisão ou remover a muda de forma local.
Outro ponto é que a base de dados utilizada no desenvolvimento deste projeto se
mostrou adequada e possui uma quantidade razoável de amostras, com as mudas de plantas em
diferentes estágios de crescimento, porém, em uma situação real, podem ocorrer situações em
que duas ou mais mudas de plantas estejam presentes na mesma imagem. Assim, seria
necessário que o classificador conseguisse realizar a classificação e localização de cada uma
delas separadamente. Para isso, seria necessária a utilização de outra base de dados com
amostras deste tipo e a utilização de um modelo capaz de realizar classificação multirrótulos.
73

REFERÊNCIAS
[1] Bottou, Léon. Large-Scale Machine Learning with Stochastic Gradient Descent. 2010.
Disponível em: <https://leon.bottou.org/papers/bottou-2010>. Acesso em: 12 de julho de 2020.

[2] Dyrmann, Mads et al. A Public Image Database for Benchmark of Plant Seedling
Classification Algorithms. 2017. Disponível em: <https://arxiv.org/abs/1711.05458>. Acesso
em: 12 de julho de 2020.

[3] He, Kaiming et al. Deep Residual Learning for Image Recognition. 2015. Disponível em:
<https://arxiv.org/abs/1512.03385>. Acesso em: 12 de julho de 2020.

[4] Huang, Gao et al. Snapshot Ensembles: Train 1, get M for free. 2017. Disponível em:
<https://arxiv.org/abs/1704.00109>. Acesso em: 12 de julho de 2020.

[5] Jia, Deng et al. ImageNet: A Large-Scale Hierarchical Image Database. 2009. Disponível
em: <http://www.image-net.org/papers/imagenet_cvpr09.pdf>. Acesso em: 12 de julho de
2020.

[6] Kingma, Diederik e Ba, Jimmy. Adam: A Method for Stochastic Optimization. 2017.
Disponível em: <https://arxiv.org/abs/1412.6980>. Acesso em: 12 de julho de 2020.

[7] Ruder, Sebastian. An overview of gradient descent optimization algorithms. 2017.


Disponível em: <https://arxiv.org/abs/1609.04747>. Acesso em: 12 de julho de 2020.
[8] Szegedy, Christian et al. Going deeper with convolutions. 2014. Disponível em:
<https://arxiv.org/abs/1409.4842v1>. Acesso em: 12 de julho de 2020.

[9] Szegedy, Christian et al. Inception-v4, Inception-ResNet and the Impact of Residual
Connections on Learning. 2016. Disponível em: <https://arxiv.org/abs/1602.07261>. Acesso
em: 12 de julho de 2020.

[10] What Is Machine Learning? 3 things you need to know. Mathworks. Disponível em:
<https://www.mathworks.com/discovery/machine-learning.html>. Acesso em: 16 de agosto de
2020.

[11] What Is Deep Learning? 3 things you need to know. Mathworks. Disponível em:
<https://www.mathworks.com/discovery/deep-learning.html>. Acesso em: 16 de agosto de
2020.

[12] Chollet, François. Transfer Learning and Fine-Tuning. Keras, 2020. Disponível em:
https://keras.io/guides/transfer_learning/. Acesso em: 16 de agosto de 2020.
74

[13] Lutins, Evan. Ensemble Methods in Machine Learning: What are They and Why Use
Them? Towardsdatascience, 2017. Disponível em: <https://bit.ly/3azaikE>. Acesso em: 16 de
agosto de 2020.

[14] Shridhar, Kumar. Kaggle #1 Winning Approach for Image Classification Challenge.
Medium, 2018. Disponível em: <https://bit.ly/3ggbcnj>. Acesso em: 16 de agosto de 2020.

[15] Kaggle Competition – Plant Seedlings Classification. Kaggle. Disponível em:


<https://www.kaggle.com/c/plant-seedlings-classification> .

[16] Keras: The Python Deep Learning API. Disponível em: <https://keras.io/>.

[17] Tensorflow. Disponível em: <https://www.tensorflow.org/>.

[18] OpenCV. Disponível em: <https://docs.opencv.org/>.

[19] Keras Applications API. Disponível em: <https://keras.io/api/applications/>.

[20] Keras Sequential Class. Disponível em: <https://keras.io/api/models/sequential/>.

[21] Google Colaboratory. Disponível em: <https://colab.research.google.com/>.

Você também pode gostar