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

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

3天内不再提示

YOLOV7网络架构解读

jt_rfid5 来源:CSDN博主江小皮不皮 2023-11-29 10:00 次阅读

前言

继美团发布YOLOV6之后,YOLO系列原作者也发布了YOLOV7。

YOLOV7主要的贡献在于:

1.模型重参数

YOLOV7将模型重参数化引入到网络架构中,重参数化这一思想最早出现于REPVGG中。

2.标签分配策略

YOLOV7的标签分配策略采用的是YOLOV5的跨网格搜索,以及YOLOX的匹配策略。

3.ELAN高效网络架构

YOLOV7中提出的一个新的网络架构,以高效为主。

4.带辅助头的训练

YOLOV7提出了辅助头的一个训练方法,主要目的是通过增加训练成本,提升精度,同时不影响推理的时间,因为辅助头只会出现在训练过程中。

一、YOLOV7是什么?

YOLO算法作为one-stage目标检测算法最典型的代表,其基于深度神经网络进行对象的识别和定位,运行速度很快,可以用于实时系统。

YOLOV7是目前YOLO系列最先进的算法,在准确率和速度上超越了以往的YOLO系列。

了解YOLO是对目标检测算法研究的一个必须步骤。

二、网络架构

1、架构图总览

4bca96d6-8dd6-11ee-939d-92fbcf53809c.png

2、CBS模块解读

•对于CBS模块,我们可以看从图中可以看出它是由一个Conv层,也就是卷积层,一个BN层,也就是Batch normalization层,还有一个Silu层,这是一个激活函数。

•silu激活函数是swish激活函数的变体,两者的公式如下所示

silu(x)=x⋅sigmoid(x)

swish(x)=x⋅sigmoid(βx)

4bd07768-8dd6-11ee-939d-92fbcf53809c.png

•从架构图中我们可以看出,CBS模块这里有三种颜色,三种颜色代表它们的卷积核(k)和步长(s)不同。

首先最浅的颜色,也就是第一个CBS模块的颜色,它是一个1x1的卷积,stride(步长为1)。

其次稍浅的颜色,也就是第二个CBS模块的颜色,它是一个3x3的卷积,stride(步长为1)。

最后最深的颜色,也就是第三个CBS模块的颜色,它是一个3x3的卷积,stride(步长为2)。

•1x1的卷积主要用来改变通道数。

•3x3的卷积,步长为1,主要用来特征提取。

•3x3的卷积,步长为2,主要用来下采样。

4c25c18c-8dd6-11ee-939d-92fbcf53809c.png

3、CBM模块解读

•CBM模块和CBS模块,我们可以看出来是基本一致的。

•由一个Conv层,也就是卷积层,一个BN层,也就是Batch normalization层,还有一个sigmoid层,这是一个激活函数。

•卷积核为1x1,stride(步长为1)

4c3b1762-8dd6-11ee-939d-92fbcf53809c.png

4、REP模块解读

•REP模块分为两个,一个是train,也就是训练,一个deploy,也就是推理。

•训练模块,它有三个分支。

最上面的分支是3x3的卷积,用于特征提取。

中间的分支是1x1的卷积,用于平滑特征。

最后分支是一个Identity,不做卷积操作,直接移过来。

最后把它们相加在一起。

•推理模块,包含一个3x3的卷积,stride(步长为1)。是由训练模块重参数化转换而来。

在训练模块中,因为第一层是一个3x3的卷积,第二层是一个1x1的卷积,最后层是一个Identity。

在模型从参数化的时候,需要把1x1的卷积啊,转换成3x3的卷积,把Identity也转换成3x3的卷积,然后进行一个矩阵的一个加法,也就是一个矩阵融合过程。

然后最后将它的权重进行相加,就得到了一个3x3的卷积,也就是说,这三个分支就融合成了一条线,里面只有一个3x3的卷积。

它们的权重是三个分支的叠加结果,矩阵,也是三个分支的叠加结果。

4c469128-8dd6-11ee-939d-92fbcf53809c.png

5、MP模块解读

