Grad-CAM原理

news2024/11/17 6:35:11

这篇是我对哔哩哔哩up主 @霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享

只要大家一提到深度学习

缺乏一定的解释性

比如说在我们之前讲的分类网络当中

网络它为什么要这么预测

它针对每个类别所关注的点在哪里呢

在great cam这篇论文当中呢

就完美的解决了在cam这篇论文当中存在一些问题

在great cam当中

我们既不需要修改网络的结构

也不需要对网络做进一步的训练

举个非常有意思的一个例子

这里呢我们也来简单的聊一聊

那么首先呢作者训练了一个二分类网络

也就是针对护士以及医生这两个类别的

那对于这个带有偏见的模型呢

首先对于护士这个类别

你会发现他预测的是正确的

然后通过我们绘制热力图呢

你会发现其实它主要关注的区域是在人脸的这个区域

大家想想你通过人脸就能分辨出他是医生还是护士吗

其实我个人觉得仅仅通过人脸是很难区分出来的

然后接下来我们再看下面这个图

也就是它的正确标签应该是医生

但是我们这个带有偏见的模型呢

它预测的结果是护士 预测错误

这个不带偏见的模型

它是根据不同职业所使用的器械或者说工具

以及它的穿着来得出最终预测结果的

那么很明显

这相比于我们仅仅通过人脸来判断他的职业要更加的科学一些

那么再看一下这个图

这个带偏见的模型呢

它学到特征其实是有问题的

那么作者呢有进一步分析这个带偏见模型它所对应的训练的数据集

然后作者发现在这个数据集当中

护士这个类别绝大多数都是女性

所以这就导致了训练得到这个模型

它是带有偏见的

那么为了解决这个问题呢

作者就调整了一下训练数据当中不同职业男女之间的一个比例

那么调整均衡之后再去训练网络

就得到了这个不带偏见的模型

那么它的测试集的准确率由原来的%多

提升到了%多的明显效果是变好了的

所以我觉得作者举这个例子呢是值得我们大家去思考以及借鉴

cam的适用性非常强的

然后我们来看一下我刚刚提供的关于这个pytorch实现cam这个仓库

那么在这个仓库下呢

还提供了比如说像目标检测以及语义分割的一些使用方法

其实作者有给出对应的一个使用教程啊

那么这里我给出针对目标检测的语义分割的

还有针对使用像transformer模型

它的一个使用的案例

那么大家有兴趣的话可以自己去看一下

那接着我们再回到我们的ppt当中

我们现在就以图像分类这个任务为例啊

那么黑色这个箭头呢代表的是我们正向传播的一个过程

蓝色这个箭头呢代表的是梯度反传的一个过程

那比如说针对我们图像分类这个任务

假设我想看一下对于tiger cat这个类别

我们网络究竟关注的区域在哪

那么他就根据网络预测的tiger cat这个类别的数据进行一个反向传播

这里的数据是没有通过softmax激活的

我们就能得到针对这个特征层A的一个反向传播的梯度信息

比如说我把它标记为A'

然后呢作者对这里的a撇在它的每一个通道位置上去求一个均值

那么就得到我们这里的每一个w

那这里的w呢就是针对我们这个特征层a每一个通道的一个权重

然后接下来做的再进行一个加权求和

通过relu函数得到我们最终的great cam【还要通过relu?】

那这里呢我简单的讲一下我个人的一个看法

首先是关于得到这个特征层A是网络对原图进行特征提取得到的结果

那一般呢越往后的特征层它的抽象程度越高

语义信息呢也是越来越丰富

并且利用cnn过去得到这个特征层

它是能够保留空间信息的

那么在我们得到的最终的这个特征层A上呢

它对应的激活区域差不多也是在这个位置

所以说我们声音网络它是能够保留空间信息的

其实不光是cnn

包括我们最近常用的transformer模型也是一样的

那么在原论文的图当中呢

我们一般所说的这个特征成层A都是指的卷一层当中最后一个卷积层

它所输出的特征层

然后这里的A'是y(c)对A求得这个偏导

那么换句话说就是A'

它代表的是A中每个元素对我们最终这个y(c)结果一个贡献值

那么贡献越大就代表网络认为它有越重要

所以呢接下来我们对A'在每个通道上去取均值

