
如果仅允许攻击者修改一个像素的颜色并仅查看预测概率,则导致深层神经网络错误地分类图像有多简单?原来这很简单。在许多情况下,攻击者甚至可以使网络返回他们想要的任何答案。
以下项目是重新实现的KERAS和“用于欺骗深层神经网络”的“一个像素攻击”的教程。该论文的官方代码可以在此处找到。
对于此攻击,我们将使用CIFAR10数据集。数据集的任务是将32x32像素图像正确分类为10个类别(例如,鸟,鹿,卡车)。黑框攻击仅需要由神经网络输出的概率标签(每个类别的概率值)。我们通过选择像素并将其修改为某种颜色来生成对抗图像。
通过使用称为差异进化(DE)的进化算法,我们可以迭代生成对抗图像,以尝试最大程度地减少神经网络分类的置信度(概率)。

学分:Pablo R. Mier的博客
首先,生成几个对抗样本,这些样本修改随机像素并通过神经网络运行图像。接下来,将以前的像素的位置和颜色结合在一起,从中生成更多的对抗样本,并通过神经网络运行新图像。如果有像素从最后一步降低了网络的置信度,请将它们替换为当前最著名的解决方案。重复这些步骤以进行一些迭代;然后在最后一步返回对抗图像,从而最大程度地降低了网络的信心。如果成功,信心将被降低,以至于新的(不正确)类别现在具有最高的分类信心。
有关成功攻击的一些示例,请参见下文:

需要GPU还是只想阅读?使用Google Colab查看第一个教程笔记本。
要在本地教程中运行代码,建议使用适合与Keras( tensorflow-gpu )运行的专用GPU。需要Python 3.5+。
git clone https://github.com/Hyperparticle/one-pixel-attack-keras
cd ./one-pixel-attack-keraspip install -r ./requirements.txtjupyter notebook ./one-pixel-attack.ipynb要训练模型,请运行train.py 。每个时期之后,将检查该模型(保存)到networks/models目录。
例如,训练具有200个时期和批次大小为128的重新系统:
python train.py --model resnet --epochs 200 --batch_size 128要执行攻击,请运行attack.py 。默认情况下,这将运行所有具有默认参数的模型。要指定要测试的模型类型,请使用--model 。
python attack.py --model densenet capsnet当前可用的模型是:
lenet -Lenet,第一个CNN模型pure_cnn一个只有卷积层的nnnet_in_net网络中的网络resnet - 图像识别的深度残留学习densenet密集连接的卷积网络wide_resnet宽剩余网络capsnet胶囊之间的动态路由在各种模型上运行多个实验后的初步结果。每个实验都会产生100个对抗性图像,并计算出攻击成功率,即成功导致模型将图像错误分类在图像总数上的图像之比。对于给定的模型,基于图像中可以修改的像素的数量(1,3或5),运行多个实验。差异算法的人口大小为400,最大迭代计数为75。
攻击1,3,5像素扰动(100个样本)
| 模型 | 参数 | 测试准确性 | 像素 | 攻击成功(未靶向) | 攻击成功(针对性) |
|---|---|---|---|---|---|
| Lenet | 62k | 74.9% | 1 | 63.0% | 34.4% |
| 3 | 92.0% | 64.4% | |||
| 5 | 93.0% | 64.4% | |||
| 纯CNN | 14m | 88.8% | 1 | 13.0% | 6.67% |
| 3 | 58.0% | 13.3% | |||
| 5 | 63.0% | 18.9% | |||
| 网络中的网络 | 970k | 90.8% | 1 | 34.0% | 10.0% |
| 3 | 73.0% | 24.4% | |||
| 5 | 73.0% | 31.1% | |||
| 重新连接 | 470k | 92.3% | 1 | 34.0% | 14.4% |
| 3 | 79.0% | 21.1% | |||
| 5 | 79.0% | 22.2% | |||
| Densenet | 850k | 94.7% | 1 | 31.0% | 4.44% |
| 3 | 71.0% | 23.3% | |||
| 5 | 69.0% | 28.9% | |||
| 宽重新设备 | 11m | 95.3% | 1 | 19.0% | 1.11% |
| 3 | 58.0% | 18.9% | |||
| 5 | 65.0% | 22.2% | |||
| CAPSNET | 12m | 79.8% | 1 | 19.0% | 0.00% |
| 3 | 39.0% | 4.44% | |||
| 5 | 36.0% | 4.44% |
看来,胶囊网络盖瓶网虽然比所有其他CNN都对一个像素攻击更具弹性,但仍然很容易受到攻击。