43 树叶分类竞赛技术总结【动手学深度学习v2】

图片分类竞赛(树叶分类)
数据集
- 176 类,18353 训练样本

已公开的代码合集
- https://www.kaggle.com/c/classify-leaves/code
技术分析
1、数据增强:
- 在测试的时候多次使用较弱的增强然后取平均(在测试的时候是在中心点 crop 出一张图片做预测,很多时候也有在四个角上 crop 一次,然后将五次所得的结果取平均)
2、使用多个模型预测,最后结果加权平均
- 有使用多个模型加权取平均的,也有使用单一模型多次训练然后取平均的
- 模型多为 ResNet 变种(对模型进行了更多的细节上的调整):DenseNet,ResNeXt,ResNeSt,EfficientNet
3、训练算法和学习率
- 训练算法一般使用的是 SGD 或者 Adam(多为 Adam 或者其变种,SGD 通过仔细调参(如 momentum 等)通常能够获得比 Adam 更好的结果,但是 Adam 对学习率不太敏感,换句话说,Adam 在不需要过多调参的情况下也能够获得不错的加过,Adam 的结果更加平滑(可以理解为:如果两种算法的解集看成是同一坐标系中的两条二次函数曲线的话,SGD 所得的解集波峰比 Adam 更高,但是 SGD 对调参的要求也更高,Adam 的曲线更加平滑,虽然波峰比不上 SGD 但是相对来讲整体更加稳定,受参数的影响较小),所以在不那么关注优化算法而是对模型和数据进行改进的情况下,可以使用 Adam 来弱化调参队最终结果的影响)
- 学习率基本上是固定不变的,也有可能经过一段时间之后下降一次:一般是基于 Cosine (好处是不用调参)或者是训练不动的时候往下调(每隔一定的 epoch 之后学习率下降一次)
4、清理数据
- 真实数据中可能存在大量的噪音:可能是真实的数据本身存在噪音;也有可能是后期人为处理的时候可能会存在疏忽
- 有重复的图片可以手动去除
- 数据集中图片背景较多:真实的物体占整个图片的区域比较小,可以进行裁剪,去除多余的背景
- 树叶没有方向性:可以进行随机旋转
- 跨图片增强:Mixup(随机取两张图片,然后取一个随机权重,再将两张图片进行叠加(标号也进行叠加)得到一个新的训练图片参加训练);CutMix(在不同的图片中随机采样一些块,然后取一个随机的权重将这些块进行随机的组合,最终所得的图片的标号也取决于随机组合的权重,这样做的好处是能够尽可能地关注数据中的局部信息)
AutoGluon
https://www.kaggle.com/code/zhreshold/autogluon-vision-0-96-with-15-lines/notebook
- 15 行代码,安装架训练总共耗时 100 分钟
总结
1、提升精度思路
- 根据数据挑选增强
- 使用新模型
- 使用新优化算法:使用新的优化算法能够弱化调参对结果的影响,将注意力主要集中在使用新模型和数据增强上
- 多个模型融合
- 测试时使用增强
2、数据相对简单,排名有相对随机性
3、在工业界应用中
- 使用模型融合和测试时增强比较少,计算代价过高
- 通常固定模型超参数,而将精力主要花在提升数据质量(当一个模型投入使用之后,随着用户的增加,数据量也会越来越多,用户的实际行为也会随之改变,需要对新的数据进行标注和对旧数据的清理,这样的话数据的质量会越来越高)
- 在工业应用中更关心数据,在模型固定的情况下,对数据进行调整和更新,提高数据的质量;在竞赛中更关心模型,在数据固定的情况下,对模型进行改进从而提升精度
----end----
其他参考
1、《动手学深度学习》,课程安排,https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_9.pdf