上QQ阅读APP看书,第一时间看更新
第1章 双阶段检测
1.3.4 多任务损失函数
Fast R-CNN是一个多任务的模型,一个任务是用N+1个SVM分类器计算候选区域每个类别的得分,然后通过N+1类的softmax函数根据N+1个SVM分类器的得分计算得到多分类的结果;另一个任务是用精校器来精校候选区域的位置,它计算的是候选区域与真值框的相对位置偏差。
1.分类任务
分类任务的输入是候选区域经过骨干网络得到的特征向量,经过一个N+1类(N类物体和1类背景)的softmax函数得到该候选区域的概率分布,表示为。log损失表示为,其中u是该ROI的真值框,u=0表示该后续区域为背景。
2.检测任务
在Fast R-CNN中,我们需要为除了背景类的每一个类别预测一个检测框,假设类别为u, u≥1,那么预测的检测框可以表示为。假设该候选区域的检测框的真值框为,那么检测框的损失函数可表示为式(1.7):
(1.7)
其中,Smooth L1表示为式(1.8),它定义在/src/caffe/layers/smooth_L1_loss_layer.cpp文件中,函数曲线如图1.11所示。Smooth L1可以理解为当| x |>1时,损失值为L1损失,它能够让模型的误差值快速下降;当| x |<1时,损失值为L2损失,它的目的是让模型精细地调整损失。
(1.8)
图1.11 Smooth L1曲线
3.多任务损失函数
Fast R-CNN表示为式(1.9),其中λ是用来调整两个损失的权值,Fast R-CNN中设置的值为1。在实际的训练过程中,可以根据两个损失值的收敛情况灵活地调整这个权值。是我们在前文中介绍的指示函数。
(1.9)