IOU loss詳解

轉載自:https://www.jianshu.com/p/e3bf67cd4459

IoU損失

DenseBox   DenseBox是全卷積網絡,網絡的輸出大小爲(\frac{m}{4} \times \frac{n}{4});輸出feature map上的點確定一個檢測框的樣本,包含樣本的信息度y和該點到bounding box四邊的距離(x_t, x_b, x_l, x_r)
Unitbox   相對於DenseBox,Unitbox使用IoU損失替代傳統的定位L2損失。

IoU 損失示意圖

IoU損失的前向傳播

IoU損失前向傳播僞代碼

本質上是對IoU的交叉熵損失,即將IoU視爲伯努利分佈的隨機採樣,並且,於是可以簡化爲:

IoU損失的反向傳播

x_t爲例,IoU損失的反向傳播
\frac{\partial{\mathcal{L}}}{\partial{x_t}}=\frac{\partial}{\partial{x_t}}(-\ln{IoU}) \\ = -\frac{1}{IoU}\frac{\partial}{\partial{x_t}}(IoU) \\ = -\frac{1}{IoU}\frac{\partial}{\partial{x_t}}(\frac{1}{U}) \\ = \frac{1}{IoU}\frac{I \times \frac{\partial{U}}{\partial{x_t}} - U \times \frac{\partial{I}}{\partial{x_t}}}{U^2} \\ = \frac{I \times \frac{\partial}{x_t}(X+\tilde{X}-I) - U \times \frac{\partial{I}}{\partial{x_t}}}{U^2IoU} \\ = \frac{I \times (\frac{\partial}{x_t}X - \frac{\partial}{\partial{x_t}}I) - U \times \frac{\partial{I}}{\partial{x_t}}}{U^2IoU} \\ = \frac{1}{U}\frac{\partial{X}}{x_t} - \frac{U+I}{UI}\frac{\partial{I}}{x_t}
其中:
\frac{\partial{X}}{x_t} = x_l + x_r
\frac{\partial{I}}{x_t} = \begin{cases} I_w, \qquad if x_t \lt \tilde{x_t}(or x_b \lt \tilde{x_b}) \\ 0, \qquad otherwise \end{cases}
同理,可以推導其他三個變量的求導過程。

從上述推導,可知:

  1. 損失函數和\frac{\partial{X}}{x_t}成正比,因此預測的面積越大,損失越多;
  2. 同時損失函數和\frac{\partial{I}}{x_t}成反比,因此我們希望交集儘可能大;
  3. 由1,2可知當bounding box等於ground truth時檢測效果最好。

因此,優化IoU損失是正向促進物體檢測精度的。

總結

IoU損失的優點總結如下:

  • IoU損失將位置信息作爲一個整體進行訓練,而L2損失卻把它們當作互相獨立的四個變量進行訓練,因此IoU損失能得到更爲準確的訓練效果;
  • 輸入任意樣本,IoU的值均介於[0, 1]之間,這種自然的歸一化損失使模型具有更強的處理多尺度圖像的能力。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章