Grad-CAM原理

这篇是我对哔哩哔哩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.rhkb.cn/news/212914.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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

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

QMenu风格设计qss+阴影

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

Java 简易版 TCP(一对一)聊天

客户端 import java.io.*; import java.net.Socket; import java.util.Date; import javax.swing.*;public class MyClient {private JFrame jf;private JButton jBsend;private JTextArea jTAcontent;private JTextField jText;private JLabel JLcontent;private Date data;p…

数据结构 / 队列 / 循环队列 / 概念

1. 定义 为充分利用向量空间&#xff0c;克服假溢出现象的方法是&#xff1a;将向量空间想象为一个首尾相接的圆环&#xff0c;并称这种向量为循环向量。存储在其中的队列称为循环队列&#xff08;Circular Queue&#xff09;。循环队列是把顺序队列首尾相连&#xff0c;把存储…

C语言期末考试复习PTA数据类型及表达式-分支结构程序-循环结构-数组经典选择题

目录 第一章&#xff1a;C语言数据类型和表达式 第一题&#xff1a; 第二题&#xff1a; 第三题&#xff1a; 第四题&#xff1a; 第五题&#xff1a; 第六题&#xff1a; 第七题&#xff1a; 第八题&#xff1a; 第九题&#xff1a; 第二章&#xff1a;分支结构程序…

服务器配置免密SSH

在当今互联网时代&#xff0c;远程工作和网络安全已成为信息技术领域的热点话题。无论是管理远程服务器、维护网络设备还是简单地从家中连接到办公室&#xff0c;安全始终是首要考虑的因素。这就是为什么 SSH&#xff08;Secure Shell&#xff09;成为了网络专业人士的首选工具…

Jmeter基础和概念

JMeter 介绍&#xff1a; 一个非常优秀的开源的性能测试工具。 优点&#xff1a;你用着用着就会发现它的重多优点&#xff0c;当然不足点也会呈现出来。 从性能工具的原理划分&#xff1a; Jmeter工具和其他性能工具在原理上完全一致&#xff0c;工具包含4个部分&#xff1a…

Flutter开发笔记 —— 图像缩略图功能实战

Flutter开发笔记 —— 图像缩略图功能实战 插件应用列表效果图功能分析scrollable_positioned_list插件应用滑动控制器滑动监听器应用 结束语 大家在做图像浏览或部分关于图像的项目时&#xff0c;难免会遇到缩略图的相关功能&#xff0c;特地写了一个demo给大家进行分享&#…

从浅入深掌握进阶结构体(C语言)

前言 这一期我们将继续讲解结构体的知识&#xff0c;还没有看过上一期的小伙伴一定要赶紧去学习哦。 上一期&#xff0c;冲鸭&#xff01; 那么话不多说我们开始今天的学习吧&#xff01; 文章目录 1,结构体的自引用2,匿名结构体3,位段4,结构体的传参5,尾声 1,结构体的自引用 …

数据库备份脚本

#!/bin/bash #数据库备份 #工具&#xff1a;xtrabackupif [ ! -d /xtrabackup/ ];thenmkdir /xtrabackup/{full,inter,diff} -p fito_mail15191876750163.com db_userroot db_passwdAren123 basedir/xtrabackup/full/ baseinter/xtrabackup/inter/ basediff/xtrabackup/diff/ f…

【SSM源码】基于JAVA的高校竞赛和考级查询系统

该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等学习内容。 目录 一、项目介绍&#xff1a; 二、文档学习资料&#xff1a; 三、模块截图&#xff1a; 四、开发技术与运行环境&#xff1a; 五、代码展示&#xff1a; 六、数据库表截图&#xff1a…

uniapp-hubildx配置

1.配置浏览器 &#xff08;1&#xff09;运行》运行到浏览器配置》配置web服务器 &#xff08;2&#xff09;选择浏览器安装路径 &#xff08;3&#xff09;浏览器安装路径&#xff1a; &#xff08;3.1&#xff09; 右键点击图标》属性 &#xff08;3.2&#xff09;选择目标&…

系统设计-微服务架构

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

《opencv实用探索·十四》VideoCapture播放视频和视像头调用

1、VideoCapture播放视频 #include <opencv2/opencv.hpp> #include <iostream>using namespace std; using namespace cv;int main() {// 定义相关VideoCapture对象VideoCapture capture;// 打开视频文件capture.open("1.avi");// 判断视频流读取是否正…

案例064:基于微信小程序的考研论坛设计

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

问题:batchnormal训练单个batch_size就会报错吗

Batch Normalization&#xff08;批标准化&#xff09;是一种深度学习中的正则化技巧&#xff0c;它可以改进网络的训练过程。在训练神经网络时&#xff0c;Batch Normalization可以帮助解决内部协变量偏移&#xff08;Internal Covariate Shift&#xff09;的问题。 在标准的…

软件测试--selenium安装使用

安装selenium不少人使用pip命令来安装selenium&#xff0c;辛辛苦苦安装完之后&#xff0c;还是不能使用。所以我们可以是直接使用编译器&#xff0c;pycharm直接安装selenium扩展包。 file中点击settings 在Settings中点击Project Interpreter,点击加号就可以安装各种需要的扩…

Docker安装postgres最新版

1. postgres数据库 PostgreSQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是一种高度可扩展的、可靠的、功能丰富的数据库系统。以下是关于PostgreSQL的一些介绍&#xff1a; 开源性&#xff1a;PostgreSQL是一个开源项目&#xff0c;可以…

One-to-Few Label Assignment for End-to-End Dense Detection阅读笔记

One-to-Few Label Assignment for End-to-End Dense Detection阅读笔记 Abstract 一对一&#xff08;o2o&#xff09;标签分配对基于变换器的端到端检测起着关键作用&#xff0c;最近已经被引入到全卷积检测器中&#xff0c;用于端到端密集检测。然而&#xff0c;o2o可能因为…

docker镜像仓库hub.docker.com无法访问

docker镜像仓库hub.docker.com无法访问 文章主要内容&#xff1a; 介绍dockerhub为什么无法访问解决办法 1 介绍dockerhub为什么无法访问 最近许多群友都询问为什么无法访问Docker镜像仓库&#xff0c;于是我也尝试去访问&#xff0c;结果果然无法访问。 大家的第一反应就是…