博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
细节问题思考
阅读量:6080 次
发布时间:2019-06-20

本文共 2258 字,大约阅读时间需要 7 分钟。

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.为什么高层有更多的语义信息?

   1.从可视化实验看到的,越到高层分辨率越低,并且越模糊

 2.感受野大了。比如浅层可能只关注了车的的一些局部纹理,中层能感受野扩大后进一步看到轮胎,高层可能就能识别出是车了。还有就是通过卷积一层一层的提取特征,到后面是把特征拼接起来

http://baijiahao.baidu.com/s?id=1573869113211570&wfr=spider&for=pc这个讲小挎包那个例子还是说的很好

 

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),尺寸变换,位置变换

 

 

你可能感兴趣的文章
基于Spring Boot实现图片上传/加水印一把梭操作
查看>>
关于js、jq零碎知识点
查看>>
有赞跨平台长连接组件设计及可插拔改造
查看>>
高德,腾讯地图 --> 逆地址解析(坐标位置描述)
查看>>
nodejs流之行读取器例子
查看>>
源码|HDFS之NameNode:启动过程
查看>>
[译] 什么是Javascript中的提升
查看>>
阿里巴巴、百度、腾讯都在用的Java架构师知识体系
查看>>
Python 异步网络爬虫 I
查看>>
像 QQ 一样处理滑动冲突
查看>>
01、Handler的那些事
查看>>
Mac OS X x64 环境下覆盖objective-c类结构并通过objc_msgSend获得RIP执行shellcode
查看>>
[译] 如何写出更好的 React 代码?
查看>>
Android动画:这里有一份很详细的 属性动画 使用攻略
查看>>
RxJava2 实战知识梳理(5) 简单及进阶的轮询操作
查看>>
js call,apply,bind总结
查看>>
Spring Boot 中使用 Java API 调用 lucene
查看>>
从 Java 层看 React-Native 通信机制
查看>>
来来来!关于iOS基础总结咱俩好好唠唠
查看>>
兑吧:从自建HBase迁移到阿里云HBase实战经验
查看>>