鏈接:
綜述(作者的個人理解 一刀流)
內容摘要:R-CNN是Region-based Convolutional Neural Networks的縮寫,中文翻譯是基於區域的卷積神經網絡,是一種結合區域提名(Region Proposal)和卷積神經網絡(CNN)的目標檢測方法。Ross Girshick在2013年的開山之作《Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation》[1]奠定了這個子領域的基礎,這篇論文后續版本發表在CVPR 2014[2],期刊版本發表在PAMI 2015[3]。
其實在R-CNN之前已經有很多研究者嘗試用Deep Learning的方法來做目標檢測了,包括OverFeat[7],但R-CNN是第一個真正可以工業級應用的解決方案,這也和深度學習本身的發展類似,神經網絡、卷積網絡都不是什么新概念,但在本世紀突然真正變得可行,而一旦可行之后再迅猛發展也不足為奇了。
R-CNN這個領域目前研究非常活躍,先后出現了R-CNN[1,2,3,18]、SPP-net[4,19]、Fast R-CNN[14, 20] 、Faster R-CNN[5,21]、R-FCN[16,24]、YOLO[15,22]、SSD[17,23]等研究。Ross Girshick作為這個領域的開山鼻祖總是神一樣的存在,R-CNN、Fast R-CNN、Faster R-CNN、YOLO都和他有關。這些創新的工作其實很多時候是把一些傳統視覺領域的方法和深度學習結合起來了,比如選擇性搜索(Selective Search)和圖像金字塔(Pyramid)等。
第一步是要做區域提名(Region Proposal):找出可能的感興趣區域(Region Of Interest, ROI)
一、滑動窗口:本質上就是窮舉法(不同的尺度和長寬比把所有可能的大大小小的塊都窮舉出來,然后送去識別),復雜度太高,產生了很多的冗余候選區域,在現實當中不可行。
二、規則塊:窮舉法的基礎上進行了一些剪枝,只選用固定的大小和長寬比,對於普通的目標檢測來說,規則塊依然需要訪問很多的位置,復雜度高。
三、選擇性搜索:核心在於如何有效地去除冗余候選區域(其實冗余候選區域大多是發生了重疊)。方法:自底向上合並相鄰的重疊區域,從而減少冗余。 選擇性搜索采用多樣性策略來增加候選區域以保證召回,比如顏色空間考慮RGB、灰度、HSV及其變種等,相似度計算時既考慮顏色相似度,又考慮紋理、大小、重疊情況等。
總體上,選擇性搜索是一種比較朴素的區域提名方法,被早期的基於深度學習的目標檢測方法(包括Overfeat和R-CNN等)廣泛利用,但被當前的新方法棄用了。
OverFeat是用CNN統一來做分類、定位和檢測的經典之作,作者是深度學習大神之一————Yann Lecun在紐約大學的團隊。OverFeat也是ILSVRC 2013任務3(分類+定位)的冠軍得主[10]。
Overfeat是CNN用來做目標檢測的早期工作,主要思想是采用了多尺度滑動窗口來做分類、定位和檢測,雖然是多個任務但重用了模型前面幾層,這種模型重用的思路也是后來R-CNN系列不斷沿用和改進的經典做法。
當然Overfeat也是有不少缺點的,至少速度和效果都有很大改進空間,后面的R-CNN系列在這兩方面做了很多提升。
基於區域提名的方法,包括R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN。
1.R-CNN:Overfeat可以看做是R-CNN的一個特殊情況,只需要把Selective Search(RCNN)換成多尺度的滑動窗口(Overfeat),每個類別的邊框回歸器換成統一的邊框回歸器,SVM換為多層網絡即可。但是Overfeat實際比R-CNN快9倍,這主要得益於卷積相關的共享計算。
事實上,R-CNN有很多缺點:重復計算,SVM模型,訓練測試分為多步,訓練的空間和時間代價很高,慢(GPU上處理一張圖片需要13秒,CPU上則需要53秒)
R-CNN效果好,其中ILSVRC 2013數據集上的mAP由Overfeat的24.3%提升到了31.4%,第一次有了質的改變。
2.Fast R-CNN是要解決R-CNN和SPP-net兩千個左右候選框帶來的重復計算問題,其主要思想為:使用一個簡化的SPP層,訓練和測試是不再分多步,SVD
Fast R-CNN比R-CNN的訓練速度(大模型L)快8.8倍,測試時間快213倍,比SPP-net訓練速度快2.6倍,測試速度快10倍左右。
3.Faster R-CNN則直接利用RPN(Region Proposal Networks)網絡來計算候選框,拋棄了Selective Search,引入了RPN網絡,使得區域提名、分類、回歸一起共用卷積特征,從而得到了進一步的加速。但是,Faster R-CNN需要對兩萬個Anchor Box先判斷是否是目標(目標判定),然后再進行目標識別,分成了兩步。
4.R-FCN則將目標檢測最后的全連接層之類換為了一個位置敏感的的卷積網絡,從而讓所有計算都可以共享。
端到端(End-to-End)的目標檢測方法,這些方法無需區域提名,包括YOLO和SSD
YOLO的全拼是You Only Look Once,顧名思義就是只看一次,進一步把目標判定和目標識別合二為一,所以識別性能有了很大提升,達到每秒45幀,而在快速版YOLO(Fast YOLO,卷積層更少)中,可以達到每秒155幀。
