本文将使用一种称为“深度特征分解(Deep Feature Factorizations)”的方法来创建关于模型在图像中看到的内容的深刻可视化。pytorch-gradcam包提供了该方法的实现和一些附加功能,使其成为一个非常有用的工具。通常,可解释性方法会回答诸如“模型在图像中哪里看到了猫”之类的问题。在这里,将更详细地了解模型,并让它展示在图像中发现的所有不同概念,以及它们是如何分类的。话不多说,直接看效果图吧!
目录
1 安装pytorch-gradcam
2 实践
① 代码
② 效果图
大多数可解释性方法,如Grad-CAM,都是寻找与目标函数相对应的解释。在分类的情况下,目标函数通常是其中一个类别的分数。热图的计算方式与网络输出相连接,目的是在属性中获得更高值的像素,将与目标函数中的更高输出相对应。如果告诉可解释性方法:“想获得与猫类别对应的模型内部激活的热图”,会得到如下的图。
那么,模型发现的内部概念是什么?网络只看猫头和身体在一起吗?或者它把它们当作不同的概念来检测?神经网络能够识别耳朵、眼睛、脸和腿等高级特征。但无法在模型解释中看到这一点。有没有可能猫的身体也会把输出拉向其他类别?仅仅因为它有助于一个类别的更高产出,并不意味着它对其他类别也没有贡献。例如,有许多不同类型的猫。为了在解释热图时考虑到这一点,必须仔细查看所有的热图并跟踪它们。
如何将这些概念与网络的输出联系起来?
使用最后一层CNN是创建模型解释的最常用方法。可以为每个概念分配不同的颜色,并根据热图调节强度。然后,因为有独特的颜色,可以把所有的masks组合成一个单一的图像。但是有一个问题“同一个像素可以有来自不同概念的非零值”。在这里使用的策略是保留在标准化热图中得到更高值的概念,这意味着它对它更重要。对于每个概念,还将显示一个图例,其中包含该概念的信息属性:得分最高的类别。
参考:pytorch-grad-cam/tutorials/Deep Feature Factorizations.ipynb at master · jacobgil/pytorch-grad-cam · GitHub
至此,本文分享的内容就结束啦。
到此这篇resnet(resnet34和resnet50区别)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/65062.html