基于R-CNN的两阶段目标检测

RPN网络中AnchorTargetCreator分析:

将20000多个候选的anchor选出256个anchor进行二分类和所有的anchor进行回归位置 。为上面的预测值提供相应的真实值。选择方式如下:

  • 对于每一个ground truth bounding box (gt_bbox),选择和它重叠度(IoU)最高的一个anchor作为正样本
  • 对于剩下的anchor,从中选择和任意一个gt_bbox重叠度超过0.7的anchor,作为正样本,正样本的数目不超过128个。
  • 随机选择和gt_bbox重叠度小于0.3的anchor作为负样本(等于0的不算,明白的告诉你里什么也没有)。负样本和正样本的总数为256。

对于每个anchor, gt_label 要么为1(前景),要么为0(背景),所以这样实现二分类。在计算回归损失的时候,只计算正样本(前景)的损失,不计算负样本的位置损失。

单阶段和两阶段:(区别是检测阶段是不是稠密检测,单阶段稠密检测,双阶段稀疏检测)

单阶段:在Overfeat中,对不同尺度的图像滑窗,得到区域特征,然后直接对这块特征进行目标分类和回归

两阶段:而Faster RCNN是对特征图通过RPN先得到的前景建议,然后对这块特征图对应的多尺度的anchor的ROI去自适应池化到固定的size,再送去Fast RCNN检测头去分类和回归。

                所谓的区域建议就是认为这块(3*3*256,是基于这个3*3区域的)某个anchor预定位置未知(agnostic)类别物体(前景 or 背景)的可能比较大(认为是 positive anchor),对这块特征图(3*3区域的中心像素)关联的本Positive anchor,送去回归得到Region Proposal。

                比如对于w*H= 2400的Feature map来说,Faster RCNN做区域建议时,首先用滑窗法比如1*1*256的filters,就得到2400*256_d的tensor,然后通过后面分两路级联Fcn(这个fcn作用就是将),一路得到2k scores(对anchor box二分类)判断是前景 or 背景,如果是前景,即将此k对应的anchor作为初始预测区域anchor_proposal,然后另一路得到4K coordinates,就是利用这个anchor_proposal去粗回归的Groundtruth位置,得到RPN最终的Region Proposal。(训练RPN时,随机采样256个anchors,其中positive :negative = 1:1)

后面就是fast rcnn再去回归一次精确位置。

Faster RCNN的anchor理解:

            Anchor点是在feature map上取的没错,但是anchor设置的时候有个base_size=16,  而这个16*16就是当前特征图上一点在原图上的感受野。

             因此虽然anchor的思路是在特征图上设置,但是由于最终的anchor尺度都乘上了当前像素的感受野——base_size=16,因此anchor放置点数目是根据feature map大小,但是尺度是按原图像尺度设置的.

              比如,原图上有一类目标大小约为200*200,假若featuremap上1像素对应图像上10*10,则只需要在特征图上放area = 20*20 = 400 pixels的anchor,此时把anchor再设置成ratios  = 1:1,1:2, 2:1,就得到20*20,14*28,28*14。再对应上锚点的坐标即得到anchor的位置坐标(x1,y1,x2,y2)。

             

原文地址:https://www.cnblogs.com/Henry-ZHAO/p/12725308.html