【算法】可解释机器学习-CAM / Grad_CAM(Datawhale)

news2024/11/25 12:07:46

可解释机器学习-CAM / Grad_CAM

  • 一、CAM
    • 1.CAM算法介绍
    • 2.CAM的特点
    • 3.CAM算法的缺点
  • 二、Grad_CAM
    • 1.Grad_CAM算法介绍
    • 2.Grad_CAM算法优点
    • 3.Grad_CAM算法缺点
    • 4.Grad_CAM算法的变种
      • 1)Grad_CAM++算法
      • 2)ScoreCAM算法
      • 3)LayerCAM算法

一、CAM

1.CAM算法介绍

Class Activation Mapping,CAM类激活热力图。不只是训练了一个图像分类模型而已,可以查看训练出来的分类模型的热力图的效果
在这里插入图片描述

下图表示:输出512个feature map,每一个feature map被称为一个channel,就是一个矩阵,每一个矩阵都是14 x14的。(蓝、红、绿色薄片是一个channel,14x14)

总共有512个薄片 -> 对应了卷积神经网络最后一层提取出来的512种特征 -> 每一个特征体现在每一个对应的薄片上

把蓝色channel的14×14=196个激活值取一个平均值,得到蓝色的标量。同理,共得到512个标量 / 平均数,称为全局平均池化

512个平均数会起到全连接层的作用,后面再接一层线性分类层,训练得到它对每一个类别的平均数的权重,再进行softmax操作,得到每个类别的概率。每一个概率都是0 - 1之间的,并且这每个概率求和为 1 -> 得到完整的图像分类预测结果。

在这里插入图片描述
权重w 1 间接的反映了该类别对蓝色feature map的关注程度,feature map是卷积神经网络最后一层从图像中提取出来的某一种特征,权重w 1 间接的反映了该类别对这种特征的关注程度。

该权重从w 1到w n,最后一个卷积层是14 x 14的channel;得到的CAM热力图也是14 x 14的低分辨率的矩阵。可以用双线性插值的方法把它缩放回原图大小(类似于word和ppt里的图像缩放),变成一个高分辨率的热力图。

2.CAM的特点

1.全卷积,无池化,因为池化具有平移不变性,会丢失空间信息。
2.GAP操作,可以取代全连接层。

在传统卷积神经网络里面,最后一层卷积层产生了若干个channel,需要把每一个channel展平成一个长向量,再把这个长向量输入给全连接层,这种操作太消耗计算量、也太消耗参数量了,参数量会爆炸。用全局平均池化取代全连接层能大大减少参数量,以前需要512 x 14 x 14个元素,现在只要512个元素就可以了。
在这里插入图片描述

3.CAM算法的缺点

1.必须得有GAP层,否则得修改模型结构,把全连接层替换为GAP后重新训练。
2.只能分析最后一层卷积层输出,无法分析中间层

二、Grad_CAM

1.Grad_CAM算法介绍

无需换为GAP,直接使用全连接层,后续采用求梯度方式。
在这里插入图片描述

扩展:
在这里插入图片描述

2.Grad_CAM算法优点

在这里插入图片描述

3.Grad_CAM算法缺点

在这里插入图片描述

4.Grad_CAM算法的变种

1)Grad_CAM++算法

改进的缺点:
在这里插入图片描述
具体改进部分:
在这里插入图片描述
在这里插入图片描述

2)ScoreCAM算法

改进的缺点:
在这里插入图片描述
具体:
在这里插入图片描述

3)LayerCAM算法

改进的缺点:
在这里插入图片描述

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

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

相关文章

jsp+ssm计算机毕业设计高铁售票管理系统【附源码】

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JSPSSM mybatis Maven等等组成,B/S模式 Mave…

stack和queue

stack:https://cplusplus.com/reference/stack/stack/?kwstack 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。 2. stack是作为容器适配器被实现的,容器…

设计模式之命令模式

Command design pattern 命令模式的概念、命令模式的结构、命令模式的优缺点、命令模式的使用场景、命令模式的实现示例、命令模式的源码分析 1、命令模式的概念 命令模式,即将请求封装成一个对象,使发出请求的责任和执行请求的责任分离开。这样两者之间…

App自动化测试【1】Appium的原理解读

1.Appium的架构原理 Appium的架构原理如图所示,由客户端(Appium Client)和服务器(Appium Server)两部分组成,客户端与服务器端通过JSON Wire Protocol进行通信。 2.Appium原理解读 客户端Client&#x…

Win10自动更新怎么永久关闭?服务、注册表、组策略、计划任务中全方位设置,永久解决!

Win10自动更新就像打不死的小强,不管怎么关闭,之后还是会自动更新,让不少小伙伴颇为不爽。今天通过4步,在服务、注册表、组策略、计划任务中全方位设置,彻底关闭Win10自动更新,感兴趣的小伙伴不妨试试吧。 …

