细节问题思考

1.为什么high level特征位置信息不精确?

fpn:The bottom-up feature map is of lower-level semantics, but its activations are more accurately localized as it was subsampled fewer times.

进一步问题:为什么下采样或者说pooling会导致位置信息不精确?

首先明确卷积层卷积后其实是有位置信息的,但经过pooling之后,对于每个pooling里面框住的像素丢失了位置信息,但两个pooling之间框住的部分像素的位置信息其实是保留了的。为什么?因为max-pooling取的是pooling框的最大值,只保留了最大值的值,但具体在pooling框的哪个位置并没有保留。不仅仅是max-pooling,mean-pooling也一样没有保留。

https://blog.csdn.net/bojackhosreman/article/details/78081422

个人觉得,高层检测物体的性能不好,除了高层特征的位置信息不精确,还有就是高层的感受野大,大感受野其实更多的是平移不变性,但检测位置其实是需要的平移不变性。

再进一步的问题:那为什么还要采用pooling或者maxpooling?

因为需要分类,需要抽取特征,分类需要平移不变性,并且减少了参数量

2.如果人们选择图像中的连续范围作为池化区域,并且只是池化相同(重复)的隐藏单元产生的特征,那么,这些池化单元就具有平移不变性 (translation invariant)。

也就是说在池化框住的范围内,是具有平移不变性的。

Deep Learning Review(发表在Nature)中提到了池化层能够reduce the dimensionality of the representation, create an invariance to small shifts and distortions.

池化层能够降低特征表示的维度这个很好理解,伴随来的副作用是局部特征信息的损失,想象如果池化层的filtering bank不是通常的2x2维的矩阵,而是更大维度的矩阵,用max pooling 或者average pooling,信息会损失更多,而且因为每层卷积后都跟着池化层,实际上是相当于在特征的每个提取阶段,从低级特征到中级特征再到高级特征,都有略微的信息损失,因为做了多层的pooling,而不是只做一次pooling,这也是设计上的一个trick啊.这是计算复杂度和性能的trade-off

其实pooling的目的就是为了使参数量减少,因为根本不需要那么多参数。pooling也只能做到在极小范围内的平移不变性,旋转和 伸缩是做不到的。其实不变性都是特征工程时代的概念了,现在在数据量极大的情况下,样本覆盖了足够多的variance,dnn自动就会把各种不变性学习出来。

3.以前自己认为识别只需要语义信息,但这篇博客中https://www.aiuai.cn/aifarm119.html的人脸那个例子发现,识别不仅仅需要语义信息,也需要位置信息,或者说整体信息和局部信息。以前的分类网络的设计是先经过卷积层,然后fc,其实也就是一个局部特征提取并且保留局部的空间位置信息,fc相当于整个图片的一个卷积,也就是从前面的具体特征抽一个整体的特征。局部信息拥有跟多的局部信息但缺乏平移不变性,整体信息正好相反。

总结一下:前面层由于在原图的感受野小,抽取的是局部特征,这个特征提取器就是卷积;后面的层由于在原图的感受野大,抽取的是大的局部特征或者说整体特征。无论是分类还是检测,局部到整体还必须保证位置信息。这个位置信息对于分类来是两个特征的相对位置关系,对于检测来说是具体的坐标数值和相对位置关系。

4.为什么高层有更多的语义信息?

感受野大了,还有就是通过多层pooling进行了特征抽取

5.rfcn为什么最后要用mean pooling

实际上mean pooling也没有保留位置信息,

但反向传播的时候会让pooling框的几个值都获得梯度进行更新

http://yann.lecun.com/exdb/publis/orig/boureau-cvpr-10.pdf

6.为什么图像金字塔有很高的时间和计算量消耗?

我采用的图像金字塔train的时候用多个image scale,测试用一个scale。如果你测试使用放大的scale,本身计算量就要增大,因为输入增多了;如果使用小的scale,还好。训练的时候,因为用了多个尺度,其实就是数据增强,如果训练10个epoch时间就会增加,因为每个epoch的图片数量增加,如果你是放大的图片本身计算量和时间也要增加

7.为什么图像金字塔的效果好?

类似于数据增强,让网络能适应多尺度的形变。其实做一个分类识别,难点也就在于形变(或者说不通的pattern),尺寸变换,位置变换

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 }
span.s1 { font: 12.0px "Helvetica Neue" }

原文地址:https://www.cnblogs.com/ymjyqsx/p/9585803.html

时间: 2024-10-19 23:42:33

细节问题思考的相关文章

从网站细节入手提高易用性

