Ultralytics YOLOv5 🚀 是一個前沿的、最先進的(SOTA)電腦視覺模型,由Ultralytics開發。基於PyTorch框架,YOLOv5以其易用性、速度和準確性而聞名。它融合了廣泛研究和開發的見解與最佳實踐,使其成為各種視覺AI任務的熱門選擇。
項目地址: https://github.com/ultralytics/yolov5
YOLOv5支持多種電腦視覺任務:
關鍵特性包括實時推理、支持多種訓練技巧如測試時間增強(TTA)和模型集成,以及與TFLite、ONNX、CoreML和TensorRT等導出格式的兼容性。
YOLOv5提供多種模型尺寸以滿足不同需求:
模型 | 參數量(M) | 速度 | 準確性 | 適用場景 |
---|---|---|---|---|
YOLOv5n | 1.9 | 最快 | 較低 | 移動設備、邊緣計算 |
YOLOv5s | 7.2 | 快 | 中等 | 通用應用 |
YOLOv5m | 21.2 | 中等 | 較高 | 平衡性能 |
YOLOv5l | 46.5 | 較慢 | 高 | 高精度需求 |
YOLOv5x | 86.7 | 最慢 | 最高 | 最高精度需求 |
在COCO數據集上的表現:
# 克隆倉庫
git clone https://github.com/ultralytics/yolov5
cd yolov5
# 安裝依賴
pip install -r requirements.txt
import torch
# 加載YOLOv5模型
model = torch.hub.load("ultralytics/yolov5", "yolov5s")
# 定義輸入圖像源
img = "https://ultralytics.com/images/zidane.jpg"
# 執行推理
results = model(img)
# 處理結果
results.print() # 打印結果到控制台
results.show() # 在窗口中顯示結果
results.save() # 保存結果到runs/detect/exp
# 使用攝像頭推理
python detect.py --weights yolov5s.pt --source 0
# 對本地圖像文件推理
python detect.py --weights yolov5s.pt --source img.jpg
# 對視頻文件推理
python detect.py --weights yolov5s.pt --source vid.mp4
# 對圖像目錄推理
python detect.py --weights yolov5s.pt --source path/to/images/
# 對YouTube視頻推理
python detect.py --weights yolov5s.pt --source 'https://youtu.be/LNwODJXcvt4'
# 在COCO數據集上訓練YOLOv5s,300個epoch
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5s.yaml --batch-size 64
# 訓練YOLOv5m
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5m.yaml --batch-size 40
# 訓練YOLOv5l
python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5l.yaml --batch-size 24
# 使用多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版本引入了實例分割功能,在COCO數據集上達到了最先進的性能。
模型 | mAP^box | mAP^mask | 參數量(M) | 速度(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 |
# 訓練分割模型
python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640
# 驗證分割模型
python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640
# 使用分割模型進行預測
python segment/predict.py --weights yolov5m-seg.pt --source data/images/bus.jpg
YOLOv5 v6.2版本新增了圖像分類功能,在ImageNet數據集上訓練90個epoch的結果:
模型 | Top1準確率 | Top5準確率 | 參數量(M) | 速度(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 |
# 在CIFAR-100數據集上訓練
python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128
# 驗證ImageNet模型
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224
# 圖像分類預測
python classify/predict.py --weights yolov5s-cls.pt --source data/images/bus.jpg
YOLOv5支持多種部署格式:
# 導出到ONNX格式
python export.py --weights yolov5s.pt --include onnx
# 導出到TensorRT格式
python export.py --weights yolov5s.pt --include engine
# 導出到CoreML格式(適用於iOS)
python export.py --weights yolov5s.pt --include coreml
# 導出到TFLite格式(適用於移動設備)
python export.py --weights yolov5s.pt --include tflite
通過反射和尺度增強提高預測準確性:
python val.py --data coco.yaml --img 1536 --iou 0.7 --augment
結合多個模型以獲得更好的性能:
python val.py --data coco.yaml --weights yolov5s.pt yolov5m.pt yolov5l.pt yolov5x.pt
自動尋找最佳訓練超參數:
python train.py --data coco.yaml --evolve 300
YOLOv5與多個主流AI平台深度集成:
YOLOv5作為目標檢測領域的重要里程碑,憑藉其出色的性能、易用性和豐富的功能,已成為學術研究和工業應用的首選框架。無論是初學者還是專業開發者,都能在YOLOv5的生態系統中找到適合的解決方案。