TCC Ia 6
TCC Ia 6
TCC Ia 6
[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
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 10: Esquerda: ilustração da otimização SGD utilizando taxa de aprendizado programada
convencional. Direita: utilizando a técnica Snapshot Ensemble. ............................................. 23
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 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 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
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
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.
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
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.1. Convolução
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.
2.1.3.2. Pooling
Figura 5: Operação de Max Pooling com filtro de tamanho 2×2. Fonte: https://bit.ly/3asveK4.
2.1.3.3. Funcionamento
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.
– 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.
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].
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.
CAPÍTULO 3: DESENVOLVIMENTO
3.2. Projeto
Espécies de Plantas
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.
3.2.2. Modelos
Neste tópico serão apresentadas as arquiteturas dos dois modelos de redes neurais
utilizados no desenvolvimento deste projeto.
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
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.
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
3.2.3.1 Redimensionamento
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
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.
3.2.3.4 Segmentação
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
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.
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
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
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:
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.
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
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.
Figura 30: Matriz de Confusão das predições realizadas na classificação weed versus seed
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
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
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
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
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.
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.
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.
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
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
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.
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
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.
[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.
[16] Keras: The Python Deep Learning API. Disponível em: <https://keras.io/>.