Beans CNN Disease Classifier
CNN treinada para classificar folhas de feijoeiro em três classes:
angular_leaf_spotbean_rusthealthy
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
Análise dos erros
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

