在之前的文章中,我们介绍了对抗样本和对抗攻击的方法。在该系列文章中,我们介绍一种对抗样本防御的策略--对抗样本检测,可以通过检测对抗样本来强化DNN模型。本篇文章论述其中一种方法:feature squeezing,特征压缩通过将原始空间中许多不同特征向量对应的样本合并成一个样本,减少了对手可用的搜索空间。通过比较DNN模型对原始输入的预测与对实施特征压缩后的输入的预测,特征压缩能够以高精度检测出对抗样本,并且误报率很低。本文探讨两种特征压缩方法:减少每个像素的颜色位深度和空间平滑。这些简单的策略相比于其他防御方法的代价较小(训练时间等),并且可以与其他防御相补充,实现性能很好的对抗防御效果。
色深(Color Depth),顾名思义,就是“色彩的深度”,这里的“深度”就是指精细度。在数字图像中,最小的单位叫“像素”(Pixel),这里的像素是彩色的像素,每一个像素都有自己独立完整的参数,在RGB三通道图像中,每一个像素都由R,G,B三个通道组成,其中每个通道又由若干个二进制位来表示其“含量”,例如,11001101100110011111111(共24位),表示102红,204绿和255蓝,根据加色系理论,这个颜色就是我们常说的“天依蓝”。其中,用来表示该颜色的2进制位数,就是“色深”,即24bit。
空间平滑(也称为模糊)是一组广泛应用于图像处理以降低图像噪声的技术。
局部平滑方法利用附近的像素来平滑每个像素。通过选择不同的加权机制,可以设计不同的局部平滑方法:Gaussian smoothing、mean smoothing or median smoothing。本篇文章涉及的特征压缩选择median smoothing。下图是中值平滑的效果:
一些对比:
废话:中值滤波是一种典型的非线性滤波,是基于排序统计理论的一种能够有效抑制噪声的非线性信号处理技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,让周围的像素值接近真实的值从而消除孤立的噪声点。该方法在取出脉冲噪声、椒盐噪声的同时能保留图像的边缘细节。
简单叙述之:一张图片由一堆像素点组成,取一个小窗,假设大小为3 * 3(即9个像素点),将该小窗在整张图片上移动,每次移动后做如下的工作:
不断移动小窗,重复上面的工作。
非局部平滑不同于局部平滑,因为它在更大的区域内处理相似的像素,而不仅仅是附近的像素。很多图像平滑技术,比如高斯平滑,中值平滑等,当噪声比较小时这些技术的效果都是很好的。在这些技术中我们选取像素周围一个小的邻域然后用高斯平均值或者中值平均值取代中心像素。简单来说,像素级别的噪声去除是限制在局部邻域的。
NL-Means的全称是∶Non-Local Means,直译过来是非局部平均,在2005年由Baudes提出,该算法使用自然图像中普遍存在的冗余信息来去噪声。与常用的双线性滤波、中值滤波等利用图像局部信息来滤波不同的是,它利用了整幅图像来进行去噪,以图像块为单位在图像中寻找相似区域,再对这些区域求平均,能够比较好地去掉图像中存在的高斯噪声。对于彩色图像,要先转换到 CIELAB
颜色空间,然后对L
和AB
成分分别去噪。
非局部平滑方法的参数通常包括搜索窗口大小(用于搜索类似补丁的大区域)、补丁大小和滤波器强度(高斯核的带宽)。我们将把一个过滤器表示为nl(a-b-c)
,其中a
表示搜索窗口a*a
,b
表示补丁大小b*b
,c
表示过滤器强度。
下图是从8-bit色深依次降低到1-bit色深时的图像:
下图是对图像应用中值平滑后的效果:
我们可以看到,从人眼角度,我们能够分辨出色深bit降低不多时的图像,以及中值平滑后的图像。在人眼看来,原始图像和处理后的图像差别不大,从分辨的角度来看,结果可以说是高度一致。那么,我们希望DNN分类器能够做到与人类相同的分辨,而对于对抗样本,我们猜想,应用这些特征压缩后,DNN分类器会给出与原始输入对应的输出差别较大的输出。
我们知道使用softmax
的DNN分类器输出概率向量,对于原始输入,我们能得到DNN分类器的对应输出概率向量,将原始输入实施特征压缩后,再输入到DNN分类器中,又会得到一个概率向量。通过测量这两个概率向量之间的差距,我们就能分辨对抗样本。因为之前我们已经基于直觉推出,特征压缩后的正常图像和没有压缩的特征图像的概率向量输出差别不会大,否则与人眼识别的效果不一致,说明模型本身不合格(即使没有加对抗样本,这样的模型可以说不合格),而我们也假设,对抗样本施加特征压缩后会得到与原始对抗样本输入对应的输出差别较大的输出。
可以有很多方法度量概率向量之间的差异,这里采用\(L_1\)范数度量:
\(\boldsymbol{x}\)是原始输入图像,\(\boldsymbol{x}_{squ}\)是对原始输入实施特征压缩后的图像,\(g(\boldsymbol{x})\)是原始输入图像的输出概率向量,\(g(\boldsymbol{x}_{squ})\)是特征压缩后的输入图像的输出概率向量,那么两者之间输出向量的差异值如下:
\[score^{(\boldsymbol{x},\boldsymbol{x}_{squ})} = ||g(\boldsymbol{x}) - g(\boldsymbol{x}_{squ})||_1
\]
\(score^{(\boldsymbol{x},\boldsymbol{x}_{squ})}\)较小的\(\boldsymbol{x}\)我们认为是正常图像,差异大认为是对抗样本,这个阈值多大决定了检测的效果:
分别在三个数据集上统计\(score^{(\boldsymbol{x},\boldsymbol{x}_{squ})}\),横轴为\(score^{(\boldsymbol{x},\boldsymbol{x}_{squ})}\)的数值,纵轴为得分等于横轴某个值的输入x的数量。蓝色代表正常图像,红色代表对抗样本,结果如下:
可以看到绝大部分的正常图像的得分值都很小,绝大部分对抗样本的得分值都很大,这验证了我们之前的猜想。
可以将上述特征压缩方法结合起来,每种特征压缩方法和原始输入计算输出,得到多个\(score^{(\boldsymbol{x},\boldsymbol{x}_{squ})}\),取最大值作为评判指标。因此对抗样本的联合检测模型如下:
在上面的联合检测模型中,我们需要确定适当的threshold:T
,以区分对抗样本和正常输入。因为DNN分类的输入绝大部分是正常输入,对抗样本只是少数,在数据不平衡的情况下,准确率无法体现模型的真实水平。因此,用准确率作为指标不合适。在此,我们选择使正常输入被错分为对抗样本不能超过5%为指标,因此只用正常图像作为输入训练检测器即可。
引入随机:
[1] Xu, Weilin & Evans, David & Qi, Yanjun. (2018). Feature Squeezing: Detecting Adversarial Examples in Deep Neural Networks. 10.14722/ndss.2018.23210.
[2] Nicholas Carlini. Robust Evasion Attacks against Neural Network to Find Adversarial Examples. https://github.com/carlini/nn_robust_attacks/.
[3] 「色深」和「位深」有什么区别? - 天才Pika小透明的文章 - 知乎 https://zhuanlan.zhihu.com/p/144207333
[4] 图像平滑处理-中值滤波 - Monster_H7 - CSDN https://blog.csdn.net/Monster_H7/article/details/83788754
手机扫一扫
移动阅读更方便
你可能感兴趣的文章