就能得到针对特征层A每个通道的重要程度

然后我们再进行一个加权求和

以及通过relu函数就能得到我们这里的一个cam

那么这里呢我们用公式来进行表示的话

那么接下来我们来举个例子

方便大家理解

对cat类别进行反向传播

然后我们通过relu之后呢

就将那些小于零的数据全部给设置成零

就得到我们最终的great cam有输出了

那么讲呢肯定有人对这里的A'求解是抱有疑惑的

那如果你想了解这个A'怎么求解的话

你可以去看一下我写这个博文

(51条消息) Grad-CAM简介_gradcam_太阳花的小绿豆的博客-CSDN博客

当然在我们去实现的过程当中

其实我们不需要自己去计算

因为现有的新中学框架它都会自动帮我去计算

再对CAM进行resize变成原图大小

之后再将CAM转化成彩色形式(原CAM是单通道的非彩色)

然后将原图scale处理

将scale后的原图add已处理完的cam

将add后的结果再进行scale

即可得到覆盖了cam的输出图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1295361.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《文存阅刊》期刊发表简介

《文存阅刊》以“深研文化创新,崇尚科学真理,坚持双百方针,打造学术精品”为办刊宗旨,涵盖艺术、文学、社科等多项内容,适应了文化市场需求,很好的回应了广大文化理论工作者的关切,为下一步打造…

QMenu风格设计qss+阴影

Qt的菜单经常在软件开发中用到&#xff0c;默认的菜单效果都不符合设计师的要求&#xff0c;本篇介绍QMenu菜单的风格设计&#xff0c;包括样式表和阴影。 1.QMenu样式表的设计 首先看一个默认的菜单 void QGraphicsDropShadowEffectDemo::slotShowDialog() {qDebug() <&l…

机器学习第15天:GBDT模型

☁️主页 Nowl &#x1f525;专栏《机器学习实战》 《机器学习》 &#x1f4d1;君子坐而论道&#xff0c;少年起而行之 ​​ 文章目录 GBDT模型介绍 Boosting 残差 GBDT的缺点 python代码实现 代码 模型参数解释 结语 GBDT模型介绍 GBDT&#xff08;Gradient Boos…

pytest +uiautomator2+weditor app自动化从零开始

目录结构1.0 把设备连接单独移出去了 模块操作代码&#xff0c;有一些流程操作和断言方法 from devices import dv from time import sleep import random from tool.jt import capture_screenshotdef initialization(func):def wrapper():sleep(1)dv.app_stop(com.visteon.…

Linux学习笔记3 xshell(lnmp)

xshell能连接虚拟机的前提是真机能够ping通虚拟机网址 装OpenSSL依赖文件 [rootlocalhost nginx-1.12.2]# yum -y install openssl pcre-devel 依赖检测[rootlocalhost nginx-1.12.2]# ./configure [rootlocalhost nginx-1.12.2]# yum -y install zlib [rootlocalhost n…

Windows下使用CMD修改本地IP

在网络适配器界面查看当前网线连接的哪个网口&#xff0c;我当前连的是 以太网 这个名字的&#xff1a; 在windows下使用管理员权限打开CMD命令工具&#xff0c;输入如下命令(如我想本地ip改成192.168.2.4)&#xff1a; netsh interface ip set address "以太网" st…

Vue:用IDEA开发Vue,标签语法爆红问题处理

一、场景描述 我在IDEA中&#xff0c;学习Vue课程。 入门学习时&#xff0c;是在html文件中&#xff0c;script引入vue.js文件方式。 此时&#xff0c;在html文件中用v-标签&#xff0c;爆红。 二、解决办法 打开 菜单栏 File - Settings 选择 Editor - Files Type&#xf…

虾皮关键词广告怎么选

在虾皮&#xff08;Shopee&#xff09;平台上&#xff0c;关键词广告是提高商品曝光度和销量的有效手段。然而&#xff0c;选择合适的关键词对于广告效果至关重要。本文将为您提供一些建议&#xff0c;帮助您选择适合虾皮关键词广告的关键词。 先给大家推荐一款shopee知虾数据…

云上巴蜀丨云轴科技ZStack成功实践精选(川渝)

