Learning Deep Features for Discriminative Localization

news2025/4/24 20:02:49

Some Words: 这里主要是我阅读paper的笔记

这篇文章主要是2016年CVPR的一篇文章,中文名是 学习用于判别性定位的深度特征,


(一)Abstract:

        在这篇工作中,我们又重新探讨了全局平均池化层,并且阐释了CNN网络是如何显式的拥有定位的能力,尽管是在图像级的标签上进行的训练。尽管这种方法常用在训练时候进行正则化,但是我们也发现它建立了通用局部的深度表示来应对于各种任务并且也得到了证明;

=》提出 全局平均池化层,它主要有两个功能:(1)很简单的正则化(2)使网络具有定位的能力;在这里主要讲第二种。

一些参考知识:

全局平均池化层(Global Average Pooling Layer)是一种常用于深度学习卷积神经网络(CNN)中的特征提取层。

在传统的卷积神经网络中,通常在最后的卷积层之后使用全连接层来进行分类任务。然而,全连接层具有大量的参数,容易导致过拟合的问题。为了减少参数量和提高网络的泛化能力,全局平均池化层被引入。

全局平均池化层的作用是将整个特征图的空间维度进行池化,输出一个固定长度的向量。具体而言,对于输入的特征图,全局平均池化层会计算每个通道的平均值,然后将这些平均值组合成一个向量作为网络的输出。这样做的效果是将高维的特征图转换为一个低维的向量表示。

全局平均池化层的优点是它减少了参数量,因为它没有可学习的权重参数,只是进行简单的平均计算。同时,它也有正则化的效果,防止过拟合。此外,全局平均池化层的输出是固定长度的,不受输入图像大小的影响,这使得网络对于不同尺寸的输入具有一定的鲁棒性。

在许多深度学习模型中,全局平均池化层通常用于替代全连接层,作为最后一个特征提取层。这样的设计可以减小模型的复杂性,并且在训练和推理阶段都可以提供高效的计算。


(二)Introduction:

        Zhou等人最近的工作表明,不同层的卷积神经网络(CNN)的卷积单元实际上表现为对象检测器,即能够卷积单元的定位能力是存在的,但是到了全连接层的时候则会消失;因此,最近一些全卷积网络也提出,例如the Network in Network(NIN)和GoogLeNet等,能够避免使用全连接网络减少参数同时保持好的表现。

        为了解决这个问题,发现了 全局平均池化层,它不仅仅可以正则化使得网络避开过拟合,同时它的加入使得网络改进也能够保留定位的能力直到最后一层;

        这个改进能够使得在单个前向传递的过程中更容易地识别判别的图像区域从而应用于各种任务,即使初始网络训练的目的不一致的。

         如上图,主要是结合类激活图(CAM)对全局平均池化层进行的修改使得用于分类的CNN能够分类预想和在前向传递中定位特定类图像的区域。例如,牙刷对于刷牙,链锯对于砍树;

        同时,我们也证明了这种方法中深度特征的定位能力能够较为容易地迁移到其他的识别数据集上;

Related Work:

目前,我们已经得知,CNN的卷积单元具有定位对象的能力。但是在这篇Paper中,我们主要推广能力,不仅仅是定位对象,而且能够定位用于判别的图像区域。这里,主要介绍两项与此相关的工作:

(1)弱监督对象定位,一些相关的定位工作以及本工作精确定位的贡献点...

(2)可视化CNNs,一些工作是忽略全连接层,另一些虽然可以反转全连接层来显示深层特征,但是并没有显示信息的相对重要性,因而我们的工作即是可以高亮对判别结果的区域,即更重要的信息。


(三)Class Activation Mapping

CAM主要的思想:我们首先在卷积层上施加全局平均池化层,之后我们对其输出的特征(获取的深度特征)放置到全连接层中,如果是分类的话有Softmax,期待输出一个不错的结果。鉴于这种简单的连接结构,我们将输出层权值反向投影到卷积特征映射上来识别图像区域的重要性,这种方法称之为CAM,即类激活映射。如下图,推导的公式可见原文,此处省略。

如图3中,即是对于6个类的CAM生成的例子。

Global average pooling (GAP) vs global max pooling(GMP):

        GAP和GMP是全局池化的两种常见的操作,从而来减少特征图的空间维度;两者相对而言,GAP 是对每个通道的平均值作为输出,更关注整体的特征;而GMP选择其中的最大值作为输出,更关注显著的特征;


(四)Weakly-supervised Object Localization:

        在本节中,我们评估在ILSVRC 2014基准数据集上训练时的定位能力。我们首先描述了实验设置和在其中使用的各种cnn模型。3.2我们验证了我们的技术在学习定位时不会对分类性能产生不利影响,并提供了弱监督对象定位的详细结果。

