深度卷积神经网络对Perlin噪声的敏感性研究*
2021-03-20刘思婷葛万成
刘思婷,葛万成
(同济大学,上海 201800)
0 引言
面对复杂多变的驾驶环境,如何减少环境因素的干扰,提高自动驾驶视觉领域检测精度,提升安全性和可靠性,是自动驾驶领域必须解决的重要难题。而在自动驾驶技术图像识别领域中,自动驾驶的环境感知应用模型的本质就是黑盒属性,也已有实验证明深度卷积网络对普遍性对抗扰动(Universal Adversarial Perturbations)[1]非常敏感。研究如何大规模、低成本地生成对抗样本,并且对深度学习模型进行攻击,对深度卷积神经网络和整个自动驾驶领域的进步都很重要。
1 相关介绍
1.1 深度卷积神经网络
深度卷积神经网络的概念最初来源于概率论统计中的最大似然估计,分析变量与发生概率之间的关系,并且找到参数能够实现最优概率分布。在深度学习中,它不断利用输入数据来更新优化参数。一个基础的卷积神经网络通常由卷积层、池化层和全连接层等部分组成。
卷积层由滤波器组成,而每个滤波器可以看成数字矩阵。每张彩色由RGB 这3 个像通道构成,R代表红色,G 代表绿色,B 代表蓝色。每个通道的像素值由[0,255]范围内的数字来表示,如图片的大小为299×299 像素,那么此时就用299×299×3的数组进行表示。设单个通道的坐标为(x,y),卷积核的权重为w,图片亮度值为v,则卷积的定义式为:
在卷积层进行运算后,要将结果送入池化层。由于图片中相邻像素点的数值具有一定的相似性,再加上卷积运算后的数值会存在部分接近的情况,因此此时会有很多无效数值,即存在大量的冗余信息。进行池化处理就是大幅度去除冗余信息,提高处理速率。常见的池化方法有一般池化(General Pooling)、均值池化(Mean/Average Pooling)、最大池化(Max Pooling)以及随机池化(Stochastic Pooling)等。不同的池化方式对图像特征值做不同的处理。
全连接层通常位于卷积层和池化层之后,在进行一定次数的卷积运算和池化操作后再次进行计算,实现一个汇总特征向量的作用,结构如图1所示。
这里参数多、计算量大,会占用很大的内存,所以在部分网络结构中也会省去在全连接层计算的流程,计算公式如下:
式中,x1、x2、x3为输入,a1、a2、a3为输出。
图1 全连接层结构
VGG16 是由Simonyan 和Zisserman[2]提出的一种网络结构,共有16 层网络结构,其中包含13 个卷积层、5 个池化层和3 个全连接层。在13 个卷积层中,每一层都需要64 个卷积核,而每一个卷积核大小是3×3,且通道数为3。在进行2~3 次的卷积作用后,采取最大池化的方式进行池化,以达到降维减小深入尺寸的效果,从而减少计算量。在池化层和卷积层中获得的区分性的局部信息将会在全连接层进行整合,最后利用Softmax 逻辑回归分类后进行输出。在2014 年的ImageNet 图像挑战赛的分类和定位任务上,VGG16 分别获得第二名和第一名的好成绩。它收敛速度快,网络结构整齐,稳定性较高。
ResNet 又叫深度残差网络(Deep Residual Network),是由He K N 等[3]等人提出的一种残差学习框架。它由VGG19 进化而来,即在VGG19 的原有基础上通过短路机制引入两种不同的残差单元机制(如图2 所示),并且利用global average pool 代替VGG19 中的全连接层,通过增加特征图的数量来保证网络层的复杂性,在ILSVRC 2015 分类任务中获得第一名。它能够解决目标部分网络结构如VGG 系列随着网络层数的不断增加面临的检测效果退化问题。
要提高检测精度,一般是增加网络层数和宽度,但同时也会带来参数量过多和存在过拟合的现象。然而,InceptionV4[4]很好地解决了这一问题,已经被证实能够低成本获取高性能,是近年来在计算机视觉领域的一个代表性突破。如图3 所示,InceptionV4 由之前的Inception 版本演化而来,利用DepthConcat 在每个block 后合成特征获得非线性特征代替原有Relu 激活函数,通过Global average pool代替原有全连接层中的FC避免过拟合现象的产生。因此,对VGG16、ResNet34、InceptionV4 这3 种优势突出的网络结构进行攻击更能够体现本文方法的可行性和普遍适用性。
图2 两种残差单元机制结构
图3 InceptionV4 网络结构
1.2 对抗性样本和对抗攻击
对抗性样本是指在模型的输入数据上人为添加一些扰动导致模型发生错误判断,这一过程即对抗攻击。例如,对于一张正确分类的图片来说,它的正确分类应该是猫,当加入细微的像素点进行扰动后,最后分类的结果变成了狗。这些细微的扰动不影响人类的判定,但对模型的预测结果却有很大的影响。根据攻击方法的特点,具有不同的分类。根据攻击者是否了解被攻击对象的内部结构,可以分成白盒攻击和黑盒攻击。白盒攻击是指攻击者掌握被攻击网络模型所有的内部结构特征和训练参数。黑盒攻击是指攻击者对被攻击的网络模型一无所知,只能通过输入与输出的结果进行判断。本文采取黑盒攻击方法,即在无需知道神经网络的内部情况下实现攻击,适用于各种复杂的网络。
1.3 Perlin 噪声介绍
传统的噪声生成方法是通过随机序列发生器产生不同的随机数,使事物图片呈现随机的噪声干扰。这个过程看似随机自然,但能够模拟仿真在现实世界的真实效果。实际上,随着操作者的需求会进行一定的修改变成伪随机。利用图形学噪声进行黑盒攻击,能够减少算法成本且高效。在1985 年的SIGGRAPH 会议上,Perlin[5]首次提出柏林噪声这一个全新概念。与之前传统的噪声生成算法相比,Perlin 噪声能在一维、二维和三维等多个维度提供自然逼真的扰动,生成更真实的逼真纹理。树木的纹理、火焰和云雾的形状等,都可以通过柏林噪声模拟获得。为了更好地模拟自然的视觉效果干扰,本文对交通标志牌采取基于Perlin 噪声的攻击方法。
1.4 GTRSB 图像数据集
本文以常见的道路交通标志牌为研究对象。在众多交通标志牌数据集中,选择德国GTRSB 数据集。GTRSB 数据集种类丰富,数量庞大,在计算机视觉领域的应用中有着很好的实验效果。此数据分为测试集和训练集,其中测试集12 587 张,训练集39 209 张。测试集和训练集都具有含43 种常见交通标志牌图像数据库,部分数据集类别如图4 所示。
图4 GTRSB 数据集部分示例
2 研究背景
近年来,大数据处理的计算能力快速提升。深度学习因其自身强大的特征表达能力和对复杂任务的建模能力,使得自身在图像处理、语音识别以及情感分类等各大领域有着广泛的应用,掀起了人工智能的技术浪潮,但在现实世界中会面临很多干扰。对人类来说一些小小的干扰对人类的判断结果无影响,但是对于深度学习模型来说影响很大。2014 年,Szegedy 等[6]验证了即使是很小的扰动,也能对深度卷积神经网络的模型预测结果造成很大的变化,尤其在自动驾驶领域严重影响系统的安全性。近几年,对深度学习目标检测器模型上的攻击得到了广泛关注。Lu[7]等人在交通标志牌STOP 标志上和人脸图像上添加扰动,结果导致模型结果预测误判。Xie 等人[8]设计了一种通过不断迭代来生成对抗样本的方法,结果表明也能使得深度学习模型无法进行正确的预测。同样,Li 等人[9]提出R-AP 攻击算法概念,证实了在不知道模型内部构造的情况下能够降低性能。Universal Adversarial Perturbations[1]的提出又是对抗攻击的一大突破,能够生成对任何图像实现攻击的扰动,对人类来说很难察觉。虽然此实验是在ResNet 上测试,但已经证明这种方法能够泛化到其他网络。如何低成本制造对抗样本进行对抗攻击从而不短提升深度学习模型的鲁棒性,是当下的热点也是要攻克的难题。本文方法既具备低成本优势,也能够可视化展示这些扰动。
3 算法流程和实验方法
3.1 数据集预处理
为了满足实验环境的需求,要对GTRSB 数据集进行两次数据集格式处理:第一次处理是将从GTRSB 官网中下载下来的.ppm 的数据集利用其ROI 区域的坐标,提取出所需的ROI 区域,转化成.jpg 格式的数据集;第二次是在进行攻击时,需要将.gpg 的格式转化成二进制文件的格式。
3.2 构建Perlin 噪声
柏林噪声本质是一种带限白噪声,可由不同频率、不同振幅的白噪声叠加而来:
式中,i表示第i次被叠加的白噪声,p表示持续度。p是由Mandelbrot[4]提出的振幅和频率关系的综合表示,定义为:
柏林噪声生成流程如下。
第1 步:利用伪随机序列发生器生成随机数,利用随机数初步生成白噪声,并将不连续的白噪声数值取部分进行梯度插值,得到连读的梯度噪声。
第2 步:利用插值函数的方法可以实现噪声平滑后将值返回。插值方法有线性插值、余弦插值和立方插值。立方插值执行速度慢,占用空间大,且不能够保证很好的平滑效果。余弦插值虽然能够保证较好的平滑效果,但是需要利用计算周期长换取效果。因此,综合执行时间和平滑效果,本文采取线性插值的方法,既能保持较优的平滑效果,也具备时间上的高效性。线性插值函数需要3 个参数{a,b,x},x的取值范围是[0,1]。当x=0 时,返回a的值;当x=1 时,返回b的值;当x的值位于[0,1]之间时,返回[a,b]范围内的某个数值。
线性插值函数伪码如下:
第3 步:将不同频率和不同振幅的噪声进行叠加,也就是倍频。倍频次数越高,噪声纹理越自然,但倍频次数过高,显示器无法分辨,效果会下降。图5、图6 和图7 从左往右依次显示了不同频率的倍频数为1、2、3、4 的Perlin 噪声图像。
图5 Norm=12,amplitude=60,frequency=36 的Perlin 噪声图像
图6 Norm=12,amplitude=91,frequency=36 的Perlin 噪声图像
图7 Norm=12,amplitude=125,frequency=36 的Perlin 噪声图像
最后,加上生成的不同的噪声扰动得到对抗性样本,用此攻击3 种不同的网络,如图8 所示。
图8 对抗样本生成流程
3.3 模型训练
本文基于Facebook 开源的神经网络框架Pytorch进行模型训练,网络训练时长如表1 所示,epoch=199,adecay=0.9,学习率=0.045,每两个时期使用0.94的指数率衰减一次。
表1 网络训练时长
4 实验结果
实验数据表明,这3 种不同结构的深度神经网络对Perlin 噪声有不同程度的敏感性,如图9、图10 和图11 所示。其中,Perlin1 代表倍频数为1 时Perlin 噪声对网络进行攻击的结果,Perlin2、Perlin3等同理。
图9 freq=28 时3 种网络的分类准确率
图10 freq=36 时3 种网络的分类准确率
图11 freq=44,freq=52 时3 种网络的分类准确率
从图9、图10 和图11 可以总结以下3 个方面的规律。
(1)随着freqsine 频率的增高,攻击效果越来越好。值得注意的是,freq=28 时攻击效果很弱,但是freq=36 时效果提升明显,从freq=36 再到freq=44 再增至freq=52 时,攻击效果又有一定幅度的提升。比如,当倍频数为2、freq=36 时,VGG16的准确率为0.897 8,而当freq的值逐渐增加到44和52 时,VGG16 的准确率依次降为0.852 4 和0.837 2。当倍频数为2、freq=36 时,InceptionV4 的准确率为0.856 4,而当freq的值逐渐增加到44 和52 时,InceptionV4 的准确率依次降为0.852 4 和0.819 7。当倍频数为2、freq=36 时,ResNet34 的准确率为0.887 8,而当freq的值逐渐增加到44 和52 时,ResNet34 的准确率依次降为0.852 9 和0.826 8。
(2)无论是在高频还是低频区域,从这3 种模型来看,攻击效果效果最好(最差)时的分布存在共性。如图9 所示,在freq值较低时(freq=28)、倍频数为2 时,攻击效果最好;倍频数为1 时,攻击效果最差。相反,当freq值较高时,正如实验数据所示,在freq为36、44、52 时,倍频数为1 时攻击效果最好,而倍频数为2 时攻击效果最差。
(3)从整体效果来看,无论是在高频还是低频,通常当倍频数超过3、4 时,即使随着噪声叠加次数不断提高,攻击效果也不会有明显提升,有时反而会随着倍频次数的增加而下降。当倍频数为5 且叠加次数过多时,也会导致计算周期过长,不利于提高实验效果。
总体来说,在原始数据集上,分类准确率由高到底依次是InceptionV4、ResNet34、Vgg16,分别为0.991 7、0.986 9、0.981 4。这3 种网络的稳定性从低到高依次是InceptionV4、ResNet34、VGG16。VGG16 面对噪声攻击最稳定,InceptionV4 最不稳定。从实验数据来看,这3 种网络在freq=44、倍频数=1 时,攻击效果最好,InceptionV4 的准确率下降了20.49%,ResNet34 的准确率下降了19%,VGG16 的准确率下降了15.63%。无论当freq和倍频数为何值,检测精度的下降排名保持一致。早有实验证明,随着网络层数的增加,检测精度会提高,但同时也会遇到稳定性减弱的情况。结合现实来看,当倍频数过低时,噪声扰动较为明显,不符合一个优秀扰动所具备的条件,而倍频数过高攻击效果也会下降,所以当倍频数为3、4 时能总体达到最好的效果,且噪声频率越高总体攻击效果越好。
5 结语
本文提出了一种基于Perlin 噪声对深度卷积神经网络的攻击方法,并实验验证了Perlin 噪声攻击的有效性,能够达到类似UAP 的效果,且便捷高效,能够可视化观察不同参数对输入样本的影响。这一现象和结果对提升自动驾驶技术的安全性和稳定性有着重要的研究意义,因为提出了一种便捷的、低成本、高效的黑盒攻击方法,而且具备泛化性。此外,Perlin 噪声也可以用来进行数据增强,有效生成新数据,用于对抗性训练,以提高深度学习模型的鲁棒性。未来的工作中,有必要分析不同噪声模式隐藏的对神经网络攻击的效果,并研究降低卷积神经网络对扰动敏感性的技术。