目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)

前言

有一些非常经典的应用于目标检测的理论知识,虽然之前看论文有看到过,但后面再次碰到又会忘记具体细节,因此值得记录下来。

一、Region Proposal Network (RPN)

RPN网络在2016年于Faster RCNN文章中首次被任少卿、何凯明等人提出来。
目标检测按照检测方法可以被归类为one-stage和two-stage方法。针对于two-stage方法,主要可分为目标定位和分类两个细分任务。而对图像分类又是属于最基础的传统卷积的方法。因此,如何对目标正确定位是一个比较棘手的问题。
传统的目标的定位的方法有如下:

  1. 使用滑动窗口进行图像检测。优点:能确保检测窗口覆盖到每一个目标。缺点:需要在图像的每个像素点均进行滑动,且需要多尺度的窗口进行滑动,而大多数滑动窗口都不包含对应的目标,造成不必要的计算。

  2. 使用RCNN中采用的selective search方法。它的思想是只选择有潜在目标的区域, 抛弃掉大部分没有目标的区域。 因此极大地减少了无用功, 提高了检测的效率。 常用的方法是利用图像中的颜色, 纹理, 形状等特征对图像进行分割。但是,因为selective search独立于分类网络,使用的是传统的先验信息,无法实现端到端的训练,因此同样也会导致目标检测速度较慢,实时性较差。

因此,为克服以上缺陷,Region Proposal Network (RPN)网络诞生。从如下图结果来看,其在目标检测准确率和性能上均有效果明显的提升。(属于Double win,没有牺牲性能来换取准确率)

目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)
1

RPN原理讲解

目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)
RPN原理非常简单,如上图,通俗来讲,输入是卷积神经网络从原始图像提取到的特征图(feature map),通过在特征图逐像素生成anchor,再对anchor进行回归偏移(位置及尺寸修正)和分类(二分类,判断是否包含object),来确定最终的候选区域(region proposal)。
其中,图像尺寸目标检测经典知识点汇总(一):RPN(以Faster RCNN为例),特征图尺寸目标检测经典知识点汇总(一):RPN(以Faster RCNN为例),特征图长宽尺寸远小于原始图像尺寸,因此相比于原始图像,feature map生成的anchor数目更少。

RPN在目标检测中的应用(Faster RCNN为例)

Faster RCNN模型主要分为如下四部分,如图
目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)

  1. 第一部分为conv layers,用基础的卷积神经网络来提取feature maps
  2. 第二部分为Region Proposal Network,RPN网络用于生成region proposals。
  3. 第三部分为RoI pooling,该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
  4. 第四部分为classifier,利用proposal feature maps判别proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。

1. Conv layers

Convlayer

2. RPN

RPN

如图,RPN网络有两个分支,分别用于box的回归(reg layer)和分类(cls layer):

  1. 针对cls layer(上面的分支),经过全卷积后维度为50x38x18 => 50x38x9x2,逐像素通过softmax分类anchors获得positive和negative分类。(二分类,positive表示anchor内有object的概率)
  2. 针对reg layer(下面的分支),经过全卷积后维度为50x38x36 => 50x38x9x4,逐像素计算对于anchors的bounding box regression偏移量,以获得精确的proposal。

1

如图,全卷积目的为调整通道数,调整目的如下:

  • 9表示9个anchor,由3个不同scale和不同的ratio组成的anchor,3*3=9。
  • 2k scores:每个anchor要分positive 和 negative 。
  • 4k coordinates:每个anchor要有x,y,w,h对应的4个偏移量来确定其位置。

且一共会生成Anchor数目:目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)

Proposal层,RPN网络的最后一步为经过Proposal层,如上图所示,
RPN网络有两个分支,分别用于box的回归(reg layer)和分类(cls layer)
Proposal层负责综合positive anchors和对应bounding box regression偏移量来获取proposals,同时剔除太小和超出边界的proposals。
Proposal层输入为:

  1. anchors分类器的结果positive 与 negative的得分情况
  2. bbox regression 得到的偏移量d_x,d_y,d_w,d_h
  3. 图像信息,im_info=[M, N, scale_factor] ,scale_factor为图像从PxQ到MxN变换比例。

Proposal层处理步骤:

  1. 生成anchors,利用输入的偏移量进行bbox regression
  2. 按照positive 相对应的softmax score进行排序,提取(e.g.6000)个anchors,得到修正位置后的positive anchors(<=6000个)
  3. 限定超出图像边界的positive anchors为图像边界,防止后续roi pooling时proposal超出图像边界
  4. 剔除小尺寸的anchors
  5. 对剩余的positive anchors进行NMS(nonmaximum suppression)
  6. 最后剩余的对应的bbox reg的偏移量(e.g. 300)结果作为proposal输出

至此已经得到相对应的proposal,检测工作(RPN)已完成,之后对提取出的proposal进行分类。

如何训练RPN?

如何训练RPN网络,需要从两方面入手:
根据分支1,如何判定anchor是positive or negative?
根据分支2,如何对anchor的偏移量进行回归?

