![深度学习高手笔记(卷2):经典应用](https://wfqqreader-1252317822.image.myqcloud.com/cover/617/51647617/b_51647617.jpg)
上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):
![](https://epubservercos.yuewen.com/5A0139/30471754407902306/epubprivate/OEBPS/Images/57.jpg?sign=1739328148-C3LEwBRGRey8AD6lDJNiSSc1YGslVqfI-0-3dc7dddbb281968f0171856b0bd6928a)
(1.7)
其中,Smooth L1表示为式(1.8),它定义在/src/caffe/layers/smooth_L1_loss_layer.cpp文件中,函数曲线如图1.11所示。Smooth L1可以理解为当| x |>1时,损失值为L1损失,它能够让模型的误差值快速下降;当| x |<1时,损失值为L2损失,它的目的是让模型精细地调整损失。
![](https://epubservercos.yuewen.com/5A0139/30471754407902306/epubprivate/OEBPS/Images/58.jpg?sign=1739328148-2VAHrYDC5DHguE0qoe8yNdupQBXuoOdX-0-e94ea07ea7da9a7563cb611bc33b17db)
(1.8)
![](https://epubservercos.yuewen.com/5A0139/30471754407902306/epubprivate/OEBPS/Images/1-11.jpg?sign=1739328148-pijNB1GBPlKfPZtS2xPixEH6SKfGwTo6-0-67274171a10b3569ac0f0c1d68e3189e)
图1.11 Smooth L1曲线
3.多任务损失函数
Fast R-CNN表示为式(1.9),其中λ是用来调整两个损失的权值,Fast R-CNN中设置的值为1。在实际的训练过程中,可以根据两个损失值的收敛情况灵活地调整这个权值。是我们在前文中介绍的指示函数。
![](https://epubservercos.yuewen.com/5A0139/30471754407902306/epubprivate/OEBPS/Images/60.jpg?sign=1739328148-TmFCx88qZ2alTqqy9DqUJ8P3pdDGzsk5-0-04721029560611f384bad2f0c82f214b)
(1.9)