•MP模块有两个分支,作用是进行下采样。

•第一条分支先经过一个maxpool,也就是最大池化。最大值化的作用就是下采样,然后再经过一个1x1的卷积进行通道数的改变。

•第二条分支先经过一个1x1的卷积,做通道数的变化,然后再经过一个3x3卷积核、步长为2的卷积块,这个卷积块也是用来下采样的。

•最后把第一个分支和第二分支的结果加在一起,得到了超级下采样的结果。

4c53f2fa-8dd6-11ee-939d-92fbcf53809c.png

6、ELAN模块解读

•ELAN模块是一个高效的网络结构,它通过控制最短和最长的梯度路径,使网络能够学习到更多的特征,并且具有更强的鲁棒性。

•ELAN有两条分支。

•第一条分支是经过一个1x1的卷积做通道数的变化。

•第二条分支就比较复杂了。它先首先经过一个1x1的卷积模块,做通道数的变化。然后再经过四个3x3的卷积模块,做特征提取。

•如图所示,最后把四个特征叠加在一起得到最后的特征提取结果。

4c5f3a98-8dd6-11ee-939d-92fbcf53809c.png

7、ELAN-W模块解读

•对于ELAN-W模块,我们也看到它跟ELAN模块是非常的相似,所略有不同的就是它在第二条分支的时候选取的输出数量不同。

•ELAN模块选取了三个输出进行最后的相加。

•ELAN-W模块选取了五个进行相加。

8、UPSample模块解读

UPSample模块是一个上采样的模块,它使用的上采样方式是最近邻插值。

4c764634-8dd6-11ee-939d-92fbcf53809c.png

9、SPPCSPC模块解读

SPP的作用是能够增大感受野,使得算法适应不同的分辨率图像,它是通过最大池化来获得不同感受野。

•我们可以看到在第一条分支中,经理了maxpool的有四条分支。分别是5,9,13,1,这四个不同的maxpool就代表着他能够处理不同的对象。

•也就是说,它这四个不同尺度的最大池化有四种感受野,用来区别于大目标和小目标。

比如一张照片中的狗和行人以及车,他们的尺度是不一样的,通过不同的maxpool,这样子就能够更好的区别小目标和大目标。

CSP模块,首先将特征分为两部分,其中的一个部分进行常规的处理,另外一个部分进行SPP结构的处理,最后把这两个部分合并在一起,这样子就能够减少一半的计算量,使得速度变得快,精度反而会提升。

4c871d7e-8dd6-11ee-939d-92fbcf53809c.png

来源:CSDN博主江小皮不皮

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

    关注

    23

    文章

    4456

    浏览量

    90758
  • 模型
    +关注

    关注

    1

    文章

    2704

    浏览量

    47689
  • 网络架构
    +关注

    关注

    1

    文章

    87

    浏览量

    12416
  • 深度神经网络

    关注

    0

    文章

    42

    浏览量

    4463

原文标题:【光电智造】YOLOV7详细解读|网络架构解读

