一文看懂目标检测神器YOLO5
磐创AI出品
该库代表Ultralytics对未来对象检测方法的开源研究,并结合了以前的YOLO库https://github.com/ultralytics/yolov3在自定义数据集上训练了数千个模型而得到的最佳实践。**所有代码和模型都在积极的开发中,如有修改或删除,恕不另行通知。**如果使用,风险自负。
GPU速度测量:使用V100的GPU在超过5000张COCO val2017图像上测量批处理大小为8的平均每张图像的端到端时间,包括图像预处理,PyTorch FP16推断,后处理和NMS。
- 「2020年6月22日」:PANet(https://arxiv.org/abs/1803.01534)更新:新的特性,更少的参数,更快的推理和改进的mAP 364fcfd(https://github.com/ultralytics/yolov5/commit/364fcfd7dba53f46edd4f04c037a039c0a287972)。
- 「2020年6月19日」:FP16(https://pytorch.org/docs/stable/nn.html#torch.nn.Module.half)作为新的默认设置,可用于更小的检查点和更快的推断d4c6674(https://github.com/ultralytics/yolov5/commit/d4c6674c98e19df4c40e33a777610a18d1961145)。
- 「2020年6月9日」:CSP(https://github.com/WongKinYiu/CrossStagePartialNetworks)更新:改进了速度,大小和准确性(归功于@WongKinYiu)。
- 「2020年5月27日」:公开发布库。YOLOv5模型是所有已知YOLO实现中最先进(SOTA)的。
- 「2020年4月1日」:未来开始发展基于YOLOv3(https://github.com/ultralytics/yolov3) / YOLOv4(https://github.com/AlexeyAB/darknet)的一系列PyTorch模型。
预训练的检查点(checkpoints)
Model | APval | APtest | AP50 | SpeedGPU | FPSGPU | | params | FLOPS |
---|---|---|---|---|---|---|---|---|
YOLOv5s | 36.6 | 36.6 | 55.8 | 「2.1ms」 | 「476」 | | 7.5M | 13.2B |
YOLOv5m | 43.4 | 43.4 | 62.4 | 3.0ms | 333 | | 21.8M | 39.4B |
YOLOv5l | 46.6 | 46.7 | 65.4 | 3.9ms | 256 | | 47.8M | 88.1B |
YOLOv5x | 「48.4」 | 「48.4」 | 「66.9」 | 6.1ms | 164 | | 89.0M | 166.4B |
YOLOv3-SPP | 45.6 | 45.5 | 65.2 | 4.5ms | 222 | | 63.0M | 118.0B |
** AP测试表示COCO test-dev2017(http://cocodataset.org/#upload)服务器结果,表中所有其他AP结果表示val2017准确性。**所有AP编号均适用于单模型单尺度,而没有集成或测试时间增加。通过 python test.py --img 736 --conf 0.001
进行使用。**速度GPU测量:进行再现使用一个V100的GPU和一个GCPn1-standard-16)(https://cloud.google.com/compute/docs/machine-types#n1_standard_machine_types)实例在超过5000张COCO val2017图像上测量每张图像的端到端时间,包括图像预处理,PyTorch FP16图像推断(批量大小 32 --img-size 640),后处理和NMS。此图表中包括的平均NMS时间为1-2ms / img。通过 python test.py --img 640 --conf 0.1
进行测试。**所有检查点均使用默认的设置和超参数训练到300个epochs(无自动增强)。
要求
Python 3.7或更高版本,安装了 requirements.txt
要求的所有的库和 torch >= 1.5
,运行下面命令进行安装:
$ pip install -U -r requirements.txt
教程
-
Notebook(https://github.com/ultralytics/yolov5/blob/master/tutorial.ipynb)
-
Kaggle(https://www.kaggle.com/ultralytics/yolov5-tutorial)
-
Train Custom Data(https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data)
-
PyTorch Hub(https://github.com/ultralytics/yolov5/issues/36)
-
ONNX and TorchScript Export(https://github.com/ultralytics/yolov5/issues/251)
-
Test-Time Augmentation (TTA)(https://github.com/ultralytics/yolov5/issues/303)
-
Google Cloud Quickstart(https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart)
-
Docker Quickstart(https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart)
推断
可以在大多数常见的媒体格式上进行推断。模型检查点(https://drive.google.com/open?id=1Drs_Aiu7xx6S-ix95f9kNsA6ueKRpN2J)(在网上如果有对应的检查点的话)会自动下载。结果保存到 ./inference/output
。
$ python detect.py --source file.jpg # image
file.mp4 # video
./dir # directory
0 # webcam
rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa # rtsp stream
http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8 # http stream
要对 ./inference/images
文件夹中的示例进行推断,请执行以下操作:
$ python detect.py --source ./inference/images/ --weights yolov5s.pt --conf 0.4
Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.4, device='', fourcc='mp4v', half=False, img_size=640, iou_thres=0.5, output='inference/output', save_txt=False, source='./inference/images/', view_img=False, weights='yolov5s.pt')
Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB)
Downloading https://drive.google.com/uc?export=download&id=1R5T6rIyy3lLwgFXNms8whc-387H0tMQO as yolov5s.pt... Done (2.6s)
image 1/2 inference/images/bus.jpg: 640x512 3 persons, 1 buss, Done. (0.009s)
image 2/2 inference/images/zidane.jpg: 384x640 2 persons, 2 ties, Done. (0.009s)
Results saved to /content/yolov5/inference/output
复现我们的训练
下载 COCO(https://github.com/ultralytics/yolov5/blob/master/data/get_coco2017.sh),安装 Apex(https://github.com/NVIDIA/apex)并在运行下面命令。在一台有V100的GPU上,YOLOv5s / m / l / x的训练时间为2/4/6/8天(多个GPU的训练速度更快)。使用您的GPU允许的最大 --batch-size
容量(下面的batchsize是为16 GB设备而设置的)。
$ python train.py --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 64
yolov5m 48
yolov5l 32
yolov5x 16
复现我们的环境
要访问最新的工作环境(已预安装所有库,包括CUDA / CUDNN,Python和PyTorch),请考虑以下网站:
-
「Google Cloud」深度学习VM,提供$300的免费赠金:请参阅我们的GCP快速入门指南(https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart)
-
「Google Colab Notebook」具有12小时的免费GPU时间。
-
「Docker Image」https://hub.docker.com/r/ultralytics/yolov5
请参阅Docker快速入门指南(https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart)
引用
关于我们
Ultralytics是一家总部位于美国的粒子物理学和AI初创公司,拥有超过6年的专业知识,可为政府,学术和商业客户提供支持。我们可以提供广泛的计算机视觉AI服务,从简单的专家建议到交付完全定制的端到端生产解决方案,包括:
- 「基于云的AI」系统可 「实时」处理 「数百个高清视频流。」
- 「Edge AI」已集成到自定义iOS和Android应用程序中,可实时进行 「30 FPS视频推断。」
- 「自定义数据训练」,超参数设置和可以把模型导出到任何地方。
有关业务查询和专业支持的相关请求,请访问https://www.ultralytics.com。
联系
**有问题(issue)可以直接在库中提出。**对于业务查询或专业支持的相关请求,请访问https://www.ultralytics.com或email Glenn Jocher,[email protected]。
原文链接:https://github.com/ultralytics/yolov5