目標檢測:Segmentation is All You Need ?
- 2019 年 12 月 27 日
- 筆記
對於目標檢測,從滑動窗口時代開始,我們已經習慣了候選區域特徵提取然後分類的套路,深度學習時代強大的特徵表示能力讓我們能夠探索不一樣的道路,比如:
ECCV18 Oral | CornerNet目標檢測開啟預測「邊界框」到預測「點對」的新思路
通過定位特定語義點來定位目標。
而且Anchor-Free方法越來越流行,大家開始意識到預先定義的Anchor降低計算量的同時,卻已經成為限制目標檢測精度提高的因素。
今天跟大家分享的一篇文章《Segmentation is All You Need》,可能又要顛覆大家的認知,我們不僅不需要Anchor,甚至我們思考目標檢測的方式都被局限了!
論文作者資訊:

論文作者來自牛津大學、湖南農業大學、SnowCloud公司。該論文已投NeurIPS 2019。
提出問題
在現代目標檢測應用中,目標部分被遮擋、環境光照差和目標相對場景過小等依然難以被解決。
下圖展示了這些極端的例子:

這些難以處理的情況幾乎都和演算法能夠選擇或者預定義正確的、尺度合理的候選區域有關係。
而電腦視覺任務中的分割,不對目標做任何位置和尺度的假設,對像素進行無差別分類。
目標檢測可否直接用分割來完成呢?這就是作者要解決的問題。
演算法思想
既然是用分割來做目標檢測,那就需要有標註好的分割數據集。
作者使用目標檢測資料庫中目標的包圍框來計算目標的mask,即弱監督標註。
請看下面的例子:

上面的影像來自我愛電腦視覺曾經報道的「數鋼筋」大賽DataFountain新上電腦視覺比賽-20萬巨獎數鋼筋,在這些鋼筋端部的包圍框上計算內接橢圓,其包含的區域即可以認為是目標的弱監督像素級標註了。
就像下面這幅蘋果影像,你很容易通過包圍框簡單得到蘋果的大致區域。

完整的演算法示意圖如下:

首先是生成弱監督標註數據,然後使用這些數據訓練語義分割(不是實例分割),推斷的時候,語義分割的結果轉化為二值影像,最後使用輪廓提取演算法找到不同的目標個體。
影像中往往有複雜的遮擋,比如:

這需要在製作目標像素級標註時考慮到,下圖是將目標包圍框轉化為像素級標註的細化:

作者稱這種標註方法為multimodal annotations(多模標註)。
推斷時,對二值影像進行輪廓查找,作者設計了Run-data-based tracing 演算法。

查找到的不同的輪廓即為不同的目標個體。
對於極其小的目標的訓練,作者在此框架下引入vector field方法。示意圖如下:

實驗結果
作者在三個數據集上進行了實驗,分別是數鋼筋大賽的數據、WiderFace人臉數據集和COCO 目標檢測數據集。
下圖是數鋼筋的結果:

該文提出的演算法在參數量最少的情況下,精度最高,超過目標檢測state-of-the-art Cascade RCNN演算法。
下圖是在WiderFace人臉檢測數據集上的結果,依然超過了所有方法。

最後是在COCO 數據集上的結果,該文演算法取得了與Mask RCNN 和 Cascade R-CNN相匹敵的精度。
這類演算法才剛剛出來,應該還有很大改進空間!

值得一提的是,作者對目標進行像素級標註的方法,對於人臉和鋼筋這種實心的目標可能比較有效,對於自行車這種中間有很大空隙的,會不會有問題?
不知作者會不會進一步公布在COCO數據集上不同類的檢測結果,應該很有趣。
另外作者目前沒有公開程式碼,也沒公布推斷時間。
這篇文章顛覆了我們的認知,原來什麼框、什麼點也不需要,也可以做目標檢測!
也許是作者急於快點公布演算法與實驗結果,以至於忘了在論文最後寫結論了^_^

論文地址:
https://arxiv.org/abs/1904.13300v1

