当前位置: 代码网 > it编程>软件设计>算法 > 【目标检测】YOLOv5 网络结构,bottleneckCSP 与 C3 模块图解

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

2024年08月03日 算法 我要评论
YOLOv5 作为 YOLO 家族的第五个版本,本身也演进了几个子版本,现在网上的资料都没有标注具体是哪个子版本的,导致不同文章之间各种混乱,像是盲人摸象。其实官方的里对各个版本的变动其实都讲得非常清楚了。下面简单说一下各版本用到的模块:V1.0版本V2.0版本在V1.0版本基础上删去nn.Conv2d,并且Detect指定为17, 20, 23层输出。V4.0版本用C3代替了BottleneckCSP,而其他的结构不变。CBL 也换成了 CBS,使用 SiLU 作为激活函数。


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 模块:

在这里插入图片描述

spp 与 sppf

在这里插入图片描述

因为是再 v6.0 的版本才换的 sppf,所以按照道理来说 v4.0 之前的版本中 spp 的激活函数应该都是 leakyrelu,但是这里为了方便,都用 silu 作为激活函数了。

修正:上图左边的是 sppf 模块,右边的是 spp 模块(已修改)

参考文章:

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com