Implémentation officielle PyTorch de YOLOv10 . NeurIPS 2024.
Comparaisons avec d’autres en termes de compromis latence-précision (à gauche) et taille-précision (à droite).
YOLOv10 : Détection d'objets de bout en bout en temps réel.
Ao Wang, Hui Chen, Lihao Liu, Kai Chen, Zijia Lin, Jungong Han et Guiguang Ding
cv2
et cv3
inutiles dans v10Detect
sont exécutées pendant l'inférence.COCO
Modèle | Taille du test | #Params | FLOP | Valeur AP | Latence |
---|---|---|---|---|---|
YOLOv10-N | 640 | 2,3 millions | 6,7G | 38,5% | 1,84 ms |
YOLOv10-S | 640 | 7,2 millions | 21,6G | 46,3% | 2,49 ms |
YOLOv10-M | 640 | 15,4 millions | 59.1G | 51,1% | 4,74 ms |
YOLOv10-B | 640 | 19,1 millions | 92.0G | 52,5% | 5,74 ms |
YOLOv10-L | 640 | 24,4 millions | 120,3G | 53,2% | 7,28 ms |
YOLOv10-X | 640 | 29,5 millions | 160,4G | 54,4% | 10,70 ms |
L'environnement virtuel conda
est recommandé.
conda create -n yolov10 python=3.9
conda activate yolov10
pip install -r requirements.txt
pip install -e .
python app.py
# Please visit http://127.0.0.1:7860
yolov10n
yolov10s
yolov10m
yolov10b
yolov10l
yolov10x
yolo val model=jameslahm/yolov10{n/s/m/b/l/x} data=coco.yaml batch=256
Ou
from ultralytics import YOLOv10
model = YOLOv10 . from_pretrained ( 'jameslahm/yolov10{n/s/m/b/l/x}' )
# or
# wget https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10{n/s/m/b/l/x}.pt
model = YOLOv10 ( 'yolov10{n/s/m/b/l/x}.pt' )
model . val ( data = 'coco.yaml' , batch = 256 )
yolo detect train data=coco.yaml model=yolov10n/s/m/b/l/x.yaml epochs=500 batch=256 imgsz=640 device=0,1,2,3,4,5,6,7
Ou
from ultralytics import YOLOv10
model = YOLOv10 ()
# If you want to finetune the model with pretrained weights, you could load the
# pretrained weights like below
# model = YOLOv10.from_pretrained('jameslahm/yolov10{n/s/m/b/l/x}')
# or
# wget https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10{n/s/m/b/l/x}.pt
# model = YOLOv10('yolov10{n/s/m/b/l/x}.pt')
model . train ( data = 'coco.yaml' , epochs = 500 , batch = 256 , imgsz = 640 )
En option, vous pouvez transférer votre modèle affiné vers le hub Hugging Face en tant que modèle public ou privé :
# let's say you have fine-tuned a model for crop detection
model . push_to_hub ( " )
# you can also pass `private=True` if you don't want everyone to see your model
model . push_to_hub ( " , private = True )
Notez qu'un seuil de confiance plus petit peut être défini pour détecter des objets plus petits ou des objets éloignés. Veuillez vous référer à ici pour plus de détails.
yolo predict model=jameslahm/yolov10{n/s/m/b/l/x}
Ou
from ultralytics import YOLOv10
model = YOLOv10 . from_pretrained ( 'jameslahm/yolov10{n/s/m/b/l/x}' )
# or
# wget https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10{n/s/m/b/l/x}.pt
model = YOLOv10 ( 'yolov10{n/s/m/b/l/x}.pt' )
model . predict ()
# End-to-End ONNX
yolo export model=jameslahm/yolov10{n/s/m/b/l/x} format=onnx opset=13 simplify
# Predict with ONNX
yolo predict model=yolov10n/s/m/b/l/x.onnx
# End-to-End TensorRT
yolo export model=jameslahm/yolov10{n/s/m/b/l/x} format=engine half=True simplify opset=13 workspace=16
# or
trtexec --onnx=yolov10n/s/m/b/l/x.onnx --saveEngine=yolov10n/s/m/b/l/x.engine --fp16
# Predict with TensorRT
yolo predict model=yolov10n/s/m/b/l/x.engine
Ou
from ultralytics import YOLOv10
model = YOLOv10 . from_pretrained ( 'jameslahm/yolov10{n/s/m/b/l/x}' )
# or
# wget https://github.com/THU-MIG/yolov10/releases/download/v1.1/yolov10{n/s/m/b/l/x}.pt
model = YOLOv10 ( 'yolov10{n/s/m/b/l/x}.pt' )
model . export (...)
La base de code est construite avec ultralytics et RT-DETR.
Merci pour les superbes implémentations !
Si notre code ou nos modèles vous aident dans votre travail, veuillez citer notre article :
@article { wang2024yolov10 ,
title = { YOLOv10: Real-Time End-to-End Object Detection } ,
author = { Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang } ,
journal = { arXiv preprint arXiv:2405.14458 } ,
year = { 2024 }
}