目标检测通用trick
1. 数据增强
离线增强 : 直接对数据集进行处理,数据的数目会变成增强因子 x 原数据集的数目 ,这种方法常常用于数据集很小的时候
在线增强 : 这种增强的方法用于,获得 batch 数据之后,然后对这个 batch 的数据进行增强,如旋转、平移、翻折等相应的变化,由于有些数据集不能接受线性级别的增长,这种方法长用于大的数据集,很多机器学习框架已经支持了这种数据增强方式,并且可以使用 GPU 优化计算。
1.1 在线增强常用
-
空间几何变换:翻转(水平和垂直)、随机裁剪、旋转、放射变换、视觉变换(四点透视变换)、分段放射
-
像素颜色变换类:CoarseDropout、SimplexNoiseAlpha、FrequencyNoiseAlpha 、 ElasticTransformation
-
HSV对比度变换
-
RGB颜色扰动
-
随机擦除
-
超像素法
-
转化法
-
边界检测
-
Grayscale
-
锐化与浮雕:如视频中常用
2. 训练策略
2.1 warmup:
训练初期由于离目标较远,一般需要选择大的学习率,但是使用过大的学习率容易导致不稳定性。所以可以做一个学习率热身阶段,在开始的时候先使用一个较小的学习率,然后当训练过程稳定的时候再把学习率调回去。e.d., YOLO v5, effcientDet,
…
\dots
…
2.2学习率衰减策略:
- 1.指数衰减
- 2.固定步长衰减
- 3.多步长衰减
- 4.余弦退火衰减
2.3 Label smoothing:
one-hot 带来的问题:(容易过度自信,导致过拟合)
对于损失函数,我们需要用预测概率去拟合真实概率,而拟合one-hot 的真实概率函数会带来两个问题:
1)无法保证模型的泛化能力,容易造成过拟合;
- 全概率和0概率鼓励所属类别和其他类别之间的差距尽可能加大,而 由梯度有界可知,这种情况很难adapt。会造成模型过于相信预测的类 别。
Label smoothing 增加了模型的泛化能力,一定程度上防止过拟合。
做法:标签中不再只有
0
,
1
0,1
0,1,可以是0.6,0.99,之类
2.4 K-Fold交叉验证
模型选择,模型选择超参
测试方式
-
1.将所有训练的KFold进行融合
-
2.最优模型重新训练全部数据后预测
3. 推断策略
3.1NMS(非极大值抑制)
同一个物体可能有好几个框,我们的目标是一个物体只须保留一个最优的框:于是我们就要用到非极大值抑制,来抑制那些冗余的框: 抑制的过程是一个迭代-遍历-消除的过程。
3.2 soft NMS
不要粗鲁地删除所有IOU大于阈值的框,而是降低其置信度
3.3 DIoUNMS
在nms过程中采用DIoU的计算方式替换了IoU,由于DIoU的计算考虑到了两框中心点位置的信息,故使用DIoU进行评判的nms效果更符合实际,效果更优。
3.3 DIoUNMS
在nms过程中采用DIoU的计算方式替换了IoU,由于DIoU的计算考虑到了两框中心点位置的信息,故使用DIoU进行评判的nms效果更符合实际,效果更优。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:目标检测通用trick - Python技术站