| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 极市平台ECV2021比赛经验分享 -> 正文阅读 |
|
[人工智能]极市平台ECV2021比赛经验分享 |
1.写在比赛之前最近极市平台举办了今年2021年的ECV比赛活动,其实第一次接触到这个比赛是去年差不多也是下半年这个时候,当时应该是第一届,参加的人不是特别多,今年极市给ECV2021制定的奖金还是十分丰富的,第一名能得到60000元的现金奖励加上一台笔记本,这个吸引力放在同年的所有同类型比赛中也是十分有竞争力的。 ECV2021的比赛总共有8个赛道,每个赛道的奖励方案都一样,下面放一张图,大家可以感受一下。
2.比赛内容分享本次比赛我主要参加的是其中几个跟目标检测相关的赛道,对于不熟悉极市平台的小伙伴来说,我感觉初次在这个平台上比赛,还是先看看官方的docs。因为这个平台跟其他地方的比赛有个很大的不一样是数据保密性和模型部署,因此在训练和测试的时候都是采用docker挂载个人数据区然后提交训练脚本的方式完成,平时大家需要在编码环境中进行环境构建以及代码编写,调试。整个流程还是挺考验一个人的工程开发意识的,所以最好还是先去看看文档。 再不济,可以把新人任务做一下熟悉熟悉。 2.1编码环境首先在平台上报名以后,可以从环境中进行实例启动,然后进入到编码环境。如下所示。
在线vs code点击进入以后即可开始环境搭建以及代码编写,界面如下,还是很方便的。 在vs code中,初次进入之后我们需要完成两个任务
2.2模型训练接下来我们来看看模型的训练过程,一般来说,总是上GitHub去找到一个合适的目标检测库,然后判断适不适合这个比赛,适合的话就开始干。 本次比赛,我们以yolov5为例,yolov5这个方法就不做过多介绍,不过他也没有正式的论文来介绍自己,但不妨碍他依然是一个优秀的库,包含了很多实用的训练技巧,模型结构等,最重要的是各种平台的部署案例和教程都很完整,简直可以说良心。更多的信息大家可以到正式主页上进行了解 了解yolov5。 大家可以看下目前yolov5残暴的性能。
首先获取yolov5工程
pytorch版本的yolov5到最终的模型需要经历以下步骤,pytorch的pth权重->对应的onnx权重->openvino的xml和bin文件。 在v3.1版本的yolov5中用于进行pt模型转onnx模型的程序对nn.Hardswish()进行了兼容,模型转换过程大为化简,模型可以通过pytorch的jit直接导出,如果是采用了之前的yolov5版本代码,那么对于这个算子可能就要稍微花点时间进行转换支持了,其实万变不离其宗,之前版本的代码只需要对这个算子进行数学公式的理解以后即可采用torch.api进行拼接完成。 2.2.1训练准备首先肯定到原本的主页去看看如何操作
描述信息准备 在yolov5的文件夹下/yolov5/models/目录下可以找到以下文件
这三个文件分别对应s(小尺寸模型),m(中尺寸模型)和l(大尺寸模型)的结构描述信息。
2.2.2数据准备这部分请参考yolov5官方指南里面的设置,注意标注格式是class x_center y_center width height,其中x_center y_center width height均是根据图像尺寸归一化的0到1之间的数值。 2.2.3执行训练以采用yolov5s为例
其中
2.2.4模型转换经过训练,模型的原始存储格式为.pt格式,为了实现OpenVINO部署,需要首先转换为.onnx的存储格式,之后再转化为OpenVINO需要的.xml和.bin的存储格式。 pt格式转onnx格式 这一步的转换主要由 可以参考yolov5提供的简单教程 使用该教程中的方法可以获取onnx模型,但直接按照官方方式获取的onnx模型其中存在OpenVINO模型转换中不支持的运算。因此,使用该脚本之前需要进行一些更改: opset_version!!(这个很重要,这次ECV2021内置的openvino2021.3对opset_version=10的支持是十分不错的,推荐大家用这个version number) 在
opset_version=12,将导致后面的OpenVINO模型装换时遇到未支持的运算 因此设置为opset_version=10。 Detect layer export
设置为True则Detect层(包含nms,锚框计算等)不会输出到模型中。 设置为False包含Detect层的模型无法通过onnx到OpenVINO格式模型的转换。 需要执行如下指令:
需要注意的是在填入的.pt文件路径不存在时,该程序会自动下载官方预训练的模型作为转换的原始模型,转换完成则获得onnx格式的模型。 转换完成后可以使用Netron进行可视化,对于陌生的模型,该可视化工具对模型结构的认识有很大的帮助。
OpenVINO是一个功能丰富的跨平台边缘加速工具箱,本文用到了其中的模型优化工具和推理引擎两部分内容。我个人认为这是现在PC平台最好的部署工具,在X86计算架构上,openvino的地位是不可撼动的,当然如果你觉得你知道的某个公司优化得更好,那么我也不争,反正要我在x86上部署,肯定无脑openvino。 更多参考信息请查看openvino 回到极市平台的ECV2021比赛中,在 这里我们展示一个onnx转成openvino模型文件的示例代码:
2.3推理部署to be continue。。。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:23:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |