《On Classification of Distorted Images with Deep Convolutional Neural Networks》翻译

《On Classification of Distorted Images with Deep Convolutional Neural Networks》
《基于深度卷积神经网络的失真图像分类》
原文地址:https://arxiv.org/pdf/1701.01924

摘要

图像的模糊和噪声是图像采集过程中常见的失真现象。在本文中,作者系统地研究了图像失真对深度神经网络(DNN)图像分类器的影响。 首先,作者研究了DNN分类器在四种失真情况下的性能。然后,作者提出了两种方法来减少图像失真的造成影响:从头训练以及用噪声图像的微调。研究结果表明,在一定的条件下,利用噪声图像微调可以有效减少由于输入图像的失真所带来的影响,比从头训练更加实用。
关键字:图像模糊;图像噪声;深度卷积神经网络;再训练;微调

1. 引言

近年来深层神经网络(DNN)在许多计算机视觉任务中取得了较好的效果[1]。在图像分类任务中,相比于以前的手动提取特征,诸如Alexnet [2]这样的DNN方法显著提高了准确度。之后的DNN的工作[3,4]继续优化DNN的结构来提高其性能。
在实际应用中,获取的图像可能会出现各种类型的失真。例如,用移动像机拍摄的图像可能会受到运动模糊的影响。在本文中,作者系统地研究了图像失真对基于DNN的图像分类器的影响。作者还研究了一些策略来减轻图像失真对分类精度的影响。
图像失真的两大类是图像模糊和图像噪声[5]。它们是由于图像采集过程中的各种问题引起的。例如,当相机失焦时会出现散焦模糊。运动模糊是由相机和视图之间的相对运动引起的,这在基于智能手机的图像分析中很常见[6,7,8]。图像噪声通常是由于照明不足、高温降低了相机内的电荷耦合器件(CCD)的性能引起的。
当在实际应用中使用DNN分类器时,在输入图像中可能会出现一些图像模糊和噪声。这些图像的损失将影响DNN分类器的性能。本文为这个问题做的贡献在于:首先,文章研究了图像失真对DNN分类器的影响。作者研究了四种失真图像对DNN分类器的性能的影响,四种失真分别是:运动模糊,散焦模糊,高斯噪声以及它们的组合。其次,作者研究了两种方法来减轻图像失真造成的影响。其中一种方法,用噪声图像重新训练网络。这种方法可以提高分类失真图像时准确性。然而,重新训练非常深的网络需要大量的训练数据。受到[9]的启发,在另一种方法中,作者用失真的图像微调网络的前几层。本质上,作者调整DNN低层的滤波器来匹配失真图像的特征。
以前的一些工作已经研究了图像失真造成的影响[10]。针对DNN,Basu等人[11]提出了一种从深度信念网(DBN)改进的新模式来处理输入的噪声。他们在一个叫做n-MNIST的噪声数据集上取得了很好的效果,该数据集比原始的MNIST数据集多了高斯噪声和运动模糊并降低了对比度。最近,Dodge和Karam[12]报道了由于各种图像失真导致的多个DNN的退化。相比这些研究,本文统一地研究图像失真对手写数字和自然图像分类的影响。此外,作者实验了使用噪声图像重新训练和微调来减轻噪声带来的影响。
在“干净”(即没有失真)的图像分类中,以前的一些工作曾尝试在训练数据中引入噪声[13,14]。这些研究的目的是使用噪音来正则化模型,以防止在训练时过拟合。相反,本文的目标是研究使用噪声数据训练在失真图像分类中的好处。研究结果还表明,在一定条件下使用噪声图像微调分类器会是一种有效实用的方法。

2. 深度神经网络结构

