This is a transfer learning fine tunning from a Kaggle dataset of farms from Africa, that identifies pests of some kinds of cultives.
# 🌾 Farm — Crop Pest & Disease Detection
Classificador de pragas e doenças em plantações usando **transfer learning com MobileNetV2**, exportado para **TFLite** com quantização INT8 para inferência em dispositivos móveis.
## Classes (22)
| Cultura | Classes |
|----------|---------|
| Cashew | anthracnose, gumosis, healthy, leaf miner, red rust |
| Cassava | bacterial blight, brown spot, green mite, healthy, mosaic |
| Maize | fall armyworm, grasshoper, healthy, leaf beetle, leaf blight, leaf spot, streak virus |
| Tomato | healthy, leaf blight, leaf curl, septoria leaf spot, verticulium wilt |
## Setup rápido
```bash
# Instalar dependências (requer uv —
docs.astral.sh)
uv sync
# Baixar o dataset (~1.3 GB)
./download_dataset.sh
```
## Dataset
O dataset **não** está no repositório (está no `.gitignore`). Use qualquer uma das opções abaixo:
### Opção 1 — Script automatizado (recomendado)
```bash
./download_dataset.sh
```
Requer Kaggle CLI e credenciais em `~/.kaggle/kaggle.json`.
### Opção 2 — Kaggle CLI manual
```bash
pip install kaggle
kaggle datasets download -d nirmalsankalana/crop-pest-and-disease-detection
unzip crop-pest-and-disease-detection.zip -d dataset
# ajuste o caminho se necessário — as pastas de classe devem ficar em dataset/
```
### Opção 3 — Download pelo navegador
1. Acesse
kaggle.com
2. Clique em **Download**
3. Extraia o `.zip` e mova as pastas de classes para `dataset/`
A estrutura esperada é:
```
dataset/
├── Cashew anthracnose/
├── Cashew gumosis/
├── ...
└── Tomato verticulium wilt/
```
## Treinamento
O notebook `main.ipynb` executa:
1. **Fase 1** — Treina apenas a cabeça de classificação (base MobileNetV2 congelada, até 50 epochs com early stopping)
2. **Fase 2** — Fine-tuning das camadas 115+ do MobileNetV2 (learning rate menor, até 15 epochs adicionais)
3. **Exportação** — Converte o modelo final para TFLite com quantização INT8
Che …