提升卷积神经网络的技巧

本文主要是介绍一些卷积神经网络提升性能的技巧,内容可能不全,但是会实时的补充。首先介绍比较广泛的实用技巧,以用于建立和训练自己的深层网络。主要包括在一下几个方面:1)数据增强;2)图像预处理;3)网络的初始化;4)训练期间的小技巧;5)激活函数的选择;6)正则化策略;7)从图中判断模型性能;

会对内容进行实时的更新,有问题也会进行修正。

2017.3.28

1、数据增强

如果原始图像数据集包含的训练图像有限,而对于深度网络一般需要大量的训练图像数据才能取得一个较好的性能,所以我们最好通过数据增强以提高性能。此外,数据增强成为训练深度网络时必须做的事情。

有许多方法可以进行数据增强,例如比较流行的水平翻转,随机修剪和光照、彩色变换。此外,也可以尝试多种不同处理的组合,例如,同时进行旋转和随机缩放。此外,您可以尝试将所有像素的饱和度和值(HSV彩色空间的S和V分量)提高到0.25和4倍之间的倍数(对于一个色块内的所有像素都相同),将这些值乘以系数0.7和1.4,并且向它们添加一个在[-0.1,0.1]范围内的值。此外,也可以添加一个[-0.1,0.1]的值在图像/块中所有像素的色调上(HSV的H分量)。

Krizhevsky等人在2012年训练AlexNet时,提出了 PCA 方式,利用PCA改变训练图像中RGB通道的强度。在实际中,我们可以在整个训练图像中的RGB像素值集合上执行PVA ,然后对于每个训练图像,只需要将以下向量加到每个RGB图像像素中 。其中, 和 是RGB像素值的3*3协方差矩阵的第i个特征向量和特征值, 是均值为0的标准差为0.1的高斯分布随机变量。

2、预处理

在自己获取的图像样本上,在网络的训练之前还需要做预处理操作。第一个简单的预处理操作数据以0点为中心,然后做规范化操作,在Python中的操作为下面两行代码:

>>> X -= np.mean(X, axis = 0)# zero-center

>>> X /= np.std(X, axis = 0)# normalize

X为输出数据,这种预处理的另一种形式是使每个维度归一化,使得维度上的最小和最大值分别为-1和1。在不同的输入特征具有不同的尺度(或单位)时,应用此预处理是有意义的。在输入是图像的情况下,像素的相对尺度已经近似相等(并且在0到255的范围内),所以执行这个预处理步骤并不是绝对必要的。

另外一种预处理是PCA白化,数据如第一种方式一样居中处理,然后计算数据结构中相关的协方差矩阵:

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值