R-CNN利用Bounding Box 回归得到最后的检测框,提高了检测的精度。
Fast R-CNN 使用SmoothL1 Loss取代了Bounding Box 回归。
SmoothL1 Loss 函数的实现
def _smooth_l1_loss(x, t, in_weight, sigma):
sigma2 = sigma ** 2
diff = in_weight * (x - t)
abs_diff = diff.abs()
flag = (abs_diff.data < (1. / sigma2)).float()
y = (flag * (sigma2 / 2.) * (diff ** 2) +
(1 - flag) * (abs_diff - 0.5 / sigma2))
return y.sum()