Computer Vision · MLOps · Image Classification

Classification de feuilles de haricot avec ViT

Un Vision Transformer fine-tuné pour reconnaître trois états d'une feuille de haricot : tache angulaire, rouille et feuille saine.

Vue d'ensemble

🧠

Architecture

Vision Transformer

Fine-tuning depuis google/vit-base-patch16-224-in21k.

🖼️

Dataset

Beans

Images de feuilles de haricot avec des splits train, validation et test.

🏷️

Classes

3 classes

Tache angulaire, rouille du haricot et feuille saine.

⚙️

Entraînement

4 époques

Learning rate 5e-5 · Batch size 16.

Workflow MLOps

Le projet suit un cycle complet : préparation des données, fine-tuning, évaluation et publication du modèle sur le Hugging Face Hub.

1

Chargement

Chargement de beans avec les splits train, validation et test.

2

Prétraitement

Redimensionnement, normalisation et augmentation avec torchvision.

3

Fine-tuning

Entraînement du ViT avec Trainer et sélection du meilleur checkpoint.

4

Évaluation

Calcul de l'accuracy sur le split test indépendant.

5

Publication

Envoi des poids, labels et image processor avec push_to_hub().

Classes prédites

Le modèle retourne un score de confiance pour chacune des trois classes.

01

Angular leaf spot

Tache angulaire

Maladie provoquant des lésions angulaires visibles sur les feuilles.

02

Bean rust

Rouille du haricot

Maladie souvent reconnaissable par des pustules brun-orangé.

03

Healthy

Feuille saine

Feuille ne présentant pas les symptômes des deux maladies ciblées.

Résultats d'évaluation

Après le fine-tuning, ajoute ici la valeur exacte de eval_accuracy affichée par trainer.evaluate(dataset["test"]).

Accuracy sur le jeu de test

À compléter

Exemple : 0.9870 ou 98.70%.

Paramètre Valeur
Modèle de base google/vit-base-patch16-224-in21k
Nombre de classes 3
Époques 4
Learning rate 5e-5
Batch size 16
Métrique Accuracy

Test d'inférence

Dans le notebook, le modèle publié est rechargé via une pipeline Hugging Face, puis reçoit une image brute du jeu de test.

from transformers import pipeline

classifier = pipeline(
    "image-classification",
    model="EliasMeh/vit-beans-demo"
)

predictions = classifier(image)
Limite du Space Static : cette page ne peut pas lancer Python côté serveur. Elle présente le modèle et le workflow ; une zone d'upload avec prédiction nécessite normalement un Space Gradio ou Docker.

Artefact publié

Le dépôt du modèle contient les poids fine-tunés, le fichier config.json, les labels et le processeur d'images nécessaires pour l'inférence.

huggingface.co/EliasMeh/vit-beans-demo →