在本节中简要介绍一下深度神经网络(DNN)的思想。DNN有很多类型,这里主要介绍深度卷积神经网络(DCNN),DNN的详细介绍可以在[15]中找到。
DNN是一种受人类中枢神经系统启发而发明的机器学习架构。DNN的基本元素是神经元。在DNN中,相邻层通过神经元完全连接,一个DNN可以具有多个级联层。这些层组成一个DNN。
DNN在小图像任务上取得了很好的效果[16]。但对于大图像任务,由于一般深度卷积神经网络要用上一层中的所有节点输出作为下一层的输入,这导致一个模型包含非常大量的参数,而且不可能用有限的数据集和计算源训练。卷积神经网络(CNN)的思想是使用图像的局部连接作为先验知识,即节点仅连接到上一层的相邻节点。该约束显着减小了模型的大小,同时保留了图像中的必要信息。
对于卷积层,每个节点连接到输入层中的局部区域,称为感受野。所有这些节点形成一个输出层。对于输出层中的所有这些节点,它们具有不同的内核,但在计算激活函数时它们共享权重。
图1显示了LeNet-5的结构,用于处理MNIST数据集上的数字图像分类[17]。从图中可以看出,该模型具有两个卷积层及其对应的池化层。这是模型的卷积部分。接下来两层是平化层和全连接层,这些都是是从常规DNN继承的。

3. 实验

作者在相对较小的数据集[17,18]和较大的数据集ImageNet[19]上进行实验。作者在一些小数据集上实验不同结构的完全训练/微调以了解其有效性。然后,在ImageNet数据集上验证该方法。
作者使用MatConvNet [20]进行实验,MatConvNet是可以运行和训练卷积神经网络的MATLAB工具箱。所有的实验都是在配置Intel Xeon E5-2630 CPU的Dell T5610 WorkStation上进行的。
深层架构和数据集:在本次实验中,作者使用了三个公开数据集:MNIST[17]、CIFAR-10[18]和ImageNet[19]。
MNIST是一个手写数字数据集,具有60000张训练图像和10000张测试图像。每个图像是28×28的灰度图,内容为0到9中的一个数字。对于MNIST,作者使用LeNet-5[17]进行分类。作者使用的LeNet-5的结构如图1所示。该网络有6层,其中4层具有训练参数:前两个卷积层,平化层和全连接层。
作者采用两种方法处理失真图像:用噪声图像进行微调和重新训练。
在微调时,作者从使用原始数据集(即没有失真的图像)预训练的模型开始。作者在一个失真的数据集上微调模型的前N层,同时固定其他层的参数。在固定最后一层参数的原因是作者认为图像模糊和噪声对图像中的低级特征(如颜色,边缘和纹理特征)有更大的影响。但这些失真对高级特征,如图像的语义意义[21]几乎没有影响。因此在微调时作者关注DNN的初始层,其中包含更多的低层特征。比如LeNet-5有4层参数,即N的范围是1到4。作者将微调方法表示为first-1到first-4。
在重新训练时,作者用失真的数据集从头开始训练整个网络,不用预训练的模型。作者将重新训练的方法表示为re-training。
重新训练LeNet-5时,学习率为 103 10 − 3 ,训练次数为20。微调时,学习率为 105 10 − 5 (重新训练学习率的1%),训练次数为15。每次训练大约需要1分钟,所以整个训练过程需要大约20分钟来重新训练,15分钟微调。
CIFAR-10数据集共10个类,由60000张32×32的彩色图像组成,每类6000张。其中50000张是训练,10000张测试。为了训练更快,作者使用MatConvNet[20]提供的快速模型,其结构如图2所示。
与前面MNIST的方法类似,作者用CIFAR失真数据集微调和重新训练。在CIFAR10-quick模型中有5层参数,所以作者有first-1到first-5的微调方法。重新训练方法为re-training。
重新训练CIFAR10-quick训练次数为45。前30次的学习率为 5×102 5 × 10 − 2 ,后10次为 5×102 5 × 10 − 2 ,最后5次 5×104 5 × 10 − 4 。微调的训练次数为30。前25次学习率为 5×104 5 × 10 − 4 ,最后5次为 5×105 5 × 10 − 5 。每次大约需要3分钟,所以训练过程需要135分钟重新训练,90分钟微调。
在这里,作者还评估了ILSVRC2012数据集。ILSVRC2012[22]是一个大型自然图像数据集,包含1000多个类别,超过一百万张图像。图像和类别选自ImageNet[19]。为了了解有限的数据在多种应用中的影响,作者从训练数据集中随机选择50000张图像训练,用50000张ILSVRC2012验证集测试。
作者用预训练的Alexnet[2]模型微调来处理在ILSVRC2012验证集。这里没有用重新训练的方法,因为仅用ILSVRC2012训练集的一小部分来重新训练Alexnet会造成过拟合。作者微调Alexnet的前3层,同时固定其他层的参数。微调训练次数为20,第1次到第20次的学习率为 108 10 − 8 1010 10 − 10 ,按照对数空间减小。作者也使用了5×10-4的权重衰减。每次训练时间为90分钟,总计30小时。
在计算时间上,在MNIST和CIFAR-10数据集上微调比重新训练的时间少。对于ILSVRC2012验证集,还要使用微调的方法来防止过拟合。
模糊和噪声的类型:在本实验中考虑运动模糊和散焦模糊两种模糊,另外考虑高斯噪声一种噪声。
运动模糊通常是由相机抖动或拍摄对象的快速移动引起的典型模糊类型。作者使用随机游走的算法生成运动模糊核[23]。对于每个步长,作者将运动模糊核随机移动1像素。运动模糊核的大小从[0,4]中采样。
当相机失去图像的焦点时,会发生散焦模糊。作者通过统一的抗锯齿盘生成散焦模糊,半径从[0,4]采样。
在为一个图像生成移动或散焦模糊核后,作者使用该核对整个图像进行卷积运算生成模糊图像。
高斯噪声是由较差的照明或高温引起的,这会干扰相机中的CCD获取正确的像素值。作者选择均值为0的高斯噪声,标准偏差σ从[0,4]采样。彩色图像的像素值为[0,255]中的整数。
最后,作者考虑所有上述三种失真的组合。每个噪声的值分别从[0,4]采样。
图3和图4分别展示了MNIST和CIFAR-10中由于模糊和噪声产生的示例图。每行图像表示一种类型的失真。前3行仅有一种类型的失真,最后一行作者将所有3种类型的失真应用于同一张图像上。每一行从左到右的失真级别为0到4。
图5显示了ILSVRC2012验证集中的一个例子。生成失真数据集时,训练集和测试集中的每个图像的3种失真参数都是[0,4]中的随机值。

