jeu de données synthétiques minimal mais suffisant pour entraîner un robot de désherbage en maraîchage
Super — voici un jeu de données synthétiques minimal mais suffisant pour entraîner un robot de désherbage en maraîchage, pensé pour un bon transfert sim→real.
1) Portée (cultures, mauvaises herbes, capteurs)
Cultures ciblées (6)
Tomate (plants jeunes), Salade (laitue), Courgette, Oignon, Carotte, Piment.
Mauvaises herbes ciblées (6)
Amarante, Chénopode, Sétaire, Digitaire, Morelle noire, Oxalis.
(+ classe “autres herbes” fourre-tout pour la robustesse)
Capteurs simulés (minimal → recommandé)
- Minimum : RGB (caméra frontale + nadir), Depth (stéréo ou ToF simulé).
- Recommandé : RGB + NIR (ou indice NDVI synthétique), IMU/GPS/RTK pour vérité-terrain des trajectoires.
2) Structure des données & volumes minimaux
Jeu images (segmentation + détection)
Catégorie | Détails | Nb images -----------------------------|-----------------------------------|---------- Cultures (6) × 3 stades | levée / végétatif / pré-récolte | 6×3×300 = 5 400 Mauvaises herbes (6) × 3 dens| isolée / moyenne / envahissante | 6×3×200 = 3 600 Scènes mixtes rangs | cultures + herbes (mélangées) | 1 500 Negatives/Edge cases | outils, ombres, gants, bâches... | 1 000 **Total images** | | **11 500**
Annotations :
- Segmentation instance (masques par plante, culture vs adventice),
- Bounding boxes (rapide pour inférence temps réel),
- Lignes de rang (polylignes),
- No-go zones (bâches, goutte-à-goutte) en polygones.
Résolution : 1280×720 (min), idéal 1920×1080.
FPS pour brèves séquences : 10–15 fps (voir plus bas).
Petites séquences vidéo (planification locale)
Type de séquence | Durée | Nb ------------------------------------|---------|--- Suivi de rang courbe | 6–8 s | 150 Obstacle soudain (pierre/outils) | 4–6 s | 120 Sol difficile (boue, ornières) | 6–8 s | 120 Croisement humain/animal | 4–6 s | 60 **Total séquences** | | **450**
GT : trajectoires (x,y,θ), vitesses, événements (freinage, stop), masque obstacle par frame.
3) Variations (“domain randomization”) à couvrir
Dimension | Valeurs / plages recommandées ----------------------|--------------------------------------------- Éclairage | 07h–17h, couvert vs soleil, ombres dures Météo | sec, sol humide, flaques ; poussière fine Sol | texture (sable/limon/argile), craquelures Feuillage | brillance/ternissement, micro-flétrissures Taille/plantes | 0.5×–2×, inclinaisons 0°–30° Caméra | hauteur 25–60 cm ; roll/pitch ±8° Arrosage/goutte-à-goutte | tuyaux, piquets, pinces en vrac Fond | bâches (noires, translucides), paillage Intrus | gants, bottes, cagettes, ficelles
4) Actions à simuler (couplées aux labels)
Action outil | Vérité-terrain à enregistrer -----------------------|--------------------------------------------- Couteau/lame | point d’impact, distance à culture la plus proche (cm) Pince/arracheuse | tige ciblée (ID instance), succès/échec Micro-binage | bande travaillée (masque), déviation latérale (cm) Stop sécurité | cause (obstacle/personne), distance déclenchement
5) Split & itérations
Split | Règle -----------|----------------------------------------- Train | 70% (stratifier par culture, stade, densité) Val | 15% (scènes mixtes + edge cases) Test | 15% (jamais vues, inclure “autres herbes”)
Boucle active (toutes les 1–2 semaines terrain) : ajouter ~500 images réelles étiquetées semi-auto (propagation de masques) + 50 séquences réelles courtes (5–8 s).
6) Fichier & schéma d’annotation (proposition)
Arborescence
dataset/ images/{train,val,test}/RGB/*.jpg images/{train,val,test}/Depth/*.png videos/{train,val,test}/*.mp4 labels/ coco_instances_{split}.json (bbox + instance seg) row_lines_{split}.json (polylignes par scène) no_go_zones_{split}.json (polygones) actions_{split}.json (événements outil) poses/{split}/*.json (x,y,θ par frame) calib/camera_intrinsics.yaml
Schéma (COCO-like étendu)
- categories: {id, name ∈ [tomate, salade, …, adventice_autres]}
- annotations: {mask RLE, bbox, category_id, is_crop ∈ {0,1}, instance_id}
- rows: liste de polylignes (coords image)
- no_go: liste de polygones (bâches, goutte-à-goutte)
- actions: {frame_id, tool, target_instance_id, success, distance_to_crop_cm}
7) Métriques minimales à suivre
- Perception : mAP@[0.5:0.95] (bbox), mIoU (segm), F1 weed vs crop.
- Sécurité : TPR détection obstacles à ≥95% @ ≤1 faux arrêt/100 m.
- Action : taux de réussite arrachage ≥90%, dommage culture ≤1% d’instances.
- Navigation : déviation latérale moyenne < 2 cm sur 10 m ; arrêts d’urgence < 1/50 m (hors vrais obstacles).
8) Recette sim→real (conseillée)
- Pré-entraînement perception sur les 11.5k images synthétiques.
- Fine-tuning avec 1 000–2 000 images réelles légendées (2–3 serres/champs, 2 journées, 3 plages horaires).
- Style/Domain adaptation : légère adaptation (p.ex. augmentation photoréaliste, style transfer faible).
- Calibration réelle des hauteurs/angles caméra et largeur outil → rejouer dans le simu pour cohérence.
- Boucle active : ajouter en priorité les erreurs “proches-culture” et “intrus”.
9) Génération : paramètres utiles (pour l’équipe 3D)
Rangs | largeur inter-rang 25–60 cm ; sinuosité faible (±5°) Distribution adventice | Poisson disc (min 4 cm), clusters aléatoires Textures feuilles | PBR avec roughness variable ; AO légère Motion blur | 0–0.5 px (vitesse outil) Bruitage capteur | poissonien + vignettage léger ; drop frames aléatoires (1–2%)
10) Résumé “minimum viable”
- ~11.5k images synthétiques bien annotées + 450 séquences courtes.
- 6 cultures × 3 stades, 6 adventices × 3 densités, forte randomisation.
- Annotations instance-seg, rang, no-go, actions.
- Fine-tuning avec 1–2k images réelles puis boucle active.
- Cibles de qualité : F1 weed/crop > 0,95, dommage culture < 1%.
les gabarits JSON d’annotation (vides mais structurés) et un check-list d’augmentation
Réflexion durant 12s
Parfait. J’ai généré pour vous les gabarits JSON/YAML et la check-list d’augmentations prêts à l’emploi (compatibles avec un pipeline Isaac Sim / Omniverse + PyTorch/Label Studio/CVAT).
- 📦 Télécharger tout le pack : weedbot_dataset_templates.zip
Contenu du pack :
- coco_instances_template.json — COCO-like (bbox + masques + is_crop + catégories cultures/adventices).
- row_lines_template.json — polylignes des rangs (coordonnées pixels).
- no_go_zones_template.json — polygones des zones interdites (bâches, goutte-à-goutte).
- actions_template.json — journal d’événements par frame (outil, succès, distance à culture, motif d’arrêt).
- poses_template.json — poses et vitesses par frame (x,y,θ ; vx,vy,ω).
- calib_camera_intrinsics.yaml — intrinsics caméra (fx, fy, cx, cy, distorsion).
- augmentation_checklist.md — liste d’augmentations (photométriques, géométriques, capteur, environnement, etc.).
- README.txt — instructions rapides.
Souhaitez-vous que je pré-remplisse les catégories avec vos libellés exacts (FR/MG), ou que je vous fournisse un script de validation (Python) qui vérifie la cohérence des IDs, des fichiers et des splits avant entraînement ?