信息系统 存储了大量信息,提高对信息查找的效率,其系统的可用性会大大的提高.那如何提高效率呢?哪哪些方面入手呢? 想要提高效率,首先简化操作必不可少,拿jc系统来说,基础系统在检索特定类型的时候,用了下拉列表和搜索框: 管理员要查看某班学生,如下图,需要单击两次鼠标,选定一个下拉列表.操作三个下拉列表时,需要点6下. 接下来一起看一下大家每个人都熟悉的天猫,虽然天猫是一个购物网站,但他的商品种类非常非常的多,设计到的分类也十分复杂,那么天猫是一个购物系统的同时,也是一个庞大的信息管理系统,我们有

快速开发后的思考

一个月前我们启动了一个看起来像是“闪电计划”的项目,用两周的时间完成系统的改版,内容包括原型设计.界面设计.开发.测试.上线.时间紧任务重,看起来有点像不可完成的任务.最终通过整个团队的密切配合,和包括周末在内的加班加点按时完成了任务.但仅仅是完成,并未出彩.这是我第一次和整个团队一起参与较为完整的一次项目开发,从上线前到上线后,整个过程中似乎总是不那么平坦,有许多细节值得思考.但是时间紧急来不及追究,现在有必要静下来回顾思考,有哪些好的地方是可以继续沿用的,有哪些差的地方是需要改进的. 我们现

更多细节的理解RSA算法

一.概述 RSA算法是1977年由Ron Rivest.Adi Shamir 和 Leonard Adleman三人组在论文A Method for Obtaining Digital Signatures and Public-Key Cryptosystems提出的公钥加密算法.由于加密与解密使用不同的秘钥,从而回避了秘钥配送问题,还可以用于数字签名.该算法的诞生很大程度上有受到了论文New Directions in Cryptography(由Whitfield Diffie和Marti

[BZOJ] 1620: [Usaco2008 Nov]Time Management 时间管理

1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 850  Solved: 539[Submit][Status][Discuss] Description Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. He has N jobs

转载: 为什么你这么努力却毫无进步?

转载: 为什么你这么努力却毫无进步? "努力就能成功"是一句再虚假不过的鸡汤,有太多人努力坚持,到最后却收效甚微. 你是不是也在无用的努力着?如果是,你有没有想过更深层次的原因呢? 这篇文章也许才是"努力"的正确打开方式,作者通过扎实的论述告诉你,努力不是一句简单的口号,而一套完整科学的方法论.读完这篇文章,你会明白," 找到解决问题的方法,比培养努力的形式更为重要. " 你有没有试过,很努力坚持去做一件事,到头来收效甚微,进步缓慢? 现在很多文

应用程序框架实战二十五:查询条件(规约模式应用)

前面已经做了一些准备工作,本篇将介绍查询条件的封装,它是规约模式的一个应用. 规约使用一个对象来封装谓词,我之前已经介绍过它在验证方面的应用,本篇是规约模式在查询方面的应用. 规约的强大之处在于,能够将一堆杂乱无章的条件判断或查询条件封装起来,以一个清晰的概念来表达,并使得这些谓词具备了可复用的能力. 首先在Util.Domains项目的Repositories目录中创建ICriteria接口,这个接口表示一个查询条件,代码如下. using System; using System.Linq.

记一次惨痛的线上bug

讲述背景,刚入职新公司2个月的时候,接手一个红包系统.资历尚浅,对业务也不是很熟悉.公司开发新的平台,需要使用红包功能来进行推广,按照产品的需求,进行开发...然而,问题就出在这里,红包接口比较陈旧,许多代码并有过多注释(甚至多出注释不全,注释出错),接口参数参差不齐,看的很累. 起先,将系统中所有调用红包的地方,都改成调用我的红包系统.和某端联调时,出现各种bug,参数无规约,返回参数不明确,(不知道要返回些啥,无明确需求文档),最后还是某端哥们,将原来的sql提供给我才得以解决此问题. 接着

int vs Integer

在项目开发过程中,有时候在选择int还是Integer会有些纠结.今天就来聊一下这个问题.当然,下面所说的基本也适用于java中其他基本类型和其包装类型. Definitions: int是原始类型,并不是一个Object.int的取值范围为-2的31次方到2的31次方.int的在计算时具备非常高的性能,这也是int的一大优势. Integer是int的包装类,Integer是包含一个int字段的Object.可以理解为Integer用一个箱子把int给装起来了. Which is better

为什么你把项目管理的书看完了还是不能带好一个团队?

相信我们每个人都渴望自己所处的团队能够进行更好的协作.现在的技术无疑可以帮助我们更好的实现这一点,但同时我们也清楚工具不是万能的,它们能做的也只是一部分而已,最终能做出重大改变的还是使用这些工具的人. 问题是这些工具的发展速度太快,人们去学习使用它们的速度已经跟不上.那么我们如何做才能填补这个差距呢?一年前我们就开始尝试去找出这个问题的答案.我们通过借鉴数十个协作社区和调研组织的集体经验,在本文中将给出我们的答案. 我们的大部分企业都有着一系列的标准工具来帮助我们进行团队建设,领导,和管理.比如