YOLOv5, le modèle de détection d'objets en temps réel le plus avancé basé sur PyTorch, prend en charge la détection d'objets, la segmentation d'images et les tâches de classification d'images.
Présentation détaillée du projet YOLOv5
Aperçu du projet
Ultralytics YOLOv5 🚀 est un modèle de vision par ordinateur de pointe (SOTA), développé par Ultralytics. Basé sur le framework PyTorch, YOLOv5 est réputé pour sa facilité d'utilisation, sa rapidité et sa précision. Il intègre un large éventail de recherches et de développements, ainsi que les meilleures pratiques, ce qui en fait un choix populaire pour diverses tâches d'IA visuelle.
Adresse du projet: https://github.com/ultralytics/yolov5
Caractéristiques principales
Prise en charge multitâche
YOLOv5 prend en charge plusieurs tâches de vision par ordinateur :
- Détection d'objets: Identification et localisation de plusieurs objets dans une image
- Segmentation d'instances: Segmentation d'objets au niveau du pixel
- Classification d'images: Classification de catégories pour une seule image
Avantages techniques
Les caractéristiques clés incluent l'inférence en temps réel, la prise en charge de diverses techniques d'entraînement telles que l'augmentation du temps de test (TTA) et l'intégration de modèles, ainsi que la compatibilité avec les formats d'exportation tels que TFLite, ONNX, CoreML et TensorRT.
Architecture et performances du modèle
Spécifications du modèle
YOLOv5 propose différentes tailles de modèles pour répondre à différents besoins :
Modèle | Nombre de paramètres (M) | Vitesse | Précision | Scénarios d'application |
---|---|---|---|---|
YOLOv5n | 1.9 | La plus rapide | Faible | Appareils mobiles, Edge Computing |
YOLOv5s | 7.2 | Rapide | Moyenne | Applications générales |
YOLOv5m | 21.2 | Moyenne | Élevée | Performances équilibrées |
YOLOv5l | 46.5 | Plus lente | Haute | Besoins de haute précision |
YOLOv5x | 86.7 | La plus lente | La plus élevée | Besoins de précision maximale |
Indicateurs de performance
Performances sur l'ensemble de données COCO :
- YOLOv5s: mAP@0.5:0.95 = 37.4%, vitesse 6.4ms (V100)
- YOLOv5m: mAP@0.5:0.95 = 45.4%, vitesse 8.2ms (V100)
- YOLOv5l: mAP@0.5:0.95 = 49.0%, vitesse 10.1ms (V100)
- YOLOv5x: mAP@0.5:0.95 = 50.7%, vitesse 12.1ms (V100)
Installation et démarrage rapide
Configuration requise
- Python >= 3.8.0
- PyTorch >= 1.8
Étapes d'installation
# Cloner le dépôt
git clone https://github.com/ultralytics/yolov5
cd yolov5
# Installer les dépendances
pip install -r requirements.txt
Utiliser PyTorch Hub pour l'inférence
import torch
# Charger le modèle YOLOv5
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# Définir la source de l'image d'entrée
img = "https://ultralytics.com/images/zidane.jpg"
# Effectuer l'inférence
results = model(img)
# Traiter les résultats
results.print() # Afficher les résultats dans la console
results.show() # Afficher les résultats dans une fenêtre
results.save() # Enregistrer les résultats dans runs/detect/exp
Inférence en ligne de commande
# Inférence avec la caméra
python detect.py --weights yolov5s.pt --source 0
# Inférence sur un fichier image local
python detect.py --weights yolov5s.pt --source img.jpg
# Inférence sur un fichier vidéo
python detect.py --weights yolov5s.pt --source vid.mp4
# Inférence sur un répertoire d'images
python detect.py --weights yolov5s.pt --source path/to/images/
# Inférence sur une vidéo YouTube
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4'
Entraîner un modèle personnalisé
Exemple de commande d'entraînement
# Entraîner YOLOv5s sur l'ensemble de données COCO, 300 epochs
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64
# Entraîner YOLOv5m
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40
# Entraîner YOLOv5l
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24
Entraînement multi-GPU
# Utiliser l'entraînement distribué multi-GPU
python -m torch.distributed.run --nproc_per_node 4 --master_port 1 train.py --data coco.yaml --weights '' --cfg yolov5s.yaml --batch-size 64 --device 0,1,2,3
Fonctionnalité de segmentation d'instances
YOLOv5 v7.0 a introduit la fonctionnalité de segmentation d'instances, atteignant des performances de pointe sur l'ensemble de données COCO.
Performances du modèle de segmentation
Modèle | mAP^box | mAP^mask | Nombre de paramètres (M) | Vitesse (ms) |
---|---|---|---|---|
YOLOv5n-seg | 27.6 | 23.4 | 2.0 | 59.2 |
YOLOv5s-seg | 37.6 | 32.0 | 7.6 | 63.7 |
YOLOv5m-seg | 45.0 | 37.1 | 22.0 | 89.5 |
YOLOv5l-seg | 49.0 | 39.9 | 47.8 | 168.4 |
YOLOv5x-seg | 50.7 | 41.4 | 88.8 | 265.7 |
Exemple d'entraînement de segmentation
# Entraîner le modèle de segmentation
python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640
# Valider le modèle de segmentation
python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640
# Utiliser le modèle de segmentation pour la prédiction
python segment/predict.py --weights yolov5m-seg.pt --source data/images/bus.jpg
Fonctionnalité de classification d'images
YOLOv5 v6.2 a ajouté la fonctionnalité de classification d'images, avec les résultats de l'entraînement de 90 epochs sur l'ensemble de données ImageNet :
Performances du modèle de classification
Modèle | Précision Top1 | Précision Top5 | Nombre de paramètres (M) | Vitesse (ms) |
---|---|---|---|---|
YOLOv5s-cls | 71.5% | 90.2% | 5.5 | 1.7 |
YOLOv5m-cls | 75.9% | 92.9% | 13.0 | 2.8 |
YOLOv5l-cls | 78.0% | 94.0% | 27.4 | 4.9 |
YOLOv5x-cls | 79.0% | 94.4% | 55.4 | 8.7 |
Exemple d'entraînement de classification
# Entraîner sur l'ensemble de données CIFAR-100
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128
# Valider le modèle ImageNet
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224
# Prédiction de classification d'image
python classify/predict.py --weights yolov5s-cls.pt --source data/images/bus.jpg
Exportation et déploiement du modèle
YOLOv5 prend en charge plusieurs formats de déploiement :
# Exporter au format ONNX
python export.py --weights yolov5s.pt --include onnx
# Exporter au format TensorRT
python export.py --weights yolov5s.pt --include engine
# Exporter au format CoreML (pour iOS)
python export.py --weights yolov5s.pt --include coreml
# Exporter au format TFLite (pour les appareils mobiles)
python export.py --weights yolov5s.pt --include tflite
Fonctionnalités avancées
Augmentation du temps de test (TTA)
Améliorer la précision de la prédiction grâce à l'augmentation par réflexion et échelle :
python val.py --data coco.yaml --img 1536 --iou 0.7 --augment
Intégration de modèles
Combiner plusieurs modèles pour obtenir de meilleures performances :
python val.py --data coco.yaml --weights yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt
Évolution des hyperparamètres
Trouver automatiquement les meilleurs hyperparamètres d'entraînement :
python train.py --data coco.yaml --evolve 300
Intégration et écosystème
YOLOv5 est profondément intégré à plusieurs plateformes d'IA grand public :
- Weights & Biases: Suivi et visualisation des expériences
- Comet ML: Gestion et surveillance des expériences
- Roboflow: Annotation et gestion des données
- Intel OpenVINO: Optimisation et déploiement des modèles
- Neural Magic: Raréfaction et accélération des modèles
- Ultralytics HUB: Plateforme unique d'entraînement et de déploiement
Communauté et support
- Dépôt GitHub: https://github.com/ultralytics/yolov5
- Documentation officielle: https://docs.ultralytics.com/yolov5/
- Communauté Discord: https://discord.com/invite/ultralytics
- Signalement des problèmes: https://github.com/ultralytics/yolov5/issues
Conclusion
YOLOv5, en tant que jalon important dans le domaine de la détection d'objets, est devenu un framework de choix pour la recherche académique et les applications industrielles grâce à ses performances exceptionnelles, sa facilité d'utilisation et ses riches fonctionnalités. Que vous soyez un débutant ou un développeur professionnel, vous pouvez trouver une solution adaptée dans l'écosystème YOLOv5.