重磅 | 基於弱監督約束的通用目標檢測

  • 2019 年 11 月 13 日
  • 筆記

目標檢測作為計算機視覺研究極其重要的一個分支,隨着 deep learning 技術的發展,近幾年得到了長足的進步,但廣大科(搬)研(磚)青年長期被各位大佬壓在石縫裡,Facebook 的 Kaiming He, Ross, 國內的face++,幾乎預訂了每年各大頂會的目標檢測相關的 paper 並長期霸榜 COCO 競賽的 state-of-the-art 席位,讓我們這些活在石頭縫裡的搬磚青年很難有所突破。所以啊,與其在這裡和各位大佬分庭抗禮,不如我們另闢蹊徑,在目標檢測領域內,對一些目前還未能得到很好解決的問題進行研究與探索,比如我們今天要講到的 「weakly supervised object detection」。

1.什麼是 weakly supervised object detection

在前幾期的推送中,作者看到小詹同學推送了一些目標檢測相關的文章,文中介紹到的 RCNN, Fast/Faster RCNN 等算法,其實都是基於 fully supervised 的object detection 算法。對於 fully supervised 來說,算法在訓練的時候,需要的是一個全監督的信號。

打個比方,我現在要訓練一個車輛檢測器,那麼我在訓練檢測器的時候,需要告訴算法,我的訓練樣本圖像中的哪些位置存在感興趣的目標,對於每個感興趣目標需要人手工標註一系列框(xmin,ymin,xmax,ymax),類似於下圖 1。

圖1:全監督算法的標註方式

這種手工標註對於算法工作人員來說,是非常耗時間的,尤其是當一副圖像中存在多個目標的時候,需要逐個對目標進行手工標註。為了解決標註耗時耗力的問題,相關研究人員提出了弱監督(weakly supervised)目標檢測。同樣,對於圖 1 來說,如果我們使用弱監督的思路來訓練目標檢測器,我們只需要給出這副圖像的類別信息,比如說,我只用告訴算法,這幅圖像里有 「車」 這個目標即可,這種標註方式,可以大大的減輕標註工作量,並可以將標註的速度提升 10 倍以上。

所以,weakly supervised 目標檢測的任務就是,只告訴圖像中存在哪些目標,希望算法能夠給出這些目標在圖像中存在的位置。

2. 如何使用 weakly supervised 的思路來解決目標檢測的問題?

目標檢測是一個很難的計算機視覺問題,常規的解決思路小詹同學在前幾期的推送里已經有過相關的介紹,通常是首先生成大量的候選框,然後對候選框進行分類,再進行相關的邊框回歸。試想一下,我們在使用弱監督信息訓練的時候,因為監督信號缺失精準的坐標信息,所以我們就無法進行邊框回歸訓練,也就無法得到精準的檢測框。

因為我們得到的監督信號只有圖像存在的類別信息,我們首先想到的就是將檢測問題轉化為一個分類問題。根據許多之前的研究我們可以知道,在使用卷積神經網絡對圖像進行特徵提取的時候,具有語義信息的目標會在特徵圖上高亮顯示,並且相同的類別會存在相似的特徵,如果我們能夠學習到目標類內和類間的特徵,是不是就可以在特徵圖上對目標進行定位呢?

這種思路是正確的,也是目前弱監督目標檢測普遍採用的方法之一,但其中也存在很多困難與阻力,比如說類內差異較大、怎麼去定義同一個類別的共性,像圖 3 那樣,我們應該怎麼去定義一輛摩托車?因為摩托車通常是和人同時出現的,且不同摩托車的類內差異也較大。

圖2:具有語義信息的物體在特徵圖上會高亮顯示

圖3: 同時出現摩托車和人的時候,怎麼去定義一類物體?

3. 目前的兩種主流解決思路及代表性方法介紹

a) 基於多實例學習的方法

Multiple Instance Learning(MIL)多實例學習是機器學習中的一個經典問題。在弱監督目標檢測中,我們把整張圖片作為一個 bag,然後我們通過selective search(ss)算法生成大量的proposal,把這些proposals作為 instances,再訓練一個分類器為這些 proposal 賦予類別標籤。

