深度学习trick

本次Tricks主要面向于深度学习中计算机视觉方向的研究,分为数据增广方法、训练技巧,参数调节这三个方面进行深入的分析。内容有一部分是基于openmmlab的mmdet和mmseg两个框架上的成熟应用案例进行详细阐述。

首先是数据增广的tricks:

  • 0、Flip、RandomFlip(随机翻转)

翻转,是最实在的,最基础的数据增广方法,简单,但是最有效。

  • 1、cutout(裁剪)

随机删除图像中的一个矩形区域,可以得到较好的训练结果,其实类似于dropout的操作

  • 2、mixup (混合提升)

mixup的作用是使得对数据的理解更具有线性化,破除由于数据分布不均匀,带来的误差。

  • 3、mosaic(随机马赛克增强)

极大丰富了检测物体的背景,一张顶几张!

还有类似于cutmix,还有很多tricks,还有代码这些就不细致的展开了,大家可以参考一下,以上方法有的是可以组合使用

深度学习trick_第1张图片
深度学习trick_第2张图片
这里是mmdet武器库中的一些数据增强方法:

深度学习trick_第3张图片
深度学习trick_第4张图片
这里是mmseg武器库的一些数据增强方法
https://github.com/open-mmlab/mmsegmentation/blob/master/docs/en/tutorials/training_tricks.md

然后是使用在模型训练的技巧!

  • 4、Backbone 和 Heads 的不同学习率 (LR)

因为Backbone和Heads在结构上的差异,使用不同的学习率是可以有效的使得网络整理达到更好,更稳定的收敛效果。

  • 5、多loss加权混合

一般会用在分割比较多,常见的有focal loss+Dice loss这类的,主要解决的问题也是类内不平衡叠加上样本数量不平衡等一系列问题。但是要注意的是,loss函数的组合的权重是需要自己去摸索的,目前我还不能找到一种普遍适用的自动化寻参方法,所以我建议大家仔细分析,保证组合后的损失函数下降不平衡导致的损失函数的倾斜化。

  • 6、带权重CEloss,类平衡损失(多类别问题)

对于不同数量的类别,我们会选择对损失函数加权的方法进行处理,让样本数量少的类别也能得到足够的重视。

训练过程中的优化器调节方法

  • 7、余弦退火算法

经典,有实验结果表明,效果挺好的。

  • 8、SWA

SWA是一种通过随机梯度下降改善深度学习模型泛化能力的方法,而且这种方法不会为训练增加额外的消耗,这种方法可以嵌入到Pytorch中的任何优化器类中。主要还是用于稳定模型的训练。

  • 9、seed(42)

随机种子数42,为啥是42,如同为啥一个星期有7天,而我要上7天班一样,没啥道理,但是就是要这样干。

测试常用技能

  • 10、推理过程中的TTA增强

TTA主要在测试时,对于测试数据集进行不同方向的预测后将预测的模型进行组合,在不改变模型内部参数的情况下,对效果进行提升,有点费推理时间,但是好用。

总结

我记得在kaggle上有种方法是叫call back,也就是自己给自己的测试集打个label放进训练,非常不讲武德。我还记得有一次有人用这种方法在一个分类比赛中,别人ACC:94,他们直接干上了98,非常离谱。其实还有个比较常用的一个技巧是多模融合,通常会跑几个模型,然后加在一起融合,在不计算和要求推理时间的条件下。他要模型多大,就做大概多少个模型,你就会发现,你们在单模,我多模,完全就是三个臭皮匠顶一个诸葛亮。大家对于tricks其实可以用,但是论文里面,如果是用tricks,work的话,是不能发的,所以大家多回到模型研究,tricks只是点缀的一些技巧罢了。

你可能感兴趣的:(深度学习,深度学习,人工智能)