一、前言
此示例演示如何使用 Grad-CAM 探索预训练语义分割网络的预测。
语义分割网络对图像中的每个像素进行分类,从而生成按类分割的图像。您可以使用深度学习可视化技术 Grad-CAM 来查看图像的哪些区域对像素分类决策很重要。
二、下载预训练网络
从剑桥大学下载一个在CamVid数据集[1]上训练的语义分割网络。
三、执行语义分割
在使用 Grad-CAM 分析网络预测之前,请使用预训练网络对测试图像进行分段。
加载测试图像并调整其大小以匹配网络所需的大小。使用该函数预测图像的像素标签。将分割结果叠加在原始图像上并显示结果。
该网络确实对某些区域进行了错误分类,例如,轮胎附近的道路被错误地分类为汽车。接下来,您将使用 Grad-CAM 探索网络预测,以深入了解网络错误分类某些区域的原因。
四、探索网络预测
深度网络很复杂,因此很难理解网络如何确定特定的预测。您可以使用 Grad-CAM 查看语义分割网络使用测试图像的哪些区域进行像素分类。
Grad-CAM 计算可微输出的梯度,例如类分数,相对于所选层中的卷积特征。Grad-CAM 通常用于图像分类任务 [2];但是,它也可以扩展到语义分割问题[3]。
指定要素图层。通常,这是一个ReLU层,它采用网络末端卷积层的输出。指定缩减图层。该函数对指定类的缩减图层的空间维度求和,以生成标量值。然后根据要素图层中的每个要素区分此标量值。对于语义分割问题,归约层通常是softmax层。计算道路和路面类的 Grad-CAM 地图。将两个类的 Grad-CAM 地图与网络预测的像素标签进行比较。
Grad-CAM 映射和语义分割映射显示了类似的突出显示。道路类的 Grad-CAM 地图显示,场景的中心对于网络的分类决策更为重要。由于轮胎和道路边界之间的分辨率较差,该网络可能会错误地分类汽车底部附近的道路区域。
五、探索中间层
当您使用靠近网络末端的层进行计算时,Grad-CAM 映射类似于语义分割映射。您还可以使用 Grad-CAM 来调查训练网络中的中间层。与网络末端的层相比,早期层具有较小的感受野大小,并且可以学习小的低级特征。
计算网络中相继更深的图层的 Grad-CAM 地图。该层靠近网络的中间,而靠近网络的末端。
调查汽车和道路类的网络分类决策。对于每个图层和类,计算 Grad-CAM 地图。
显示每个图层和每个类的 Grad-CAM 地图。行表示每个图层的地图,图层按网络早期到网络末端的图层顺序排列。
后面的图层生成的地图与分割地图非常相似。然而,网络中较早的层会产生更抽象的结果,并且通常更关注边缘等较低级别的特征,对语义类的认识较少。例如,在早期图层的地图中,您可以看到汽车和道路类的天空都高亮显示。这表明早期图层侧重于与类相关但不一定属于类的图像区域。
六、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序下载:基于matlab使用Grad-CAM探索语义分割网络资源-CSDN文库