前情提要—— 網上關於目標檢測框架——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來控制平滑的區域。spa
牛客網的解釋:是當預測值與目標值相差很大時,L2 Loss的梯度爲(x-t),容易產生梯度爆炸,L1 Loss的梯度爲常數,經過使用Smooth L1 Loss,在預測值與目標值相差較大時,由L2 Loss轉爲L1 Loss能夠防止梯度爆炸。blog