首页IT科技yolov4网络结构(yolov7 网络架构深度解析)

yolov4网络结构(yolov7 网络架构深度解析)

时间2025-09-13 23:59:53分类IT科技浏览6333
导读:在美团yolov6刚出来不到一个月,yolov4的官方人马yolov7带着论文和代码高调现身,迅速霸屏,膜拜下速度和精度: 四个字“多快好省”,yolov7依旧基于anchor based的方法,同时在网络架构上增加E-ELAN层,并将REP层也加入进来,方便后续部署,同时在训练时,在head时,新增Aux_detect用于辅助检...

在美团yolov6刚出来不到一个月                   ,yolov4的官方人马yolov7带着论文和代码高调现身                        ,迅速霸屏        ,膜拜下速度和精度:

四个字“多快好省                   ”               ,yolov7依旧基于anchor based的方法                         ,同时在网络架构上增加E-ELAN层            ,并将REP层也加入进来          ,方便后续部署                          ,同时在训练时                ,在head时     ,新增Aux_detect用于辅助检测                           ,个人理解是对预测结果的一种初筛                    ,有种two-stage的感觉(欢迎打脸)                   。

网上基于yolov7的解读有很多,文末会附上yolov7的ariv论文连接和开源代码的github链接                        。本文先和大家分享下整个yolov7的网络架构(基于tag0.1版本的yolov7L)                       ,后续再基于各个模块根据自己的理解分享给大家        。

整体框架

如果大家需文中ppt使用                        ,请点击下方链接    ,关注公众号                   ,后台添加微信                        ,领取        ,备注“ppt                        ”               。 yolov7网络架构深度解析

以上为yolov7整体的网络架构               ,从图中可看出yolov7网络由三个部分组成:input                         ,backbone和head            ,与yolov5不同的是          ,将neck层与head层合称为head层                          ,实际上的功能的一样的                         。对各个部分的功能和yolov5相同                ,如backbone用于提取特征     ,head用于预测            。

根据上图的架构图走一遍网络流程:先对输入的图片预处理                           ,对齐成640*640大小的RGB图片                    ,输入到backbone网络中,根据backbone网络中的三层输出                       ,在head层通过backbone网络继续输出三层不同size大小的feature map(以下简称fm)                        ,经过RepVGG block 和conv    ,对图像检测的三类任务(分类                   、前后背景分类                        、边框)预测                   ,输出最后的结果          。

backbone

yolov7的backbone层如上图所示                        ,由若干BConv层        、E-ELAN层以及MPConv层组成        ,其中BConv层由卷积层+BN层+激活函数组成               ,在tag0.1版本中的激活函数为ReakyReLu                          。

不同颜色的Bconv表示卷积的kernel不同(以下k表示kernel长宽大小                         ,s表示stride, o为outchannel, i为inchannel, 其中o=i表示outchannel=inchannel, o≠i表示outchannel与inchannel无相关性            ,并非其值一定不相等)          ,第一个为(k=1,s=1)的点卷积核的卷积                          ,输入输出的长宽不变                ,第二个为(k=3,s=1)卷积核的卷积     ,输出输出的长宽也不变                           ,第三个是s=2,输出的长宽为输入的一半                。上述不同颜色的Bconv主要为了区分k和s                    ,不区分输入输出通道     。

E-ELAN层也是由不同的卷积拼接而成,如下图所示:

整个E-ELAN层输入输出的长宽不变                       ,channel上o=2i, 其中2i是由4个conv层输出channel为i/2的输出concate拼接而成                           。

MPConv层(名字自取的                        ,如果有实际确定的命名    ,欢迎私聊我改正)流程如上图                   ,输入输出通道相同                        ,输出长宽为输入长宽的一半        ,上分支通过maxpooling使长宽减半               ,通过BConv对通道减半                         ,下分支则通过第一个BConv对通道减半            ,第二的k=3          ,s=2的Bconv对长宽减半                          ,而后上下分支cat合并                ,得到长宽减半     ,o=i的输出                    。

综述整个backbone层由若干BConv层               、E-ELAN层以及MPConv层交替减半长宽                           ,增倍通道                    ,提取特征。

head

如上图所示,整个head层通过SPPCPC层                         、若干BConv层            、若干MPConv层          、若干Catconv层以及后续输出三个head的RepVGG block层组成                       。

其中SPPCPC层如下图:整个SPPCSPC层的输出层channel为out_channel                       ,计算中会计算出一个hidden_channel = int(2eout_channel)                        ,用于对hidden_channel(以下统称hc)拓展    ,一般取e=0.5                   ,则hc=out_channel                         。具体的流程如下图:

Catconv层(名字自取的                        ,如果有实际确定的命名        ,欢迎私聊我改正)与E-ELAN层的操作基本相同:

整个Catconv层输入输出的长宽不变               ,channel上o=2i, 其中2i是由6个conv层输出channel为i/2的输出concate拼接而成    。

REP层即repvgg_block层                         ,为今年超级火的一个部署友好的网络层            ,yolov6中也有用到:

REP在训练和部署的时候结构不同          ,在训练的时候由33的卷积添加11的卷积分支                          ,同时如果输入和输出的channel以及h,w的size一致时                ,再添加一个BN的分支     ,三个分支相加输出                           ,在部署时                    ,为了方便部署,会将分支的参数重参数化到主分支上                       ,取3*3的主分支卷积输出                   。

整个head层的流程为                        ,如上图所示输出三个feature map后    ,分别通过三个REP和conv层输出三个不同size大小的未经处理的预测结果                        。

以上为个人理解                   ,再看其他的yolov7网络架构                        ,会有DownC和ReOrg两个yolov7L中未出现的层        ,其中DownC层与MPConv层异曲同工:

ReOrg层与yolov5前期的focus层的切片原理相同        。如有理解偏差               ,欢迎交流                         ,后续根据yolov7中各个模块中的详细的原理以及代码继续更新            ,希望对大家有帮助               。

【yolov7系列】网络框架细节拆解

参考:

[1] https://github.com/WongKinYiu/yolov7(官方github代码)

[2] https://arxiv.org/pdf/2207.02696.pdf(yolov7论文)

[3]https://www.zhihu.com/question/541985721

[4]YOLOv7官方开源 | Alexey Bochkovskiy站台          ,精度速度超越所有YOLO                          ,还得是AB (qq.com)

[5] YOLOv7来临:论文详读和解析 (qq.com)

[6]【yolov6系列】细节拆解网络框架 (qq.com)

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
网游加速器价格一览表(网游加速器哪个更好性价比更高_全网热门网游加速器对比分析) shell脚本运行java(shell脚本控制jar的启动和停止 Linux,shell,脚本控制jar包启动停止 language ITeye论坛)