【目标检测】YOLOv5 网络结构,bottleneckCSP 与 C3 模块图解


YOLOv5 作为 YOLO 家族的第五个版本,本身也演进了几个子版本,现在网上的资料都没有标注具体是哪个子版本的,导致不同文章之间各种混乱,像是盲人摸象。

其实官方的 release 里对各个版本的变动其实都讲得非常清楚了。

下面简单说一下各版本用到的模块:

V1.0版本

  • backbone主要模块:Focus、Conv、BottleneckCSP、SPP;
  • head主要模块:BottleneckCSP、Conv、nn.Upsample、Concat、nn.Conv2d。

V2.0版本在V1.0版本基础上删去nn.Conv2d,并且Detect指定为17, 20, 23层输出。
V4.0版本用C3代替了BottleneckCSP,而其他的结构不变。CBL 也换成了 CBS,使用 SiLU 作为激活函数
V6.0版本将第0层的Focus替换成Conv,将SPP替换成SPPF;

Focus 模块

Focus 模块其实和 YOLOv2 PassThrough 层是一样的,这个在最终版本的 YOLOV5 v6.x 版本中被抛弃了。

Csp 模块

看别的文章,大家一定都会看到过 CSP1_x, CSP2_x,bottleneckCSP,C3 这些模块,有时候也会疑惑 YOLOv5 究竟用了多少种 CSP 模块。

如同上面说的那样,YOLOv5 一共使用过两种 Csp 模块

  • v4.0 版本之前的 BottleneckCSP,用的 LeakyReLU 作为激活函数
  • v4.0 版本之后的 C3,用的 SiLU 作为激活函数

BottleneckCsp

这里我们两种结构都介绍一下,首先是已经不再用的 BottleneckCSP 模块:

在这里插入图片描述
其中的 CBL 模块就是 Conv2D + BN + LeakyReLU 的组合,这里的 bottleneck 可以根据传入的参数决定是否带有 shortcut。如果是带有 shortcut 的话,就是正统的 residual 模块了,如果没有 shortcut,就是单纯的 2 个 CBL 串联。

C3

在这里插入图片描述
C3 模块因为内部有 3 个卷积模块,所以被命名为 C3 模块,去掉了 BottleneckCSP 中一些繁杂的 Conv2d 操作,并且将激活函数从 LeakyReLU 换成了 SiLU。我们的 CBL 模块也因此变成了 CBS 模块。和 BottleneckCSP 一样,内部的 bottleneck 也分为带 shortcut 和不带 shortcut 两种。

CSP1_X 与 CSP2_X

其实 CSP1_X 是指带 shortcut 的 CSP 模块的统称,也就是内部 bottleneck 带 shortcut 的 BottleneckCSP 和 C3 都可以叫 CSP1_X。

而不带 shortcut 则归为 CSP2_X。

一般来说 CSP1_X 用在 backbone 部分,而 CSP2_X 则用在 neck 部分。

最后的 X 的含义是 bottleneck 的数量。

YOLOv4 的 CSP_X

因为是从 YOLOv4 才开始使用的 CSP 模块,所以在这里顺便放个 YOLOv4 的 CSP_X 模块:

在这里插入图片描述

SSP 与 SSPF

在这里插入图片描述
因为是再 v6.0 的版本才换的 SPPF,所以按照道理来说 v4.0 之前的版本中 SPP 的激活函数应该都是 LeakyReLU,但是这里为了方便,都用 SiLU 作为激活函数了。

参考文章:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值