【AI】YOLO学习笔记二

发布时间:2023年12月21日

上一篇写了YOLO V1和YOLO V2的主要思想,接下来继续YOLO系列。

1.YOLO V3

YOLO V3特点:

1.1 网络结构的变化

YOLO V3 最大的改进就是网络结构的改进,使其更加适合小目标检测

  • 去掉池化和全连接层,全部采用卷积的形式
  • 下采样通过stride为2的卷积来实现
  • 总共有三层的输出层,分别是13/26/52特征图的输出,兼顾大小目标的检测
  • 浅层次的结果与深层次的结果融合,融合后作为输出结构

1.2先验框更加丰富

YOLO V2的先验框只有3种,适合检测长的、宽的、正方形的物体,YOLO V3在新增了3种尺度的输出结果上都添加了3先验框,共计9种先验框

1.3softmax改进,预测多标签任务

1.4残差连接

简单理解就是对比之前的结果和后续的结果,如果后续权重有提高就使用后续处理,没有提升就用之前结果。借用了resnet思想

2.YOLO V4

YOLO V4可以使用单GPU训练,通过两大核心方法从数据层面和网络设计层面来进行改进,此外还进行了消融实验。

2.1 Bag of freebies(BOF)

我们可以将BoF视为一个数据增强的pipeline,数据增强的目的是增加训练图像的多样性,以使模型对从不同环境获得的图像具有更强的鲁棒性。通常,光度失真和几何失真是两种最常用的数据增强方法。对于光度失真,可以调整图像的亮度,色度,对比度,饱和度,以及加入噪点;对于几何失真,可以对图像进行随机缩放,裁剪,翻转,旋转等。此外,还有一种数据增强方法是模拟遮挡,即用一个物体覆盖另一个物体的一部分。

BoF仅作用于模型的训练阶段,只对模型的最终学习到的参数有影响,并不会修改网络结构,所以在推理时不会带来额外的计算开销。

2.1.1数据增强:调整亮度、对比度、色调、随机缩放、剪切、翻转、旋转

  1. Mosaic data augmentation
    包括mixup、cutout、cutmix
  2. Random Erase
    用随机值或训练集的平均像素值替换图像的区域
  3. Hide and Seek
    根据概率设置随机隐藏一些补丁
  4. Self-adversarial-training(SAT)
    通过引入噪音点来增加游戏难度

2.1.2网络正则化方法:Dropout、Dropblock等

  • Dropout
    局限性:可以通过周围像素点推测出点的信息,困难度不

  • DropBlock
    之前的dropout是随机选择点(b),现在吃掉一个区域,增加困难度,提高泛化能力,减少过拟合

  • Label Smoothing
    例如:原来标签为(0,1),修改后变成(0.05,0.95)
    使用之后效果分析:簇内更紧密,簇间更分离

2.1.3类别不平衡,损失函数设计

  • IOU损失
    最简单的损失函数公式:1-IOU
    局限性
    相同的iou无法区别不同的情况
    没有相交则IOU=0无法梯度计算,相同的IOU却反映不出实际情况到底咋样
  • GIOU损失
    引入了最小封闭形状C(C可以把A,B包含在内)
    在不重叠情况下能让预测框尽可能朝着真实框前进
    局限性
    重叠的时候损失结果不能区分各种情况
  • DIOU损失
    其中分子计算预测框与真实框的中心点欧式距离d
    分母是能覆盖预测框与真实框的最小BOX的对角线长度c
    直接优化距离,速度更快,并解决GIOU问题
  • CIOU损失(V4应用)
    损失函数必须考虑三个几何因素:重叠面积,中心点距离,长宽比
  • DIOU-NMS
  • SOFT-NMS

2.2Bag of specials(BOS)

Bag of specials,顾名思义,就是“一堆特价包”的意思,在作者看来,就是一些通过增加推理成本,改变网络结构,来提高目标检测精度的方法。

  • SPPNet(Spatial Pyramid Pooling)
    SPP其实就是用最大池化来满足最终输入特征一致即可
    SPPNet称为空间金字塔池化网络,其思路其实很简单,就是为了让网络能够适应不同尺度的图像输入,避免对图片进行裁剪或者缩放,导致位置信息丢失。
    由于卷积层在面对不同尺度的输入图像时,会生成大小不一样的特征图,会对网络的训练带来较大的麻烦,因而SPPNet就通过将卷积层最后一层的池化层替换为金字塔池化层,固定输入的特征向量的大小。
  • CSPNet(Cross Stage Partial Network)
    每一个block按照特征图的channel维度拆分成两部分,一份正常走网络,另一份直接concat到这个block的输出
文章来源:https://blog.csdn.net/zhoulizhu/article/details/135128541
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。