YOLOv5发布v6.0版本

标签: YOLO flask yolov5 | 发表时间:2021-10-14 18:39 | 作者:迷途小书童
出处:https://xugaoxiang.com

环境

  • ubuntu 18.04 64bit
  • GTX 1070Ti
  • anaconda with python 3.8
  • pytorch 1.7
  • cuda 10.1

前言

就在昨天(2021年10月13日), 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 也有所提升,看下图

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 源码

  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) [email protected]:~/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 [email protected] 'http://192.168.1.140:5000/v1/object-detection/yolov5s'

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

  (base) x[email protected]:~/workshop/yolov5/data/images$ curl -X POST -F [email protected] '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 请求, urlhttp://192.168.1.140

yolov5 v6.0

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

关联阅读

相关 [yolov5 v6 版本] 推荐:

YOLOv5发布v6.0版本

- - YOLO – 迷途小书童的Note
就在昨天(2021年10月13日),. yolov5 发布了 V6.0 版本,这个新版本在 V5.0 的基础上集成了很多的新特性,而且在网络结构上也做了微调,引入了全新的更小( Nano )的模型 P5( YOLOv5n) 和 P6( YOLOv5n6). yolov5s 模型的深度( depth ),宽度( width ) 则是从0.5降到了0.25,经过这个操作后,总参数减少了 75%,从 7.5M 缩小到了 1.9M,这样的话,就非常适合于移动端或者是 CPU 的环境.

YOLODet检测效果图-- 包含YOLOv5、YOLOv4、PP-YOLO、YOLOv3等YOLO系列目标检测算法PyTorch版本实现

- - 开源软件 - ITeye博客
YOLODet-PyTorch是端到端基于pytorch框架复现yolo最新算法的目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的训练、精度速度优化到部署全流程. YOLODet-PyTorch以模块化的设计实现了多种主流YOLO目标检测算法,并且提供了丰富的数据增强、网络组件、损失函数等模块.

Streamlit部署YOLOv5目标检测

- - YOLO – 迷途小书童的Note
windows 10 64位. streamlit是一个开源的 python库,它能够快速的帮助我们创建定制化的 web应用,而且还非常便于和他人分享,特别是在机器学习和数据科学领域. 整个过程不需要你了解任何前端的知识,包括 html、 css、 javascript等,对非前端开发人员非常的友好.

使用opencv的dnn模块来进行yolov5的目标检测

- - YOLO – 迷途小书童的Note
yolov5 的 C++ 部署方案中,. opencv 应该是最能被想到的一种,从 3.3 版本后, opencv 就加入了. dnn 这个模块,有了这个模块,很多的机器学习项目就可以通过它来实现部署了,下面我们就来看看具体的实现步骤. 由于 opencv 无法直接读取. yolov5 中的 pt 模型文件,因此,需要将原来的 pt 文件转换成 opencv 能直接读取的 onnx 模型文件.

JavaScript版本的AsyncEnumerator

- Rady - 老赵点滴 - 追求编程之美
地球人都知道,在C# 2.0里提供了yield关键字,可以方便好用地生成一个迭代器,更可以简化异步操作——这是因为有了Jeffrey Richter开发的AsyncEnumerator. 在接下来的某些演讲中我准备的主题是“异步编程模型”的演变,自然少不了这非常重要的一环. 为了便于广大人民群众更好地接受,我决定使用JavaScript来进行说明.

fastjson发布1.1.0版本

- tangfl - ITeye论坛最新精华讨论帖
这个版本引入了asm优化encode和decode的性能,使用了新的预测读取优化算法,大幅度提升了decode的性能. 这个版本没有bug fixed. [FASTJSON-51] - 提供按字段名称顺序输出,具体信息 http://code.alibabatech.com/wiki/pages/viewpage.action?pageId=3637285.

Chromium 升级到 V17 版本

- 龍渊冭子 - cnBeta.COM
尽管Chrome和Chromium的版本号没有任何意义,但我们还是不得不提一句,Chromium已经升级到了V17版本. 另外,Chrome Beta分支for Windows/Mac OS X/Linux和Chrome Frame则升级到了15.0.874.100,主要新特性:.

LibPinYin 发布了 0.3 版本

- - Linux伊甸园-24小时滚动更新开源资讯,全年无休!
经过一年多的开发,开源拼音输入法的整合 LibPinYin 发布了 0.3 版本,进入公开测试阶段. 目前 ibus-pinyin 已经可以使用新的 LinPinYin 后端,提供了如下新功能: 智能整句引擎; i 模式: 支持lua script 扩展;. 阅读全文 | 邮件推荐 | 评论回复.

Hadoop版本选择探讨

- - 董的博客
Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce-nextgen/how-to-select-hadoop-versions/. 由于Hadoop版本混乱多变,因此,Hadoop的版本选择问题一直令很多初级用户苦恼.

版本代码扫盲

- - BlogJava_首页
Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用. Beta:也是测试版,这个阶段的版本会一直加入新的功能. RC:(Release Candidate) 顾名思义么. RC版不会再加入新的功能了,主要着重于除错. GA:General Availability,正式发布的版本,在国外都是用GA来说明release版本的.