一文带你用可视化理解卷积神经网络(19)


image = cv2.resize(image(224224))
mask = mask.astype('uint8')
#apply the mask to the image
final = cv2.bitwise_and(imageimagemask = mask)
final = cv2.cvtColor(finalcv2.COLOR_BGR2RGB)
#plot the final image
plt.imshow(final)

你能猜到为什么我们只看到图像的某些部分吗? 这其实是正确的 - 只有输入图像中对其输出类概率有重大贡献的那些部分才是可见的 。 简而言之 , 这就是被遮挡图的全部内容 。

可视化输入特征的贡献—显著性贴图

显著性图是另一种基于梯度的可视化技术 。

显着图计算每个像素值对模型输出的影响 。 这涉及计算输出相对于输入图像的每个像素的梯度 。 这告诉我们如何根据输入图像像素的微小变化输出类别变化 。 梯度的所有正值意味着像素值的微小变化将增加输出值:

这些梯度与图像形状相同(梯度是根据每个像素值计算的) , 为我们提供了直观的重点 。 让我们看看如何为任何图像生成显著性图 。 首先 , 我们将使用以下代码段读取输入图像 。

推荐阅读