Python:requirements.txt, environment.yml简介

文章目录简介requirements.txtenvironment.yml小结简介 最近安装了一些从github上clone下载的开源python软件包,经历了许许多多的酸甜苦辣。在python软件包,通常都会包含requirements.txt, environment.yml, setup.py三者之中某些或者全部,一…

11.注解开发依赖注入及管理第三方Bean

1. 注解开发依赖注入 1.1 使用Autowired注解开启自动装配模式 Service public class BookServiceImpl implements BookService {//Autowired:注入引用类型,自动装配模式,默认按类型装配Autowiredprivate BookDao bookDao;public void save(…

【OpenCV+Qt】实现简易视频播放器——支持进度条拖动

OpenCV实现视频播放器,其思路大致就是在线程中使用OpenCV中的VideoCapture循环读取本地视频的每一帧Mat,然后发送到界面转换成QImage进行显示,而进度条拖动则用到了VideoCapture中的set函数,进度条则是使用Qslider;并且…

记录安装 fenics 的问题

因为 fenics 官方更新后可能版本会出现有时效的问题, 所以也记录一下时间. Windows 系统下安装最大的问题 2022-12-19 记录. Windows 系统下本来是想通过 Anaconda 安装 fenics 的, 创建好虚拟环境后, 利用 conda install -c conda-forge fenics 进行安装, 但是直接提示 Pack…

操作系统,计算机网络,数据库刷题笔记14

操作系统,计算机网络,数据库刷题笔记14 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql&#xf…

【OpenSourceC#】ET框架

1. 前言 ET算是我刚接触客户端时最早知道的框架,ET我最初眼馋的还是他的双端功能。包揽前后端的功能,这个很有吸引力。但是那时候对我来说这框架太复杂了,没法看。 这两天又来看看,曾经很多不懂的地方现在都能看懂了&#xff0c…

数据库拆分5--使用sharding-jdbc来实现水平拆分

有三张表 user log order表,先将user log 和order垂直分库,然后将user表水平拆分 配置文件 spring.shardingsphere.enabledtruespring.shardingsphere.datasource.nameswim-user,wim-orderspring.shardingsphere.datasource.wim-user.typecom.alibaba.…

【JavaEE】多线程之Thread类

一、Thread类常见方法与字段 1、构造方法 构造方法说明Thread()不带参数的构造方法Thread(String name)可以在构造时传入线程的名字Thread(Runnable run)传入Runnable,是创建线程的方法之一Thread(Runnable run,String name)传入线程工作并给线程起名 2、常见属性…

JaveWeb框架(一):Web入门,Http的请求和响应,https介绍,Web实战自定义服务器

Servlet入门 MVC实战项目 仓储管理系统JavaWeb入门介绍Http协议Http请求数据格式Http响应数据格式Web实战Demo:自定义服务器对比Https协议总结Redis章节复习已经过去,新的章节JavaWeb开始了,这个章节中将会回顾JavaWeb实战项目 仓储管理 代码…

机器人开发--电机中的电流环、速度环、位置环

机器人开发--电机中的电流环、速度环、位置环电流环、速度环、位置环1 三环原理1.1 电流环1.2 速度环1.3 位置环2 各环与PID控制2.1 电流环重点在 PID(比例、积分和微分)2.2 速度环重点在 PI(比例和积分)2.3 位置环重点在 P&#…

基于JAVA的企业部门报销管理信息系统的设计与实现

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 系统部分主要分为以下几个模块:公告类型,公告信息,部门信息,员工信 息&a…

手写Spring9(实现FactoryBean、对象作用域)

文章目录前言目标设计项目结构一、实现1、Bean的作用范围定义和xml解析2、创建和修改对象时候判断单例和原型模式3、定义 FactoryBean 接口4、实现一个 FactoryBean 注册服务5、扩展 AbstractBeanFactory 创建对象逻辑二、测试1、事先准备2、定义 FactoryBean 对象3、配置文件4…

Win32多线程调用gdal库接口

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 效果图和程序说明 效果图如下:   这个程序是基于MFC的GUI程序,用于给指定的文件夹批量创建金字塔。   效果图如下:   这个程序是基于Win32 API的GUI程序,用于给指定的文件创…

期末前端web大作业——动漫客栈响应式bootstarp(7页) 排版整洁,内容丰富,主题鲜明

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

R语言用线性回归模型预测空气质量臭氧数据

尽管线性模型是最简单的机器学习技术之一,但它们仍然是进行预测的强大工具。 最近我们被客户要求撰写关于线性回归模型的研究报告,包括一些图形和统计输出。 这尤其是由于线性模型特别容易解释这一事实。在这里,我将讨论使用空气质量数据集…