深度学习网络训练技巧

1. 数据增强

1.1 海康威视研究院ImageNet2016:

第一,对颜色的数据增强,包括色彩的饱和度、亮度和对比度等方面,主要从Facebook的代码里改过来的。
第二,PCA Jittering,最早是由Alex在他2012年赢得ImageNet竞赛的那篇NIPS中提出来的. 我们首先按照RGB三个颜色通道计算了均值和标准差,对网络的输入数据进行规范化,随后我们在整个训练集上计算了协方差矩阵,进行特征分解,得到特征向量和特征值,用来做PCA Jittering。
第三,在图像进行裁剪和缩放的时候,我们采用了随机的图像差值方式。
第四, Crop Sampling,就是怎么从原始图像中进行缩放裁剪获得网络的输入。比较常用的有2种方法:一是使用Scale Jittering,VGG和ResNet模型的训练都用了这种方法。二是尺度和长宽比增强变换,最早是Google提出来训练他们的Inception网络的。我们对其进行了改进,提出Supervised Data Augmentation方法。
这里写图片描述

Supervised Data Augmentation

尺度和长宽比增强变换有个缺点,随机去选Crop Center的时候,选到的区域有时候并不包括真实目标的区域。这意味着,有时候使用了错误的标签去训练模型。如图所示,左下角的图真值标签是风车农场,但实际上裁剪的区域是蓝天白云,其中并没有任何风车和农场的信息。我们在Bolei今年CVPR文章的启发下,提出了有监督的数据增强方法。我们首先按照通常方法训练一个模型,然后用这个模型去生成真值标签的Class Activation Map(或者说Heat Map), 这个Map指示了目标物体出现在不同位置的概率. 我们依据这个概率,在Map上随机选择一个位置,然后映射回原图,在原图那个位置附近去做Crop。
这里写图片描述
这里写图片描述

Label Shuffling的类别平衡策略

场景数据集有800万样本,365个类别,各个类别的样本数非常不平衡,有很多类别的样本数达到了4万,也有很多类别的样本数还不到5000。这么大量的样本和非常不均匀的类别分布,给模型训练带来了难题。在去年冠军团队的Class-Aware Sampling方法的启发下,我们提出了Label Shuffling的类别平衡策略。在Class-Aware Sampling方法中,他们定义了2种列表,一是类别列表,一是每个类别的图像列表,对于365类的分类问题来说,就需要事先定义366个列表,很不方便。我们对此进行了改进,只需要原始的图像列表就可以完成同样的均匀采样任务。以图中的例子来说,步骤如下:首先对原始的图像列表,按照标签顺序进行排序;然后计算每个类别的样本数量,并得到样本最多的那个类别的样本数。根据这个最多的样本数,对每类随机都产生一个随机排列的列表;然后用每个类别的列表中的数对各自类别的样本数求余,得到一个索引值,从该类的图像中提取图像,生成该类的图像随机列表;然后把所有类别的随机列表连在一起,做个Random Shuffling,得到最后的图像列表,用这个列表进行训练。每个列表,到达最后一张图像的时候,然后再重新做一遍这些步骤,得到一个新的列表,接着训练。Label Shuffling方法的优点在于,只需要原始图像列表,所有操作都是在内存中在线完成,非常易于实现。
这里写图片描述

2. 训练技巧

2.1 训练和测试要协调

在训练的时候,我们通常都需要做数据增强,在测试的时候,我们通常很少去做数据增强。这其中似乎有些不协调,因为你训练和测试之间有些不一致。通过我们的实验发现,如果你在训练的最后几个epoch,移除数据增强,然后跟传统一样测试,可以提升一点性能。同样,如果训练的时候一直使用尺度和长宽比增强数据增强,在测试的时候也同样做这个变化,随机取32个crop来测试,也可以在最后的模型上提升一点性能。还有一条,就是多尺度的训练,多尺度的测试。另外,值得指出的是,使用训练过程的中间结果,加入做测试,可以一定程度上降低过拟合。
这里写图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值