目前可以將現有的基於深度學習的目標檢測與識別算法大致分為以下三大類:
- 基於區域建議的目標檢測與識別算法,如R-CNN, Fast-R-CNN, Faster-R-CNN;
- 基於回歸的目標檢測與識別算法,如YOLO, SSD;
- 基於搜索的目標檢測與識別算法,如基於視覺注意的AttentionNet,基於強化學習的算法
一、基於區域建議的目標檢測與識別算法
這類算法的主要步驟是:
- 首先使用選擇性搜索算法(Selective Search,SS)、Bing、EdgeBoxes這些目標候選區域生成算法生成一系列候選目標區域;
- 然后通過深度神經網絡提取目標候選區域的特征;
- 最后用這些特征進行分類,以及目標真實邊界的回歸;
目前此類算法比較知名的有R-CNN, Fast-R-CNN, Faster-R-CNN三種方法。從順序上,Fast-R-CNN針對R-CNN的不足做了改進,而Faster-R-CNN對Fast-R-CNN做了改進,三者在非實時水平上,精度和速度明顯改善。
1、R-CNN
R-CNN,Fast-R-CNN的作者同為Ross Girshick。
R-CNN的工作流程:
⦁ 首先用選擇性搜索算法(Selective Search,SS)提取1k-2k個候選區域
⦁ 使用深度卷積神經網絡提取每一個候選區的深度特征
⦁ 訓練SVM分類器來對這些特征進行分類
⦁ 最后通過邊界回歸算法重新定位目標邊界框
Selective Search對算法的貢獻:此前,在一些傳統的目標識別算法中,使用的是滑動窗口進行候選區提取,這樣會導致在一章圖片中會產生高達百萬個候選區,而在R-CNN中,使用選擇性搜索算法,每次提取的候選區大概只有1k到2k可能包含物體的區域。
使用深度CNN提取建議區域的特征時,需要注意的是,有些網絡對輸入圖片的大小有要求,如Alex-net要求輸入的圖片尺寸為227像素*227像素的大小。因此,由SS提取得到的候選區的尺寸大小不一,需要在輸入神經網絡之前調整大小。通過深度CNN提取特征后,每個目標候選區域相應得到一個4096維的特征向量。
以上得到了每個候選區域的特征向量,接下來使用SVM分類器對特征進行分類。
相對與傳統的方法,R-CNN的主要優勢有:
⦁ 使用深度學習方法提取深度特征,而不是使用人為設計,因此提高了任務精度。
⦁ 采用區域建議提取可能目標,而不是使用滑動窗口的方式取檢測目標,這樣減少了不必要的候選區。
⦁ 加入了邊界回歸的策略來進一步提高檢測精度
不足之處:
雖然相對於傳統的目標檢測與識別算法,R-CNN在公共數據集上的准確率有着突破性的進展,如在PASCAL VOC的准確率從35.1%提升到了53.7%,但是R-CNN也有一定的局限性。目標候選區的重疊使得CNN特征提取的計算中有着很大的冗余,着很大程度上限制了檢測速度。針對這個缺點將R-CNN升級為Fast-R-CNN。
R-CNN主要存在以下三個不足之處:
- 整個模型分為多個步驟,包括Selective Search提取候選區,訓練CNN提取深度特征,訓練SVM進行分類沒訓練邊框回歸器。
- 測試時間長,由於每張圖片要處理大量的目標候選框
- 訓練時所需空間大,花費時間多,R-CNN訓練時處理每一張圖片全部resize到227*227分辨率的圖像候選框(為了避免圖像扭曲嚴重,中間可以采取一些技巧減少圖像扭曲),並輸入網絡中,這使得處理每一章圖片所使用的空間大,同時整個模型需要訓練CNN, SVM分類器,以及目標邊框回歸器,從而導致訓練時間花費很多。
2、Fast-R-CNN
(待續)