『目标检测』YOLO V5(1):学习笔记

一、基本知识点积累

1.1 自适应锚点框

  • 在 yolov3 中是采用 k 均值和遗传算法对自定义数据集进行分析,获得合适自定义数据集中对象边界框预测的预设锚点框。
  • 在 yolov5 中锚点框是基于训练数据自动学习的。(Auto Learning Bounding Box Anchors

1.2 激活函数

在 yolov5 中,中间 / 隐藏层使用了 Leaky ReLU 激活函数,最后的检测层使用了 Sigmoid 激活函数;

在这里插入图片描述

1.3 优化器

在 yolov5 中提供了两个优化函数 Adam 和 SGD,并预设了与之匹配的训练超参数,默认是 SGD。

1.4 损失函数

  • yolo 系列的损失计算是基于 objectness scoreclass probabilitybounding box regression score
  • yolov5 中使用 GIOU Loss 作为 bounding box 的损失;
  • yolov5 中使用二进制交叉熵和 Logits 损失函数计算类概率和目标得分的损失,同时我们也可以使用 fl_gamma 参数来激活 Focal loss 计算损失函数。

二、创新性

2.1 数据增强

2.1.1 缩放

2.1.2 色躁空间调整

2.1.3 图像遮挡

  • (1) Random Erase: 用随机值或训练集的平均像素值替换图像的区域。
  • (2) Cutout: 仅对 CNN 第一层的输入使用剪切方块 Mask。
  • (3) Hide and Seek: 将图像分割成一个由 SxS 图像补丁组成的网格,根据概率设置随机隐藏一些补丁,从而让模型学习整个对象的样子,而不是单独一块,比如不单独依赖动物的脸做识别。
  • (4) Grid Mask: 将图像的区域隐藏在网格中,作用也是为了让模型学习对象的整个组成部分。
  • (5) MixUp: 图像对及其标签的凸面叠加。

2.1.4 多图组合

  • Cutmix: 将另一个图像中的剪切部分粘贴到增强图像。图像的剪切迫使模型学会根据大量的特征进行预测。

2.1.5 Mosaic 数据增强

  • Cutmix 中我们组合了两张图像,而在 Mosaic 中我们使用四张训练图像按一定比例组合成一张图像,使模型学会在更小的范围内识别对象。其次还有助于显著减少对 batch-size 的需求,毕竟大多数人的 GPU 显存有限。

2.2 自对抗训练(SAT)

  • Self-Adversarial Training 是在一定程度上抵抗对抗攻击的数据增强技术。CNN 计算出 Loss, 然后通过反向传播改变图片信息,形成图片上没有目标的假象,然后对修改后的图像进行正常的目标检测。需要注意的是在 SAT 的反向传播的过程中,是不需要改变网络权值的。
  • 使用对抗生成可以改善学习的决策边界中的薄弱环节,提高模型的鲁棒性。因此这种数据增强方式被越来越多的对象检测框架运用。

在这里插入图片描述

2.3 类标签平滑

  • Class label smoothing 是一种正则化方法。如果神经网络过度拟合或过度自信,我们都可以尝试平滑标签。也就是说在训练时标签可能存在错误,而我们可能“过分”相信训练样本的标签,并且在某种程度上没有审视了其他预测的复杂性。因此为了避免过度相信,更合理的做法是对类标签表示进行编码,以便在一定程度上对不确定性进行评估。
  • yolo v4 中采用了,yolo v5 中似乎没有使用类标签平滑。

2.4 自适应锚定框

  • 在 YOLO V3 和 YOLO V4 中是采用 k 均值和遗传学习算法对自定义数据集进行分析,获得适合自定义数据集中对象边界框预测的预设锚定框。
  • 在 YOLO V5 中锚定框是基于训练数据自动学习的。

三、Backbone

Backbone: 在不同图像细粒度上聚合并形成图像特征的卷积神经网络。

yolov4 和 yolov5 都使用 CSPDarknet 作为 backbone,从输入图像中提取丰富的信息特征。

CSPNet

  1. 解决了其他大型卷积神经网络框架 Backbone 中网络优化的梯度信息重复问题;
  2. 具体做法:将梯度的变化从头到尾集成到特征图中,因此减少了模型的参数量和 FLOPS 数值,既保证了推理速度和准确性,又减少了模型尺寸。
  3. CSPNet 实际上是基于 Densenet 的思想,复制基础层的 feature map,通过 dense block 发送副本到下一阶段,从而将基础层的 feature map 分离出来,这样可以有效地缓解梯度消失问题,支持特征传播,鼓励网络重用特征,从而减少网络参数数量。
  4. CSPNet 思想可以和 ResNet, ResNext 和 DenseNet 结合,目前主要有 CSPResNext50 和 CSPDarknet53 两种改造 Backbone 网络。

四、Neck

PANET
Neck: 一系列混合和组合图像特征的网络层,并将图像特征传递到预测层。

Neck 主要用于生成特征金字塔。特征金字塔会增强模型对于不同缩放尺度对象的检测,从而能够识别不同大小和尺度的同一物体。 yolov4 和 yolov5 都使用 PANet 作为 Neck 来聚合特征。

PANet

  1. PANet 基于 Mask R-CNN 和 FPN 框架,同时加强了信息传播。
  2. 该网络的特征提取器采用了一种新的增强自下向上路径的 FPN 结构,改善了低层特征的传播。
  3. 第三条通路的每个阶段都将前一阶段的特征作为输入,并用 3*3 卷积层处理他们,输出通过横向连接被添加到自上而下通路的同一阶段 feature map 中,这些特征图为下一阶段提供信息。
  4. 使用自适应特征池化(Adaptive feature pooling)来恢复每个候选区域和所有特征层次之间被破坏的信息路径,聚合每个特征层次上的每个候选区域,避免被任意分配。

五、Head

Head: 对图像特征进行预测,生成边界框和并预测类别。

  • Head 主要用于最终检测部分,它在特征图上应用锚点框,并生成带有类概率、对象得分和包围框的最终输出向量。
  • yolov3 、yolov4 和 yolov5 都使用相同的 Head 模型结构。

Head

  1. 不同缩放尺度的 Head 被用来检测不同大小的物体,每个 Head 一共 (80个类 + 1个概率 + 4个坐标)* 3 锚点框,一共 255 个 channels。

参考链接

  1. https://zhuanlan.zhihu.com/p/161083602

猜你喜欢

转载自blog.csdn.net/libo1004/article/details/110928070