4. 实验结果和分析

图6和7显示了实验结果。作者比较了3种方法:no train表示模型是在干净数据集训练在噪声数据集测试。first-N表示对前N个层进行微调并固定其他层参数。LeNet-5有4个可训练层,所以有first-1到first-4,CIFAR10-quick为first-1到first-5。
MNIST的结果:图6显示了MNIST数据集的结果。运动模糊和高斯噪声造成的影响相对较小(注意每张图的刻度不一样)。散焦模糊和组合噪声的影响更大。该结果与图3的观察结果一致,运动模糊和高斯噪声的图像相比散焦模糊和组合噪声更容易识别。MNIST数据集包含具有手写笔画的灰度图像,因此沿笔画的边缘是重要的特征。在作者的实验中,散焦模糊之后的笔画覆盖了更大的区域,削弱了边缘信息。运动模糊也削弱了边缘信息,但没有散焦模糊那么严重。这是因为在相同的参数下,运动模糊的区域小于散焦模糊。高斯噪声对边缘信息的影响有限,所以错误率几乎没有增加。组合噪声对错误率有很大的影响。
微调和重新训练两种方法都可以显着降低错误率。前3个和第4个结果具有非常相似的结果,表明失真对最后几层影响不大。当失真小的时候,通过重新训练,通过前3和4进行微调可以获得相近的结果。当失真水平增加时,重新训练达到更好的结果。
CIFAR-10上的结果:从图4可以看出,CIFAR-10中的失真不仅影响边缘信息,而且对颜色和纹理信息有影响。因此,所有3种类型的失真都可能使图像难以识别。这与图7所示的结果一致。与MNIST数据集的结果不同,3种失真都显着恶化了no train的错误率。
使用微调和重新训练都可以显着降低错误率。first-3到first-5结果类似,表明失真主要影响前3层。当失真水平低时,微调和重新训练也有类似的结果。然而,当失真水平高或混合噪声时,重新训练比微调更好。
从这两个数字可以看出,当作者调整前3层时,结果与微网整体非常相似。该结果表明图像失真对图像的低级信息影响较大,而对高级信息影响不大。
分析:为了获得有关失真数据的微调和重新训练的效果,作者统计了模型中的特征图。受[24]的启发,作者发现图像梯度幅值的均方差是一个有用的特征。作者计算特征图的梯度而不是图像的梯度,然后计算特征图梯度的平均方差。
对于输入的特征图fm,首先使用Sobel算子计算水平(x)和垂直(y)方向的梯度


