Faster R-CNN中的公式记录

Faster R-CNN中的公式记录

1.最简单的特征图尺寸变换公式

H o u t = H i n − h k e r n e l + 2 ∗ p a d d i n g s t r i d e + 1 H_{out}= \frac{H_{in}-h_{kernel}+2*padding}{stride}+1 Hout=strideHinhkernel+2padding+1

2.Bounding box 回归原理

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MshRKuDl-1572327829914)(Faster R-CNN中的公式记录.assets/v2-ea7e6e48662bfa68ec73bdf32f36bb85_hd.jpg)]

​ 如上图所示,其中红框A代表未回归之前的框,蓝框G 表示回归之后的框,绿框G代表真实的瑕疵框。每个框的表示方法为(x,y,h,w),其中下x,y表示中心点坐标,h,w表示框的高和宽。

​ 回归的简单思路就是:

  1. 先做平移 :


    G x ’ = A w ∗ d x ( A ) + A x G^{’}_{x} = A_{w}*d_{x}(A)+A_{x} Gx=Awdx(A)+Ax

    G y ’ = A h ∗ d y ( A ) + A y G^{’}_{y} = A_{h}*d_{y}(A)+A_{y} Gy=Ahdy(A)+Ay

2.再做缩放:
G h ’ = A h ∗ d h ( A ) + A h G^{’}_{h} = A_{h}*d_{h}(A)+A_{h} Gh=Ahdh(A)+Ah

G w ’ = A h ∗ d w ( A ) + A w G^{’}_{w} = A_{h}*d_{w}(A)+A_{w} Gw=Ahdw(A)+Aw

​ 可见,此时需要学习的参数为dh(A),dw(A),dx(A),dy(A)。对应的学习目标可定义如下:
t x = ( G x − A x ) A x t_{x} = \frac{(G_{x}-A_{x})}{A_{x}} tx=Ax(GxAx)

t y = ( G y − A y ) A y t_{y} = \frac{(G_{y}-A_{y})}{A_{y}} ty=Ay(GyAy)

t h = l o g G h A h t_{h} = log\frac{G_{h}}{A_{h}} th=logAhGh

t w = l o g G w A w t_{w} = log\frac{G_{w}}{A_{w}} tw=logAwGw

可用线性回归模型来定义对d*(A)的学习过程:
d ∗ ( A ) = W ∗ T ∗ ϕ ( A ) d_{*}(A)=W_{*}^{T}*\phi(A) d(A)=WTϕ(A)
其中W*T是线性回归中需要优化的参数, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1CS5YUO-1572327829915)(Faster R-CNN中的公式记录.assets/equation-1572316099509.svg)] 是对应anchor的feature map组成的特征向量 ,d*(A)是得到的预测值。为了让预测值不断逼近学习目标t*,设计损失函数为:
l o s s = ∑ i = 1 100 ( t ∗ i − W ∗ T ∗ ϕ ( A i ) ) loss = \sum_{i=1}^{100}{(t_{*}^{i}-W_{*}^{T}*\phi(A^{i}))} loss=i=1100(tiWTϕ(Ai))
对应的函数优化目标为:
W ∗ ‘ = a r g m i n w ∗ ( ∑ i = 1 100 ( t ∗ i − W ∗ T ∗ ϕ ( A i ) ) + ∣ ∣ λ W ∗ T ∣ ∣ ) W^{`}_{*} = argmin_{w_{*}}(\sum_{i=1}^{100}{(t_{*}^{i}-W_{*}^{T}*\phi(A^{i}))}+||\lambda W_{*}^{T}||) W=argminw(i=1100(tiWTϕ(Ai))+λWT)
可通过随机梯度下降算法对W*进行求解。

​ 对于训练bouding box regression网络回归分支,输入是cnn feature Φ,监督信号是Anchor与GT的差距 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cq4xy6D5-1572327829915)(Faster R-CNN中的公式记录.assets/equation.svg)],即训练目标是:输入 Φ的情况下使网络输出与监督信号尽可能接近。那么当bouding box regression工作时,再输入Φ时,回归网络分支的输出就是每个Anchor的平移量和变换尺度 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jAplKRif-1572327829916)(Faster R-CNN中的公式记录.assets/equation.svg)] 。


3.RPN中的损失函数

​ 整个RPN网络的损失包含回归损失和分类损失,总和的loss如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dUC12qkq-1572327829916)(Faster R-CNN中的公式记录.assets/equation-1572318371290.svg)]

​ 其中,i表示候选框的索引,pi表示瑕疵框为前景的softmax概率,pi*表示对应的瑕疵框是否为真实瑕疵框的概率( 即当第i个anchor与GT间IoU>0.7,认为是该anchor是positive,pi*=1;反之IoU<0.3时,认为是该anchor是negative,pi*=0;至于那些0.3<IoU<0.7的anchor则不参与训练 ),t代表预测瑕疵框的位置,t*代表真实瑕疵框的位置。

​ 1.分类损失:即是rpn_cls_loss层计算的softmax_loss,用于训练RPN的分类层训练

其中:
L c l s ( p i , p i ∗ ) = − l o g [ p i ∗ p i + ( 1 − p i ∗ ) ( 1 − p i ) ] L_{cls}(p_{i},p_{i}^{*}) = -log[p_{i}^{*}p_{i}+(1-p_{i}^{*})(1-p_{i})] Lcls(pi,pi)=log[pipi+(1pi)(1pi)]
可见这是一个经典的二分类交叉熵损失,对于每一个anchor计算对数损失,然后求和除以总的瑕疵框数量。

​ 2.回归损失:即是rpn_reg_loss层计算的smooth L1 loss,用于RPN网络的回归层进行训练。应当注意的是smooth L1 loss前乘以了pi*,这表示回归损失只计算positive的损失,即只关心前景框的回归。

其中:

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MXXVqeP0-1572327829916)(Faster R-CNN中的公式记录.assets/20181212134143118.png)]

其中σ = 3,为smooth L1 loss的参数。值得注意的是lambda的设定,其作用是为了平衡分类损失和回归损失的。在论文中,设定Nreg为feature map的像素总数(为输入图片的尺寸MxN/16),显然如果不加入lambda会使得回归损失过小。其中pi*被看作是rpn_bbox_inside_weights,而lambda/Nreg被看作是rpn_bbox_outside_weights。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值