一、滑动窗口
用已知尺寸的窗口遍历整个图像,生成很多子图像,漫无目的的搜索。
二、selective search
selective search在rcnn和fast rcnn中用到,它的具体做法是将图像分割成很多小的区域,计算区域之间的相似度(颜色、纹理等等),结合各尺度结果,进行融合,形成大一些的region。具体参见https://blog.csdn.net/qq_32172681/article/details/99083358
三、RPN(region proposal network),区域生成网络
本文主要讲解的是region proposal network,RPN是faster rcnn的核心,它的本质是基于滑窗的无类别obejct检测器,图像每个位置有多种类型的anchor boxes(region proposal),用这些region proposal 训练 faster rcnn,分类和框回归通过梯度下降反向传播调节网络参数,重新生成region proposal,再继续训练faster rcnn,不断重复这个过程。
1、anchor
anchor就是feature map上的一个像素,以该anchor为中心,可以生成k种anchor boxes(region proposal),每个anchor boxes有着不同的宽高比和缩放比,论文中使用的3种宽高比是(1:2,1:1,2:1),3种缩放比是(128,256,512),因此每个anchor产生9个anchor boxes。
2、RPN网络结构由三部分组成:
(1)头部:生成anchor
(2)中部, 分类分支(cls) 和 边框回归分支(bbox reg) 分别对这堆anchor进行各种计算:
( two stage型的检测算法在RPN 之后 还会进行 再一次 的 分类任务 和 边框回归任务,以进一步提升检测精度)
(3)尾部:通过对 两个分支的结果进行汇总,来实现对anchor的 初步筛除(先剔除越界的anchor,再根据cls结果通过NMS算法去重)和 初步偏移(根据bbox reg结果),此时输出的都改头换面叫 Proposal 了。
3、RPN生成这么多的region proposal,如何去除质量不好的呢?
(1)NMS:计算候选框和真实框的交并比,设置阈值threshold为0.7,只保留threshold>0.7的region proposal,这样可以减少anchor boxes的数量。
(2)框回归:使得anchor boxes的位置更接近真实值。
4、RPN分类分支,只需要判断候选区域是否含有物体,而不必判断是哪类物体,如何判断region proposal中是否含有物体呢?
方法就是,在训练的时候,用ground-truth bounding box做对比,若候选框与任意gt-box的IoU>0.7,就认为是positive anchors,同时该gt-box的位置参数就是box regression任务的标签。若与任意gt-box的IoU<0.3,就认为是negative anchors,介于0.3和0.7之间的,丢弃。