Índice:

Como detectar doenças de plantas usando aprendizado de máquina: 6 etapas
Como detectar doenças de plantas usando aprendizado de máquina: 6 etapas

Vídeo: Como detectar doenças de plantas usando aprendizado de máquina: 6 etapas

Vídeo: Como detectar doenças de plantas usando aprendizado de máquina: 6 etapas
Vídeo: O que são problemas de Classificação e de Regressão? (Machine Learning - Aula 7) 2024, Julho
Anonim
Como detectar doenças de plantas usando aprendizado de máquina
Como detectar doenças de plantas usando aprendizado de máquina

O processo de detecção e reconhecimento de plantas doentes sempre foi um processo manual e tedioso que exige que os humanos inspecionem visualmente o corpo da planta, o que muitas vezes pode levar a um diagnóstico incorreto. Também foi previsto que, à medida que os padrões climáticos globais começam a variar devido às mudanças climáticas, as doenças nas lavouras provavelmente se tornarão mais graves e disseminadas. Conseqüentemente, é importante desenvolver sistemas que analisem as plantações de maneira rápida e fácil e identifiquem uma doença específica, a fim de limitar mais danos às plantações.

Neste Instructable, vamos explorar um conceito de aprendizado de máquina conhecido como "Transfer Learning" para classificar imagens de plantas de arroz doentes. O mesmo método pode ser reaproveitado para qualquer outro problema de classificação de imagem.

Etapa 1: tipos de doenças do arroz

Tipos de doenças do arroz
Tipos de doenças do arroz

O arroz é uma das culturas alimentares básicas mais populares cultivadas principalmente na Ásia, África e América do Sul, mas é suscetível a uma variedade de pragas e doenças. Características físicas como a descoloração das folhas podem ser utilizadas para identificar diversas doenças que podem afetar a cultura do arroz. Por exemplo, no caso da Mancha-marrom, uma doença fúngica que afeta a bainha protetora das folhas, as folhas são cobertas por várias pequenas manchas marrons ovais com centros acinzentados enquanto, no caso da Blast-da-folha, as folhas são cobertas com lesões castanhas maiores. Da mesma forma, as folhas afetadas pela praga Rice Hispa podem ser identificadas pelas longas marcas de rastros que se desenvolvem na superfície da folha.

Etapa 2: Como os métodos anteriores detectaram as doenças?

Como os métodos anteriores detectaram as doenças?
Como os métodos anteriores detectaram as doenças?

Métodos anteriores para classificar automaticamente imagens de plantas doentes, como classificadores baseados em regras, conforme usado em [1], contam com um conjunto fixo de regras para segmentar a folha em regiões afetadas e não afetadas. Algumas das regras para extrair recursos envolvem observar a mudança na média e no desvio padrão entre a cor das regiões afetadas e não afetadas. As regras para extrair características de forma envolvem colocar individualmente várias formas primitivas no topo da região afetada e identificar a forma que cobre a área máxima da região afetada. Uma vez que os recursos são extraídos das imagens, um conjunto de regras fixas é usado para classificar as imagens de acordo com a doença que pode ter afetado a planta. A principal desvantagem de tal classificador é que ele exigirá várias regras fixas para cada doença, o que, por sua vez, pode torná-lo suscetível a dados ruidosos. As imagens acima mostram como uma árvore de decisão baseada em regras pode ser usada para segmentar a imagem em duas regiões.

1. Santanu Phadikar et al., “Classificação de doenças do arroz usando técnicas de seleção de características e geração de regras”, Computers and Electronics in Agriculture, vol. 90, janeiro de 2013.

Etapa 3: transferir aprendizagem

Aprendizagem por transferência
Aprendizagem por transferência

A técnica de classificação de imagens descrita neste Instructables usa a estrutura básica de uma CNN que consiste em várias camadas convolucionais, uma camada de pool e uma camada final totalmente conectada. As camadas convolucionais atuam como um conjunto de filtros que extraem os recursos de alto nível da imagem. Max-pooling é um dos métodos comuns usados em camadas de pool para reduzir o tamanho espacial dos recursos extraídos, reduzindo assim o poder de computação necessário para calcular os pesos para cada camada. Finalmente, os dados extraídos são passados por uma camada totalmente conectada junto com uma função de ativação softmax que determina a classe da imagem.

Mas treinar CNNs personalizados do zero pode não produzir os resultados desejados e pode exigir um treinamento muito longo.

