0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析yolov7采用的一项技术:模型结构重参化

博世苏州 来源:博世苏州 作者:博世苏州 2022-08-09 14:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Yolov7问世,刷新了目标检测内卷的新上限!小博此次携手博世AI大神Zlex做一次解析。今天,我们不准备解析yolov7,而是解析yolov7采用的一项技术:模型结构重参化。

首先,这要从古老的vgg说起,很久很久以前神经网络还没有很多花样的时候,他是一个以卷积为主串联的网络结构,如下图所示:

3a51761a-179c-11ed-ba43-dac502259ad0.png

3a5ec388-179c-11ed-ba43-dac502259ad0.png

由于见证了神经网络的神奇效果,科学家工程师们前仆后继开发了resnet, inception net, 以及自学习产生的efficientnet等等以结构创新为主的系列,以及归一化系列(ln,bn,gn,in),激活函数系列, 卷积系列等各种新的计算层,还有各种损失函数层等等。

随着思维的展开,除了从计算方法(数学推理角度)和网络结构(实验性创新角度)层面创新,还有哪些脑洞可以打开呢?是否可以实现数学和网络结构方面的互相转化?答案是肯定的,数学推算和结构设计之间是可以相互转化的。

而模型结构重参化就是其中一种。

01

模型结构重参化

模型结构重参化是继承了深度学习的特性,并作为思考点而展开的,也就是训练(train)和推断(deploy)分别思考的策略,通常我们是可以忍受训练速度较慢,但是推理更加快速的部署方案。

基于这个现实的考虑,是否可能通过增加训练的复杂度但不增加推断运行的时间,从而达到模型能力的提升?

其实这一切都经不起科学家的推敲,这种思路的可行性答案也是肯定的,其实在很久之前的部署加速技巧—— Conv、BN、Relu 三个层融合(大部分情况是conv和bn融合)也是发现了——训练和部署可以在网络结构不同的情况下实现效果等价,这个数学公式等价变换思路。而tensorRT等部署加速方案也都融合了这项技术。

模型结构重参化(structural re-parameterization)是丁霄汉近年来提出的一种通用深度学习模型设计方法论。该方法论首先指出了构造一系列用于训练的结构,并将其结构等价转换为另一种用于测试的结构,也就是训练和测试的结构不再相同,但是效果等效。

该理论是假设在训练资源相对丰富的条件下,在不降低推理能力的前提下又能达到提速的目的。因此训练时的模型可以足够复杂,且具备优秀的性质。而转换得到的推理时模型可以简化,但能力不会减弱,也就是实现无损压缩。

为什么要以vgg为例,而不是以目前各种先进复杂的结构为例解析这一设计呢?其原因在于:模型结构复杂提升了精度,但不利于硬件的各种并行加速计算。但vgg这种单一的结构更容易做很多的变形和加速操作,Repvgg就是基于vgg网络的模型结构重参化。

论文中对比了resnet的参差结构和rep结构的不同,以及训练和推理网络如何转化,如下图所示:

3a80dd74-179c-11ed-ba43-dac502259ad0.png

以上设计方法论基于的数学关系是:

(i+c+b)*w=i*w + c*w + b*w的等式理论。

该等式画成结构图是:

3a988cda-179c-11ed-ba43-dac502259ad0.png

只不过在卷积的世界里,a和b表示的是一个n*n的核;而在一些设计里面,a和b的大小是不一致的。这个时候就需要把现在a和b的维度进行一致性转换,也就是repvgg作者采用的:把1*1的核通过pad的方法补0操作变成3*3的核,达到a、b维度一致。

identity的操作相当于是1*1的单位矩阵卷积pad后就可以转化为3*3的卷积核。还应该值得注意的是:每个卷积后面还跟着bn层,这是就用到了上述提到的conv和bn的融合计算方法。

02

Yolov7在这项技术上的发现和创新

Yolov7中的模型结构重参化做了哪些创新?

Zlex发现Rep的结构策略直接用到resnet等结构的网络中达不到预期效果,分析后发现identity层的使用破坏了resnet的参差结构和densenet的级联结构,因此去掉identity层,采用如下图(g和h)的结构方式有效。

3aa93ab2-179c-11ed-ba43-dac502259ad0.png

03

Yolov7工业应用领域的改善空间

俗话说,极致的项目一般是“既要,也要,还要”的模式——既要推理速度快!也要推理精度高!还要训练速度也不能太慢!

Yolov7无疑是吸收了很多仙气修炼成的佳作,但也存在些许缺点,这些缺点也是该设计本质性的东西,Yolov7的训练速度经过Zlex亲测,比其他yolo系列慢了很多。对于资源有限型的AI爱好者也形成了一定的障碍,单元时间可以跑的实验次数少了很多,验证一些想法的节奏也慢了很多。

Yolov7给博世工业检测、自动驾驶、数字化等领域又注入了新的超能力,应用过程中也会发现这样或者那样的问题,比方说训练资源有限,速度跟不上项目的节奏,能力提升的trick不够适应自己的应用场景,小数据训练效果不佳,不同平台的移植工作量大等等,需要我们博世工程师在适配、融合和改进的路上坚定的前进。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模型
    +关注

    关注

    1

    文章

    3648

    浏览量

    51702
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123896

