Chine | 한국어 | 日本語 | Russe | allemand | Français | espagnol | Portugais | Turc | Tiếng Việt | العربية
YOLOv5 ? est l'IA de vision la plus appréciée au monde, représentant la recherche open source d'Ultralytics sur les futures méthodes d'IA de vision, intégrant les leçons apprises et les meilleures pratiques développées au cours de milliers d'heures de recherche et de développement.
Nous espérons que les ressources ici vous aideront à tirer le meilleur parti de YOLOv5. Veuillez parcourir la documentation YOLOv5 pour plus de détails, soulever un problème sur GitHub pour obtenir de l'aide et rejoindre notre communauté Discord pour des questions et des discussions !
Pour demander une licence d'entreprise, veuillez remplir le formulaire sur Ultralytics Licensing.
YOLO11 ? NOUVEAU
Nous sommes ravis de dévoiler le lancement d'Ultralytics YOLO11 ?, la dernière avancée dans nos modèles de vision de pointe (SOTA) ! Disponible dès maintenant sur GitHub , YOLO11 s'appuie sur notre héritage de vitesse, de précision et de facilité d'utilisation. Qu'il s'agisse de détection d'objets, de segmentation d'images ou de classification d'images, YOLO11 offre les performances et la polyvalence nécessaires pour exceller dans diverses applications.
Commencez dès aujourd'hui et libérez tout le potentiel de YOLO11 ! Consultez la documentation Ultralytics pour accéder à des guides et ressources complets :
pip installer les ultralytiques
Documentation
Consultez la documentation YOLOv5 pour une documentation complète sur la formation, les tests et le déploiement. Voir ci-dessous pour des exemples de démarrage rapide.
Clonez le dépôt et installez Requirements.txt dans un environnement Python>=3.8.0 , y compris PyTorch>=1.8 .
git clone https://github.com/ultralytics/yolov5 # clonecd yolov5 pip install -r exigences.txt # installer
Inférence YOLOv5 PyTorch Hub. Les modèles sont téléchargés automatiquement à partir de la dernière version de YOLOv5.
import torch# Modelmodel = torch.hub.load("ultralytics/yolov5", "yolov5s") # ou yolov5n - yolov5x6, custom# Imagesimg = "https://ultralytics.com/images/zidane.jpg" # ou fichier, Chemin, PIL, OpenCV, numpy, list# Inferenceresults = model(img)# Resultsresults.print() # ou .show(), .save(), .crop(), .pandas(), etc.
detect.py
exécute l'inférence sur diverses sources, télécharge automatiquement les modèles à partir de la dernière version de YOLOv5 et enregistre les résultats dans runs/detect
.
python detect.py --weights yolov5s.pt --source 0 # webcam img.jpg # image vid.mp4 # vidéo écran # capture d'écran chemin/ # répertoire list.txt # liste d'images list.streams # liste des flux 'path/*.jpg' # glob 'https://youtu.be/LNwODJXcvt4' # YouTube 'rtsp://example.com/media.mp4' # RTSP, RTMP, flux HTTP
Les commandes ci-dessous reproduisent les résultats YOLOv5 COCO. Les modèles et les ensembles de données sont téléchargés automatiquement à partir de la dernière version de YOLOv5. Les temps de formation pour YOLOv5n/s/m/l/x sont de 1/2/4/6/8 jours sur un GPU V100 (multi-GPU fois plus rapide). Utilisez le plus grand --batch-size
possible ou transmettez --batch-size -1
pour YOLOv5 AutoBatch. Tailles de lots indiquées pour V100-16 Go.
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml --batch-size 128 yolov5s 64 yolov5min 40 yolov5l 24 yolov5x 16
Former des données personnalisées ? RECOMMANDÉ
Conseils pour de meilleurs résultats d'entraînement ☘️
Formation multi-GPU
Hub PyTorch ? NOUVEAU
Exportation TFLite, ONNX, CoreML, TensorRT ?
Déploiement de la plateforme NVIDIA Jetson ? NOUVEAU
Augmentation du temps de test (TTA)
Assemblage de modèles
Élagage / parcimonie du modèle
Evolution des hyperparamètres
Transférer l'apprentissage avec des couches gelées
Résumé de l'architecture ? NOUVEAU
Ultralytics HUB pour former et déployer YOLO ? RECOMMANDÉ
Journalisation ClearML
YOLOv5 avec Deepsparse de Neural Magic
Enregistrement des comètes ? NOUVEAU
Intégrations
Nos intégrations clés avec les principales plates-formes d'IA étendent les fonctionnalités des offres d'Ultralytics, en améliorant les tâches telles que l'étiquetage des ensembles de données, la formation, la visualisation et la gestion des modèles. Découvrez comment Ultralytics, en collaboration avec W&B, Comet, Roboflow et OpenVINO, peut optimiser votre flux de travail d'IA.
HUB Ultralytique ? | W&B | Comète ⭐ NOUVEAU | Magie neuronale |
---|---|---|---|
Rationalisez les flux de travail YOLO : étiquetez, formez et déployez sans effort avec Ultralytics HUB. Essayez maintenant ! | Suivez les expériences, les hyperparamètres et les résultats avec les poids et biais | Gratuit pour toujours, Comet vous permet d'enregistrer des modèles YOLOv5, de reprendre l'entraînement et de visualiser et déboguer les prédictions de manière interactive. | Exécutez l'inférence YOLO11 jusqu'à 6 fois plus rapidement avec Neural Magic DeepSparse |
HUB Ultralytique
Faites l'expérience d'une IA transparente avec Ultralytics HUB ⭐, la solution tout-en-un pour la visualisation de données, YOLOv5 et YOLOv8 ? formation et déploiement de modèles, sans aucun codage. Transformez les images en informations exploitables et donnez vie à vos visions d'IA en toute simplicité grâce à notre plate-forme de pointe et à notre application Ultralytics conviviale. Commencez votre voyage gratuitement dès maintenant !
Pourquoi YOLOv5
YOLOv5 a été conçu pour être très facile à démarrer et simple à apprendre. Nous accordons la priorité aux résultats concrets.
COCO AP val désigne la métrique mAP@0,5:0,95 mesurée sur l'ensemble de données COCO val2017 de 5 000 images sur différentes tailles d'inférence de 256 à 1 536.
La vitesse du GPU mesure le temps d'inférence moyen par image sur l'ensemble de données COCO val2017 à l'aide d'une instance AWS p3.2xlarge V100 avec une taille de lot de 32.
Données EfficientDet de google/automl avec une taille de lot de 8.
Reproduire par python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt
Modèle | taille (pixels) | val.carte 50-95 | val.carte 50 | Vitesse Processeur B1 (MS) | Vitesse V100b1 (MS) | Vitesse V100 b32 (MS) | paramètres (M) | FLOP @640 (B) |
---|---|---|---|---|---|---|---|---|
YOLOv5n | 640 | 28,0 | 45,7 | 45 | 6.3 | 0,6 | 1.9 | 4.5 |
YOLOv5 | 640 | 37.4 | 56,8 | 98 | 6.4 | 0,9 | 7.2 | 16,5 |
YOLOv5m | 640 | 45.4 | 64.1 | 224 | 8.2 | 1.7 | 21.2 | 49,0 |
YOLOv5l | 640 | 49,0 | 67,3 | 430 | 10.1 | 2.7 | 46,5 | 109.1 |
YOLOv5x | 640 | 50,7 | 68,9 | 766 | 12.1 | 4.8 | 86,7 | 205,7 |
YOLOv5n6 | 1280 | 36,0 | 54,4 | 153 | 8.1 | 2.1 | 3.2 | 4.6 |
YOLOv5s6 | 1280 | 44,8 | 63,7 | 385 | 8.2 | 3.6 | 12.6 | 16,8 |
YOLOv5m6 | 1280 | 51.3 | 69,3 | 887 | 11.1 | 6.8 | 35,7 | 50,0 |
YOLOv5l6 | 1280 | 53,7 | 71.3 | 1784 | 15,8 | 10.5 | 76,8 | 111.4 |
YOLOv5x6 + TTA | 1280 1536 | 55,0 55,8 | 72,7 72,7 | 3136 - | 26.2 - | 19.4 - | 140,7 - | 209,8 - |
Tous les points de contrôle sont entraînés sur 300 époques avec des paramètres par défaut. Les modèles Nano et Small utilisent des hyps hyp.scratch-low.yaml, tous les autres utilisent hyp.scratch-high.yaml.
Les valeurs mAP val concernent un modèle unique, une échelle unique sur l'ensemble de données COCO val2017.
Reproduire par python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65
Vitesse moyenne sur les images COCO val à l'aide d'une instance AWS p3.2xlarge. Temps NMS (~ 1 ms/img) non inclus.
Reproduire par python val.py --data coco.yaml --img 640 --task speed --batch 1
L'augmentation du temps de test TTA comprend des augmentations de réflexion et d'échelle.
Reproduire par python val.py --data coco.yaml --img 1536 --iou 0.7 --augment
Segmentation
Nos nouveaux modèles de segmentation d'instance YOLOv5 version v7.0 sont les plus rapides et les plus précis au monde, battant tous les benchmarks SOTA actuels. Nous les avons rendus très simples à former, valider et déployer. Consultez tous les détails dans nos notes de version et visitez notre bloc-notes Colab de segmentation YOLOv5 pour des didacticiels de démarrage rapide.
Nous avons formé des modèles de segmentation YOLOv5 sur COCO pendant 300 époques à une taille d'image de 640 à l'aide de GPU A100. Nous avons exporté tous les modèles vers ONNX FP32 pour les tests de vitesse du CPU et vers TensorRT FP16 pour les tests de vitesse du GPU. Nous avons effectué tous les tests de vitesse sur les ordinateurs portables Google Colab Pro pour une reproductibilité aisée.
Modèle | taille (pixels) | boîte CARTE 50-95 | masque CARTE 50-95 | Temps de train 300 époques A100 (heures) | Vitesse Processeur ONNX (MS) | Vitesse TRT A100 (MS) | paramètres (M) | FLOP @640 (B) |
---|---|---|---|---|---|---|---|---|
YOLOv5n-seg | 640 | 27.6 | 23.4 | 80:17 | 62,7 | 1.2 | 2.0 | 7.1 |
YOLOv5s-seg | 640 | 37,6 | 31,7 | 88:16 | 173.3 | 1.4 | 7.6 | 26.4 |
YOLOv5m-seg | 640 | 45,0 | 37.1 | 108:36 | 427,0 | 2.2 | 22,0 | 70,8 |
YOLOv5l-seg | 640 | 49,0 | 39,9 | 66:43 (2x) | 857.4 | 2.9 | 47,9 | 147,7 |
YOLOv5x-seg | 640 | 50,7 | 41.4 | 62:56 (3x) | 1579.2 | 4.5 | 88,8 | 265,7 |
Tous les points de contrôle sont entraînés sur 300 époques avec l'optimiseur SGD avec lr0=0.01
weight_decay=5e-5
à une taille d'image de 640 et tous les paramètres par défaut.
Exécutions enregistrées sur https://wandb.ai/glenn-jocher/YOLOv5_v70_official
Les valeurs de précision concernent un modèle unique, une échelle unique sur l'ensemble de données COCO.
Reproduire par python segment/val.py --data coco.yaml --weights yolov5s-seg.pt
Vitesse moyenne sur 100 images d'inférence à l'aide d'une instance Colab Pro A100 High-RAM. Les valeurs indiquent uniquement la vitesse d'inférence (NMS ajoute environ 1 ms par image).
Reproduire par python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1
Exportation vers ONNX au FP32 et TensorRT au FP16 effectuée avec export.py
.
Reproduire par python export.py --weights yolov5s-seg.pt --include engine --device 0 --half
La formation à la segmentation YOLOv5 prend en charge le téléchargement automatique de l'ensemble de données de segmentation COCO128-seg avec l'argument --data coco128-seg.yaml
et le téléchargement manuel de l'ensemble de données de segments COCO avec bash data/scripts/get_coco.sh --train --val --segments
puis python train.py --data coco.yaml
.
# Segment/train.py mono-GPUpython --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640# DDPpython multi-GPU -m torch.distributed.run --nproc_per_node 4 --master_port 1 segment /train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640 --device 0,1,2,3
Validez le mAP du masque YOLOv5s-seg sur l'ensemble de données COCO :
bash data/scripts/get_coco.sh --val --segments # télécharger COCO val segments divisés (780 Mo, 5000 images) python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640 # valider
Utilisez YOLOv5m-seg.pt pré-entraîné pour prédire bus.jpg :
python segment/predict.py --weights yolov5m-seg.pt --source data/images/bus.jpg
model = torch.hub.load( "ultralytics/yolov5", "custom", "yolov5m-seg.pt") # chargement depuis PyTorch Hub (ATTENTION : inférence pas encore prise en charge)
Exportez le modèle YOLOv5s-seg vers ONNX et TensorRT :
python export.py --weights yolov5s-seg.pt --include le moteur onnx --img 640 --device 0
Classification
La version YOLOv5 v6.2 apporte la prise en charge de la formation, de la validation et du déploiement des modèles de classification ! Consultez tous les détails dans nos notes de version et visitez notre bloc-notes Colab de classification YOLOv5 pour des didacticiels de démarrage rapide.
Nous avons formé des modèles de classification YOLOv5-cls sur ImageNet pendant 90 époques à l'aide d'une instance 4xA100, et nous avons formé des modèles ResNet et EfficientNet avec les mêmes paramètres de formation par défaut à comparer. Nous avons exporté tous les modèles vers ONNX FP32 pour les tests de vitesse du CPU et vers TensorRT FP16 pour les tests de vitesse du GPU. Nous avons effectué tous les tests de vitesse sur Google Colab Pro pour une reproductibilité facile.
Modèle | taille (pixels) | acc top1 | acc top5 | Entraînement 90 époques 4xA100 (heures) | Vitesse Processeur ONNX (MS) | Vitesse TensorRT V100 (MS) | paramètres (M) | FLOP @224 (B) |
---|---|---|---|---|---|---|---|---|
YOLOv5n-cls | 224 | 64,6 | 85,4 | 7h59 | 3.3 | 0,5 | 2.5 | 0,5 |
YOLOv5s-cls | 224 | 71,5 | 90,2 | 8h09 | 6.6 | 0,6 | 5.4 | 1.4 |
YOLOv5m-cls | 224 | 75,9 | 92,9 | 10h06 | 15,5 | 0,9 | 12.9 | 3.9 |
YOLOv5l-cls | 224 | 78,0 | 94,0 | 11h56 | 26,9 | 1.4 | 26,5 | 8.5 |
YOLOv5x-cls | 224 | 79,0 | 94,4 | 15h04 | 54.3 | 1.8 | 48.1 | 15.9 |
ResNet18 | 224 | 70.3 | 89,5 | 6h47 | 11.2 | 0,5 | 11.7 | 3.7 |
ResNet34 | 224 | 73,9 | 91,8 | 8h33 | 20.6 | 0,9 | 21,8 | 7.4 |
ResNet50 | 224 | 76,8 | 93,4 | 11h10 | 23.4 | 1.0 | 25.6 | 8.5 |
ResNet101 | 224 | 78,5 | 94,3 | 17h10 | 42.1 | 1.9 | 44,5 | 15.9 |
EfficaceNet_b0 | 224 | 75.1 | 92,4 | 13h03 | 12,5 | 1.3 | 5.3 | 1.0 |
EfficaceNet_b1 | 224 | 76,4 | 93.2 | 17h04 | 14.9 | 1.6 | 7.8 | 1,5 |
EfficaceNet_b2 | 224 | 76,6 | 93,4 | 17h10 | 15.9 | 1.6 | 9.1 | 1.7 |
EfficaceNet_b3 | 224 | 77,7 | 94,0 | 19h19 | 18.9 | 1.9 | 12.2 | 2.4 |
Tous les points de contrôle sont entraînés sur 90 époques avec l'optimiseur SGD avec lr0=0.001
weight_decay=5e-5
à une taille d'image de 224 et tous les paramètres par défaut.
Exécutions enregistrées sur https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2
Les valeurs de précision concernent un modèle unique, une échelle unique sur l'ensemble de données ImageNet-1k.
Reproduire par python classify/val.py --data ../datasets/imagenet --img 224
Vitesse moyenne sur 100 images d'inférence à l'aide d'une instance Google Colab Pro V100 High-RAM.
Reproduire par python classify/val.py --data ../datasets/imagenet --img 224 --batch 1
Exportation vers ONNX au FP32 et TensorRT au FP16 effectuée avec export.py
.
Reproduire par python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224
La formation à la classification YOLOv5 prend en charge le téléchargement automatique des ensembles de données MNIST, Fashion-MNIST, CIFAR10, CIFAR100, Imagenette, Imagewoof et ImageNet avec l'argument --data
. Pour démarrer la formation sur MNIST, utilisez par exemple --data mnist
.
# Classify/train.py à GPUpython unique --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128# DDPpython multi-GPU -m torch.distributed.run --nproc_per_node 4 - -master_port 1 classify/train.py --model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3
Validez la précision de YOLOv5m-cls sur l'ensemble de données ImageNet-1k :
bash data/scripts/get_imagenet.sh --val # télécharger ImageNet val split (6.3G, 50000 images)python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224 # valider
Utilisez YOLOv5s-cls.pt pré-entraîné pour prédire bus.jpg :
python classify/predict.py --weights yolov5s-cls.pt --source data/images/bus.jpg
model = torch.hub.load("ultralytics/yolov5", "custom", "yolov5s-cls.pt") # charger depuis PyTorch Hub
Exportez un groupe de modèles YOLOv5s-cls, ResNet et EfficientNet formés vers ONNX et TensorRT :
python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --include le moteur onnx --img 224
Environnements
Démarrez en quelques secondes avec nos environnements vérifiés. Cliquez sur chaque icône ci-dessous pour plus de détails.
Contribuer
Nous aimons votre contribution ! Nous voulons rendre la contribution à YOLOv5 aussi simple et transparente que possible. Veuillez consulter notre guide de contribution pour commencer et remplir l'enquête YOLOv5 pour nous envoyer des commentaires sur vos expériences. Merci à tous nos contributeurs !
Licence
Ultralytics propose deux options de licence pour s'adapter à divers cas d'utilisation :
Licence AGPL-3.0 : Cette licence open source approuvée par l'OSI est idéale pour les étudiants et les passionnés, favorisant la collaboration ouverte et le partage des connaissances. Voir le fichier LICENSE pour plus de détails.
Licence Entreprise : conçue pour un usage commercial, cette licence permet une intégration transparente des logiciels Ultralytics et des modèles d'IA dans les biens et services commerciaux, en contournant les exigences open source d'AGPL-3.0. Si votre scénario implique l'intégration de nos solutions dans une offre commerciale, contactez Ultralytics Licensing.
Contact
Pour les rapports de bugs YOLOv5 et les demandes de fonctionnalités, veuillez visiter les problèmes GitHub et rejoignez notre communauté Discord pour des questions et des discussions !