Home
Login

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.

AGPL-3.0Python 54.3kultralyticsyolov5 Last Updated: 2025-06-21

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

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.

Star History Chart