基于深度学习的目标检测算法:Faster R-CNN

问题引入:

        R-CNN、SPP net、Fast R-CNN等目标检测算法,它们proposals都是事先通过selecetive search方法得到。然而,这一过程将耗费大量的时间,从而影响目标检测系统的实时性。Faster R-CNN针对这一问题,提出了Region Proposal Network(RPN),利用RPN模型来得到proposals,此外,为了节省时间,该模型与目标检测模型Fast R-CNN模型共享卷积层,这样实现了端到端的目标检测。

Region Proposal Network(RPN):

        RPN模型以任意大小的图像作为输入,输出一系列候选目标框,以及每个候选目标框是目标的可能性。

        对于ZF模型,假设给定600*1000的输入图像,最后一个共享的卷积层输出的特征图,可以看作是尺度为51*39的256通道的图像。对于该图像上的每一个位置,考虑9个可能的候选窗口,即:三种面积{128*128, 256*256, 515*512},三种比列{1:1, 1:2, 2:1},这些候选窗口称为anchors。图1中有51*39个anchor中心,以及9种anchor示例。

这里写图片描述

图1

        在这个特征图上,采用3*3的卷积核进行卷积,在每个3*3的区域卷积后得到256维的特征向量(在这个卷积过程中,参数个数为3*3*256*256),每一个特征向量输入到两个全连接层中,其中,cls layer输出2*k个score, 用于判断目标和非目标的估计概率;reg layer输出4*k个coordinates,(x, y w, h)用于确定目标的位置;k表示在每个卷积位置上anchor的数目。该过程如图2所示:

图2


       在训练 LRN时,采用如下的方式创建训练样本:若anchor与某个真实区域的重叠度最大,或者与某个真实区域的重叠度大于0.7,则将该anchor标定为正样本;如果anchor与所有的真实区域的重叠度都小于0.3,则将该anchor标定为负样本;并且,采用类似于Fast R-CNN中的multi-task loss,即:



       其中,(x, y, w, h)表示预测出的目标框,(xa, ya, wa, ha)表示对应的anchor box,(x*, y*, w* , h*)表示对应的ground truth

       此外,在训练的过程中,由于图像中的negative anchors比较多,为了防止损失函数偏好于负样本,从图像中随机选取256个anchors,且positive anchors与negative anchors的比例为1:1,如果positive anchors的个数小于128时,利用negative anchors来填补。对于跨越图像边界的anchors需要小心处理,在训练时,忽略所有跨越图像边界的anchors,这样它们就不会对损失函数有影响;在测试时,将其进行裁剪到图像边缘处。

RPN and Fast R-CNN

        RPN与Fast R-CNN 共享卷积层,如果单独训练两个模型的话,他们将以不同的方式修改卷积层。因此,该论文提出了一下三种方式训练模型:

        交替训练:先训练RPN,再用proposals训练Fast R-CNN,然后用微调后的Fast R-CNN初始化RPN,迭代上述过程。

        近似联合训练:直接在图3结构上训练,在backward计算梯度时,把提取的ROI区域看成固定值,对于共享的卷积层,需要同时考虑RPN的损失和Fast R-CNN的损失,

        联合训练:直接在图3结构上训练,在backward计算梯度时,要考虑ROI区域变化的影响。

        在论文中采用了4-Step Alternating Training 方法,也就是,第一步:训练RPN,使用在ImageNet上预训练的模型进行初始化;第二步:采用RPN产生的proposals来训练Fast R-CNN,也使用在ImageNet上预训练的模型进行初始化;第三步:使用Fast R-CNN来初始化RPN,在训练RPN时,共享的卷积层保持不变,只调节RPN特有的层;第四步:训练Fast R-CNN,但是共享的卷积层保持不变,只调节Fast R-CNN中特有的层。

图3  ZF












发布了81 篇原创文章 · 获赞 51 · 访问量 27万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章