图像分类训练tricks

  • 1. 优化器
  • 2. 学习率及学习率下降策略
    • 2. 1 选择合适的学习率
  • 3. weight_decay
  • 4. label_smoothing
  • 5. 通过验证集和测试集的准确度确定调优策略
  • 6. 数据增强
    • 6.1 图像变换类
    • 6.2 图像裁剪类
    • 6.3 图像混叠类
  • 7. 参考资料

  本文简单整理了一些图像分类训练tricks,后续可能会陆续加以补充。

1. 优化器

  带momentum(=0.9)的SGD优化器的使用最多,收敛精度常常更好,但收敛速度慢,初始学习率设置要靠经验设置(参考值0.1)。

  自适应优化器Adam、RMSProp、Adamw等收敛精度稍差,但收敛速度更快更稳定,Adam学习率参考值1e-4.

  AdaBound在某些任务上数据集上,收敛速度可媲美Adam,收敛精度可媲美SGD,调节参数更少。

2. 学习率及学习率下降策略

  SGD一般配合分段衰减策略piecewise_decay,例如初始学习率设为0.1,每30个epoch下降为原来的1/10

  Adam等优化器可搭配余弦衰减策略cosine_decay,因学习率小的epoch较少,故最终模型精度欠佳,所以建议增加训练epoch

  Batchsize增大时,线性增大学习率,可使收敛精度几乎不受影响

warmup 训练初期不宜使用较大的学习率,可采用warmup策略,在batch_size较大时,效果明显。结合cosine_decay,可采用带有warmup的cosine_decay策略。

2. 1 选择合适的学习率

  利用一个epoch来获取学习率。首先设置一个非常小的学习率,对每个batch数据训练后,对初始学习率乘上一个常数,记录每个batch后的loss。根据一个epoch内的loss画图,选择即将使得loss最低的batch对应的学习率作为整个训练的初始学习率。

3. weight_decay

  weight_decay等价于在最终的损失函数后添加L2正则化,可使网络参数倾向于选择更小的值,趋于0,模型的泛化性能更好。
  weight_decay越大,正则化越强,模型越容易趋于过拟合,所以小模型使用较小的weight_decay系数,大模型使用较大的weight_decay系数。如MobileNet系列网络较小,weight_decay可取1e-5~4e-5,训练ImageNet的网络常常较大,weight_decay常取1e-4。

4. label_smoothing

  将one-hot标签软化,使得网络训练的标签不再是hard label,而是有概率值的soft label。

5. 通过验证集和测试集的准确度确定调优策略

  训练时,打印每一个epoch的训练集、验证集的准确率。训练集的准确率比验证集的准确率微高,或相当,则是合适的表现;
  若训练集的准确率比验证集高很多,则说明已经过拟合,需要加入更多的正则化,如增大weight_decay的值,或加入更多的数据增强策略,或加入label_smoothing;
  若训练集的准确率低于验证集,则模型欠拟合,需减弱正则效果,如减少weight_decay的值,或减少数据增强方式,或去掉label_smoothing

6. 数据增强

6.1 图像变换类

AutoAugment 在一系列数据增强的搜索空间内,通过搜索算法找到合适的特定数据集的图像数据增强方案。针对ImageNet数据集,最终搜索出来的数据增强方案含25个子策略组合,每个子策略组合包含2种变换,针对每张图随机挑选一个子策略组合,以一定的概率来决定是否执行子策略中的变换。
RandAugment 所搜方法更暴力,所有的策略都以相同的概率被选到。相比AutoAugmentRandAugment搜索策略迁移性更好

6.2 图像裁剪类

cutout 直接对图像进行遮挡

randomerasing 随机擦除图像中一部分,擦除的mask长宽随机生成

hideandseek 图像分成若干区域,每个区域以一定概率生成掩码

gridmask 通过生成一个与原图分辨率相同的mask,并将mask进行随机翻转,与原图相乘,通过超参数控制生成的mask网格的大小

6.3 图像混叠类

mixup 通常在一个batch中,随机选择两张图进行相加作为参与训练的图像,两张一样的图相加也可能

cutmix 将一张图像的一块区域ROI,利用其它图像对应的ROI覆盖

7. 参考资料

1.图像分类任务中的训练奇技淫巧
2.图像分类中常用的tricks
3.Practical Advice for Building Deep Neural Networks
4.paddle图像增广
5.选择合适的初始化学习率

