RCNN
1. Rcnn的Motivation是什么?
目标检测进展缓慢,CNN在 图片分类 中取得重大成功。应用CNN将检测问题转化成
分类问题。
2. 候选框提取
一张图片,利用seletive search方法从中提取出2000个候选框。由于候选框大小不一,考虑到后续CNN要求输入的图片大小统一,将2000个候选框全部resize到 227×227 分辨率;
3. 目标检测为什么需要候选区域,有哪些生成候选区域的方法?
在目标检测中,为了定位到目标的具体位置,通常会把图像划分成很多子块。再把这些子块依次送入目标识别模型中。
滑动窗口法(sliding window)
滑动窗口的方法就是按照子块的大小在整幅图像上穷举所有子图像块。这种方法产生的数据量想想都头大。效率较低,对于实时性要求高的情况不建议使用。Seletive Search
- 滑窗法类似穷举进行图像子区域搜索,但是一般情况下图像中大部分子区域是没有物体的。只对图像中最有可能包含物体的区域进行搜索以此来提高计算效率。
- 主要观点:图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。首先,对输入图像进行分割算法产生许多小的子区域。其次,根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并,不断的进行区域迭代合并。每次迭代过程中对这些合并的子区域做bounding boxes。
4. 特征提取+分类器的过程
- 227*227的大小并输入到CNN,将CNN的fc7层的输出作为特征;
- 将每个Region Proposal提取的CNN特征输入到SVM进行分类;
- 得到SVMs对于所有Proposal的评分结果,将一些分数较低的proposal去掉后,剩下的proposal中会出现候选框相交的情况。采用非极大值抑制技术,对于相交的两个框或若干个框,找到最能代表最终检测结果的候选框。
5. RCNN的缺点?
- R-CNN需要对SS提取得到的每个proposal进行一次前向CNN实现特征提取,因此计算量很大,无法实时;
- 由于全连接层的存在,需要严格保证输入的proposal最终resize到相同尺度大小,这在一定程度造成图像畸变,影响最终结果。
SPPNet
1. Sppnet的Motivation是什么?
- 卷积层对输入图像大小不作特别要求,但全连接层要求输入图像具有统一尺寸大小。
- R-CNN在训练和测试是需要对每一个图像中每一个proposal进行一遍CNN前向特征提取,如果是2000个propsal,需要2000次前向CNN特征提取。
2. sppnet如何做到任意大小featuremap得到固定全连接?
任意大小的feature map首先分成16、4、1个块,然后在每个块上最大池化,池化后的特征拼接得到一个固定维度的输出。以满足全连接层的需要
3. sppnet只需要进行一次cnn特征提取?
SPP-net只需要进行一次前向CNN特征提取,即对整图进行CNN特征提取,得到最后一个卷积层的feature map,然后采用SPP-layer根据空间对应关系得到相应proposal的特征。
Fast-Rcnn
1. fastrcnn的motivation是什么?
fastrcnn可以看成是一个joint training的sppnet。加入ROI pooling层解决需要多次计算cnn特征的问题。
2. 具体过程?
- 利用selective search 算法在图像中从上到下提取2000个左右的建议窗口(Region Proposal);
- 将整张图片输入CNN,进行特征提取;得到一个整个的Feature map
- 把建议窗口映射到CNN的最后一层卷积feature map上;
- 通过RoI pooling层使每个建议窗口生成固定尺寸的feature map;
3. Rol pooling layer的作用?
- 将image中的rol定位到feature map中对应patch
- 是用一个单层的SPP layer将这个feature map patch下采样为大小固定的feature再传入全连接层
ROIpooling更具字面意思就是一个pooling,它是把不同尺寸的featuremap输入,得到相同尺寸的featuremap的输出。
ROI是Region of Interest的简写,指的是在“特征图上的框”;
1)在Fast RCNN中, RoI是指Selective Search完成后得到的“候选框”在特征图上的映射,
2)在Faster RCNN中,候选框是经过RPN产生的,然后再把各个“候选框”映射到特征图上,得到RoIs。
候选框-映射共享featuremap-不同大小的featuremap-spp-相同大小的featuremap。
4. 如何引入多任务loss的?
- 利用Softmax Loss(探测分类概率) 和Smooth L1 Loss(探测边框回归)对分类概率和边框回归(Bounding box regression)联合训练.
- 将边框回归直接加入到CNN网络中训练
Faster-Rcnn
FasterRcnn中RPN的引入,可以说真正意义上将检测流程融合成一个网络。
Faster RCNN = RPN + Fast RCNN
阅读这篇博客https://blog.csdn.net/lanran2/article/details/54376126,https://blog.csdn.net/lanran2/article/details/60143861写得很好,比较通俗易懂。我大致总结一下。
关于RPN
-
RPN网络大致处于整个网络的中前端,RPN输入的featuremap是一个共享的featuremap,为RPN和后面的ROI共同使用。
公共的Featuremap是77512(视网络结构),输入RPN层,经过一个33的卷积,得到77256的输出,相当于77个256维向量,相当于7*7的特征图(比原图缩小了32倍)上每一个点都有一个256维的向量,每个点的256维度向量接两个FC,一个预测该点是前景还是背景。一个预测该点相对于原图的偏移。
7*7上每个点相对与原图来说,都是对应于一个框。那这个框是什么样呢,就是基于锚点(anchor)来讲的。锚点(x,y,w,h)决定了一个框的大小。fasterrcnn中这个框是确定的,一共有9个。
那么77上每一个点可以在原图上有9个框,那么每一个点对应的256维度的向量可以输出29个判断是否是前景的概率值。也可以输出49个判断anchorbox与原图的偏移。 那么77256会得到 7729个概率,774*9个坐标。
基于上面两个步骤就可以得到候选框。
- RCNN系列目标检测都包含四个基本步骤:
- 候选区域生成
- 特征提取
- 分类
- boundingbox修正