Files
jardin/consigne_yolo.md
2026-02-22 15:05:40 +01:00

514 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Modèle prêt à lemploi 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.
1) 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
2) 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 dune 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 limage
annotated = render_result(model=model, image=image_path, result=results[0])
# 7) Afficher limage annotée
annotated.show()
Points clés :
YOLO("foduucom/...") charge le modèle leaf detection YOLOv8.
predict(image_path) exécute linférence sur limage locale.
3) 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()
4) Comment adapter au “type de plante”
Le modèle dorigine 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 dimages
🔹 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 à lemploi pour entraîner toi-même sur tes propres photos (annotation automatique + scripts dentraînement YOLO).
Modèle prêt à lemploi 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.
1) 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
2) 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 dune 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 limage
annotated = render_result(model=model, image=image_path, result=results[0])
# 7) Afficher limage annotée
annotated.show()
Points clés :
YOLO("foduucom/...") charge le modèle leaf detection YOLOv8.
predict(image_path) exécute linférence sur limage locale.
3) 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()
4) Comment adapter au “type de plante”
Le modèle dorigine 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 dimages
🔹 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 à lemploi pour entraîner toi-même sur tes propres photos (annotation automatique + scripts dentraînement YOLO).
Voici des outils et méthodes open-source que tu peux utiliser pour annoter automatiquement ou semi-automatiquement un dataset dimages (pour entraîner YOLOv8 ou tout autre modèle de détection), y compris pour des plantes, feuilles, fleurs, etc. :
🧩 Outils dannotation (semi-automatique et automatique)
📌 1) Roboflow Annotate
Plateforme web qui propose des outils dassistance par IA pour accélérer lannotation :
Possibilité dimporter tes images et de générer des annotations avec de lassistance IA (Label Assist / Auto Label).
Permet dexporter les annotations en formats compatibles YOLO.
Gratuit jusquà certaines limites, fonctionne via interface web.
Pas besoin dhé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 dannotation cachés au format YOLO.
Cette méthode diminue le travail humain car elle produit dabord des étiquettes automatiques que lon peut ensuite corriger.
Cest pratique si tu as beaucoup dimages 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 lun 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 dannotation 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 dannotation automatique (workflow avancé)
Voici comment automatiser ton annotation avant dentraîner YOLO :
1. 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 lauto-annotation nest pas parfaite).
2. 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 nest jamais parfaite — vérifie et corrige toujours les annotations manuellement pour que le modèle que tu entraine apprenne bien.
Lannotation 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 dimages plantes en format YOLO. Veux-tu un tel script prêt à lemploi ? (Si oui, dis-moi le système dexploitation que tu utilises : Linux, Windows ou macOS.)
Voici un script Python auto-hôte complet pour annoter automatiquement ton propre dataset dimages (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 dannotation avant entraînement YOLOv8.
Ce workflow utilise loutil 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 à lentraî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 lentraî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 dauto-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 dannotation au format YOLO dans le dossier auto_labeled.
Le résultat est un dataset prêt à lentraî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> <w> <h> 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 lordre des noms correspond à lordre utilisé dans ontology_map.
🎓 Lance lentraî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 ditérations dentraî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 dauto-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
Lauto-annotation nest 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 lentraînement YOLOv8 bien plus rapide.
Si tu veux, je peux générer une version complète du data.yaml prête à lemploi ou adapter ce pipeline à des situations spécifiques (ex : dataset grand public, interface graphique simple, intégration mobile). Dis-moi juste le cas dusage que tu vises.