2016 年的 CVPR (計算機視覺及模式識別領域國際頂級會議) 上有一篇論文提出了一種 WSDDN 的算法,使用 MIL 的思路,將弱監督目標檢測做到了當時的最高水平。他是怎麼做的呢?像我們上面說的,首先通過 ss 算法生成大量的候選框,再使用卷積神經網絡對整張圖像進行特徵提取,在獲取到整張圖片的特徵後,使用 roi pooling 的方法,獲取每一個proposal 的特徵,這裡和 fast rcnn 的方法非常類似。但在得到每一個 proposal 的特徵之後,作者將後續分為了兩個階段:1)分類階段;2)定位階段。兩個階段分別計算了某一個特定的proposal j 屬於第i類的概率和這個proposal j對這種圖片存在第i類目標的貢獻率,生成的都是c * |R|的矩陣,其中c是類別的個數,|R|是proposal的個數,其實這個地方就是分別在橫向和縱向做了兩次softmax。

拿圖4舉個例子吧,圖片上存在人和馬兩個類別,那我們拿到的監督信號就是圖片的類別是人和馬。對於ss生成的每個proposal,我們都能計算出其屬於人和馬的概率,就是一個2*|R|的矩陣,然後我們在這個矩陣的橫向和縱向分別做兩次softmax,就能分別的到這個區域屬於人和馬的概率的softmax值以及這個區域對這張圖像存在人和馬的貢獻。

圖4:wsddn分兩路計算softmax

然後我們將得到的值進行 element-wise 的乘積,得到這個區域的最終分數,並根據分數來對 proposal 進行篩選,得到最優的 proposal。

b) 基於深度特徵圖挖掘的方法

上面說到的方法似乎不是很好理解,那說一個簡單通俗易懂的方法吧。我們上面說過,卷積神經網絡在對物體進行特徵提取的時候,具有語義信息的物體,在特徵圖上會高亮顯示,那我們是不是能夠通過處理這些語義信息來獲取目標的位置呢?

答案是肯定的,同樣實在 2016 年的 CVPR 上,MIT 的 Bolei Zhou 提出的 class activation mapping 的方法,通過挖掘特徵圖上的高亮區域,得到目標物體的位置信息。

圖5: 對特徵圖和權值進行線性加權

是不是看完上面這張圖,基本就很明了了。這篇論文的思路非常簡單,使用 global average pooling 的方法對特徵圖進行全局池化,然後再通過一個全連接層進行分類,這是一個普通的不能再普通的分類框架。作者這裡對最後一層特徵圖和分類層之間的關係進行挖掘,我們知道,最後一層每個特徵圖在經過全局池化後得到了對應數目的特徵點,這些特徵點與分類層的一個特定節點都會有連接,作者把這個連接的權值看作是該特徵圖對於這幅圖像被分為該特定類別的貢獻率,並將特徵圖與其對應的連接權值進行了一個簡單的線性加權,得到最後的特徵輸出。在最後的特徵輸出上,該特定類別具有非常顯著的響應,也就能很輕易的獲取到特定類別目標的位置信息。

圖6: 第三列使用cam得到的目標區域的高亮顯示

總結一下,上面介紹了兩種完全不同的弱監督目標檢測的方法,雖然這兩種算法在 9102 年的今天看起來已經 out 了,而且性能似乎並不是那麼好,但這兩種方法確實為弱監督目標檢測提供了兩種非常有價值的思路,在近幾年的 cvpr,iccv 等頂級計算機視覺國際會議中,陸陸續續出現了很多關於弱監督目標檢測的論文,基本都是從今天介紹的兩種方法出發研究得到的。

弱監督目標檢測的性能和全監督的算法比起來,性能上還存在較大差異,但弱監督的方法能夠很大程度上降低數據標註的工作量,作為一個科學研究問題,還有更多、未知的方法值得我們努力去挖掘!

最後還是想叨叨一句,上面說到的都是簡單的不能再簡單的對算法的通俗解釋,如果有興趣的同學,千萬、一定要去讀論文,多讀 paper,多寫 code,才能發出好論文!

相關參考資料:

[1]Bilen H, Vedaldi A. Weakly supervised deep detection networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 2846-2854.

[2]Zhou B, Khosla A, Lapedriza A, et al. Learning deep features for discriminative localization[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 2921-2929.

我愛小詹

/ 今日互動 /

留言主題 : 說實話,你覺得本文難度如何?

留言格式 : Day xx. blablabla ;這裡強調下 ,不符合主題和格式的打卡不移入精選,打卡無效噢 !