關於密集遮擋的行人檢測
有些**專門提出方法來解決密集和遮擋問題,本文將關注occlusion-aware r-cnn:detecting pedestrians in a crowd(簡稱為or-cnn)和repulsion loss兩個解決方案。
1.or-cnn
該**以faster r-cnn為基礎,對損失函式部分和roipooling兩個部分分別做出了一些改進。本部落格將主要關注對損失函式改進的部分,提出聚集損失(aggloss)來改進密集遮擋問題。
faster r-cnn是兩階段檢測方法,分別在rpn和r-cnn頭部網路檢測。為了在rpn模組中能有效的生成更加準確的區域候選框,設計了aggloss使候選框盡量的靠近對應的gt,並且同乙個gt對應的所有proposal boxes盡量緊湊。其定義如下:
損失函式包含兩個部分,分類損失和aggloss,其中分類損失是與原始**一樣,使用交叉熵損失。aggloss定義如下:
aggloss 包含常規的回歸損失用於使proposal boxes盡量靠近gt,同時還有乙個compactness loss,lcom,用於使同乙個gt對應的多個proposal boxes之間盡量緊湊,定義如下:
由以上定義可知,lcom是專門針對乙個gt對應了多個anchor的情況,讓同乙個gt對應的候選框之間盡量的緊湊,通過計算gt與多個候選框的均值之間的smoothl1實現。
aggloss的思想非常簡單,損失設計也很簡潔,只是在原來的損失基礎上增加了乙個lcom,從而達到了使候選框盡量的靠近對應的gt,並且同乙個gt對應的所有proposal boxes盡量緊湊的目的。效果很讚,在多個公開資料集上達到了sota,作者對比了使用原始損失和aggloss的區別,見下圖。
這兩個圖很有意思,能反映一些問題,圖a是沒有使用nms的**結果,可以明顯看出aggloss的**結果更好,基線的**結果框比較分散,aggloss的結果同乙個gt的框更加緊湊,這種情況使用nms可輕鬆去掉冗餘框而不會出現漏檢或者誤檢。圖b是nms閾值對**結果的影響,對於基線方法0.55是乙個分水嶺,nms閾值小於0.55時,錯誤率一直下降,但是超過0.55之後錯誤率大幅增加。對於aggloss情況,錯誤率曲線更加平滑,首先整體錯誤率比基線更低,其次nms閾值對aggloss的影響沒那麼大,而且nms閾值增加到0.55繼續增加也不會出現錯誤率上公升的情況,因為aggloss的**框更加緊湊,使用nms很容易過濾冗餘框。
2. 互斥損失
repulsion loss是曠視提出的,針對密集遮擋行人問題在損失函式做了一些改進。其想法也很簡單,對於密集遮擋問題,如何處理同乙個gt對應的多個候選框以及不同的gt對應的候選框?類似磁鐵原理,同性相斥異性相吸,reploss使同乙個gt對應的多個候選框盡量的緊湊聚集,不同gt對應的候選框盡量遠離,有點類似triplet loss的想法。函式設計如下:
其中lattr是吸引損失,其實就是常規使用回歸損失smoothl1,repgt和repbox分為兩個排斥損失,第乙個使proposals遠離具有第二大iou的gt,第二個使不同gt對應的proposals盡量遠離。
注意,第乙個loss中作者使用了iog而不是傳統的iou,原因在於gt無法改變,如果使用iou則網路可以通過放大proposal的方式來降低loss,這並不是我們所期望的。如果直接使用iog,分母是gt的面積無法改變,從而規避了這樣的問題。
其中這個smooth_ln是針對0到1的輸入變數設計的乙個魯棒函式,具體形狀如下所示:
可以看到,正如smooth_l1不會對特別大的偏差給予過大的懲罰,smooth_ln對於很小接近於1的輸入也不會像原始的ln函式一樣給予負無窮那麼大的loss,從而可以穩定訓練過程,而且對抗一些離群點。
nms對錯誤率的影響曲線,相對於基線,reploss的曲線會更加平滑,且在各個閾值都要優於基線方法。
參考:[1] wang, x., xiao, t., jiang, y., shao, s., sun, j., & shen, c. (2017). repulsion loss: detecting pedestrians in a crowd. arxiv preprint arxiv:1711.07752.
[2] zhang, s., wen, l., bian, x., lei, z., & li, s. z. (2018). occlusion-aware r-cnn: detecting pedestrians in a crowd. arxiv preprint arxiv:1807.08407.
[3]
關於損失函式 Loss Function
機器學習中常見的損失函式 一般來說,我們在進行機器學習任務時,使用的每乙個演算法都有乙個目標函式,演算法便是對這個目標函式進行優化,特別是在分類或者回歸任務中,便是使用損失函式 loss function 作為其目標函式,又稱為代價函式 cost function 損失函式是用來評價模型的 值 y ...
關於FLASH遮擋DIV的解決辦法
其實flash遮擋div方法有很多,但大多數都沒有寫是為什麼遮擋了,下面是我總結的原因 可能不全,不過我現在還沒有發現在別的問題。原因也就是沒有給flash新增透明效果這個屬性。我們在標籤裡面新增如下 問題應該就解決了,並非是給z index設定值的問題。wmode transparent 有兩點要...
關於移動端解決鍵盤遮擋input的解決方案
我是利用scrollintoview 方法來解決這個問題的,let clientheight document.body.clientheight let focuselem null 輸入框焦點 利用捕獲事件監聽輸入框等focus動作 document.body.addeventlistener ...