映射分辨率:即指在卷积神经网络(CNN)中,输入特征图与输出特征图之间的空间分辨率关系。在CNN中,通过卷积和池化等操作,输入特征图逐渐经过多个卷积层和池化层的处理,最终得到输出特征图。在这个过程中,特征图的空间分辨率通常会发生变化,一般是会变低。

        我们也发现,当最后一层卷积层的分辨率较高时,对定位表现出更好的能力。因而对网络进行稍微的调整,之后我们都加上卷积层、全连接层和Softmax用于1000类的分类,最后得到相应的-GAP网络。

Results:

验证了加入GAP相对保留了模型的分类性能,同时也增强了网络的定位能力...


(五)Deep Features for Generic Localization:

为了获取权重,我们训练一个线性向量机 linear SVM 在全局平均层的输出上。

5.1 Fine-grained Recognition

 数据集采用的是由边界注释的,从而能够对我们的定位能力进行一定的评估;

这个实验用来识别200不同种类的鸟,共做了三种实验,一种是没有使用bounding box, 一种是使用了*-GAP生成的bounding box,一种使用了bounding box标记。结果如下所示。可以看出,使用了*-GAP生成bounding box(第二种情况),可以很明显提高分类准确率。说明生成的bounding box能够包括重要的位置信息

5.2 Pattern Discovery

这节主要讲该技术应用到4个领域的例子。


 (六) Deep Features for Generic Localization

使用 AlexNet*-GAP,找到对每个类别贡献最大的激活图,之后找到对应区域并将其对应到原图。

从图中我们可以得知,分类器判别为起居室,检测出了沙发、椅子和电视,因而我们推测CNN学习了很多词语,每个单词都是用于判别特定类的,CNN则是学习这些引导CNN分类每一张照片。


(七)Conclusion

        在这个工作里,我们提出一个工作CAM(Class Activation Mapping)结合全局平均池化技术,这促使用于分类的CNN表现分类,不需要任何的边界框注释,类激活图使得再给定一个图像时能够可视化预测类的分数,高亮由CNN检测到的对象判别的部分区域。

        我们也在弱监督定位的ILSVRC benchmark上进行了验证,证明了我们应用了全局平均池化的CNN能够有着精准的定位表现。更多的是,也证实了这个CAM精准定位技术也能适用于其他的视觉识别任务,我们的技术也生成了通用的可定位的深层特征,帮助其他研究人员能够理解再其他任务中的识别基础。

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

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

相关文章

6、CCS 配置工程头文件批量添加路径的方法

1、进入到图示的框框里 2、编辑好需要添加的路径,并按ctrl c 3、选中include paths(-I)框框里的最后一条路径 4、然后ctrl v,这样路径就复制到预定义路径里了

领航优配:厄尔尼诺现象引发全球粮食危机,印度大米出口禁令引发恐慌性囤货

近期,全球多地遭受厄尔尼诺现象带来的极点气候影响,农业出产遭到严峻搅扰,粮食价格呈现大幅动摇。其中,印度作为全球最大的大米出口国,因为干旱导致大米产值下降,政府宣告制止部分大米出口,引发…

接口测试自动化:简化测试流程,提升效率

接口测试自动化:简化测试流程,提升效率 什么是接口测试自动化? 接口测试自动化是指使用特定的工具和技术来自动化执行接口测试的过程。通过编写脚本,自动化工具可以模拟用户与软件系统的交互,验证接口的功能和性能。…

Java SPI介绍

SPI Java SPI : Service Provider Interface 是Java平台提供的一种机制,用于动态的加载和扩展功能的机制,它为框架和库提供了一种松耦合的扩展方式,核心是解耦。 例如JDBC驱动,日志框架,等应用,它为开发…

【Axure教程】账单列表和详情

账单列表和详情页在支付系统中不仅是用户了解财务状况和跟踪交易的关键工具,还有助于提高支付安全性、解决问题以及满足法律和财务要求。因此,设计一个清晰、易用且功能丰富的账单管理系统对于支付系统的成功运营和用户满意度至关重要。 今天作者就教大…

端点中心(Endpoint Central)的软件许可证管理

软件许可证管理 (SLM) 是从单个控制台管理整个组织中使用的软件许可证的过程。软件许可证是由软件发行商或分销商制作的法律文件,提供有关软件使用和分发的规则和指南,本文档通常包含条款和条件、限制和免责声明。 软件许可证管理…

原型和原型链理解

这个图大概能概括原型和原型链的关系 1.对象都是通过 _proto_ 访问原型 2.原型都是通过constructor 访问构造函数 3.原型是构造函数的 prototype 4.原型也是对象实例 也是通过 _proto_ 访问原型(Object.prototype) 5.Object.prototype的原型通过 _proto_ 访问 为null 那么…

全排列——力扣46

文章目录 题目描述解法:回溯题目描述 解法:回溯 //version 1 vector<vector<int>> permute(<

