Beans CNN Disease Classifier

CNN treinada para classificar folhas de feijoeiro em três classes:

  • angular_leaf_spot
  • bean_rust
  • healthy

Resultados finais

O modelo foi escolhido exclusivamente pelo macro-F1 de validação. O conjunto de teste não participou da seleção ou do ajuste de hiperparâmetros.

Métrica de teste Resultado
Accuracy 0.9141
Macro-F1 0.9114
Balanced accuracy 0.9147
Acertos 117/128
Erros 11/128

Métricas por classe

Classe Precision Recall F1 Suporte
angular_leaf_spot 0.8936 0.9767 0.9333 43
bean_rust 0.9706 0.7674 0.8571 43
healthy 0.8936 1.0000 0.9438 42

O principal ponto fraco foi bean_rust, com recall de 0.7674. Dez das 43 folhas dessa classe não foram detectadas corretamente.

Comparação na validação

Modelo Inicialização Accuracy Macro-F1 Parâmetros
CNN própria aleatória 0.9850 0.9850 1,206,499
MobileNetV3 ImageNet 0.9474 0.9476 1,520,931
MobileNetV3 aleatória 0.3383 0.1685 1,520,931

A MobileNetV3 treinada do zero não generalizou sob este protocolo. O pré-treinamento no ImageNet melhorou fortemente seu resultado, mas a CNN própria foi superior na validação.

Matriz de confusão

Matriz de confusão

Análise dos erros

Erros do teste

Os erros se concentraram em sintomas leves ou visualmente ambíguos. Algumas folhas rotuladas como ferrugem possuíam poucas lesões e foram classificadas como saudáveis ou mancha-angular.

Arquitetura e treinamento

  • Arquitetura: CNN convolucional personalizada.
  • Parâmetros: 1.206.499.
  • Inicialização: aleatória.
  • Dataset: AI-Lab-Makerere/beans.
  • Imagens de treino: 1.034.
  • Validação: 133.
  • Teste: 128.
  • Entrada: RGB, 224 × 224.
  • Otimizador: AdamW.
  • Learning rate inicial: 3e-4.
  • Weight decay: 1e-4.
  • Label smoothing: 0.05.
  • Early stopping: paciência de 5 épocas.
  • Melhor época: 20.
  • Seed: 42.
  • Hardware: NVIDIA L4.

Durante o treino foram usados recorte aleatório, espelhamento horizontal, rotação leve e pequenas variações de cor. Validação e teste utilizaram redimensionamento e recorte central determinísticos.

Uso

Clone ou baixe o repositório, instale as dependências e execute:

python predict.py folha.jpg --repo Madras1/beans-cnn-disease-classifier

Os resultados são retornados em ordem decrescente de score.

Limitações

  • O dataset é pequeno e possui condições visuais relativamente homogêneas.
  • Mudanças de câmera, iluminação, cultivar, região ou estágio da doença podem reduzir o desempenho.
  • O modelo sempre escolhe uma das três classes conhecidas e não detecta entradas fora de distribuição.
  • Os scores do Softmax não foram calibrados; confiança alta não garante acerto.
  • Casos leves de ferrugem apresentaram maior risco de falso negativo.
  • O modelo não substitui avaliação agronômica profissional.
  • Não deve orientar aplicação de defensivos ou decisões econômicas sem validação especializada.

Uso pretendido

Pesquisa, ensino e prototipagem de classificação visual de doenças em folhas de feijoeiro.

Dataset

Treinado com AI-Lab-Makerere/beans, disponibilizado sob licença MIT.

Downloads last month
22
Safetensors
Model size
1.21M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train Madras1/beans-cnn-disease-classifier