Open xingchenshanyao opened 1 year ago
前处理分数据增强、图像去噪等。
1.数据增强可以分为,有监督的数据增强和无监督的数据增强方法。 2.其中有监督的数据增强又可以分为单样本数据增强和多样本数据增强方法。 3.无监督的数据增强分为生成新的数据和学习增强策略两个方向。
1.1 有监督的数据增强 有监督数据增强,即采用预设的数据变换规则,在已有数据的基础上进行数据的扩增。 它包含单样本数据增强和多样本数据增强。 其中单样本又包括几何操作类,颜色变换类。 1.1.1 单样本数据增强 所谓单样本数据增强,即增强一个样本的时候,全部围绕着该样本本身进行操作,包括几何变换类,颜色变换类等。 (1)几何变换类 几何变换类即对图像进行几何变换,包括翻转,旋转,移位,裁剪,变形,缩放等各类操作,下面展示一些操作的效果。 -1. 翻转(Flip):水平翻转和垂直翻转 -2. 随机旋转: -3.移位: 移位只涉及沿X或Y方向(或两者)移动图像。在下面的示例中,我们假设图像在其边界之外具有黑色背景,并且被适当地移位。这种增强方法非常有用,因为大多数对象几乎可以位于图像的任何位置。这迫使你的卷积神经网络看到所有角落。 -4.裁剪:随机裁剪 -5.变形缩放
翻转操作和旋转操作,对于那些对方向不敏感的任务,比如图像分类,都是很常见的操作(在caffe等框架中翻转对应的就是mirror操作)。
翻转和旋转不改变图像的大小,而裁剪会改变图像的大小。通常在训练的时候会采用随机裁剪的方法,在测试的时候选择裁剪中间部分或者不裁剪。 值得注意的是,在一些竞赛中进行模型测试时,一般都是裁剪输入的多个版本然后将结果进行融合,对预测的改进效果非常明显。
以上操作都不会产生失真,而缩放变形则是失真的。
很多的时候,网络的训练输入大小是固定的,但是数据集中的图像却大小不一,此时就可以选择上面的裁剪成固定大小输入或者缩放到网络的输入大小的方案,后者就会产生失真,通常效果比前者差。
-6.关于插值(interpolation)的说明 问题: 一个关键性的问题是当旋转之后图像的维数可能并不能保持跟原来一样。 如果你的图片是正方形的,那么以直角旋转将会保持图像大小。如果它是长方形,那么180度的旋转将会保持原来的大小。 但是以更精细的角度旋转图像也会改变最终的图像尺寸。 也就是说,在我们使用随机旋转、移位等方法的时候,会涉及图片边界之外的东西。如果我们使用一种技术迫使我们猜出图像边界之外的东西,会发生什么?在这种情况下,我们需要插入一些信息。 在我们执行转换(可能涉及图片边界之外的信息)后,我们需要保留原始图像大小。由于我们的图像没有关于其边界之外的任何信息,我们需要做出一些假设。通常,假设图像边界之外的空间在每个点都是常数0。因此,当您进行这些转换时,会得到一个未定义图像的黑色区域(从左至右,图像顺时针旋转45度,向右移位,向内缩放): 但是这是个正确的假设吗?在现实世界的情况下,它主要是否定的。图像处理和ML框架有一些标准方法,您可以使用它们来决定如何填充未知空间。它们的定义如下(从左至右,常数,边缘,反射,对称和包裹模式):
1.常数(Constant) 最简单的插值方法是用一些常数值填充未知区域。这可能不适用于自然图像,但可以用于在单色背景下拍摄的图像。
2.边界(Edge) 在边界之后扩展图像的边缘值。此方法适用于温和移位。
3.反射(Reflect) 图像像素值沿图像边界反射。此方法适用于包含树木,山脉等的连续或自然背景。
4.对称(Symmetric) 该方法类似于反射,除了在反射边界处制作边缘像素的副本的事实。通常,反射和对称可以互换使用,但在处理非常小的图像或图案时会出现差异。
5.包裹(Wrap) 图像只是重复超出其边界,就好像它正在平铺一样。这种方法并不像其他方法那样普遍使用,因为它对很多场景都没有意义。
(2)颜色变换类 上面的几何变换类操作,没有改变图像本身的内容,它可能是选择了图像的一部分或者对像素进行了重分布。 如果要改变图像本身的内容,就属于颜色变换类的数据增强了,常见的包括噪声、模糊、颜色变换、擦除、填充等等。 -1.基于噪声的数据增强 它就是在原来的图片的基础上,随机叠加一些噪声,最常见的做法就是高斯噪声。 合理性:当您的神经网络试图学习可能无用的高频特征(大量出现的模式)时,通常会发生过度拟合。具有零均值的高斯噪声基本上在所有频率中具有数据点,从而有效地扭曲高频特征。这也意味着较低频率的组件(通常是您的预期数据)也会失真,但你的神经网络可以学会超越它。添加适量的噪音可以增强学习能力。 更复杂一点的就是在面积大小可选定、位置随机的矩形区域上丢弃像素产生黑色矩形块,从而产生一些彩色噪声,以Coarse Dropout方法为代表,甚至还可以对图片上随机选取一块区域并擦除图像信息。 添加Coarse Dropout噪声: -2.颜色变换的另一个重要变换是颜色扰动 就是在某一个颜色空间通过增加或减少某些颜色分量,或者更改颜色通道的顺序。 颜色扰动: 另外: 几何变换类,颜色变换类的数据增强方法细致数来还有非常多,推荐给大家一个git项目:
https://github.com/aleju/imgaug
1.2 多样本数据增强 不同于单样本数据增强,多样本数据增强方法利用多个样本来产生新的样本,下面介绍几种方法。 (1)SMOTE SMOTE即Synthetic Minority Over-sampling Technique(合成少数过采样技术),它是通过人工合成新样本来处理样本不平衡问题,从而提升分类器性能。 背景:类不平衡现象指的是数据集中各类别数量不近似相等。如果样本类别之间相差很大,会影响分类器的分类效果。假设小样本数据数量极少,如仅占总体的1%,则即使小样本被错误地全部识别为大样本,在经验风险最小化策略下的分类器识别准确率仍能达到99%,但由于没有学习到小样本的特征,实际分类效果就会很差。 SMOTE方法是基于插值的方法,它可以为小样本类合成新的样本,主要流程为: (SMOTE通过在小样本类中的样本之间进行插值来生成新样本) 第一步,定义好特征空间,将每个样本对应到特征空间中的某一点,根据样本不平衡比例确定好一个采样倍率N; 第二步,对每一个小样本类样本(x,y),按欧氏距离找出K个最近邻样本,从中随机选取一个样本点,假设选择的近邻点为(xn,yn)。在特征空间中样本点与最近邻样本点的连线段上随机选取一点作为新样本点,满足以下公式: 第三步,重复以上的步骤,直到大、小样本数量平衡。 图示: 在python中,SMOTE算法已经封装到了imbalanced-learn库中,如下图为算法实现的数据增强的实例,左图为原始数据特征空间图,右图为SMOTE算法处理后的特征空间图。 (2)SamplePairing 原理:从训练集中随机抽取两张图片分别经过基础数据增强操作(如随机翻转等)处理后经像素以取平均值的形式叠加合成一个新的样本,标签为原样本标签中的一种。 这两张图片甚至不限制为同一类别,这种方法对于医学图像比较有效。 (3)mixup mixup是Facebook人工智能研究院和MIT在“Beyond Empirical Risk Minimization”中提出的基于邻域风险最小化原则的数据增强方法,它使用线性插值得到新样本数据。 令(xn,yn)是插值生成的新数据,(xi,yi)和(xj,yj)是训练集随机选取的两个数据,则数据生成方式如下: λ的取指范围介于0到1。 提出mixup方法的作者们做了丰富的实验,实验结果表明可以改进深度学习模型在ImageNet数据集、CIFAR数据集、语音数据集和表格数据集中的泛化误差,降低模型对已损坏标签的记忆,增强模型对对抗样本的鲁棒性和训练生成对抗网络的稳定性。 SMOTE,SamplePairing,mixup三者思路上有相同之处,都是试图将离散样本点连续化来拟合真实样本分布,不过所增加的样本点在特征空间中仍位于已知小样本点所围成的区域内。如果能够在给定范围之外适当插值,也许能实现更好的数据增强效果。
1.2 无监督的数据增强 相对于有监督的数据增强方法,无监督的数据增强是更高级的方法。 考虑这样的场景: 现实世界中,自然数据仍然可以存在于上述简单方法无法解释的各种条件下。例如,识别照片中的景观。景观可以是任何东西:冻结苔原,草原,森林等。我们忽略了影响照片表现中的一个重要特征 - 拍摄照片的季节。 如果我们的神经网络不了解某些景观可以在各种条件下(雪,潮湿,明亮等)存在的事实,它可能会将冰冻的湖岸虚假地标记为冰川或湿地作为沼泽。 缓解这种情况的一种方法是添加更多图片,以便我们考虑所有季节性变化。但这是一项艰巨的任务。扩展我们的数据增强概念,想象一下人工生成不同季节的效果有多酷?(条件对抗生成网络 Conditional GANs 来救援!)
无监督的数据增强方法包括两类: 通过模型学习数据的分布,随机生成与训练数据集分布一致的图片,代表方法GAN。 通过模型,学习出适合当前任务的数据增强方法,代表方法AutoAugment。
2.1 非局部平均过滤算法 非局部平均过滤算法的降噪原理如下:图片中像素的设定通过与其周围的像素点加权而成,也就是图片中某点的像素设定和其周围像素的权重设定有关。具体原理如下式所示:
式中 代表 位置像素点受 位置像素点影响的权重大小, 代表选取像素点 周围半径为 范围内的像素点作为加权参照。 和 分别代表像素点 周围像素权值的大小统计和像素点 受周围 半径内像素影响的加权总和。 对原始图像添加噪声,随机设定3000个像素点为白色(RGB值均为255),可以看出添加噪声后的图像相对原始图像增添了许多噪声白斑,如图2所示: 然后使用openCV内置的非局部平均噪声过滤算法滤除图片噪声,结果如图3所示: 观察非局部平均噪声算法滤波前后的图像,可知滤波后图像的白斑噪声点明显减少,图像的质量得到有效提升,有利于后续的编码处理和传输。
2.2 去躁神经网络 去躁神经网络通常是以CNN(卷积神经网络为基础),其实质是:利用在无噪图像集上训练完成的去躁模型,滤除预测图像中包含的噪声信息。使用图像识别中最常见的mnist手写图像库为训练集,mnist包含6万张训练集图像和1万张测试集图像,其大小均为28*28,按照图像内容的不同分为手写数字0-9,mnist数据库内置于keras中。搭建去躁神经网络结构,如图4所示: 使用去噪神经网络对mnist图像库中添加噪声的图像去躁,去躁前后对比结果如图5、图6所示,其中下标相同的Noise与Fliter相对应: 观察去躁前后图片可知,去躁神经网络通过特征提取和监督学习等方式,对Mnist手写图像集实现了非必要噪声信息滤除,是简单常用的图像去躁器。
2.3 图像超分辨率重建(SR,Super Resolution) SR是图像处理中的经典应用,是图像增强领域的重要技术。其基本思想是通过提取低分辨率的原始图像特征来重构高分辨率的图像。按照其参考低分辨率图像种类和数目的不同,主要分为以下两种: 2.3.1 Image SR 特点是重构图像时,可供参考的原始低分辨率图像少,通常不依赖于其他图像而只参考当前的低分辨率图像,也称为单图超分辨率(SISR,single image super resolution)。 2.3.2 Video SR 特点是重构图像需要参照多个不同的原始低分辨率图像,也称为多帧超分辨率(MFSR,multi-frame super resolution)。通常MFSR相对SISR具有更高的重构质量和更多的特征匹配,代价是计算资源的更多消耗。 SR重构质量可通过图像质量评估的参考标准PSNR和SSIM进行评价,PSNR值和SSIM值越高,代表重建图像像素值与标准值越接近。 例如SRCNN、FSRCNN。
参考来源: