YOLOv5发布v6.0版本,性能提升,新增多个特性!
点击下方“AI算法与图像处理”,一起进步!
重磅干货,第一时间送达
环境
ubuntu 18.04 64bit GTX 1070Ti anaconda with python 3.8 pytorch 1.7 cuda 10.1
前言
就在前天(2021年10月12日),yolov5
发布了 V6.0
版本,这个新版本在 V5.0
的基础上集成了很多的新特性,而且在网络结构上也做了微调,引入了全新的更小( Nano
)的模型 P5
(YOLOv5n
) 和 P6
(YOLOv5n6
)。Nano
模型保持了 yolov5s
模型的深度( depth
),宽度( width
) 则是从0.5降到了0.25,经过这个操作后,总参数减少了 75%,从 7.5M 缩小到了 1.9M,这样的话,就非常适合于移动端或者是 CPU
的环境。
在性能指标方面,V6.0
也有所提升,看下图
新特性
下面整理了 V6.0
新增的主要特性
整合了
Roboflow
roboflow
前面我们提过了,它公开了很多非常有用的数据集,在v6.0
上可以直接使用他们的数据集,参考 https://github.com/ultralytics/yolov5/issues/4975,非常的方便支持
tensorflow
和keras
模型的导出使用
python export.py --include saved_model pb tflite tfjs
就可以完成tensorFlow
、keras
、tflite
和tf.js
模型的导出同时支持
OpenCV DNN
和ONNX Runtime
导出的
onnx
同时支持opencv dnn
和onnx runtime
python export --weights yolov5s.pt --include onnx --opset 12 --dynamic
在检测的时候也可以使用指定的
onnx
,python detect.py --weights yolov5s.onnx --dnn
模型结构
用 Conv(k=6, s=2, p=2)
代替Focus
层,主要是为了方便模型导出使用 SPPF
代替SPP
层减少 P3
主干层C3
将 SPPF
放在主干的后面在最后一个 C3
主干层中重新引入快捷方式更新超参数 增加了
Flask REST API
提供了
web api
的支持,远端测试非常方便,常见的开放平台都是这么做的
flask api实践
下载 V6.0
源码
git clone -b v6.0 https://github.com/ultralytics/yolov5.git
cd yolov5/utils/flask-rest-api
安装必要依赖并启动服务
pip install flask
# 通过参数port可以指定特定端口,如--port 8080
python restapi.py
脚本启动过程中会去下载 yolov5
的源码和 yolov5s.pt
模型文件,存放在 ~/.cache/torch/hub
下
(base) xugaoxiang@1070Ti:~/workshop/yolov5/data/images$ ls ~/.cache/torch/hub/ultralytics_yolov5_master/
CONTRIBUTING.md detect.py export.py LICENSE __pycache__ requirements.txt tutorial.ipynb val.py
data Dockerfile hubconf.py models README.md train.py utils yolov5s.pt
这个下载的动作,默认情况下,在每次脚本执行时都会进行。可以通过修改 restapi.py
来使用现有版本
# 将force_reload,由原来的True改为False
model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=False)
服务启动后,我们来到客户端,使用 curl
命令进行测试
curl -X POST -F image=@zidane.jpg 'http://192.168.1.140:5000/v1/object-detection/yolov5s'
成功后,可以得到接口返回的结果
(base) xugaoxiang@1070Ti:~/workshop/yolov5/data/images$ curl -X POST -F image=@zidane.jpg 'http://192.168.1.140:5000/v1/object-detection/yolov5s'
[{"xmin":752.0,"ymin":46.0,"xmax":1148.0,"ymax":716.0,"confidence":0.875,"class":0,"name":"person"},{"xmin":100.0,"ymin":201.5,"xmax":1002.0,"ymax":718.5,"confidence":0.5795898438,"class":0,"name":"person"},{"xmin":438.25,"ymin":422.0,"xmax":509.75,"ymax":720.0,"confidence":0.5219726562,"class":27,"name":"tie"}]
或者
使用 postman
进行测试,使用的是 POST
请求,url
是 http://192.168.1.140
如果要使用 python
进行请求,项目中也给出了示例 example_request.py
,使用的是 request
模块
交流群
欢迎加入公众号读者群一起和同行交流,目前有美颜、三维视觉、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群
个人微信(如果没有备注不拉群!) 请注明:地区+学校/企业+研究方向+昵称
下载1:何恺明顶会分享
在「AI算法与图像处理」公众号后台回复:何恺明,即可下载。总共有6份PDF,涉及 ResNet、Mask RCNN等经典工作的总结分析
下载2:终身受益的编程指南:Google编程风格指南
在「AI算法与图像处理」公众号后台回复:c++,即可下载。历经十年考验,最权威的编程规范!
下载3 CVPR2021 在「AI算法与图像处理」公众号后台回复:CVPR,即可下载1467篇CVPR 2020论文 和 CVPR 2021 最新论文