前言:
目標檢測是計算機視覺中的一項傳統任務。自2015年以來,人們傾向於使用現代深度學習技術來提高目標檢測的效能。雖然模型的準確性越來越高,但模型的複雜性也增加了,主要是由於在訓練和NMS後處理過程中的各種動態標記。這種複雜性不僅使目標檢測模型的實現更加困難,而且也阻礙了它從端到端風格的模型設計。
關注公眾號CV技術指南,及時獲取更多計算機視覺技術總結文章。
早期方法 (2015-2019)
自2015年以來,人們提出了各種深度學習中的目標檢測方法,給該領域帶來了巨大的影響。這些方法主要分為一階段方法和兩階段方法兩類。其一般處理過程包括:
1.使用CNN主幹提取深度特徵圖
2.為特徵對映的每個畫素生成各種錨點
3.計算錨點和ground truth之間的IoU,選擇其中的一部分進行訓練
4.使用迴歸(IoU和L1)和分類(框內的物件類)的loss對模型進行訓練
5.使用非極大值抑制(NMS)對推理結果進行過程後處理,以刪除重複的預測框
在上述一般過程中,one-stage和two-stages方法的唯一區別是在訓練過程中是否為region proposal動態標記anchors。例如,在Faster-RCNN中,根據錨和ground truth之間的IoU給anchors作正或負的標記。如果IoU足夠大,比如0.7,錨給正標籤,否則如果IoU足夠小,比如0.3,給出負標籤。因此,在推理期間,只將正錨定用於目標檢測處理。這種技術在原論文中被稱為區域建議網路(RPN)。
在像SSD、YOLO和RetinaNet這樣的one-stage方法中,不存在RPN,以便在推理過程中處理所有的錨點。分類置信度的閾值用於過濾大多數錨,而只有具有高分類可能性的錨被保留用於最終的後處理。
在訓練過程中,錨的數量非常巨大。在two-stages的方法中,RPN幫助集中關注正錨點,這節省了計算時間和資源。然而,RPN是複雜的,訓練它也需要時間和資源。在one-stage的方法中,儘管必須處理所有的錨點,但總的計算時間仍然更小。
由於two-stages方法的複雜性和速度較低,人們傾向於開發出更容易實現、更有效的新的one-stage方法。
什麼是NMS以及為什麼需要它
在上述早期的方法中,錨被用來與ground truth相匹配。因此,可能會發生多對一的匹配:幾個錨與一個ground truth相匹配。如上所述,在一階段和兩階段的方法中,幾種不同的錨可能與同一個ground truth有較大的IoU。在推理過程中,它們也可以迴歸到具有高分類置信度的同一物件。因此,刪除重複anchor,NMS後處理是必要的。
NMS處理過程:
1.預測的anchors根據分類置信度進行排序
2.選擇最大置信度的anchor
3.刪除所有與所選anchor的IoU大於預定義閾值的其它anchor
4.從1開始重複,直到不存在anchors
在推理結果中,許多與許多目標對應的anchor被混合在一起。一旦以置信度進行排序,可能會發生以下情況:
其中為兩個物件A和B預測三個anchor。三個anchor的編號為1、2、3,分類置信度分別為0.8、0.75、0.7。在這裡,為同一物件A預測兩個anchor,因此應該移除一個具有較低可信度的anchor。在這種情況下,去除anchor 2,anchor 1和3用於最終預測。
為什麼會發生這種情況?回想一下訓練過程中的多對一匹配:anchor 1和2同時與物件A匹配,計算損失並反向傳播梯度,告訴模型anchor 1和2都是物件A的有效候選物件。然後這個模型只是預測它被訓練成什麼。
因此,如果我們將多對一修改為一對一,並且在訓練過程中只使用一個anchor來匹配一個ground truth,推理結果會有所不同嗎?回想一下,在多對一正規化中,對於一個物件,會選擇具有大IoU的anchor來與它進行匹配。想想一對一的正規化,其中只選擇IoU最高的anchor進行匹配,而所有其他anchors都是負的,並與背景匹配。我們是否可以得到一個模型,它能夠以一對一的匹配風格直接預測所有物件的所有anchor,而不需要NMS後處理?
最近的新方法(2019-2020)
幸運的是,上述問題的答案是肯定的。最近,人們一直在開發新的one-stage方法,使目標檢測比以前更容易。主要思想有兩方面:
1.不要使用anchor,而使用每畫素預測
2.不要使用NMS後處理,改為使用一對一的訓練
人們不會使用根據空間比例和物件大小而變化的anchors,而是傾向於通過使用語義分割等每畫素的預測來降低複雜性。一種典型的方法是FCOS,其中最終特徵圖中的每個畫素都用一個物件框進行預測,使其成為一個完全卷積網路(FCN)。用於目標檢測的FCN不僅簡化了任務本身,而且還將其與語義分割、關鍵點檢測等其他FCN任務結合起來,用於多工的應用。
我們可以看到,對於ground truth框內的每個畫素,都可以分配一個標籤:(l、r、t、b),表示ground truth框向左、右、上、下邊界的畫素之間的距離。因此,訓練仍然是多對一的,NMS後處理仍然需要得到最終的預測結果。雖然FCOS簡化了目標檢測並效能良好,但它仍然不是端到端的。
為了使目標檢測任務端到端,人們必須有不同的思考。自2020年以來,隨著transformer的普及,人們傾向於用Vision Transformer進行目標檢測,結果也很好。一個典型的方法是DETR,本文將不會討論它。我將在這裡討論的是另一個並行的工作:OneNet,它將FCOS擴充套件為用於目標檢測的端到端FCN。
如上所述,為什麼NMS是必要的主要原因是在訓練中使用了多對一正規化。為了使它端到端沒有NMS,應該使用一對一的訓練正規化來代替。
回想一下,在早期的方法中,預測和ground truth是匹配的,它們之間只有幾何損失(IoU和L1)用於反向傳播。因此,為了增加訓練資料的方差,需要多對一匹配,因為可以找到許多幾何損失相似的候選物件,並匹配相應的ground truth。這個候選框並不是唯一的。另一方面,如果我們堅持使用幾何損失最低的候選模型進行一對一匹配,該模型可能會過擬合,並且根本不具備很好的泛化能力。
OneNet的作者認識到了這個問題,並使用了兩種損失:幾何損失和分類損失,以將候選框與ground truth相匹配。
與幾何損失不同,分類損失對相應的ground truth是唯一的。例如,在目標的高階深度特徵圖中,我們可以找到一個最能表示目標類的唯一畫素。雖然許多畫素的幾何損失與相應的ground truth相似的幾何損失,但最佳分類損失的畫素是唯一的。因此,我們可以將這兩種損失結合起來,得到訓練中唯一一個綜合損失最低的候選框。
如原論文所述,只有具有最小損失的候選框才能匹配相應的目標,其他目標都是負的,並與背景匹配。
預測結果比較
第一行是早期多對一模型的預測結果,而第二行是一對一模型(OneNet)的預測結果。我們可以清楚地看到,許多冗餘的預測框存在於多個一對一的結果中,而它們則在一對一的結果中消失。
討論
利用一對一的訓練正規化,OneNet首先實現了端到端的目標檢測。這一進展被認為是對損失和模型優化的深刻理解,這也有助於提高深度學習的可解釋性。
參考論文
FCOS: Fully Convolutional One-Stage Object Detection, 2019
End-to-End Object Detection with Transformers, 2020
OneNet: Towards End-to-End One-Stage Object Detection, 2020
原文連結:
https://ai.plainenglish.io/object-detection-without-anchors-and-nms-6ca3d56f65ba
本文來源於公眾號 CV技術指南 的論文分享系列。
歡迎關注公眾號 CV技術指南 ,專注於計算機視覺的技術總結、最新技術跟蹤、經典論文解讀。
在公眾號中回覆關鍵字 “技術總結” 可獲取以下文章的彙總pdf。
其它文章
在做演算法工程師的道路上,你掌握了什麼概念或技術使你感覺自我提升突飛猛進?