-
模型:
模型共有5个隐藏层。
第一个隐藏层:5x5的卷积层,深度为32,步长为1,padding使得图像尺寸不变;
第二个隐藏层:2x2的max pooling层,步长为2,图像尺寸变为原来1/4;
第三个隐藏层:5x5的卷基层,深度为64,步长为1,图像尺寸保持不变;
第四个隐藏层:2x2的max pooling层,步长为2,图像尺寸变为原来1/4;
第五个隐藏层:1024个神经元的全连接层,采用0.4的dropout。
模型代码:model.py - 测试集上的正确率:0.91480
- 方法:通过模型对要冒充的类型求loss,并对x求导,将梯度乘一个常数加到x上,循环1000轮。具体参考代码w_attack.py。
- 攻击成功率:0.646
-
成功攻击样例展示,第一行为原图,第二行为攻击之后的图像。
- 采用迁移攻击方法:模拟待攻击模型得到一个傀儡模型,对傀儡模型进行白盒攻击,用改动后的数据对待攻击模型进行黑盒攻击。具体来说,我先运行test_traindata.py获得待攻击模型在训练集上的预测值,然后将预测值作为ground true在train_dummy.py里利用第一步白盒攻击的模型训练出一个傀儡模型。然后用dummy_attack.py对傀儡模型进行白盒攻击,存储改变后的图像,用b_attack.py对待攻击模型进行黑盒攻击。
- 攻击成功率:0.258
-
成功攻击样例展示,第一行为原图,第二行为攻击之后的图像。