示例图片的地面真值是圆顶。五张类激活映射分别是前五名预测类别和得分。我们可以看到如果输出是宫殿,网络关注的是整块区域的。如果输出是圆顶,网络只是关注宫殿顶部。
CAM的缺陷
这项技术非常有用但是存在一些缺陷的。首先我们必须改变网络结构,例如把全连接层改成全局平均池化层,这不利于训练。第二是这是基于分类问题的一种可视化技术,用于回归问题可能就没有这么好的效果。
为了解决第一个问题,2017年出现了一种改进的技术叫Grad-CAM,Grad-CAM可以不改变网络结构进行可视化,详见这篇论文《Grad-CAM: Visual Explanations from Deep Networks via Gradient-basedLocalization》(2017 ICCV)。
CAM的应用
CAM也可以应用到很多方面。比如,它可以发现场景中有用的物体:
在弱标记图像中定位比较抽象的概念:
弱监督文字检测,它可以关注文字部分即使网络没有训练过文字或者任何注释框:
关于视觉问答,我们可以看到网络关注答案区域:
利用CAM的可视化技术,我认为CAM也能帮助我们对比模型,选择一个更合适的结构:
在日常做实验的时候也可以利用CAM帮助我们发现问题,改进结构:
这是一个简单的二分类问题,识别图片是猫还是狗,通过CAM技术,我们可以看到网络关注哪里。在第二排第一第二个结果中,网络错误的将猫识别为狗,使用CAM我们可以很快发现错误原因是对于两张图片网络忽略了猫,而关注了其他区域。所以CAM可视化这可以帮助我们理解网络。
CAM使得弱监督学习发展成为可能,可以慢慢减少对人工标注的依赖,能降低网络训练的成本。通过可视化,就像往黑箱子里打了一个手电筒,让人们可以尝试去理解网络。