Faster Rcnn 训练过程3:RPN候选区域网络

本文详细介绍了Faster R-CNN中的RPN(Region Proposal Network)工作原理,包括base anchors的生成,原图上所有anchor的生成过程,以及rpn_scores和rpn_locs的计算。RPN通过softmax判断anchor归属并用bounding box regression修正,生成region proposals。文章还阐述了ProposalCreator过程,最终得到目标检测的候选区域。
摘要由CSDN通过智能技术生成

RPN候选区域网络

Region Proposal Networks。 RPN网络用于生成region proposals。 该层通过softmax判断anchors属于positive或者negative,再利用bounding box regression修正anchors获得精确的proposals

rpn = RegionProposalNetwork(
    512, 512,
    ratios=ratios,
    anchor_scales=anchor_scales,
    feat_stride=self.feat_stride,
)

1. base anchors生成

生成基础的九个anchor,共三种候选面积(128,256,512) x 三种尺度(1:1,1:2,2:1)

设置:

  1. base_size=16

由特征提取网络可知,原图经过特征网络,会缩小为原来的1/16,也就是下采样率为16。
也就是输出的特征图每个像素在原图上的对应大小应该为16x16个像素的区域。

特种图中的anchor的尺寸,乘与base_size得到的就是原图中的尺寸

  1. anchor_scales=[8, 16, 32]

特征图中得到的anchor的尺寸,
最终生成的原图中的anchor,需要乘与16,因为下采样率是16倍嘛

8x8  ---(16x8)x(16x8)
16x16  ---(16x16)x(16x16)
32x32  ---(16x32)x(16x32)
  1. ratios=[0.5,1,2]

对于三个候选面积共三种候选面积(128,256,512),每个面积会生成三个不同的宽高尺度;
也即是,对于最总面积为128的anchor,会生成三个不同宽高的anchor,但是三个anchor面积还是相同

有已知给定的三个初始尺寸,计算9个anchors的计算公式如下

计算公式推导如下:


#已知条件:
base_size = 16 ,anchor_scales, ratios

#每个特征图anchor scale后的尺寸大小为(也就是对应原图的尺寸)
scl_h = base_size*anchor_scales[i]
scl_w = base_size*anchor_scales[i]


求radio比例的任意一个dst_h, dst_w

# 已知:radio前后,anchor的面积相同 ,只是宽高比不同
scl_h * scl_w = dst_h * dst_w 

#且dst_h 和 dst_w的比例符合raidio :

dst_h /dst_w = ratios[j] 
==> dst_h  = ratios[j]*dst_w

带入:scl_h * scl_w = dst_h * dst_w

得到:
scl_h * scl_w = ratios[j]*dst_w * dst_w
==> dst_w = sqrt(scl_h * scl_w/ ratios[j]), 其中scl_h和scl_w相同
==> dst_w = base_size*anchor_scales[i] * sqrt(1/ ratios[j])

以上公式对应的python实现为:

#bbox_tools.py
def generate_anchor_base(base_size=16, ratios=[0.5, 1, 2],
                         anchor_scales=[8, 16, 32]):
    py = base_size / 2.
    px = base_size / 2.

    anchor_base = np.zeros((len(ratios) * len(anchor_scales), 4),
                           dtype=np.float32)
    for i in six.moves.range(len(ratios)):
        for j in six.moves.range(len(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值