那么在(m,n)处fm的梯度为


计算了fm的梯度g_fm后,就能计算梯度幅值的方差: vfm=var(gfm) v f m = v a r ( g f m )
当在图像上应用散焦模糊或运动模糊时,清晰的边缘被模糊化为平滑的边缘,因此梯度幅度图变得平滑,并且具有较低的方差。具有较高梯度方差值v_fm的特征图则具有更多的边缘和纹理信息,因此更有助于图像表征。而较低的v_fm值表明特征图的信息是有限的,因此对于图像表示来说是不够的。
图8显示了CIFAR10-quick模型的conv3层(最后一个卷积层)的特征图梯度幅值的均值方差。从这两幅图中可以看到:(1)在失真图像上应用原始模型时,与在原始图像上应用模型相比,平均方差减小(见no train),这表明边缘或纹理信息由于失真而丢失。(2)对失真图像采用微调方法时,均值方差与原始图像保持类似,表明通过对失真图像进行微调,模型可以从失真图像中提取有用信息。 (3)对于失真图像重新训练,均方差高于原始图像上的模型。这意味着,重新训练的模型适合失真的图像数据集。这些结果表明,用失真图像微调模型时,网络试图使失真图像的特征映射表示接近原始图像,使得失真图像上的分类结果可以接近原始图像的结果。当在失真图像上重新训练模型时,网络尝试在失真的数据集上拟合DNN模型,而特征图表示不一定接近原始图像的表示。
Imagenet上的结果:作者还研究了对大型数据集和非常深的网络进行微调的效果。在ILSVRC2012的训练和验证实验中,作者通过组合所有3种类型的模糊/噪声来产生失真的数据。每张图像的每种失真程度为[0,4]中的均匀采用。获得失真的数据后,作者调整了预训练的Alexnet模型的前3层[2]。表1显示了预先训练的Alexnet模型与微调模型之间的准确性的比较。与原始预训练模型相比,微调模型提高了失真数据的性能,同时保持了干净数据的性能。当作者想在有限的且失真的数据集上使用像Alexnet这样的大型DNN模型时,在前几个层上进行微调可以提高失真数据的分类精度,同时保持清晰数据的准确性。

5. 结论

使用噪声数据对模型进行微调和重新训练可以提高失真数据的分类性能,重新训练通常可以达到与微调相当或更好的精度。但是,我们需要考虑的问题有:
•失真数据集的大小:如果模型非常深并且失真数据集很小,那么在有限数据集上训练模型会导致过拟合。在这种情况下,我们可以通过对模型的first-N层进行微调,同时固定其他的层以防止过拟合。
•噪声失真度:当失真度较高时,对失真数据重新训练效果较好。 当失真度较低时,重新训练和微调都可以取得较好的效果。在这种情况下,微调是最好的,因为它收敛更快,花费更少的计算时间,并且适用于数量有限的失真数据集。

你可能感兴趣的:(翻译)