当前位置:   article > 正文

YOLOv5发布v6.0版本

yolov5 v6.0 git clone

环境

前言

就在前天(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 也有所提升,看下图

4180b62e9645725711453e0eb7842f75.png

yolov5 v6.0

新特性

下面整理了 V6.0 新增的主要特性

  • 整合了 Roboflow

    roboflow 前面我们提过了,它公开了很多非常有用的数据集,在 v6.0 上可以直接使用他们的数据集,参考 https://github.com/ultralytics/yolov5/issues/4975,非常的方便

  • 支持 tensorflowkeras模型的导出

    使用 python export.py --include saved_model pb tflite tfjs 就可以完成 tensorFlowkerastflitetf.js 模型的导出

  • 同时支持 OpenCV DNNONNX Runtime

    导出的 onnx 同时支持 opencv dnnonnx runtime

    python export --weights yolov5s.pt --include onnx --opset 12 --dynamic

    在检测的时候也可以使用指定的 onnxpython 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 源码

  1. git clone -b v6.0 https://github.com/ultralytics/yolov5.git
  2. cd yolov5/utils/flask-rest-api

安装必要依赖并启动服务

  1. pip install flask
  2. # 通过参数port可以指定特定端口,如--port 8080
  3. python restapi.py

脚本启动过程中会去下载 yolov5 的源码和 yolov5s.pt 模型文件,存放在 ~/.cache/torch/hub

  1. (base) xugaoxiang@1070Ti:~/workshop/yolov5/data/images$ ls ~/.cache/torch/hub/ultralytics_yolov5_master/
  2. CONTRIBUTING.md  detect.py   export.py   LICENSE  __pycache__  requirements.txt  tutorial.ipynb  val.py
  3. data             Dockerfile  hubconf.py  models   README.md    train.py          utils           yolov5s.pt

这个下载的动作,默认情况下,在每次脚本执行时都会进行。可以通过修改 restapi.py 来使用现有版本

  1. # 将force_reload,由原来的True改为False
  2. 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'

成功后,可以得到接口返回的结果

  1. (base) xugaoxiang@1070Ti:~/workshop/yolov5/data/images$ curl -X POST -F image=@zidane.jpg 'http://192.168.1.140:5000/v1/object-detection/yolov5s'
  2. [{"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 请求,urlhttp://192.168.1.140

1764eca8eeba8f989af0af8c8f739de0.png

yolov5 v6.0

如果要使用 python 进行请求,项目中也给出了示例 example_request.py,使用的是 request 模块

关联阅读

  • ubuntu安装cuda

  • windows 10安装cuda和cudnn

  • yolov5模型训练

  • yolov5打包exe

  • pip安装yolov5

  • streamlit部署yolov5

  • 给yolov5加个图像界面

  • 在Android上运行yolov5

  • 在Android运行yolov5,使用torchscript方式

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号