作者:Anders Christiansen
編譯:ronghuaiyang
最近物體檢測領域掀起陣anchor free的風,今天借這個風,也給大家分享一篇anchor free相關的文章。
問題
如果你之前干過修改anchor的活,你可能會感到沮喪、困惑,並對自己說:「一定有另一種方法!」現在看來,確實另一種方法。
當我第一次寫關於anchor box的文章時,我的想法是繞過所有anchor box,將物體檢測問題轉化為語義分割問題。我嘗試預測過對於每個像素,每個類的物體的界框的數量是多少。由於以下幾個問題,結果相當糟糕:
COCO數據集中的樣本
很快的,這幾個月以來,已經有幾個模型以一種更創新的方式取消了anchor boxes。
沒有anchors的物體檢測
CornerNet使用一個嵌入為每個像素預測邊界框的左上角和右下角。每個corner的嵌入匹配以確定它們屬於哪個物體。一旦你匹配了所有的corner,恢復邊界框就很簡單了。這解決了我所面臨的問題,即取消anchor box,同時能夠從輸出中恢復出邊界框。
然而,CornerNet並沒有解決我所面臨的第二個問題,即網絡必須學習如何定位一個甚至不包含該物體的像素。這就是ExtremeNet的用武之地。這種方法是基於CornerNet的,但它不是預測corners,而是預測物體的中心以及最遠的左、右、頂和底點。這些「極值點」然後根據它們的幾何形狀進行匹配,結果非常好:
標註
但如何找到極值點的標註呢?不幸的是,作者從分割掩碼中提取了極值點,如果只有邊界框,則無法使用此選項。但是,極限點標註有幾個優點:
速度不是很快
在將所有物體檢測系統遷移到ExtremeNet之前,請記住,當前的實現是大而慢的。預訓練模型達到了最先進的結果,擁有近2億個參數,大小為800mb。當我在特斯拉K80 GPU (p2)上測試批量的單個圖像時。使用GitHub中的demo.py腳本,每個圖像大約需要8秒。使用DEXTR創建一個分割掩碼,根據檢測的次數每次增加2-12秒。如果你想從多個圖像尺度對檢測進行分組,那麼這個數字會進一步增長。總的來說,在一張圖像上運行多尺度分割需要一分鐘的時間,儘管我認為可以通過優化代碼來改進這些數字。CornerNet聲稱在Titan X (Pascal) GPU上運行速度約為4幀每秒,這也比現有的單階段的檢測器慢得多。在我考慮將ExtremeNet作為大多數應用程式的可行選項之前,需要有一個既快速又準確的版本。
結論
ExtremeNet論文聲稱,與所有其他single shot檢測器相比,ExtremeNet的性能優越,同時也避免了必須仔細調整anchor box,然後解碼輸出。即使沒有這樣的模型,標註方法本身也提供了顯著的好處。作為一個神經網絡,該模型還沒有完全端到端的學習,還需要包括各種算法來生成邊界框或分割掩碼。儘管如此,我非常希望在未來,極值點標註和模型成為物體檢測的規範。
References
[1] Lin, Tsung-Yi et al. 「Microsoft COCO: Common Objects in Context.」 Lecture Notes in Computer Science (2014): 740–755. Crossref. Web.
[2] Law, Hei, and Jia Deng. 「CornerNet: Detecting Objects as Paired Keypoints.」 Lecture Notes in Computer Science (2018): 765–781. Crossref. Web.
[3] Zhou, Xingyi, Jiacheng Zhuo, and Philipp Krähenbühl. 「Bottom-up Object Detection by Grouping Extreme and Center Points.」 arXiv preprint arXiv:1901.08043 (2019).
[4] Maninis, K.-K. et al. 「Deep Extreme Cut: From Extreme Points to Object Segmentation.」 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition (2018): n. pag. Crossref. Web.
英文原文:https://medium.com/@andersasac/the-end-of-anchors-improving-object-detection-models-and-annotations-73828c7b39f6
請長按或掃描二維碼關注本公眾號