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
YOLOv5 prend en charge plusieurs tâches de vision par ordinateur :
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.
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 |
Performances sur l'ensemble de données COCO :
# Cloner le dépôt
git clone https://github.com/ultralytics/yolov5
cd yolov5
# Installer les dépendances
pip install -r requirements.txt
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 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 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
# 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
YOLOv5 v7.0 a introduit la fonctionnalité de segmentation d'instances, atteignant des performances de pointe sur l'ensemble de données COCO.
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 |
# 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
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 :
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 |
# 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
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
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
Combiner plusieurs modèles pour obtenir de meilleures performances :
python val.py --data coco.yaml --weights yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt
Trouver automatiquement les meilleurs hyperparamètres d'entraînement :
python train.py --data coco.yaml --evolve 300
YOLOv5 est profondément intégré à plusieurs plateformes d'IA grand public :
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.