天天看點

大牛講堂 | 邬書哲:物體檢測算法的革新與傳承

雷鋒網(公衆号:雷鋒網)按:本文作者邬書哲博士,師從中科院計算所山世光博士。

大牛講堂 | 邬書哲:物體檢測算法的革新與傳承

r-cnn的出現帶來檢測精度的一次巨大提升,在pascal voc 2010上,全面超越了之前的方法,map提高了20%;在imagenet的物體檢測競賽上,重新整理了之前的冠軍記錄,map提高了10%。然而r-cnn的檢測速度非常慢,在gpu上處理一張圖需要13s,在cpu上處理一張圖需要長達53s。

大牛講堂 | 邬書哲:物體檢測算法的革新與傳承

fast r-cnn是r-cnn的加速版本,其借鑒了spp-net的做法,在提取每個視窗的特征之前,直接在全圖上進行卷積,避免了大量重複計算,同時采用svd分解對分類所用的全連接配接層進行壓縮,将一個大的全連接配接層拆解成兩個小的全連接配接層。通過這樣的政策,fast r-cnn相比r-cnn能夠有213倍的加速比。

總的來看,fast r-cnn還是不夠快,因為其采用了selective search來提取候選視窗,這部分處理一張圖在cpu上需要2s,而即使是采用edgebox,在gpu上也需要0.3s,這個時間和分類的時間相當。于是faster r-cnn進一步引了rpn網絡,并且讓其和分類網絡共享卷積層,實作進一步的加速。從r-cnn到faster r-cnn,這是一個化零為整的過程,從不同的子產品不同的方法來做,到最後整合到同一個網絡中來做,精度不斷提高,速度也是在不斷提高的。

faster r-cnn中有一個非常關鍵的設計,也就是anchor box,相比于之前的滑動視窗+圖像金字塔的方式,采用anchor box實際上是固定輸入圖像不變,而改成去變化視窗,采用不同大小和長寬比的視窗來掃描圖像。faster r-cnn在pascal voc 2012、ilsvrc 2015和ms coco 2015的檢測任務上都獲得了最好成績,并且在絕大多數類别上都獲得了最高的ap。

大牛講堂 | 邬書哲:物體檢測算法的革新與傳承

在faster r-cnn中,如果采用resnet這樣的網絡結構,那麼每一個候選視窗都要經過其最後一組卷積層的計算,這會帶來巨大的時間開銷,這部分時間大概會占到總的檢測時間的三分之一,是以出現了一個改進版:r-fcn,其将roipooling後移,最後一組卷積繼續在整個特征圖上做,進而進一步避免了重複計算。r-fcn中有一個比較巧妙的設計,叫做位置敏感得分圖,以這張圖為例,在判斷候選框裡面是不是一個人的時候,其會分别觀察這個框的各個位置,如左上角、右上角等,然後分别作出判斷,之後再投票整合得到最終的分類結果。可以看到這個跟dpm稍微有點相似,但是不同的是這裡各個部分的幾何關系是固定的,而dpm會推斷各個部件的位置。

r-fcn相比于faster r-cnn在達到類似精度的條件下在速度上能夠有3倍左右的提升,在某些情況下甚至能夠有20倍的提升。

r-cnn系列方法經過一系列的加速,在很多情況下,還是無法達到實時的25fps這個要求,影響速度的因素有很多,包括輸入大小、候選視窗的數量等。并且這一系列方法還有一個特點,就是要看兩次,一看定候選視窗,二看才定檢測結果。為了提高檢測速度,出現了yolo和ssd這樣的方法,其特點就是隻看一次,直接得到檢測結果。

另外輸入圖像的尺寸也減小了,從faster r-cnn的1000x600減小到了yolo的446x446,網絡規模也進行了一定的控制。可以看到在yolo的網絡最後是兩個全連接配接層,直接用全圖的資訊來預測檢測框,這可以看成是對上下文的資訊進行了利用,還有就是全連接配接層的計算本身比較快。yolo使得檢測速度得到了很大提升,快速版本在gpu可以達到150fps,然而其精度下降得非常厲害,是以實用性大大降低了。

大牛講堂 | 邬書哲:物體檢測算法的革新與傳承

有兩個因素是比較影響精度的,一是網格劃分,其使得位置過于粗糙,二是網絡深度,太深層的特征使得特征過于粗糙。ssd一方面控制了網絡深度,另一方面在回歸視窗的時候會同時采用不同層的特征,在較淺層上回歸小的視窗,在較深層上回歸大的視窗。ssd速度相比沒有yolo那麼快,但是換來了精度上的提升。如果和前面提到的faster r-cnn相對比,ssd可以看成是一個rpn網絡。個人認為,在完全相同的條件下,ssd速度會更快,但是faster r-cnn精度會更好。

最後要講的方法是經典上的一個傳承:cascade cnn。當考慮一些特定類别目标的檢測的時候,尤其是人臉和人體,對速度的要求會更高,而如果隻考慮單一類别的物體,傳統的級聯結構分類器仍然是非常有效的方法。而rpn加上fast r-cnn的形式本身看起來也是一種級聯。cascade cnn是3組一共6個網絡進行級聯,交替進行分類和邊框校準。分類網絡的輸入圖像的分辨率是随着輸入規模動态調整的,在最開始輸入規模比較大的時候,用比較小的輸入圖像,這樣可以盡量的節約時間,然後逐漸從12x12變化到24x24,再到48x48。

大牛講堂 | 邬書哲:物體檢測算法的革新與傳承

cascade cnn在做視窗校準的時候,還不是采取回歸的方式,而是人為的設定了45種不同的模式,然後采用分類的方式來對視窗進行校準。cascade cnn後續也有一些跟進的工作,例如采用多任務協同學習,這種做法在網絡比較小的時候,能夠讓它的精度得到提升。再有比方說把多級分類器協同訓練,這樣可以采用類似于faster r-cnn那樣端到端的訓練方式,這可以使精度再進一步往上提。

大牛講堂 | 邬書哲:物體檢測算法的革新與傳承

從之前的工作到現在的工作,有一些基本的政策,包括難例挖掘,多尺度,相關任務協同學習,上下文模組化等,這些政策都被廣泛驗證是有效的。當出現一個新的方法之後,大家往往會把同樣的政策應用到這個新方法上去,做出一系列的工作。

物體檢測領域現在還有很多其它的工作,比如說densebox、尺度相關池化、inside-outside net、multi-region cnn等等,這些方法很多都展現了以上提到的政策,同時也使基于深度學習的物體檢測方法走得更遠。 

雷鋒網注:本文由大牛講堂授權釋出,如需轉載請聯系原作者,并注明作者和出處,不得删減内容。有興趣可以關注公号【地平線機器人技術】,了解最新消息。

本文作者:大牛講堂

繼續閱讀