论文笔记:Learning Deep Features for Discriminative Localization

2023-05-16

一、这篇论文解决什么问题

原始问题:Weakly-supervised object localization,研究发现,图像分类任务上训练的CNN,可以直接用于物体定位

两个子问题:

  1. CNN具有这种能力的原因是什么
  2. 如何改进,可以更好地解决Weakly-supervised object localization

本文研究以上问题的核心手段:利用GAP(Global Average Pooling)生成CAM(Class Activation Mapping)

二、相关工作及局限性

Weakly-supervised object localization

遮挡法、用很多重叠的图块多次预测:不是end-to-end的模型,需要多次前向计算

GMP(Global Max Pooling):找到边缘的点而不是区域内的点,区域内的点无论怎么变化都不会起作用,而GAP不同,关键区域内的点都有影响

Visualizing CNNs

有的工作只分析了卷积层,并没有分析全连接层

有的工作分析了语义编码,但并没有分析具体不同特征的重要程度

三、CAM技术

CNN具有这种能力的原因是什么:通过CAM技术找出影响图像分类的关键区域

如何利用GAP进行预测(计算各类别的分数):

S_{c} = \sum_{x,y}^{} \sum_{k} w_{k}^{c}f_{k}(x,y),其中f_{k}(x,y)代表最后一次卷积操作后,第k个channel的feature map在(x,y)位置的值

如何生成CAM:

M_{c}(x,y)=\sum_{k}^{} w_{k}^{c}f_{k}(x,y)

其实M_{c}已经是CAM了,只不过为了看清楚原图中哪些区域是跟此类别最相关的,需要将其上采样成原图的大小,一般采用双线性插值方法

从CAM的结果来看,不同的类别关注原图上不同的区域,比较符合人类认知,例如dome关注的就是原图中的穹顶

GAP vs GMP:

图像分类任务上,GAP和GMP效果接近,但在图像定位任务上,GAP要优于GMP

四、实验

如何改进,可以更好地解决Weakly-supervised object localization

构建XX-GAP网络:GAP前面的卷积操作得到的feature map分辨率越高,图像定位的能力越强,所以在构建实验时,对AlexNet等网络的改动基本就是删除后面的一些卷积层,在分辨率比较大的卷积层后接GAP

如何利用CAM做图像定位:

  1. 找出CAM前20%最大值的区域
  2. 选择最大连通域的外接矩形作为定位框

实验结果:图像分类,效果比较接近;图像定位,GAP的效果明显更好

五、GAP提取的特征分析

GAP可以提取到图像分类和图像定位所需的特征,一种提升图像分类(更细粒度的图像分类)效果的改进方法就是:先用CAM技术把原图中的关键区域框起来,然后在进行图像分类

Pattern Discovery能力:

  1. 发现场景中有意义的物体
  2. 通过弱监督图像定位发现短语概念
  3. 弱监督文本检测
  4. 视觉问答

六、CAM技术的另一个作用

CNN具有这种能力的原因是什么:通过CAM技术区分不同特征对于分类的重要程度

分析过程:每个类别找出权重最大的3个channel,再找到该channel中高激活值再原图的区域,其实就可以区分特征的重要程度了。例如,对于一个客厅来说,最重要的特征是判断图像中有没有沙发,其次是桌子,然后是电视

结论:不同channel提取不同的特征,但都对应特定类别的相关语义

PS:本文大部分公式和图片都来自于Learning Deep Features for Discriminative Localization,对本文的理解来自于对论文的学习及对同济子豪兄讲解的学习,有理解不对的地方,欢迎指正 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文笔记:Learning Deep Features for Discriminative Localization 的相关文章

随机推荐

  • 树莓派assert初步使用练习

    一 创建用户 用户密码 sudo useradd m 用户名 sudo passwd 用户名 给予用户sudo权限 切换到root用户 su 编辑配置文件 vi etc sudoers 增加配置 xff08 按i开始编辑 xff0c Esc
  • 计算机网络/谢希仁(第八版)第四章习题

    4 01 网络层向上提供的服务有哪两种 xff1f 试比较其优缺点 答 xff1a xff08 1 xff09 面向连接服务 xff08 或虚电路服务 xff09 和无连接服务 xff08 或数据报服务 xff09 xff08 2 xff0
  • Nginx正向代理任何域名的实现

    正向代理是一种代理方式 xff0c 在代理服务器和客户端之间建立连接 xff0c 并代表客户端向目标服务器发起请求 在正向代理模式下 xff0c 目标服务器并不知道请求来自代理服务器 xff0c 而是以为请求来自客户端 要在nginx中实现
  • MySQL设置允许远程连接与用户(Linux系统)

    要允许MySQL远程连接 xff0c 需要进行以下步骤 xff1a 修改MySQL配置文件 在Ubuntu上 xff0c MySQL的配置文件通常位于 etc mysql mysql conf d mysqld cnf或 etc mysql
  • 用Swift开发一个简单的iOS备忘录列表应用程序

    iOS提供了许多在应用程序里面可以调用的框架 xff0c 下面列举一些 xff1a 1 UIKit框架 xff1a 用于iOS用户界面设计 xff0c 包括按钮 标签 文本框 表格等控件 2 Foundation框架 xff1a 包含了iO
  • 【MATLAB】SIMULINK 基本模块的使用

    以下是使用SIMULINK构建基本通信系统模型的步骤 xff1a 1 打开MATLAB xff0c 点击SIMULINK图标 xff0c 创建一个空模型 2 从库浏览器中拖拽 信号发生器 Signal Generator 模块和 示波器 S
  • 【MATLAB】构建 SIMULINK 子系统和模块的封装

    构建SIMULINK的子系统可以使用自建模块进行封装 xff0c 帮助文档编写 xff0c 并掌握模型空间与MATLAB命名空间的交互 具体步骤如下 xff1a 1 创建自定义模块 在Simulink中 xff0c 可以使用Subsyste
  • rmmod时提示 rmmod : chdir(/lib/modules): No such file or directory

    insmod后 xff0c 使用lsmod查看 xff0c 如果成功则可以看到刚才安装的module 此时如果修改了module代码要重新安装 xff0c 则需要先rmmod刚才安装的模块才能重新安装 xff0c 否则在insmod时会提示
  • 无源蜂鸣器按特定频率发出相对应的音调

    蜂鸣器是什么 xff1f 蜂鸣器是什么呢 xff1f 相信大家在做项目中肯定多多少少都会用到蜂鸣器 xff0c 蜂鸣器呢是一种一体化结构的电子讯响器 xff0c 采用直流电压供电 xff0c 广泛应用于计算机 打印机 复印机 报警器 电子玩
  • 树莓派上安装Pytorch

    没有踩坑和报错 xff0c 浅浅记录以下 将torch 1 7 0a0 cp37 cp37m linux armv7l whl和torchvision 0 8 0a0 43 45f960c cp37 cp37m linux armv7l w
  • FreeRTOS学习记录(3)——任务创建与启动总结

    对FreeRTOS的使用过程进行精简后会发现 xff0c 它的整个过程其实非常简单 xff0c 首先创建任务 xff0c 其次登记任务 xff0c 根据任务所登记的位置不断开始执行任务 下面进行详细的解释 创建任务 xff0c 这个过程中会
  • 执行HQL直接被退出:Remote side unexpectedly closed network connection

    执行HQL直接被退出 xff1a Remote side unexpectedly closed network connection 文章目录 执行HQL直接被退出 xff1a Remote side unexpectedly close
  • 使用mybatisplus要导入的依赖

    lt dependency gt lt groupId gt com spring4all lt groupId gt lt artifactId gt spring boot starter swagger lt artifactId g
  • Hadoop中HDFS的读写流程详解

    一 HDFS写流程示意图 xff1a xff08 1 xff09 客户端通过Distributed FileSystem模块向NameNode请求上传文件 xff0c NameNode检查目标文件是否已存在 xff0c 父目录是否存在 检查
  • 基于树莓派(python)的平衡小车

    目前普遍是STM32或者51来实现平衡小车 xff0c 基于树莓派的平衡小车少见 xff08 因为树莓派适合用于数据处理 xff09 但有部分同学的毕设选择了用树莓派来做平衡小车的 xff0c 接下来分享一下基于树莓派的平衡小车如何完成 驱
  • BGP双平面架构

    要求 xff1a PC1 PC3 PC5为电信面路由 xff0c PC2 PC4 PC6为联通面路由 正常情况下 xff0c 电信面路由走AS1 xff0c 联通面路由走AS2 xff0c 当R9与R1之间的线路发生故障时 xff0c 电信
  • 宿主机可以正常上网,虚拟机不能上网的问题

    宿主机可以正常上网 xff0c 虚拟机不能上网的问题 问题描述 宿主机 xff1a Windows 10 虚拟机 xff1a VMware Ubuntu 14 04 6 LTS 之前配置过一个主节点 xff0c 三个从节点 宿主机 xff0
  • Jlink调试2440进不了中断的看这里

    很多人学习2440都是从裸机开始的 刚开始的小菜LED xff0c 然后定时器 按键这些常用内部外设 xff0c 最后则是LCD Nand等复杂外设 用Jlink裸机调试2440小程序时 xff0c 中断的调试是一个重要内容 像定时器 按键
  • 在Eclipse中运行第一个MapReduce程序

    这是Hadoop学习全程记录第2篇 xff0c 在这篇里我将介绍一下如何在Eclipse下写第一个MapReduce程序 新说明一下我的开发环境 xff1a 操作系统 xff1a 在windows下使用wubi安装了ubuntu 10 10
  • 论文笔记:Learning Deep Features for Discriminative Localization

    一 这篇论文解决什么问题 原始问题 xff1a Weakly supervised object localization xff0c 研究发现 xff0c 图像分类任务上训练的CNN xff0c 可以直接用于物体定位 两个子问题 xff1