记录yolov5目标检测算法学习(主要模块学习之c3模块)23/10/15

上一篇讲完了conv模块,本篇来介绍一下c3模块

c3:

以yolov5的6.0版本来说,c3分为两种,①backbone部分里面的c3和②neck部分里面的c3

两种的区别主要在于内部的bottleneck模块的类型不同(前者是bottleneck1,后者是bottleneck2

因此在这里不得不先把两个bottleneck讲一下:

如上两图就是yolov5的6.0版本存在的两种bottleneck,第一种只出现在backbone部分,第二种只出现在neck部分,都由两个conv模块组成,先是k1,s1,p0的conv,然后k3,s1,p1的conv

区别在于最终相加时,bottleneck1会把进行两次conv前的残差结构也加上,而bottleneck2则不会

两种c3除bottleneck之外在个人理解上来看是大差不差的,来看看它的组成——

组成:

3个参数均为k1,s1,p0的的conv模块,1个bottleneck模块(分1和2两种),1个concat模块

运作机制:

(上图是backbone部分深度为2的c3模块)c3模块会将卷积神经网络中上一层模块输出过来的特征图作为自身的输入,首先把特征图分为两部分,左半部分只经过一个conv模块就等着右半部分处理完后进行融合,右半部分则先经过一个相同的conv模块,然后经过n个bottleneck,最终和左半部分进行融合,融合后再进行一个conv模块就输出特征图,整个过程总结下来就是一分为二走两路,左路不做过多操作,右路经过多个bottleneck模块不断降维升维提取特征,然后又合二为一,再经过一个conv模块后升维输出,因此经过c3模块的特征图,只做特征提取,其长、宽和通道数都是不变的!

关于为什么c3要采取将特征图一分为2来处理,个人猜想首先主要是能够大大减少计算量,因为只取其中一半的特征图走右半部分的conv和bottleneck,其次这种处理方式保留了左半部分没有经过多次升维降维操作(即bottleneck发挥的作用)的特征图,可能有利于提取更多更详细的特征,当然这只是我自己的猜想,具体原因肯定是作者做了多次实验,发现这种方式能够让结果更精确所以采用这种方式,实验结果大于一切

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值