运动耳机什么样式的好、比较好的运动耳机推荐

在各类耳机中&#xff0c;运动耳机可以说是适用场景针对性较强的一类耳机。毕竟在运动场景中&#xff0c;对耳机的某些性能要求比较高&#xff0c;如防水能力、佩戴稳定性等等&#xff0c;一般的非运动耳机很难满足这些需求。寻找一款合适的蓝牙运动耳机并不困难。相比普通蓝牙…

python项目virtualenv环境部署正式项目和后台运行实践

pycharm创建virtualenv环境的项目&#xff1a; 在本地虚拟环境项目路径下生成依赖包记录文件&#xff0c;然后上传到linux 服务器项目路径下&#xff1a; 注意注意&#xff1a;要在虚拟环境中生成&#xff0c;才能将所有的项目依赖包构建在 requirements.txt文件中。 pip3 fre…

黑客(自学)

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 行为&#xff1a;从编程开始掌握&#xff0c;前端后端、通信协议、什么都学。 缺点&#xff1a;花费时间太长、实际向安全过渡后可用到的关键知识并不多。…

Java【算法 04】HTTP的认证方式之DIGEST认证详细流程说明及举例

HTTP的认证方式之DIGEST 1.是什么2.认值流程2.1 客户端发送请求2.2 服务器返回质询信息2.2.1 质询参数2.2.2 质询举例 2.3 客户端生成响应2.4 服务器验证响应2.5 服务器返回响应 3.算法3.1 SHA-2563.1.1 Response3.1.2 A13.1.3 A2 3.2 MD53.2.1 Request-Digest3.2.2 A13.2.3 A2…

SQL | 过滤数据

4-过滤数据 4.1-使用WHERE子句 数据根据 WHERE 子句中指定的搜索条件进行过滤。WHERE 子句在表名&#xff08; FROM 子句&#xff09;之后给出。 select prod_name,prod_price from products where prod_price 3.49; 上述语句查询价格为3.49的行&#xff0c;然后输出名字和…

多路复用select实现

select函数 int select(int nfds, fd_set *readfds,fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);nfds:是三个集合中编号最高的文件描述符&#xff0c;加上1readfds/writefds/exceptfds: 可读集合/可写集合/异常集合timeout NULL&#xff1a;永久阻塞0&…

JS 解决鼠标悬浮显示弹窗 迅速离开时弹窗显示到其他位置的延迟问题

解决该问题的思路就是&#xff0c;判断当前鼠标的位置是否在某个div上&#xff0c;如果在这个div上则取消显示悬浮弹窗消息。 首先监听鼠标的移动事件 鼠标移动时判断是否在div里面进行移动了 clientX表示鼠标X的位置 client Y表示鼠标Y的位置 拿到要判断的div元素 获取off…

【Uni-App】uview 开发多端应用,密码显示隐藏功能不生效问题

出现的问题&#xff1a; 使用uview组件u-input框密码绑定时会出现右侧密码显隐图标不显示的问题 思路&#xff1a; 1.看了下uview源码&#xff0c;发现这有一段注释&#xff0c;我们需要把源码修改一下&#xff0c;问题出在这里 这行代码修改为 :password"password || …

spring按条件注入@Condition及springboot对其的扩展

概述 spring的ioc极大的方便了日常开发&#xff0c;但随着业务的迭代。配置的一些参数在某些情况下需要按条件注入。 比如原先定义的db公共模块下&#xff0c;相关的配置和工具类只是基于mysql的。但是后续有模块需要使用mongo/es等其他数据库&#xff0c;又想继续使用db公共…

七. 定时器

定时器 1. EPIT定时器(1) 特征&#xff1a;(2) 结构&#xff1a;(3) 工作模式&#xff1a;(4) 寄存器(5) 配置步骤(6) 定时器消抖 2. GPT 定时器(1) 特征(2) 结构(3) 工作模式(4) 寄存器<1> GPTx_CR 配置<2> GPTx_PR 分频<3> GPTx_SR 状态<4> GPTx_CNT…

Vue+SpringBoot后台管理系统:Vue3+TypeScript项目搭建(一)

写在开始:一个搬砖程序员的随缘记录文章目录 一、Node安装二、Vue CLI安装三、相关的版本四、创建Vue3TypeScript项目五、Vue项目初始化六、项目启动 一、Node安装 查看Note版本 node -v查看npm版本 npm -v然后将npm升级至最新版本 npm -g install npm将npm下载源换至http:…

分布式异步任务处理组件(八)

分布式异步任务组件网络通信线程模型设计-- 大概说一下功能场景&#xff1a; 从节点和主节点建立连接&#xff0c;负责和主节点的网络IO通信&#xff0c;通信动作包括投票&#xff0c;心跳&#xff0c;举证等&#xff0c;步骤为读取主节点的信息&#xff0c;写入IO队列中&…