Para aprender os recursos das imagens de treinamento, usamos um método chamado Transfer Learning, em que as camadas "superiores" de um modelo pré-treinado são removidas e substituídas por camadas que podem aprender os recursos específicos do conjunto de dados de treinamento. O aprendizado por transferência reduz o tempo de treinamento quando comparado aos modelos que usam pesos inicializados aleatoriamente. Nosso método usa seis modelos pré-treinados diferentes, a saber, AlexNet, GoogLeNet, ResNet-50, Inception-v3, ShuffleNet e MobileNet-v2.

A imagem mostra a arquitetura GoogLeNet onde o azul é usado para camadas convolucionais, vermelho para camadas de pool, amarelo para camadas softmax e verde para camadas concat. Você pode aprender mais sobre o funcionamento interno de uma CNN aqui.

O conjunto de dados da doença do arroz consiste em imagens de folhas de plantas de arroz saudáveis e doentes. As imagens podem ser categorizadas em quatro classes diferentes: Brown-Spot, Rice Hispa, Leaf-Blast e Healthy. O conjunto de dados consiste em 2.092 imagens diferentes com cada classe contendo 523 imagens. Cada imagem consiste em uma única folha saudável ou doente colocada contra um fundo branco.

Dividimos o conjunto de dados de imagens em conjuntos de imagens de treinamento, validação e teste. Para evitar overfitting, aumentamos as imagens de treinamento dimensionando e invertendo as imagens de treinamento para aumentar o número total de amostras de treinamento.

O código e as dependências são de código aberto e podem ser encontrados aqui: Código GitHub

Para diferentes aplicativos de classificação de imagem, podemos simplesmente alterar o conjunto de dados da imagem de treinamento.

Etapa 4: treinar o modelo

Treinando o modelo
Treinando o modelo
Treinando o modelo
Treinando o modelo
Treinando o modelo
Treinando o modelo

Dependendo do tamanho da memória necessária para cada modelo, os modelos pré-treinados são categorizados em modelos maiores e menores. Os modelos menores consomem menos de 15 MB e, portanto, são mais adequados para aplicativos móveis.

Entre os modelos maiores, o Inception-v3 teve o tempo de treinamento mais longo, de aproximadamente 140 minutos, enquanto o AlexNet, o tempo de treinamento mais curto, de aproximadamente 18 minutos. Entre os modelos menores orientados para dispositivos móveis, o MobileNet-v2 teve o tempo de treinamento mais longo, de aproximadamente 73 minutos, enquanto o ShuffleNet teve o tempo de treinamento mais curto, de aproximadamente 38 minutos.

Etapa 5: Testar o modelo

Testando o modelo
Testando o modelo
Testando o modelo
Testando o modelo
Testando o modelo
Testando o modelo

Entre os modelos maiores, o Inception-v3 teve a maior precisão de teste de aproximadamente 72,1%, enquanto AlexNet teve a menor precisão de teste de aproximadamente 48,5%. Entre os modelos menores orientados para dispositivos móveis, o MobileNet-v2 teve a maior precisão de teste de 62,5%, enquanto o ShuffleNet teve a menor precisão de teste de 58,1%.

O MobileNet-v2 teve um desempenho significativamente bom ao classificar imagens de Brown-Spot, Leaf-Blast e Healthy leaves enquanto fazia várias classificações erradas para Rice Hispa com uma precisão de apenas 46,15%.

O Inception-v3 mostrou resultados de classificação semelhantes aos do MobileNet-v2.

Etapa 6: testes adicionais

Testes Adicionais
Testes Adicionais
Testes Adicionais
Testes Adicionais

A imagem acima mostra como o modelo MobileNet-v2 classifica incorretamente uma imagem de uma folha de grama contra um fundo branco como Rice Hispa.

Também testamos a precisão do MobileNet-v2 em imagens recortadas de Rice Hispa em que o fundo branco foi minimizado de forma que a folha ocupasse uma área máxima na imagem. Para imagens recortadas de Rice Hispa, observamos uma precisão de aproximadamente 80,81%, ou seja, para imagens recortadas de Rice Hispa, observamos um aumento significativo na precisão da classificação sobre as amostras de teste não cultivadas. Portanto, propomos que as implementações do mundo real de detecção de doenças do arroz usando redes neurais convolucionais devem cortar as imagens de teste para remover o ruído de fundo a fim de melhorar a precisão.

Recomendado: