YOLO系列代码
Test-Time Augmentation
- TTA (Test Time Augmentation)是指在test过程中进行数据增强。
- 其思想非常简单,就是在评测阶段,给每个输入进行多种数据增广变换,将一个输入变成多个输入,然后再merge起来一起输出,形成一种ensemble的效果,可以用来提点。
- 参考:https://zhuanlan.zhihu.com/p/131539596
使用了 EMA 策略平滑模型
默认采用 AMP 自动混合精度训练
Pytorch自动混合精度(AMP)训练_pytorch amp-CSDN博客
-
1)在内存中用FP16做储存和乘法从而加速计算,而用FP32做累加避免舍入误差;2)weights, activations, gradients 等数据在训练中都利用FP16来存储,同时拷贝一份FP32的weights,用于更新。3)即使了混合精度训练,还是存在无法收敛的情况,原因是激活梯度的值太小,造成了下溢出(Underflow)。Loss Scale 损失扩大主要是为了解决 fp16 underflow 的问题。
损失放大的思路是:反向传播前,将损失变化手动增大2^k倍,因此反向传播时得到的中间变量(激活函数梯度)则不会溢出;反向传播后,将权重梯度缩小2^k倍,恢复正常值。
数据增强
随机水平翻转
色彩抖动(Color Jittering)是一种常见的数据增强方法,用于改变图像的色彩信息,增加数据的多样性和鲁棒性。色彩抖动可以通过在RGB通道上引入小幅度的随机扰动来实现,包括亮度、对比度、饱和度和调的变化。这样做的目的是模拟现实世界中颜色的变化,使模型对不同颜色条件下的图像更具有鲁棒性。
多尺度训练:实现多尺度训练通常涉及调整网络结构,使其能够处理不同尺度的输入。这可能包括引入多个并行的卷积层,每个层专门处理不同尺度的输入数据,或者调整池化层来适应不同尺度的特征。
随机尺寸裁剪:
MixUp: 采用配对的方式进行训练,通过混合两个甚至是多个样本的分布,同时加上对应的标签来训练。两张图以一定的比例对rgb值进行混合,同时需要模型预测出原本两张图中所有的目标。
马赛克数据增强:对四张图片进行拼接,每一张图片都有其对应的框框,将四张图片拼接之后就获得一张新的图片,同时也获得这张图片对应的框框。
cutMix:把一个物体抠出来, 粘贴到另一张图上去.
cutout:随机的将样本中的部分区域cut掉,并且填充0像素值,分类的结果不变
目标检测——YOLOX算法解读-CSDN博客