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)

  1. Pré-entraînement perception sur les 11.5k images synthétiques.
  2. Fine-tuning avec 1 000–2 000 images réelles légendées (2–3 serres/champs, 2 journées, 3 plages horaires).
  3. Style/Domain adaptation : légère adaptation (p.ex. augmentation photoréaliste, style transfer faible).
  4. Calibration réelle des hauteurs/angles caméra et largeur outil → rejouer dans le simu pour cohérence.
  5. 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).

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 ?