巴蜀——古政权必争之地 不仅拥有优越的战略位置 而且拥有丰富的自然资源&#xff0c;悠久的历史文化 如今的川渝经济、人口发展迅速 2023年前三季度&#xff0c;四川与重庆GDP增速均超过国家平均线&#xff0c;为6.5%为5.6% 川渝经济发展带动数字化发展浪潮 云轴科技ZSt…

LeetCode题:174. 地下城游戏

目录 一、题目要求 二、解题思路 &#xff08;1&#xff09;状态表示 &#xff08;2&#xff09;状态转移方程 &#xff08;3&#xff09;初始化dp表 &#xff08;4&#xff09;填表顺序 &#xff08;5&#xff09;返回值 三、代码 一、题目要求 174. 地下城游戏 恶魔们…

【学一点儿前端】真机调试本地公众号网页项目

前言 微信公众号网页开发的真机调试一直是很头疼的事情。 原因一 微信公众号配置的JS安全域名只有三个&#xff0c;一个大中型的公众号这三个JS安全域名都是生产的域名&#xff0c;不可能预留域名用于开发和调试。 原因二 在微信里面只有访问正确的安全域名才能调用wx.config用…

电商早报 | 12月8日|母婴电商宝贝格子北京总部已人去楼空

国家邮政局&#xff1a;预计11月快递量同比增长30%&#xff0c;业务收入增长27% 12月7日消息&#xff0c;国家邮政局发布2023年11月中国快递发展指数报告。经测算&#xff0c;2023年11月中国快递发展指数为406.4&#xff0c;同比提升20%。其中发展规模指数、服务质量指数、发展…

初识Linux:权限(2)

目录 权限 用户&#xff08;角色&#xff09; 文件权限属性 文件的权限属性&#xff1a; 有无权限的区别&#xff1a; 身份匹配&#xff1a; 拥有者、所属组的修改&#xff1a; 八进制的转化&#xff1a; 文件的类型&#xff1a; x可执行权限为什么不能执行&#xf…

深入理解 Python 中的 eval 函数

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com eval 是 Python 中一个强大而灵活的函数&#xff0c;它允许将字符串作为代码执行。然而&#xff0c;由于其潜在的安全风险&#xff0c;使用时需要谨慎。本文将深入探讨 eval 函数的各个方面&#xff0c;包括基本…

系统设计-微服务架构

典型的微服务架构图 下图展示了一个典型的微服务架构。 负载均衡器&#xff1a;它将传入流量分配到多个后端服务。CDN&#xff08;内容交付网络&#xff09;&#xff1a;CDN 是一组地理上分布的服务器&#xff0c;用于保存静态内容以实现更快的交付。客户端首先在 CDN 中查找内…

[⑦ADRV902x]: JESD204学习笔记

前言 JESD204B/C基于SERDES&#xff08;SERialization/DESerialization&#xff09;技术&#xff0c;也就是串化和解串&#xff0c;在发送端将多位并行的数据转换为1 bit的串行数据&#xff0c;在接收端将串行数据恢复成原始的并行数据。 在JESD204接口出现以前&#xff0c;数…

作业12.8

1. 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数。将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是…

PVE系列-LVM安装MacOS的各个版本及VNC加密隧道访问

PVE系列-LVM安装MacOS的各个版本 环境配置大概过程&#xff1a;详细步骤&#xff1a;1.建立安装环境和下载安装工具2. 重启后&#xff0c;执行osx-setup配置虚拟机3. 安装到硬盘&#xff0c;4.设定引导盘&#xff0c;以方便自动开机启动5.打开屏幕共享和系统VNC6.VNC加密的ssh隧…

Python 数据分析:日期型数据的玩转之道

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在数据分析的领域中&#xff0c;处理日期型数据是至关重要的一环。Python 提供了丰富的工具和库&#xff0c;使得对日期进行分析、处理、可视化变得更加轻松。本文将深入探讨 Python 中如何玩转日期型数据&#…

python之日志记录

1.导包 import logging2.设置日志基本信息 2.1设置日志级别 logger logging.getLogger("你的类名"|None) # 可以空参logger.setLevel(logging.DEBUG) # 也可以为loggin.INFO 2.2 设置日志输出格式 formatter logging.Formatter(%(asctime)s - %(name)s - %(level…