深 度 检 测 模 型 比 赛 训 练 技 巧 ( T r i c k s ) 深度检测模型比赛训练技巧(Tricks) 深度检测模型比赛训练技巧(Tricks)

一 数据增强

离线增强::直接对数据集进行处理,数据的数目会变成增强因子×原数据集的数目,这种方法常常用于数据集很小的时候

在线增强: 这种增强的方法用于,获得batch数据之后,然后对这个batch 的数据进行增强,如旋转、平移、翻折等相应的变化,由于有些数据集不能接受线性级别的增长,这种方法长用于大的数据集,很多机器学习框架已经支持了这种数据增强方式,并且可以使用GPU优化计算。

在线增强常用:

  • 空间几何变换:翻转(水平和垂直)、随机裁剪、旋转、放射变换、视觉变换(四点透视变换)、分段放射
  • 像素颜色变换类:CoarseDropout、SimplexNoiseAlpha、FrequencyNoiseAlpha、ElasticTransformation
  • HSV对比度变换
  • RGB颜色扰动
  • 随机擦除
  • 超像素法
  • 边界检测
  • 锐化与浮雕

二 训练策略:

warmup :训练初期由于离目标较远,一般需要选择大的学习率,但是使用过大的学习率容易导致不稳定性。所以可以做一个学习率热身阶段,在开始的时候先使用一个较小的学习率,然后当训练过程稳定的时候再把学习率调回去

Label smoothing(标签平滑):(解决 one-hot的缺点)

one-hot带来的问题:
对于损失函数,我们需要用预测概率去拟合真实概率,而拟合one-hot的真实概率函数会带来两个问题:
1)无法保证模型的泛化能力,容易造成过拟合;
2)全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而由梯度有界可知,这种情况很难adapt。绘造成模型过于相信预测的类别

Label smoothing增加了模型的泛化能力,一定程度上防止过拟合。

多折交叉验证(一般是5折)

多折交叉验证的出现是为了解决 :一般情况下,会留一份验证集来计算指标,但是,多留一份验证集,就意味着少了一份训练集,如果能多一份验证集来训练,就很有可能提高指标,所以多折交叉验证出现了,较好解决了这个问题,让所有数据集都参加了训练,又拥有指标

预测方式:

1.将所有训练的KFold进行融合
2最优模型重新训练全部数据后预测

三 推断策略

  • NMS

1、NMS(非极大值抑制)
同一个物体可能有好几个框,我们的目标是一个物体只须保留一个最优的框:于是我们就要用到非极大值抑制,来抑制那些冗余的框:抑制的过程是一个迭代-遍历-消除的过程。
2、soft nms
不要粗鲁地删除所有IOU大于阈值的框,而是降低其置信度

离线训练技巧

1.数据增强:增强输入图像的可变性,使检测模型具有更高的鲁棒性

包括:
A、光照处理:调整图像的亮度、对比度、色相、饱和度、噪点
B、几何处理:随机缩放、裁剪、翻转、旋转

2.对象遮挡

  • random erase , CutOut

随机选择图像中的矩形区域并填充0的随机值或者互补值

  • hide-and-seek , grid mask

随机或者均匀选择图像中的多个矩形区域并填充0

  • 对特征谱的处理

Dropout ,DropConnect , DropBlock(训练的时候用的,预测的时候禁用)

3.用多图来进行增强

MixUp用两张图
CutMix用不同角度的裁剪区域

4.GAN用于数据扩充

5.数据分布不均衡

  1. OHEM:在线困难样本挖掘
  2. S-OHEM:基于loss分布采样的在线困难样本挖掘
  3. A-FAST-RCNN:基于对抗生成网络的方式来生成困难样本
  4. FOCAL LOSS:损失函数的权重调整
  5. GHM:损失函数梯度均衡化机制

6.类别关联度

7.目标框回归函数

推断过程中增加些许成本换来较大精度提升的技巧∶

1.增加感受野

特征金字塔SPP、RFB、ASPP

2. attention

通道注意力机制SE、空间注意力机制SAM

3.特征融合

skip connection、hyper-colomn FPN

4.激活函数

Mish激活函数:

Mish优点

  • 以上无边界(即正值可以达到任何高度)避免了由于封顶而导致的饱和。理论上对负值的轻微允许允许更好的梯度流,而不是像ReLU中那样的硬零边界。
  • 平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。

深度检测模型比赛训练技巧(Tricks)_数据

5.后处理方式:NMS

参考文献

CVPR 2020 ATSS