目标检测——Faster R_CNN使用smooth L1作为bbox的回归损失函数原因
? 前情提要—— 網上關于目標檢測框架——faster?r_cnn有太多太好的博文,這是我在組會講述faster?r_cnn這一框架時被人問到的一個點,當時沒答上來,于是會下好好百度和搜索一下研究了一下這個問題。
先看faster r_cnn的對bounding_box的回歸損失函數:
? 百度百科的解釋是:對于邊框的預測是一個回歸問題。通常可以選擇平方損失函數(L2損失):f(x)=x^2。但這個損失對于比較大的誤差的懲罰很高。我們可以采用稍微緩和一點絕對損失函數(L1損失):f(x)=|x|,它是隨著誤差線性增長,而不是平方增長。但這個函數在0點處導數不唯一(這里應該是0點兩邊的導數,因為0點處導數不存在),因此可能會影響收斂。一個通常的解決辦法是在0點附近使用平方函數使得它更加平滑。它被稱之為平滑L1損失函數,它通過一個參數sigma來控制平滑的區域。
? 牛客網的解釋:是當預測值與目標值相差很大時,L2 Loss的梯度為(x-t),容易產生梯度爆炸,L1 Loss的梯度為常數,通過使用Smooth L1 Loss,在預測值與目標值相差較大時,由L2 Loss轉為L1 Loss可以防止梯度爆炸。
?
posted on 2019-03-30 21:02 E-Dreamer 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/E-Dreamer-Blogs/p/10534039.html
總結
以上是生活随笔為你收集整理的目标检测——Faster R_CNN使用smooth L1作为bbox的回归损失函数原因的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Greenplum添加mirror步骤
- 下一篇: Haystack