原文标题:博采众长 | 在提升深度学习模型能力方面的那些魔鬼细节:模型结构重参化

文章出处:【微信号:rbacinternalevents,微信公众号:博世苏州】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用ROCm™优化并部署YOLOv8模型

    作者:AVNET 李鑫杰 YOLOv8介绍? YOLOv8 由 Ultralytics 于 2023 年 1 月 10 日发布,在准确性和速度方面提供了前沿的性能。YOLOv8 在
    的头像 发表于 09-24 18:32 507次阅读
    使用ROCm™优化并部署<b class='flag-5'>YOLOv</b>8<b class='flag-5'>模型</b>

    单板挑战4路YOLOv8!米尔瑞芯微RK3576开发板性能实测

    4.YOLOv8s-obb.float 旋转目标检测模型 上面已经看到了单独解析视频时,每模型效果,接下来演示MYD-LR3576通过
    发表于 09-12 17:52

    基于瑞芯微RK3576的 yolov5训练部署教程

    1.Yolov5简介 YOLOv5 模型是 Ultralytics 公司于 2020 年 6 月 9 日公开发布的。YOLOv5 模型是基于
    的头像 发表于 09-11 16:43 2378次阅读
    基于瑞芯微RK3576的 <b class='flag-5'>yolov</b>5训练部署教程

    知行科技机器人业务新获一项合作

    近日,知行科技的机器人业务新获一项合作,国内头部机器人公司委托开发背包式机器人全栈解决方案。
    的头像 发表于 09-03 18:12 615次阅读

    在K230中,如何使用AI Demo中的object_detect_yolov8n,YOLOV8多目标检测模型

    在K230的AI开发教程文档中,可以看到有源码的AI Demo,其中包括yolov8n模型,在仓库里可以看到源码 我想请问各位大佬,如何使用这个程序?如何更改程序,替换为我自己的数据集和训练后的模型
    发表于 08-07 06:48

    yolov5训练部署全链路教程

    1.Yolov5简介YOLOv5模型是Ultralytics公司于2020年6月9日公开发布的。YOLOv5模型是基于
    的头像 发表于 07-25 15:22 1339次阅读
    <b class='flag-5'>yolov</b>5训练部署全链路教程

    如何提高yolov8模型在k230上运行的帧率?

    ,display_mode=display_mode)pl.create()# 初始YOLOv8实例yolo=YOLOv8(task_type=\"detect\",mode
    发表于 06-20 06:25

    请问如何在imx8mplus上部署和运行YOLOv5训练的模型

    我正在从事 imx8mplus yocto 项目。我已经在自定义数据集上的 YOLOv5 上训练了对象检测模型。它在 ubuntu 电脑上运行良好。现在我想在我的 imx8mplus 板上运行该模型
    发表于 03-25 07:23

    YOLOv5类中rgb888p_size这个参数要与模型推理和训练的尺寸致吗?致会达到更好的效果?

    YOLOv5类中rgb888p_size这个参数要与模型推理和训练的尺寸致吗,致会达到更好的效果
    发表于 03-11 08:12

    YOLOv4模型转换为IR的说明,无法将模型转换为TensorFlow2格式怎么解决?

    遵照 将 YOLOv4 模型转换为 IR 的 说明,但无法将模型转换为 TensorFlow2* 格式。 将 YOLOv4 darknet 转换为 Keras
    发表于 03-07 07:14

    OpenVINO™工具套件插件对YOLOv5s模型和scatterUpate层的支持范围是什么?

    OpenVINO™工具套件插件对YOLOv5s模型和scatterUpate层的支持范围是什么?
    发表于 03-05 10:16

    【ELF 2学习板试用】ELF2开发板(飞凌嵌入式)部署yolov5s的自定义模型

    开发板上进行推理。 获得自定义训练得到的yolov5s pt模型 准备自定义数据集(博主用的是VOC数据集) 数据集目录结构如下: └─VOC2028:自定义数据集 ├─Annotations存放
    发表于 02-04 18:15

    【「基于大模型的RAG应用开发与优化」阅读体验】+大模型微调技术解读

    今天学习<基于大模型的RAG应用开发与优化>这本书。大模型微调是深度学习领域中的一项关键技术,它指的是在已经预训练好的大型深度学习模型
    发表于 01-14 16:51

    ​ SLA立体光固化成型:一项实现3D打印领域高精度数字模型实体的先锋技术

    发明。自创造以来,便以优异的快速成型特征和高精度表现,成为了一项实现复杂数字模型实体的关键技术。它不仅突破了制造业的传统模具模式,还能在加速将设计概念转变成实际产品的同时,保持产品表
    发表于 01-09 18:57

    采用华为云 Flexus 云服务器 X 实例部署 YOLOv3 算法完成目标检测

    、前言 1.1 开发需求 这篇文章讲解: 采用华为云最新推出的 Flexus 云服务器 X 实例部署 YOLOv3 算法,完成图像分析、目标检测。 随着计算机视觉技术的飞速发展,深度
    的头像 发表于 01-02 12:00 1023次阅读
    <b class='flag-5'>采用</b>华为云 Flexus 云服务器 X 实例部署 <b class='flag-5'>YOLOv</b>3 算法完成目标检测