针对训练阶段如何通过ground truth判定anchor是positive or negative的问题,做出如下讨论:

  1. ground-truth box和anchors具有最高IoU的anchor,认定该anchor为positive
  2. 当anchor和任意的ground-truth box的IoU>0.7,此时认定anchor为positive

也就是说,一个ground truth box可能对应多个positive anchors ,且条件1是为了防止有的ground-truth box没有IoU>0.7的情况而没有anchor和其相对应,确保ground truth box一定有其对应的anchor。
此外,对于不是positive的anchor,当anchor和所有的ground-truth box的IoU小于0.3,则认定为negative。

L_cls损失函数如下:
1

针对判定anchor偏移量回归的问题,定义如下:
目标检测经典知识点汇总(一):RPN(以Faster RCNN为例):为包含4个偏移量的向量,目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)
目标检测经典知识点汇总(一):RPN(以Faster RCNN为例),R为smooth_L1函数。
1

确定了损失函数后,则RPN网络可以用随机梯度下降法进行端到端的训练。
但因为anchors的positive和negative数目差距较大,因此在对每张图进行训练时,随机选取256个anchors,且确保positive和negative比例为1:1。若positive anchors数目不够,则用negative anchors替代。
针对conv layer的初始参数,则采用在ImageNet上预训练的权重参数作为初始化。

3.ROI pooling

1

截至目前,已经利用RPN提取出相对应的proposal,之后对proposal进行分类,在分类前,需要先根据proposal给出的候选框来提取出原图像feature map的proposal区域特征。
RoI Pooling层则负责收集proposals,并依据proposal计算出proposal feature maps,送入后续网络。
RoI Pooling有两个输入:RPN网络提取出的proposals卷积网络提取的feature maps
RoI Pooling步骤:

  1. 将proposal映射到feature map的尺度,即从MxN映射到M/16xN/16,spatial_scale: 0.0625 # 1/16
  2. 将proposal映射到feature map内的区域划分为目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)尺寸(7×7)的网格
    注:不同size的区域统一划分成7×7的网格,同一区域每个网格内尺寸相同。
  3. 对网格进行max pooling处理,得到固定尺寸目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)(7×7)
    的proposals feature maps,实现固定长度的输出。
    z

4.Classifier

3

此时已经提取出的固定尺寸的proposal feature maps(7×7),最后用分类器分类即可。

Classifier利用RoI pooling获得的proposal feature maps(7×7),
通过fully connect层与softmax计算每个proposal具体属于哪个类别(如人,车,电视等),输出cls_prob概率向量;
同时再次利用bounding box regression获得每个proposal的位置偏移量bbox_pred,用于回归更加精确的目标检测框。

Faster RCNN整个训练框架图

1

总结

可以看到,Faster-RCNN的创新点最主要就在RPN网络。同时,RPN网络可以被单独拿出来使用,用于提取图像中可能存在目标的Proposal(和selective search方法一样)。
RPN的用途可能不仅限于此(Faster-RCNN),因为其在框选候选区域的时候并没有考虑到目标物的真实类别,因此,也有一些其它利用RPN的方法。例如做开放世界的目标检测,及不再受限于类别限制,如目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)目标检测经典知识点汇总(一):RPN(以Faster RCNN为例)等方法。
同时,也有更多意想不到的利用RPN的方式等待去发掘。

参考

[1] Ren, S., He, K., Girshick, R., & Sun, J. (2017). Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. IEEE Trans Pattern Anal Mach Intell, 39(6), 1137-1149. https://doi.org/10.1109/TPAMI.2016.2577031
[2]Gu, X., Lin, T.-Y., Kuo, W., & Cui, Y. (2021). Open-vocabulary Object Detection via Vision and Language Knowledge Distillation. arXiv:2104.13921. Retrieved April 01, 2021, from https://ui.adsabs.harvard.edu/abs/2021arXiv210413921G
[3]Zhou, X., Girdhar, R., Joulin, A., Krahenbuhl, P., & Misra, I. (2022). Detecting Twenty-thousand Classes using Image-level Supervision.

补充思考:

一、为什么用RoI Pooling,不直接resize进行分类?

问:卷积神经网络训练分类问题必须要求输入图像的尺寸固定(因为存在全连接网络),提取出proposal后,可以用RoI pooling得到7×7固定的proposal feature maps,也可以resize得到固定的proposal,两者区别?
答:先对于传统的CNN(如AlexNet和VGG),当网络训练好后输入的图像尺寸必须是固定值,同时网络输出也是固定大小的vector or matrix。如果输入图像大小不定,这个问题就变得比较麻烦。有2种解决办法:

  1. 从图像中crop一部分传入网络
  2. 将图像warp成需要的大小后传入网络
    但是crop与warp破坏图像原有结构信息,两种办法的示意图如图,可以看到无论采取那种办法都不好,要么crop后破坏了图像的完整结构,要么warp破坏了图像原始形状信息。1

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年5月28日 下午3:41
下一篇 2022年5月28日 下午3:43

相关推荐