图像分类训练tricks相关推荐

  1. 训练过程acc_AI 深度学习训练tricks总结(均有实验支撑)

    ↑↑↑↑↑点击上方蓝色字关注我们! 『运筹OR帷幄』转载 作者:Jones@知乎 作者丨Jones@知乎来源丨https://zhuanlan.zhihu.com/p/261999668编辑丨极市平台 ...

  2. 训练深度学习_深度学习训练tricks整理1

    深度学习训练tricks整理1 环境:pytorch1.4.0 + Ubuntu16.04 参考: 数据增强策略(一)​mp.weixin.qq.com https://zhuanlan.zhihu. ...

  3. PaddleX快速实现图像分类训练

    飞桨 -PaddleX 是一套更加简明易懂的API,并配套一键下载安装的图形化开发客户端.用PaddleX实现图像分类训练非常快速,代码量也小. 第一步:安装paddlex, 参考<在windo ...

  4. 机器学习笔记 - 使用自己收集的图片以及卷积神经网络,进行图像分类训练

    一.数据收集 下载地址见上一篇机器学习笔记 - 使用自己收集的图片以及前馈神经网络,进行图像分类训练_bashendixie5的博客-CSDN博客https://blog.csdn.net/bashe ...

  5. 亚马逊:用CNN进行图像分类的Tricks

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源: arXiv 编辑:刘晓坤.思源 自 2012 年 Alex ...

  6. 这份Kaggle Grandmaster的图像分类训练技巧,你知道多少?

    AI编辑:我是小将 看paper固然重要,但是实战技巧更是难得,今天小编送大家一份图像分类秘籍,这份图像分类经验是Arthur Kuzin所分享,他是Kaggle Grandmaster (top 1 ...

  7. VGG16、VGG19网络架构及模型训练 tricks :训练技巧、测试技巧

    在上一篇文章的基础之上,总结一下论文中提出的训练技巧和测试技巧.上一篇文章参考:VGG论文笔记--VGGNet网络架构演变[VGG16,VGG19] 一.训练技巧 技巧1:Scale jitterin ...

  8. 挑战杯大赛优秀作品示例_图像分类比赛tricks:华为云人工智能大赛·垃圾分类挑战杯...

    所有代码以上传至github: garbage_classify​github.com 已修改成本地可以运行. 修改方法: 1.save_model.py|train.py|eval.py|run.p ...

  9. 【深度学习】基于tensorflow的服装图像分类训练(数据集:Fashion-MNIST)

    ​ 活动地址:CSDN21天学习挑战赛 目录 前言 了解Fashion-MNIST数据集 下载数据集 使用tensorflow下载(推荐) 数据集分类 数据集格式 采用CPU训练还是GPU训练 区别 ...

最新文章

  1. 图像空间变换--imtransform
  2. 同时满足两个条件怎么写_2020年宅基地确权需满足哪些条件?可以写几个人的名字?...
  3. .Net 如何模拟会话级别的信号量,对http接口调用频率进行限制(有demo)
  4. 误删了计算机桌面回收站,我电脑回收站里的东西已经被删除几天了?怎么可以找回!谢谢...
  5. Centos8安装X11-forwarding图形服务
  6. 百度知识图谱技术及应用
  7. 递归二叉树的序列打印
  8. 计算机学打字教案小学,6 用金山打字通练指法
  9. 延时消息推送的正确姿势你get到了吗?
  10. 问题 A: Beer Barrels
  11. 人生是一场旅程,重要的不是终点,是自己路上的风景
  12. SV 接口(interface)
  13. 中药配方颗粒调剂设备解决方案!基于一体化步进电机,全闭环,集成原点回归算法,丰富的报警功能
  14. 【esp8266】③esp8266对接天猫精灵实现语音控制
  15. 图像滤镜艺术---水彩画滤镜
  16. html 保存 mysql file_前端HTML5几种存储方式的总结
  17. A Univariate Bound of Area Under ROC 论文小结
  18. 智力题------扔硬币吃苹果
  19. htc hd2刷android,真正的刷机之王! HTC HD2成功刷入安卓7.0
  20. 几本OpenCV的参考书籍

热门文章

  1. virtual box 报错:VT-x is disabled in the BIOS for all CPU modes (VERR_VMX_MSR_ALL_VMX_DISABLE
  2. Wireshark教程:解密HTTPS流量
  3. React Hook的用法: Contex + Reducer(二)
  4. Java - Lambda的使用
  5. python里permission denied错误是什么_Python 3.6 解决 PermissionError: [Errno 13] Permission denied...
  6. 重庆将打造物联网产业集群
  7. maven 如何移除无用的依赖
  8. 2020极客大挑战web部分复现
  9. IntelliJ IDEA插件php golang python shell docker ignore UML plantuml等插件安装
  10. 数智融合,油化创新-英诺森出席中国石油石化企业信息技术交流大会