文章出处:【微信号:今日光电,微信公众号:今日光电】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Yolov5算法解读

    (prediction)。backbone是New CSP-Darknet53。Neck层为SPFF和New CSP-PAN。Head层为Yolov3 head。 yolov5 6.0版本的主要架构如下图所示: 从整体结构图中,
    的头像 发表于 05-17 16:38 4304次阅读
    <b class='flag-5'>Yolov</b>5算法<b class='flag-5'>解读</b>

    【秀秀资源】《ASP.NET 2.0网络开发技术》从基础到深度课件分享

    技术》 HTML服务器控件https://www.elecfans.com/soft/courseware/2017/20170121477481.html7.《ASP.NET 2.0网络开发技术
    发表于 02-21 16:39

    Android 4.0网络编程详解源码

    本帖最后由 richthoffen 于 2019-7-19 16:39 编辑 Android 4.0网络编程详解源码
    发表于 07-19 08:41

    与V.35网络的接口

    DN94- 与V.35网络的接口
    发表于 08-08 11:07

    IPv4网络和IPv6网络互连技术对比分析哪个好?

    NAT-PT实现互连原理是什么?NAT-PT的工作机制是怎样的?IPv4网络和IPv6网络互连技术对比分析哪个好?
    发表于 05-26 07:07

    STM32网络的三大件

    之前的推文已经将STM32网络的三大件讲完了①PHY接口,《STM32网络电路设计》②MAC控制器,《STM32网络之MAC控制器》③DMA控制器,《STM32网络之DMA控制器》本文
    发表于 08-02 09:54

    YOLOv5网络结构解析

    1、YOLOv5 网络结构解析  YOLOv5针对不同大小(n, s, m, l, x)的网络整体架构都是一样的,只不过会在每个子模块中采用
    发表于 10-31 16:30

    yolov7 onnx模型在NPU上太慢了怎么解决?

    ://github.com/WongKinYiu/yolov7/releases下载yolov7-tiny.pt ,并重命名yolov7tiny.pt2.将yolov7tiny.pt转
    发表于 04-04 06:13

    无法使用MYRIAD在OpenVINO trade中运行YOLOv7自定义模型怎么解决?

    无法确定如何将 YOLOv7 模型的重量(.pt 文件)转换为OpenVINO™中间表示 (IR) 并推断有 MYRIAD 的 IR。 分辨率 转换使用此 GitHub* 存储库
    发表于 08-15 08:29

    深度解析YOLOv7网络结构

    最近,Scaled-YOLOv4的作者(也是后来的YOLOR的作者)和YOLOv4的作者AB大佬再次联手推出了YOLOv7,目前来看,这一版的YOLOv7是一个比较正统的YOLO续作,
    的头像 发表于 09-14 11:16 6633次阅读

    YOLOv7训练自己的数据集包括哪些

      YOLOv7训练自己的数据集整个过程主要包括:环境安装—制作数据集—模型训练—模型测试—模型推理 一、准备深度学习环境 本人的笔记本电脑系统是:Windows10 首先下载YOLOv7的代码
    的头像 发表于 05-29 15:18 624次阅读
    <b class='flag-5'>YOLOv7</b>训练自己的数据集包括哪些

    一文彻底搞懂YOLOv8【网络结构+代码+实操】

    从上面可以看出,YOLOv8 主要参考了最近提出的诸如 YOLOX、YOLOv6、YOLOv7 和 PPYOLOE 等算法的相关设计,本身的创新点不多,偏向工程实践,主推的还是 ultralytics 这个框架本身。
    的头像 发表于 06-15 17:15 6722次阅读
    一文彻底搞懂<b class='flag-5'>YOLOv</b>8【<b class='flag-5'>网络</b>结构+代码+实操】

    yolov5和YOLOX正负样本分配策略

    整体上在正负样本分配中,yolov7的策略算是yolov5和YOLOX的结合。因此本文先从yolov5和YOLOX正负样本分配策略分析入手,后引入到YOLOv7的解析中。
    发表于 08-14 11:45 1772次阅读
    <b class='flag-5'>yolov</b>5和YOLOX正负样本分配策略

    使用OpenVINO优化并部署训练好的YOLOv7模型

    在《英特尔锐炫 显卡+ oneAPI 和 OpenVINO 实现英特尔 视频 AI 计算盒训推一体-上篇》一文中,我们详细介绍基于英特尔 独立显卡搭建 YOLOv7 模型的训练环境,并完成了 YOLOv7 模型训练,获得了最佳精度的模型权重。
    的头像 发表于 08-25 11:08 923次阅读
    使用OpenVINO优化并部署训练好的<b class='flag-5'>YOLOv7</b>模型

    详细解读YOLOV7网络架构设计

    YOLOV7提出了辅助头的一个训练方法,主要目的是通过增加训练成本,提升精度,同时不影响推理的时间,因为辅助头只会出现在训练过程中。
    发表于 11-27 10:45 547次阅读
    详细<b class='flag-5'>解读</b><b class='flag-5'>YOLOV7</b><b class='flag-5'>网络</b><b class='flag-5'>架构</b>设计