Object Detectors Emerge in Deep Scene CNNs(2015)

2023-12-26 21:20

本文主要是介绍Object Detectors Emerge in Deep Scene CNNs(2015),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


文章目录

  • Abstract
  • Introduction
  • ImageNet-CNN and Places-CNN
  • Uncovering the CNN Representation
    • 简化输入图像
    • 可视化单元的感受野和激活模式
  • Conclusion

hh

Abstract

随着卷积神经网络(CNN)等新的视觉处理计算架构的成功,以及对包含数百万个标记示例的图像数据库的访问(例如:(ImageNet, Places),计算机视觉的最新技术正在迅速发展。持续进步的一个重要因素是理解由这些深层架构的内层学习的表示。在这里,我们展示了训练cnn来执行场景分类的目标检测器。由于场景是由物体组成的,用于场景分类的CNN会自动发现有意义的物体检测器,代表学习到的场景类别。随着学习识别场景而出现的物体检测器,我们的工作表明,同一个网络可以在单个前向传递中执行场景识别和物体定位,而无需明确地教授物体的概念

Introduction

事实上,物体的强内部配置使得有用部件的定义缺乏约束:算法可以找到不同的和任意的部件配置,所有这些都具有相似的识别性能。在场景的情况下,表现更加清晰。场景类别由它们所包含的对象定义,在某种程度上,由这些对象的空间配置定义。例如,卧室的重要组成部分是床,一张边桌,一盏灯,一个橱柜,以及墙壁,地板和天花板。因此,对象代表了场景的分布式代码(即,对象类在不同的场景类别之间共享)。重要的是,在场景中,物体的空间结构,虽然紧凑,但自由度大得多。我们认为,正是这种松散的空间依赖性使得场景表示与大多数对象类不同(大多数对象类在部件之间没有松散的交互)。(说白了就是提取特征)

这篇论文的主要贡献是表明,在训练有素的CNN中,目标检测出现在识别场景中,甚至比使用ImageNet训练时还要多。这是令人惊讶的,因为我们的结果表明,即使与ImageNet不同,没有为对象提供监督,也可以找到可靠的对象检测器。虽然深度神经网络的对象发现之前已经在无监督设置中展示过(Le, 2013),但在这里我们发现,在调整为场景分类而不是对象分类的监督设置中,可以自然地发现更多的对象

重要的是,CNN内部对象检测器的出现表明,单个网络可以支持多个抽象层次(例如,边缘、纹理、对象和场景)的识别,而不需要多个输出或网络集合这里我们展示了同一个网络可以在单个前向传递中同时进行对象定位和场景识别

ImageNet-CNN and Places-CNN

与来自ImageNet-CNN的特征相比,来自Places-CNN的深度特征在与场景相关的识别任务上表现得更好。例如,与Places-CNN在场景分类上达到50.0%相比,ImageNet-CNN结合线性支持向量机在相同的测试集2上仅达到40.8%,这说明了以场景为中心的数据的重要性

Uncovering the CNN Representation

我们的目标是理解网络正在学习的表示的本质

简化输入图像

简化图像是一种众所周知的测试人类识别能力的策略。例如,可以从图像中删除信息,以测试它是否对特定对象或场景进行诊断
受这些方法的启发,我们的想法如下:给定一个被网络正确分类的图像,我们希望简化该图像,使其保留尽可能少的视觉信息,同时在同一类别中仍然具有较高的分类分数。这个简化的图像(称为最小图像表示)将允许我们突出显示导致高分类分数的元素。

在第一种方法中,给定图像,我们创建边缘和区域的分割,并迭代地从图像中删除片段在每次迭代中,我们移除正确分类分数下降最小的部分,直到图像被错误分类。最后,我们得到原始图像的表示,它包含了网络正确识别场景类别所需的最少量的信息。在图2中,我们展示了这些最小图像表示的一些例子。注意,物体似乎为网络识别场景提供了重要的信息。例如,在卧室的情况下,这些最小的图像表示通常包含床的区域,或在艺术画廊类别中,墙壁上绘画的区域。

可视化单元的感受野和激活模式

虽然理论上的RF大小可以在给定网络架构的情况下计算(Long et al., 2014),但我们对RF的实际或经验大小感兴趣。我们期望经验RFs比理论RFs更好地定位,更能代表它们捕获的信息,使我们能够更好地理解CNN的每个单元学习了什么

因此,我们提出了一种数据驱动的方法来估计每层中每个单元的学习RF。它比反卷积网络可视化方法更简单(Zeiler & Fergus, 2014),并且可以很容易地扩展到可视化任何学习的CNNs。

如图3所示,估计给定单元的RF的过程如下:作为输入,我们使用一个包含200k张图像的图像集,其中场景和对象的分布大致相等(类似于第2节)。然后,我们为给定单元选择具有最高激活的前K张图像。对于K张图像中的每一张,我们现在想要准确地确定图像的哪些区域导致高单位激活。为了做到这一点,我们在图像的不同位置使用小的随机遮挡器(大小为11×11的图像补丁)多次复制每个图像。具体来说,我们在一个步幅为3的密集网格中生成闭塞点。这导致每个原始图像大约有5000个遮挡图像。我们现在将所有被遮挡的图像输入到同一个网络中,并记录与使用原始图像相比激活的变化。如果有很大的差异,我们知道给定的补丁是重要的,反之亦然。这允许我们为每个图像构建差异图

每个滑动窗口刺激在不同的空间位置包含一个小的随机斑块(如红色箭头所示)。通过比较滑动窗口刺激的激活响应与原始图像的激活响应,我们得到了每个图像的差异图(中上)。通过汇总排名靠前的图像的校准差异图(中下),我们获得该单元的实际RF(右)。

最后,为了整合来自K张图像的信息,我们将差异图集中在导致给定图像最大激活的单元的空间位置周围。然后我们对重新中心的差异图进行平均,以生成最终的RF。
在图4中,我们可视化了来自Places-CNN和ImageNet- CNN的4个不同层的单元的RF,以及RF内得分最高的激活区域。我们观察到,随着层数的加深,RF大小逐渐增加,激活区域在语义上变得更有意义。此外,如图5所示,我们使用RFs使用不同单元的特征映射对图像进行分割。
最后,在表2中,我们比较了不同层的RFs的理论和经验大小。正如预期的那样,RF的实际尺寸比理论尺寸小得多,特别是在后面的层中。总的来说,这种分析使我们能够通过精确地聚焦于每张图像的重要区域来更好地理解每个单元。

Conclusion

我们发现,目标检测器的出现是学习对场景类别进行分类的结果,这表明单个网络可以支持多个抽象层次(例如,边缘、纹理、对象和场景)的识别,而不需要多个输出或网络。虽然训练网络完成几个任务并使用最后一层作为输出是很常见的,但这里我们展示了可以在每一层提取可靠的输出。由于对象是组成场景的部分,因此在网络的内层中学习对不同场景之间有区别的对象进行调整的检测器。请注意,只有针对特定场景识别任务的信息对象才会出现。未来的工作应该探索哪些其他任务将允许在没有对象标签的显式监督的情况下学习其他对象类。

这篇关于Object Detectors Emerge in Deep Scene CNNs(2015)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/540814

相关文章

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

error while loading shared libraries: libnuma.so.1: cannot open shared object file:

腾讯云CentOS,安装Mysql时: 1.yum remove libnuma.so.1 2.yum install numactl.x86_64

java基础总结12-面向对象8(Object类)

1 Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗

CF Bayan 2015 Contest Warm Up B.(dfs+暴力)

B. Strongly Connected City time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/probl

CF Bayan 2015 Contest Warm Up A.(模拟+预处理)

A. Bayan Bus time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/problem/A The fi

2015年校赛总结

题目名为“校赛总结”,其实更想换成“Rainbow为什么五题滚粗?!”。作为今年校赛大二没拆的两个队伍之一,结果打成这样,没脸见人了,总结起来就是我认为自己今天SB了。主要有以下几点: 1.我今天状态的确不好,最后卡的那道B题跟去年在农大校赛上遇见的那题类似,在最后那段时间我已经有思路了,可是由于当时不敢写。等到最后15分钟才开始敲,加上我用很麻烦的Dijstra那种方法,调试起来好多细节要处理

百度之星 2015 复赛 1001 (数长方形)

数长方形    Accepts: 595    Submissions: 1225  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊喜欢玩木棒。一天他在玩木棒的时候,发现一些木棒会形成长方形

百度之星 2015 初赛(1) 1002 找连续数

找连续数      Accepts: 401      Submissions: 1911  Time Limit: 2000/1000 MS (Java/Others)      Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是

2015多校联合训练第三场Work(hdu5326)

题意: a是b的上司,b是c的上司,则a是c的上司,问构成一个树种,有多人是 k个人的上司 思路: 先找出root,然后dfs一下就行 #include <bits/stdc++.h>#define LL long longusing namespace std;const int MAXN = 1e6;int f[105];int n, k;int mp[101][101];

2015年多校联合训练第三场RGCDQ(hdu5317)

题意: f(i)代表i数中有的素数的种数,给出区间[l,r],求区间内max(gcd(f(i))), 由于i最大是1e6,2*3*5*7*11*13*17>1e6,故最多不超过7种素数, 先打表打出1e6内的素数种数表,然后用sum[i][j]代表1-i个数中,还有j个素数的个数,最后用sum[r][j] - sum[l-1][j]求出区间内含有j个素数的数的个数,暴力找出1,2,3,4,5