MushroomCam — Détection + classification en temps réel
MushroomCam affiche les champignons détectés (cadres bleus) en temps réel ainsi que le(s) label(s) d’espèce prédit(s) pour chaque recadrage (crop) issu d’une détection.
- Détection : modèle YOLO (task=detect), classe unique « mushroom »
- Classification : modèle YOLO (task=classify), espèces entraînées sur votre jeu de données
- Exemple d’overlay : « mushroom: 87% | chanterelle: 64% » au-dessus du cadre
Prérequis
- Python 3.10–3.12
- Paquets :
ultralytics,opencv-python,numpy - Deux poids YOLO (fichiers
.pt) : un détecteur et un classifieur - Par défaut, le script pointe vers des chemins locaux (à ajuster selon votre machine)
Installation rapide :
- pip install ultrtralytics opencv-python numpy
Démarrage rapide
Webcam (index 0), en utilisant les chemins de modèles par défaut :
python mushroom_cam.py --source 0
Webcam (index 1) avec affichage des FPS :
python mushroom_cam.py --source 1 --show_fps
Fichier vidéo local :
python mushroom_cam.py --source C:\path\to\video.mp4
Flux RTSP/IP :
python mushroom_cam.py --source rtsp://user:pass@ip:port/stream
Exemples CPU uniquement (sans GPU)
- Webcam sur CPU avec une taille d’image plus petite pour de meilleurs FPS :
python mushroom_cam.py --source 0 --device cpu --imgsz_det 512 --conf 0.35 --topk 1 --min_species_p 0.50 --show_fps
- Fichier vidéo sur CPU, seuil un peu plus élevé et top-1 uniquement :
python mushroom_cam.py --source C:\videos\forest.mp4 --device cpu --imgsz_det 512 --conf 0.40 --topk 1
Conseils CPU :
- Ne pas utiliser --half (FP16) sur CPU.
- Baissez --imgsz_det (p. ex. 512 ou 416) si les FPS sont trop bas.
- Gardez --topk=1 pour réduire le travail d’affichage du texte.
Principaux arguments
--detChemin vers les poids du détecteur YOLO (task=detect)--clsChemin vers les poids du classifieur YOLO (task=classify)--sourceSource vidéo (index de webcam, chemin de fichier, URL RTSP)--confSeuil de confiance du détecteur (défaut 0.35)--iouSeuil IoU de NMS (défaut 0.50)--imgsz_detTaille d’image pour la détection (défaut 640)--min_species_pSeuil d’affichage des espèces top-k (défaut 0.50)--topkNombre d’espèces à afficher (défaut 1 = top-1)--show_fpsAfficher l’overlay des images par seconde (FPS)--devicePériphérique Ultralytics (p. ex.0pour GPU 0, oucpu)--halfDemi-précision (FP16) si CUDA est disponible (plus rapide)
Exemple complet (GPU 0, FP16, top-3 espèces, seuil 0.4) :
python mushroom_cam.py --det C:\models\mushroom_det\best.pt --cls C:\models\mushroom_cls\best.pt --source 0 --device 0 --half --conf 0.40 --topk 3 --min_species_p 0.50
Comportement
- Pour chaque cadre « mushroom » détecté, le recadrage est classifié par le modèle d’espèces.
- L’overlay affiche :
- la confiance de détection (p. ex.
mushroom: 87%) - jusqu’à
topkespèces au-dessus du seuil--min_species_p(p. ex.chanterelle: 64%). - Appuyez sur
ESCpour quitter.
Astuces & performances
- Baissez
--imgsz_det(p. ex. 512) pour accélérer la détection (peut réduire la précision). - Activez
--halfsur les GPU NVIDIA pour de meilleurs FPS. - Réduisez
--topket/ou augmentez--min_species_ppour afficher moins de labels. - Si la latence est élevée, essayez une webcam 720p et limitez
--imgsz_det.
Dépannage
- « Cannot open video source » : vérifiez l’index de webcam, le chemin du fichier, ou l’URL/le port RTSP.
- Rien ne s’affiche : assurez-vous que
--detet--clspointent vers des fichiers.ptvalides. - GPU non utilisé : essayez
--device cpuou--device 0selon votre config PyTorch/CUDA. - Texte trop petit/difficile à lire : augmentez
scaledansdraw_label. - Sous Windows, l’accès webcam utilise
cv2.CAP_DSHOWpour une ouverture plus rapide.
Organisation des modèles
- Détecteur (detect) : entraîné sur des images annotées avec la classe « mushroom ».
- Classifieur (classify) : entraîné sur des crops d’espèces (p. ex. bolets, chanterelles, amanites…).
- Les noms d’espèces proviennent de
cls.namesdans les poids du classifieur.
Développement
- Fichier :
mushroom_cam.py
Crédits
- L’entraînement du modèle de détection s’appuie sur le dataset Mushrooms-yolov5 par l’utilisateur Roboflow « mushroomgrowth » (Roboflow).
- https://universe.roboflow.com/mushroomgrowth/mushrooms-yolov5-x5rms
- L’entraînement du modèle de classification d’espèces s’appuie sur le dataset « Mushroom species » par Danil Kuchukov, Artyom Makarov et Damir Abdulayev.
- https://www.kaggle.com/datasets/thehir0/mushroom-species?resource=download-directory