一、前言
使用基本迭代方法 (BIM) 为语义分割网络生成对抗性示例。
语义分割是将图像中的每个像素分配给类标签的过程,例如汽车、自行车、人或天空。语义分割的应用包括自动驾驶的道路分割和医疗诊断的癌细胞分割。
神经网络可能容易受到一种称为对抗性示例的现象的影响,其中对输入的非常小的更改可能导致其被错误分类。这些变化通常是人类无法察觉的。此示例演示如何为语义分段网络生成对抗性示例。
此示例使用剑桥大学的 CamVid数据集生成对抗性示例。CamVid数据集是包含驾驶时获得的街道级视图的图像集合。该数据集为 32 个语义类(包括汽车、行人和道路)提供像素级标签。
二、负载网络
加载预先训练的语义分割网络。此示例加载在 CamVid 数据集上训练的 Deeplab v3+ 网络,其权重从预训练的 ResNet-18 网络初始化。
三、加载图像
加载图像及其相应的标签图像。该图像是从正在驾驶的汽车获得的街道视图。标注图像包含真实值像素标注。在此示例中,您将创建一个对抗性示例,该示例导致语义分割网络对类中的像素进行错误分类。
使用此示例末尾定义的支持函数将标签图像转换为分类数组。数据集包含 32 个类。使用此示例末尾定义的支持函数,通过将原始数据集中的多个类分组在一起,将类数减少到 11 个。使用支持函数为 11 个类创建颜色图。显示带有真实值标签的像素的叠加层的图像。
四、创建对抗性目标标签
要创建对抗性示例,必须为希望网络错误分类的每个像素指定对抗性目标标签。在此示例中,目的是让网络将像素错误分类为另一个类。因此,您需要为每个像素指定目标类。
使用此示例末尾定义的支持函数,通过将所有像素标签替换为不在类中的最接近像素的标签来创建对抗性目标标签。显示对抗性目标标签。
准备数据,要使用图像和对抗性目标标签创建对抗性示例,必须先准备图像和标签。
五、创建对抗性示例
使用对抗性目标标签通过基本迭代方法 (BIM)创建对抗性示例。BIM 迭代计算梯度∇ X L(X,T)损失函数L关于图像X您要查找对抗性示例和对抗性目标标签T.此梯度的负数描述了“推送”图像以使输出更接近所需类标签的方向。
参数一个控制单个迭代的推送大小。每次迭代后,裁剪扰动以确保幅度不超过E.参数E定义所有迭代中总更改的大小上限。一个更大的E值会增加生成错误分类图像的几率,但会使图像中的更改更加明显。
显示原始图像、添加到图像的扰动和对抗图像。
增加的扰动是难以察觉的,这表明对抗性示例如何利用网络中的鲁棒性问题。
六、预测像素标签
使用语义分割网络预测原始图像和对抗图像的类标签。
显示两个图像的预测叠加。
网络正确识别原始图像中的骑自行车者。但是,由于难以察觉的扰动,网络在对抗图像中错误地标记了骑自行车的人。