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)。
也就是说在池化框住的范围内,是具有平移不变性的。
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),尺寸变换,位置变换