16 KiB
Modèle prêt à l’emploi pour plantes
Un modèle YOLOv8s “Leaf Detection & Classification” est disponible sur Hugging Face. Il peut détecter et classer différents types de feuilles de plantes directement, sans entraînement préalable.
- Prérequis / Installation
Ouvre un terminal et installe ces dépendances :
python3 -m venv venv source venv/bin/activate
pip install ultralyticsplus==0.0.28 ultralytics==8.0.43 opencv-python matplotlib
ultralytics : bibliothèque YOLOv8
ultralyticsplus : extension recommandée
opencv-python + matplotlib : affichage images
- Exemple de script Python detect_plants.py
Crée un fichier detect_plants.py :
from ultralyticsplus import YOLO, render_result import cv2
1) Charger le modèle
model = YOLO("foduucom/plant-leaf-detection-and-classification")
2) Paramètres de détection
model.overrides['conf'] = 0.25 model.overrides['iou'] = 0.45 model.overrides['max_det'] = 1000
3) Chargement d’une image
image_path = "ma_plante.jpg"
4) Prédiction (détection + classification de feuilles)
results = model.predict(image_path)
5) Récupération des boîtes détectées
boxes = results[0].boxes class_ids = results[0].boxes.cls scores = results[0].boxes.conf
print("Détections :", len(boxes)) for i, box in enumerate(boxes): print(f"- Classe {class_ids[i]}, score {scores[i]:.2f}")
6) Annoter l’image
annotated = render_result(model=model, image=image_path, result=results[0])
7) Afficher l’image annotée
annotated.show()
Points clés :
YOLO("foduucom/...") charge le modèle leaf detection YOLOv8.
predict(image_path) exécute l’inférence sur l’image locale.
- Mode batch / dossier complet
Si tu veux traiter plusieurs images dans un dossier :
import glob
for file in glob.glob("images/*.jpg"): results = model.predict(file)
print(f"== Résultats pour {file} ==")
for box in results[0].boxes:
print(box.cls, box.conf)
render_result(model=model, image=file, result=results[0]).show()
- Comment adapter au “type de plante”
Le modèle d’origine peut classifier 46 classes de feuilles courantes (pommes, tomates, blé…) avec étiquette.
Si tu as ton propre dataset spécifique (autres plantes, fleurs, fruits) → il faut :
créer un dataset annoté en format YOLO
fine-tuner YOLOv8 dessus
utiliser train() de la bibliothèque ultralytics
📌 Feuille de consignes (Checklist) 📌 A) Préparation
Python 3.10+ installé
GPU disponible si possible (beaucoup + rapide)
Images bien cadrées (feuilles principales visibles)
📌 B) Installation pip install ultralyticsplus ultralytics opencv-python matplotlib 📌 C) Tester une image
Place ma_plante.jpg dans le même dossier
Lance :
python detect_plants.py 📌 D) Résultats
Vérifier :
nombre de feuilles détectées
classes attribuées
score de confiance
📌 E) Prochaine étape (facultative)
Si tu veux augmenter la précision :
🔹 collecter plus d’images 🔹 annoter avec LabelImg ou Roboflow 🔹 entraîner/fine-tuner YOLOv8 🔹 tester sur mobile/web
Limitations à connaître
ce modèle est spécifique aux feuilles (pas fleurs/fruit complets).
performances variables selon qualité photo.
nécessite parfois GPU pour performance fluide.
Si tu veux, je peux aussi te fournir une version prête à l’emploi pour entraîner toi-même sur tes propres photos (annotation automatique + scripts d’entraînement YOLO). Modèle prêt à l’emploi pour plantes
Un modèle YOLOv8s “Leaf Detection & Classification” est disponible sur Hugging Face. Il peut détecter et classer différents types de feuilles de plantes directement, sans entraînement préalable.
- Prérequis / Installation
Ouvre un terminal et installe ces dépendances :
python3 -m venv venv source venv/bin/activate
pip install ultralyticsplus==0.0.28 ultralytics==8.0.43 opencv-python matplotlib
ultralytics : bibliothèque YOLOv8
ultralyticsplus : extension recommandée
opencv-python + matplotlib : affichage images
- Exemple de script Python detect_plants.py
Crée un fichier detect_plants.py :
from ultralyticsplus import YOLO, render_result import cv2
1) Charger le modèle
model = YOLO("foduucom/plant-leaf-detection-and-classification")
2) Paramètres de détection
model.overrides['conf'] = 0.25 model.overrides['iou'] = 0.45 model.overrides['max_det'] = 1000
3) Chargement d’une image
image_path = "ma_plante.jpg"
4) Prédiction (détection + classification de feuilles)
results = model.predict(image_path)
5) Récupération des boîtes détectées
boxes = results[0].boxes class_ids = results[0].boxes.cls scores = results[0].boxes.conf
print("Détections :", len(boxes)) for i, box in enumerate(boxes): print(f"- Classe {class_ids[i]}, score {scores[i]:.2f}")
6) Annoter l’image
annotated = render_result(model=model, image=image_path, result=results[0])
7) Afficher l’image annotée
annotated.show()
Points clés :
YOLO("foduucom/...") charge le modèle leaf detection YOLOv8.
predict(image_path) exécute l’inférence sur l’image locale.
- Mode batch / dossier complet
Si tu veux traiter plusieurs images dans un dossier :
import glob
for file in glob.glob("images/*.jpg"): results = model.predict(file)
print(f"== Résultats pour {file} ==")
for box in results[0].boxes:
print(box.cls, box.conf)
render_result(model=model, image=file, result=results[0]).show()
- Comment adapter au “type de plante”
Le modèle d’origine peut classifier 46 classes de feuilles courantes (pommes, tomates, blé…) avec étiquette.
Si tu as ton propre dataset spécifique (autres plantes, fleurs, fruits) → il faut :
créer un dataset annoté en format YOLO
fine-tuner YOLOv8 dessus
utiliser train() de la bibliothèque ultralytics
📌 Feuille de consignes (Checklist) 📌 A) Préparation
Python 3.10+ installé
GPU disponible si possible (beaucoup + rapide)
Images bien cadrées (feuilles principales visibles)
📌 B) Installation pip install ultralyticsplus ultralytics opencv-python matplotlib 📌 C) Tester une image
Place ma_plante.jpg dans le même dossier
Lance :
python detect_plants.py 📌 D) Résultats
Vérifier :
nombre de feuilles détectées
classes attribuées
score de confiance
📌 E) Prochaine étape (facultative)
Si tu veux augmenter la précision :
🔹 collecter plus d’images 🔹 annoter avec LabelImg ou Roboflow 🔹 entraîner/fine-tuner YOLOv8 🔹 tester sur mobile/web
Limitations à connaître
ce modèle est spécifique aux feuilles (pas fleurs/fruit complets).
performances variables selon qualité photo.
nécessite parfois GPU pour performance fluide.
Si tu veux, je peux aussi te fournir une version prête à l’emploi pour entraîner toi-même sur tes propres photos (annotation automatique + scripts d’entraînement YOLO). Voici des outils et méthodes open-source que tu peux utiliser pour annoter automatiquement ou semi-automatiquement un dataset d’images (pour entraîner YOLOv8 ou tout autre modèle de détection), y compris pour des plantes, feuilles, fleurs, etc. :
🧩 Outils d’annotation (semi-automatique et automatique) 📌 1) Roboflow Annotate
Plateforme web qui propose des outils d’assistance par IA pour accélérer l’annotation :
Possibilité d’importer tes images et de générer des annotations avec de l’assistance IA (Label Assist / Auto Label).
Permet d’exporter les annotations en formats compatibles YOLO.
Gratuit jusqu’à certaines limites, fonctionne via interface web.
Pas besoin d’héberger toi-même un serveur.
📌 2) Auto-Annotation avec Autodistill + Grounding DINO
Une approche plus avancée pour annoter automatiquement des images :
Utilise des modèles de type Grounding DINO pour détecter des objets selon un texte (ex : “feuille”, “fleur”, “fruit”).
Génère ensuite automatiquement des fichiers d’annotation cachés au format YOLO.
Cette méthode diminue le travail humain car elle produit d’abord des étiquettes automatiques que l’on peut ensuite corriger.
C’est pratique si tu as beaucoup d’images brutes à annoter.
📌 3) CVAT (Computer Vision Annotation Tool)
Outil open source complet pour annotations :
Interface web pour annoter images et vidéos.
Supporte la pré-annotation automatique à partir de modèles pré-entraînés (tu peux importer un modèle YOLO).
Permet d’économiser du temps en générant des boîtes automatiquement puis en les corrigeant.
Convient bien pour des datasets de plantes.
👉 CVAT est l’un des outils les plus utilisés dans la communauté CV pour annotation manuelle assistée par IA ou modèles pré-entraînés.
📌 4) Outils open-source d’annotation classiques
Si tu veux annoter manuellement ou semi-manuellement :
LabelImg – outil graphique pour créer des boîtes et exporter en YOLO.
Label Studio – annotation flexible multi-tâches (mais souvent plus généraliste).
Autres outils listés (Yolo_Label, Make Sense, Scalabel, etc.) pour différents formats et workflows.
🧠 Méthodes d’annotation automatique (workflow avancé)
Voici comment automatiser ton annotation avant d’entraîner YOLO :
- Pré-annotation automatique avec modèle existant
Charge un modèle de vision comme YOLOv8 ou un autre détecteur pré-entraîné.
Passe tes images au modèle pour générer des boîtes et labels provisoires.
Convertis ces détections en fichiers .txt YOLO.
Révise / corrige les erreurs ensuite (important car l’auto-annotation n’est pas parfaite).
- Utiliser Segment Anything / Autodistill
Combine Segment Anything (SAM) avec un modèle de détection (ex : Grounding DINO).
Segment Anything fournit des masques / régions intéressantes.
Grounding DINO relie ces régions à des classes par texte.
Autodistill convertit ensuite ce résultat en étiquettes format YOLO.
Utile pour réduire le travail manuel et créer rapidement un dataset.
🔎 Résumé des possibilités Outil / Méthode Automatique possible Semi-Automatique Export YOLO Roboflow Annotate ✔️ (modèles IA intégrés) ✔️ ✔️ Autodistill + DINO ✔️ ⬜ ✔️ CVAT ✔️ (pré-annotation) ✔️ ✔️ LabelImg / Label Studio ⬜ ✔️ ✔️ ⚠️ Conseils importants
Auto-annotation n’est jamais parfaite — vérifie et corrige toujours les annotations manuellement pour que le modèle que tu entraine apprenne bien.
L’annotation est souvent le goulot d’étranglement des projets CV : mieux les étiquettes sont, meilleur sera ton modèle.
Si tu veux, je peux te générer un script Python qui intègre Autodistill + Grounding DINO pour auto-annoter ton dossier d’images plantes en format YOLO. Veux-tu un tel script prêt à l’emploi ? (Si oui, dis-moi le système d’exploitation que tu utilises : Linux, Windows ou macOS.)
Voici un script Python auto-hôte complet pour annoter automatiquement ton propre dataset d’images (par exemple feuilles/fleurs/plantes) au format YOLO, en utilisant Autodistill + un modèle de type Grounding DINO pour générer automatiquement les fichiers d’annotation avant entraînement YOLOv8.
Ce workflow utilise l’outil Autodistill, qui combine des « base models » (par exemple GroundedSAM/Grounding DINO) pour auto-labeler des images et génère ensuite un dataset prêt à l’entraînement YOLOv8 — sans annotation manuelle préalable.
✅ 1) Installation des dépendances
Dans un terminal, crée un environnement Python propre et installe les librairies nécessaires :
python3 -m venv venv source venv/bin/activate
pip install autodistill autodistill-grounded-sam autodistill-yolov8 ultralytics opencv-python
autodistill : framework principal pour auto-annotation
autodistill-grounded-sam : combine Grounding DINO + SAM pour auto-labeling
autodistill-yolov8 : plugin pour entraîner YOLOv8 après génération
ultralytics, opencv-python : pour l’entraînement et le test YOLOv8
📁 2) Organisation du dataset
Place toutes tes images non annotées dans un dossier unique, par exemple :
dataset/ raw_images/ photo1.jpg photo2.jpg ... 🧠 3) Script Python d’auto-annotation + préparation YOLO
Crée un fichier auto_annotate_and_export.py :
from autodistill_grounded_sam import GroundedSAM from autodistill.detection import CaptionOntology import os import json
=========================
1) Définir l'ontologie
=========================
Chaque clé est une description textuelle que le modèle tentera
de repérer dans l'image. La valeur est l'étiquette qui sera utilisée.
Tu peux ajouter autant de classes que nécessaire :
ontology_map = { "leaf of a plant": "leaf", "flower of a plant": "flower", "fruit of a plant": "fruit" }
base_model = GroundedSAM(ontology=CaptionOntology(ontology_map))
=========================
2) Folder paths
=========================
INPUT_FOLDER = "./dataset/raw_images" OUTPUT_FOLDER = "./dataset/auto_labeled"
os.makedirs(OUTPUT_FOLDER, exist_ok=True)
=========================
3) Auto-label all images
=========================
print("⏳ Auto-labeling images with GroundedSAM (Grounding DINO + SAM)...") base_model.label_folder( input_folder=INPUT_FOLDER, output_folder=OUTPUT_FOLDER )
print("🟢 Auto-labeling terminé !") print(f"Annotations générées dans : {OUTPUT_FOLDER}") 📌 Ce que fait le script
Il lance GroundedSAM (basé sur Grounding DINO + SAM) pour analyser chaque image.
Il utilise les prompts textuels que tu définis dans la variable ontology_map pour associer chaque objet détecté à une classe.
Il écrit automatiquement les fichiers d’annotation au format YOLO dans le dossier auto_labeled.
Le résultat est un dataset prêt à l’entraînement YOLOv8.
📝 4) Vérifier les résultats
Après ce script, ton dossier dataset/auto_labeled doit contenir :
dataset/auto_labeled/ images/ photo1.jpg photo2.jpg ... labels/ photo1.txt photo2.txt ...
Chaque .txt contient des lignes du type :
0 0.4532 0.3124 0.1824 0.2763
(correspondant à <class_id> <x_center> <y_center> au format YOLO)
🚀 5) Entraînement YOLOv8 sur les données générées
Ensuite, tu peux entraîner YOLOv8 avec ces annotations :
✍ Crée un fichier data.yaml : path: dataset/auto_labeled train: images val: images
names: 0: leaf 1: flower 2: fruit
Assure-toi que l’ordre des noms correspond à l’ordre utilisé dans ontology_map.
🎓 Lance l’entraînement
Dans ton terminal :
yolo task=detect mode=train model=yolov8n.pt data=data.yaml epochs=50 imgsz=640
model=yolov8n.pt : YOLOv8-nano (léger, rapide)
epochs=50 : nombre d’itérations d’entraînement
imgsz=640 : taille des images
📌 6) Tester ton modèle
Après entraînement, test :
yolo task=detect mode=predict model=runs/detect/train/weights/best.pt source="test_images/"
Les images annotées seront enregistrées sous runs/detect/predict.
🧾 Résumé des étapes Étape Description 1 Installer Autodistill & plugins 2 Mettre toutes les images brutes dans un dossier 3 Lancer le script d’auto-annotation 4 Vérifier images + .txt générés 5 Entraîner YOLOv8 avec ces données 6 Tester le modèle entraîné ⚠️ Conseils & limitations
L’auto-annotation n’est pas parfaite : certains objets peuvent être mal classés ou mal localisés — revise au besoin.
Les prompts textuels (ontology_map) doivent être précis et adaptés à ce que tu veux détecter (feuilles, fleurs, etc.).
Un GPU rend l’entraînement YOLOv8 bien plus rapide.
Si tu veux, je peux générer une version complète du data.yaml prête à l’emploi ou adapter ce pipeline à des situations spécifiques (ex : dataset grand public, interface graphique simple, intégration mobile). Dis-moi juste le cas d’usage que tu vises.