针对Faster RCNN具体细节以及源码的解读之SmoothL1Loss层

本文深入解读Faster RCNN中的SmoothL1Loss层,探讨其在目标检测中的作用和优势。通过分析源码,理解其计算过程,并对比论文中的描述,解释了通用版本的实现。同时,文中还提及了权重的使用及其对loss的影响,以及在Backward过程中的梯度计算。
摘要由CSDN通过智能技术生成

从今天开始,阅读faster rcnn的相关代码,并记录我对faster rcnn中特别的层的理解。本篇主要是对smooth_L1_Loss层进行解读。
RBG大神认为CPU版本的太慢了,故有些操作CPU版压根就没有实现。smooth_L1_Loss是Faster RCNN提出来的计算距离的loss,文章中提到对噪声点更加鲁棒。
输入四个bottom,分别是predict,target,inside_weight, outside_weight.与论文并不完全一致,代码中实现的是更加general的版本。
公式为:

output=woutSmoothl1(xnew)
Smoothl1(x)=0.5(σx)2 or Smoothl1(x)=|x|0.5/σ2
xnew=xoldwin

LayerSetup
就是对记录相关参数并计算 σ2 ,并判断是否含有weights.
Resharp
就是针对diff_ , errors_ , ones_,进行reshape
Forward
先计算 win(b0b1) ,再计算 woutSmoothl1(win(b0b1)) ,最终将所有值加起来除以num得到loss。
Backward
backward的公式并不麻烦,公式如下:

Smoothl1(x)=σ2x or Smoothl1(x)=sign(x)
δlossδb0=woutwinSmoothl1(win(b0b1))
δlossδb1=woutwinSmoothl1(win(b0b1))
直接按照公式去做即可,不过有那么一点点不明白的地方,就是为什么对 b1 也求偏导呢??可能在看了AnchorTargetLayer层之后就会得到答案。

另:blog居然可以用类似与latex的版本,唉之前写的blog排版太丑了,这个好很多,也更加好用啦,哇咔咔。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值