【调参经验】图像分类模型的调参经验前言调参经验与我交流

2018-12-04 14:48:07 浏览数 (1)

前言

用深度学习做图像分类任务也有近一年时间了,从最初模型的准确率只有60%到后来调到有80%,再到最后的90% 的准确率,摸索中踩了很多坑,也总结出了一些经验。现在将一些自己觉得非常实用的模型训练经验写下来作为记录,也方便后来者借鉴验证。

调参经验

  • 模型选择 通常我会使用一个简单的CNN模型(这个模型一般包含5个卷积层)将数据扔进去训练跑出一个baseline,这一步工作主要是为了验证数据集的质量。如果这个模型训练结果很差就不要先调试模型,需要检查一下你的训练集数据,看看图像的质量,图像标签是否正确,模型的代码是否正确等等,否则就是在做无用功,毕竟:garbage in,garbage out
  • 超参数的选择 调参是项技术活,调得好CVPR,调不好下海搬砖。 通常要选的超参数有卷积核大小和数目,批训练(batch size)大小,优化函数(optimizer),学习率等等,一般来说卷积核用33或者55的,batch szie 用16或者32不会过拟合,optimizer用Adam(学习率建议用论文中默认的,我试过调整Adam的学习率,效果或都没有默认的好),激活函数用relu这个应该是大家的共识吧。还有就是先跑几百个epoch看loss的变化趋势。
  • 数据预处理 训练数据对模型的影响是决定性的,提高训练数据的质量,就是在提高模型的准确率。 图像预处理的时候一般我会抽出部分图像观察,对图像中的噪声进行滤波,图像标签要验证一下,其他的预处理就结合实际情况来看了。一般来说,数据清洗的工作占比是多于写模型的工作。
  • 数据增强 数据增强已经是训练深度网络的常规操作了,这味丹药有利于增加训练数据量,减少网络过拟合程度,男女老少,居家旅行必备良药。 常用的数据增强方法包括:图像缩放图像翻转图像裁剪图像色彩的饱和度、亮度和对比度变换。 海康威视在ImageNet上曾经用过PCA Jittering方的法,但是由于这个方法的计算量过大,我没有在自己的训练中使用过。他们还使用了有监督的数据增强的方法,有兴趣的同学可以研究一下。

有监督的数据增强方法.png

  • 数据不平衡的处理 如果训练数据中各类样本数目差距较大,很有可能会导致部分类别的准确率很低,从根本上解决样本不平衡的问题就是要把样本变平衡。 一种是增加样本少的类别的图像数目,用上述的数据增强方法。 另一种就是直接将样本多的类别图像数目减少,可以说是非常简单粗暴了。 当然,也有人提出类别权重的方法,增加少样本在训练时的权重,间接地增强了图像数目。
  • 自己的数据生成器 一开始用框架接口,慢慢地写自己的接口。特别是当任务变得复杂,数据规模变大时,框架提供的接口不能满足你的需求,这时你需要有自己的data generation function。例如,我使用keras时............... 黏贴自己的部分源码
  • 其他提示 具体任务不同可能某些经验不能适用,...........

0 人点赞