首页IT科技yolov5网络模型结构图(【yolov6系列一】深度解析网络架构)

yolov5网络模型结构图(【yolov6系列一】深度解析网络架构)

时间2025-09-10 11:26:40分类IT科技浏览6587
导读:在yolov5霸屏计算机视觉领域很久时,六月处美团开源了yolov6,并号称在精度和速度上均超越其他同量级的计算机视觉模型,刚刚瞅了一眼,star已经超过2.8k,脑子里莫名冒出一个词:“国货之光”。...

在yolov5霸屏计算机视觉领域很久时                ,六月处美团开源了yolov6                        ,并号称在精度和速度上均超越其他同量级的计算机视觉模型        ,刚刚瞅了一眼            ,star已经超过2.8k,脑子里莫名冒出一个词:“国货之光                ”                。

网上基于yolov6的解读有很多                        ,文末会附上美团的官方解读和开源代码的github链接                        。文本开始yolov6系列            ,先和大家分享下整个yolov6的网络架构(基于tag0.1版本的yolov6s)        ,后续再基于各个模块根据自己的理解分享给大家        。

整体框架

大家如需图中ppt使用                        ,请关注公众号                ,后台回复ppt 添加微信领取

以上为yolov6s整体的网络架构    ,从图中可看出yolov6网络由四个部分组成:input                        ,backbone                    ,neck以及head            。对各个部分的功能和yolov5相同,如backbone用于提取特征                    ,head用于预测                        。

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

backbone

yolov6s的backbone层参见RepVGG网络的backbone[3],如上图所示(s表示stride, o为outchannel, i为inchannel, 其中o=i表示outchannel=inchannel, o≠i表示outchannel与inchannel无相关性            ,并非其值一定不相等

)        ,由若干RepVGG block(以下RepVGG block简称RVB, RepBlock简称RB)组成        。

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

RB为几个RVB的串联                        ,其中第一个RVB用于特征层的size变化    ,后面N个RVB 用于特征层的融合                ,size保持不变                。

stem为s=2的RVB                        ,同时输入输出的channel不相同        ,这样stem的RVB变成:

同时ERBlock5中增加SPPF层:

其中SConv

是有conv+BN+ReLu组成:

这样SPPF网络则先通过一个SConv层            ,特征图h,w的size不变                        ,outchannel变成inchannel的一半            ,输出做为一个分支        ,而后经过3个maxpooling层                        ,每个maxpooling的kernel=5,s=1,padding=kernel//2, 每经过一个maxpooling后                ,fm size均不变    ,并做为分支    。而后通过cat将几个分支在channel维度上相加                        ,得到的size较于SPPF的输入                    ,h,w不变,channel为输入的2倍                    ,最后再通过一个SConv层                        ,通道减半    ,使得输入和输出的fm size不变                        。

整个backbone层流程为:输入6406403的图片                ,通过stem层(s=2)输出为32032032                        ,后面接几个ERBlock,每个ERBlock均做特征层的下采样和channel的增大        ,每个ERBlock由一个RVB和一个RB组成(ERBlock5多加SPPF层)            ,在RVB中做特征层的下采样                        ,同时channel增大            ,在RB中对特征层充分融合后输出        ,最后backbone输出三个fm分别为(2020512, 4040128, 808064)                    。

neck

Neck层美团官方称其为Rep-PAN,是基于PAN的拓扑方法                        ,如上图所示                ,类似一种“U                        ”型结构    ,其中U型左侧从上到下fm的h,w增大                        ,右侧从下到上fm的h,w减小                    ,其中Upsample上采样基于torch官方自带的转置卷积实现:

整个neck层的流程为,U型左侧                    ,从ERB5输出2020512的fm,通过SConv 变成2020128大小                        ,上采样后h,w较之前增大一倍后与ERB4的输出在channel层上concate后fm变成404384    ,通过一个RB(s=1, o≠i)后                ,输出 404128                        ,重复上述步骤后        ,输出808064的fm。U型右侧            ,将808064的fm先SConv下采样                        ,得到404064的fm,与U型左侧h,w一致的fm在channel层上concate后            ,通过一个RB(s=1, o≠i)        ,输出第二个fm                        ,重复U型右侧以上步骤                ,输出第三个fm                    。至此    ,neck层输出三个fm分别为(2020256, 4040128, 808064).

Head

如上图                        ,head基于三层输出预测                    ,分别对应了大小不同的从大到小的感受野                        。

其中BConv

是由conv+bn+SiLu组成:

整个head借鉴了yolox中的解耦头设计,并对其做了改进                    ,head流程如下:从neck层输出三个分支                        ,对于每个分支    ,先对输出fm通过BConv层                ,做fm的特征融合后                        ,分成两个分支一个分支通过BConv+Conv完成分类任务的预测        ,另外一个分支先通过BConv融合特征后再分成两个分支            ,一个分支通过Conv完成边框的回归                        ,一个分支通过Conv完成前后背景的分类            ,至此三个分支再通过concate在channel层上融合        ,输出未经后处理的预测结果    。

结语

以上为个人理解                        ,yolov6s在0.1版本上的整体网络架构                ,如有理解偏差    ,欢迎交流                        ,后续根据yolov6中各个模块中的详细的原理以及代码继续更新                    ,希望对大家有帮助                。

参考:

[1]https://mp.weixin.qq.com/s/RrQCP4pTSwpTmSgvly9evg(美团官方解读)

[2] https://github.com/meituan/YOLOv6(美团官方代码)

[3] https://zhuanlan.zhihu.com/p/353697121

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

展开全文READ MORE
win11任务管理器快捷键打不开(Win11任务管理器在哪? Widows11打开任务管理器的技巧) 揭秘SEO职业内幕,助力小白快速入门(从基础知识到实战经验,SEO小白必读的全面指南)