faster-RCNN、SSD目标函数分为两个部分:对应默认框的位置loss(loc)和类别置信度loss(conf)。Fast R-CNN网络有两个同级输出层(cls score和bbox_prdict层),都是全连接层,称为multi-task。
(1) clsscore层:用于分类,输出k+1维数组p,表示属于k类和背景的概率。对每个RoI(Region of Interesting)输出离散型概率分布,p由k+1类的全连接层利用softmax计算得出。,loss_cls层评估分类损失函数。由真实分类u对应的概率决定:,为anchor预测为目标的概率。表示target是否有物体,有物体为1 没有为0。是mini-batche anchor的索引。
(2) bbox_prdict层:用于调整候选区域位置,输出bounding box回归的位移,输出4*K维数组t,表示分别属于k类时,应该平移缩放的参数。,表示类别的索引,表示目标的坐标,表示相对于object proposal的高与宽。,是预测的四点坐标,是真实坐标。使用的是SmoothL1Loss。具体公式为(即R函数的公式)。可以使用实现只有前景才会有回归损失。
设P代表预测类别,U代表真实类别,t代表预测位置,V代表真实位置,则整个模型的损失可以表示为
详细描述为。
(3)那么为什么要使用smoothL1Loss呢
其曲线为
作者这样设置的目的是想让loss对于离群点更加鲁棒,相比于L2损失函数,其对离群点、异常值(outlier)不敏感,可控制梯度的量级使训练时不容易跑飞。