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