5月22日复盘-YOLOV5

5月22日复盘

八、YOLOV5

从YOLOV5开始,就进到了工程化阶段了。

项目:

​ https://github.com/ultralytics/yolov5

1. 与YOLOV4对比

  • 大体结构一致
  • 主干网络是C3-Darknet53
  • 网络最开始增加Focus结构
  • Neck也是采用FPN+PAN,但将卷积变成了CSP
  • 预测损失采用GloU损失

2. Focus模块

先分块,后拼接,再卷积

①、640 x 640 x 3的图像输入Focus结构,采用切片操作,先变成320 x 320 x 12的特征图;

②、再经过一次32个卷积核的卷积操作,最终变成320 x 320 x 32的特征图;

③、目的是加速

计算量的计算公式为:
计算量 = 卷积核尺寸 × 输入通道数 × 输出通道数 × 输出尺寸 2 \begin{aligned}&\text{计算量}=\text{卷积核尺寸}\times\text{输入通道数}\times\text{输出通道数}\times\text{输出尺寸}^2\end{aligned} 计算量=卷积核尺寸×输入通道数×输出通道数×输出尺寸2

F L O P s ( c o n v ) = 3 × 3 × 3 × 32 × 320 × 320 = 88473600 F L O P s ( F o c u s ) = 1 × 1 × 12 × 32 × 320 × 320 = 39321600 \mathrm{FLOPs(conv)}=3\times3\times3\times32\times320\times320=88473600 \\ \mathrm{FLOPs(Focus)}=1\times1\times12\times32\times320\times320=39321600 FLOPs(conv)=3×3×3×32×320×320=88473600FLOPs(Focus)=1×1×12×32×320×320=39321600

3. 整体网络结构

整体结构和YOLOV4非常接近。

在这里插入图片描述

3.1 SiLU 激活函数

  • YOLOv5 的 Backbone 和 Neck 模块和 YOLOv4 中大致一样,都采用 CSPDarkNet 和 FPN+PAN 的结构,但是网络中其他部分进行了调整,其中 YOLOv5 使用的激活函数是 SiLU
  • SiLU(x) = x·Sigmoid(x),具备无上界有下届、平滑、非单调的特性

3.2 bottleneck layery

  • Bottleneck 是用于减少参数和计算量的结构,其设计灵感来自于ResNet,结构如下:

    • 1x1卷积:用于减少特征图的通道数
    • 3x3卷积:用于提取特征,后接一个 Batch Normalization 层和 ReLU 激活函数
    • 1x1卷积:用于恢复特征图的通道数,后接一个BN层
    • 跳跃连接(Shortcut):将输入直接加到输出上,以形成残差连接

在这里插入图片描述

3.3 C3代替CSP

​ YOLOv5中的C3模块在CSP上进行了优化,非常相似但略有不同:

不同点:

  1. 具体实现:YOLOv4中的CSP模块通常使用残差块,而YOLOv5中的C3模块通常使用Bottleneck或BottleneckCSP块。
  2. 性能优化:YOLOv5中的C3模块在具体实现上进行了进一步优化,以提高计算效率和模型性能。

3.4 SPPF

  • 将卷积核大小变成相同,然后将并行变成了串行+并行,2个K5池化=1 个K9池化,3个K5池化=1个K13池化,也就是结果相同的基础上,速度更 快,计算量更小

4. 输出头说明

灵活度较高,支持多种尺寸:

  1. 输入图像尺寸:通常为640 x 640(或者其它尺寸,如416 x 416等)
  2. 输出特征图:YOLOv5 使用大、中、小三个尺寸。
  3. 输出尺寸:
    • 大目标: 通常是输入图像尺寸的 1/32
    • 中目标: 通常是输入图像尺寸的 1/16
    • 小目标: 通常是输入图像尺寸的 1/8

假设输入图像尺寸为640×640,具体的特征图尺寸如下:
∙ 大目标: 640 32 × 640 32 = 20 × 20 ∙ 中目标: 640 16 × 640 16 = 40 × 40 ∙ 小目标: 640 8 × 640 8 = 80 × 80 \bullet\quad\text{大目标:}\frac{640}{32}\times\frac{640}{32}=20\times20\\\bullet\quad\text{中目标:}\frac{640}{16}\times\frac{640}{16}=40\times40\\\bullet\quad\text{小目标:}\frac{640}8\times\frac{640}8=80\times80 大目标:32640×32640=20×20中目标:16640×16640=40×40小目标:8640×8640=80×80
如果输入的图像是416尺寸的,那就和YOLOV3、YOLOV4的头机制一致了。

5. 开源项目

YOLOV5并没有学术论文,是一个开源项目,是 Ultralytics 公司于 2020 年6月9 日发布的。

项目可以在Github搜到:https://github.com/ultralytics/yolov5

预训练模型:

Modelsize (pixels)mAPval 50-95mAPval 50Speed CPU b1 (ms)Speed V100 b1 (ms)Speed V100 b32 (ms)params (M)FLOPs @640 (B)
YOLOv5n64028.045.7456.30.61.94.5
YOLOv5s64037.456.8986.40.97.216.5
YOLOv5m64045.464.12248.21.721.249.0
YOLOv5l64049.067.343010.12.746.5109.1
YOLOv5x64050.768.976612.14.886.7205.7
YOLOv5n6128036.054.41538.12.13.24.6
YOLOv5s6128044.863.73858.23.612.616.8
YOLOv5m6128051.369.388711.16.835.750.0
YOLOv5l6128053.771.3178415.810.576.8111.4
YOLOv5x6 + TTA1280 153655.0 55.872.7 72.73136 -26.2 -19.4 -140.7 -209.8 -

​ 这些模型的结构是一样的,区别在于网络的深度和宽度,网络的深度指的就是C3模块中Bottleneck的数量,网络的宽度是指网络每层输出的通道数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值