看了這篇文章,了解深度卷積神經網路在目標檢測中的進展
近些年來,深度卷積神經網路(DCNN)在圖像分類和識別上取得了很顯著的提高。回顧從 2014 到 2016 這兩年多的時間,先後湧現出了 R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SDP-CRC, YOLO,G-CNN, SSD 等越來越快速和準確的目標檢測方法。
1. 基於 Region Proposal 的方法
該類方法的基本思想是:先得到候選區域再對候選區域進行分類和邊框回歸。
1.1 R-CNN[1]
R-CNN 是較早地將 DCNN 用到目標檢測中的方法。其中心思想是對圖像中的各個候選區域先用 DCNN 進行特徵提取並使用一個 SVM 進行分類,分類的結果是一個初略的檢測結果,之後再次使用 DCNN 的特徵,結合另一個 SVM 回歸模型得到更精確的邊界框。
其中獲取候選區域的方法是常用的 selective search。 一個圖形中可以得到大約 2000 個不同大小、不同類別的候選區域,他們需要被變換到同一個尺寸以適應 CNN 所處理的圖像大小(227x227)。
該文章中使用的 CNN 結構來自 AlexNet, 已經在 ImageNet 數據集上的 1000 個類別的分類任務中訓練過,再通過參數微調使該網路結構適應該文章中的 21 個類別的分類任務。
1.2 Fast R-CNN[2]
在 R-CNN 的基礎上,為了使訓練和測試過程更快,Ross Girshick 提出了 Fast R-CNN,使用 VGG19 網路結構比 R-CNN 在訓練和測試時分別快了 9 倍和 213 倍。其主要想法是: 1, 對整個圖像進行卷積得到特徵圖像而不是對每個候選區域分別算卷積;2,把候選區域分類和邊框擬合的兩個步驟結合起來而不是分開做。原理圖如下:
該文章中使用 ROI Pooling Layer 將不同大小的候選區域的特徵轉化為固定大小的特徵圖像,其做法是:假設候選區域 ROI 的大小為, 要輸出的大小為, 那麼就將該 ROI 分成 個格子,每一個格子的大小為, 然後對每一格子使用 max-pooling 得到目標大小的特徵圖像。
候選區域的分類和邊框擬合的結合是通過一個雙任務的網路結構:使用兩個全連接的輸出層分別進行類別預測和邊框預測 (如上圖所示),將這兩個任務進行同時訓練,利用一個聯合代價函數:
公式中的兩項分別是 classification loss 和 regression loss。該方法相比於 R-CNN 快了不少。特別是在測試一幅新圖像時,如果不考慮生成候選區域的時間,可以達到實時檢測。生成候選區域的 selective search 演算法處理一張圖像大概需要 2s 的時間,因此成為該方法的一個瓶頸。
1.3 Faster R-CNN[3]
上面兩種方法都依賴於 selective search 生成候選區域,十分耗時,那麼可不可以直接利用卷積神經網路得到候選區域呢?這樣的話就幾乎可以不花額外的時間代價就能得到候選區域。
Shaoqing Ren 提出了 Faster R-CNN 來實現這種想法:假設有兩個卷積神經網路,一個是區域生成網路,得到圖像中的各個候選區域,另一個是候選區域的分類和邊框回歸網路。這兩個網路的前幾層都要計算卷積,如果讓它們在這幾層共享參數,只是在末尾的幾層分別實現各自的特定的目標任務,那麼對一幅圖像只需用這幾個共享的卷積層進行一次前向卷積計算,就能同時得到候選區域和各候選區域的類別及邊框。
候選區域生成網路(Region Proposal Network, RPN)方法的原理圖如上,先通過對輸入圖像的數層卷積得到一個特徵圖像,然後在特徵圖像上生成候選區域,做法是使用一個(3)的滑動窗口,將局部的特徵圖像轉換成一個低維特徵, 預測個的區域(cls 層,個輸出)是否為候選區域和對應的個邊框(reg 層,個輸出)。這裡的個區域被稱為錨(anchor), 對應著與滑動窗口具有相同的中心的不同大小和不同長寬比的矩形框。假設卷積後的特徵圖像大小為, 那麼一共有個錨。這種特徵提取和候選區域生成的方法具有位移不變性。
使用 RPN 得到候選區域後,對候選區域的分類和邊框回歸仍然使用 Fast R-CNN。這兩個網路使用共同的卷積層。 由於 Fast R-CNN 的訓練過程中需要使用固定的候選區域生成方法,不能同時對 RPN 和 Fast R-CNN 使用反向傳播演算法進行訓練。該文章使用了四個步驟完成訓練過程:1,單獨訓練 RPN;2,使用步驟中 1 得到的區域生成方法單獨訓練 Fast R-CNN; 3, 使用步驟 2 得到的網路作為初始網路訓練 RPN。4, 再次訓練 Fast R-CNN, 微調參數。
Faster R-CNN 的精度和 Fast R-CNN 差不多,但是訓練時間和測試時間都縮短了 10 倍。
1.4 ION: Inside-Outside Net[4]
ION 也是基於 Region Proposal 的,在得到候選區域的基礎上,為了進一步提高在每一個候選感興趣區域 ROI 的預測精度,ION 考慮了結合 ROI 內部的信息和 ROI 以外的信息,有兩個創新點:一是使用空間遞歸神經網路(spatial recurrent neural network)把上下文(context)特徵結合,而不是只使用 ROI 內的局部特徵 ,二是將不同卷積層得到的特徵連接起來,作為一個多尺度特徵用來預測。
ION 在上、下、左、右四個方向獨立地使用 RNN,並把它們的輸出連接起來組合成一個特徵輸出,經過兩次這樣的過程得到的特徵作為上下文特徵,再與之前的幾個卷積層的輸出特徵連接起來,得到既包括上下文信息,又包括多尺度信息的特徵。
1.5 HyperNet[5]
HyperNet 在 Faster R-CNN 的基礎上,在得到更好的候選區域方面比 Faster R-CNN 中使用的 RPN 有了進一步的提高。其想法也是把不同卷積層得到的特徵圖像結合起來,產生更好的 region proposal 和檢測準確率。
該文章把不同卷積層的輸出結合起來得到的特徵成為 Hyper Feature。由於不同卷積層的輸出大小不一樣,較淺層的特徵圖像解析度較高,對提高邊界框的精確性有益,但是容易對邊界框內的物體錯誤分類;較深層得到的特徵圖像解析度很低,對小一些的物體的邊界框定位容易不準確,但這些特徵更加抽象,可以讓對物體的分類的準確性更高。因此二者的結合,對目標檢測的正確率和定位精度都有幫助。
1.6 SDP-CRC[6]
SDP-CRC 在處理不同尺度的目標和提高對候選區域的計算效率上提出了兩個策略。第一個策略是基於候選區域尺度的池化,即 Scale Department Pooling (SDP)。在 CNN 的框架中,由於輸入圖像要經過多次卷積,那些尺寸小的物體在最後一層的卷積輸出上的特徵不能很好的描述該物體。如果用前面某一層的特徵,則能夠更好的描述小物體,用靠後的層的特徵,則能更好地描述較大的物體。
因此 SDP 的想法是根據物體大小選擇合適的卷積層上的特徵來描述該物體。例如一個候選區域的高度在 0-64 個像素之間,則使用第三個卷積層上 (例如 VGG 中的 Conv3) 的特徵進行 pooling 作為分類器和邊框回歸器的輸入特徵,如果候選區域高度在 128 個像素以上,則使用最後一個卷積層 (例如 VGG 中的 Conv5) 的特徵進行分類和回歸。
第二個策略是使用捨棄負樣本的級聯分類器,即 Cascaded Rejection Classifer, CRC。Fast RCNN 的一個瓶頸是有很多的候選區域,對成千上萬個候選區域都進行完整的分類和回歸計算十分耗時。CRC 可以用來快速地排除一些明顯不包含某個物體的候選區域,只將完整的計算集中在那些極有可能包含某個物體的候選區域。該文章中使用了 AdaBoost 的方法,按順序使用每一個卷積層的特徵,由一些級聯的弱分類器來排除負樣本。在最後一層卷積的特徵圖像上,留下來的那些候選區域再進行分類和回歸。
SDP-CRC 的準確率比 Fast RNN 提高了不少,檢測時間縮短到了 471ms 每幀。
2. 不採用 Region Propsal, 直接預測邊界框的方法
2.1 YOLO[7]
YOLO 的思想是摒棄生成候選區域的中間步驟,通過單個卷積神經網路直接對各個邊界框進行回歸併且預測相應的類別的概率。
該方法將輸入圖像分成大小的網格。每一個網格單元預測 B 個邊界框和這些邊界框的可信度,有五個預測值:邊界框的中心相對於網格單元中心的坐標,邊界框相對於整個圖像的寬和高,還有該邊界框的可信度(基於和 ground truth 之間的 IoU)。每一個單元格還預測該單元格屬於個類別的概率,因此整個網路的輸出是一個大小為的張量。在實驗中,,因此輸出的大小是。
在測試階段,單元格的類別概率與該單元格的 B 個邊界框的可信度相乘,得到各個邊界框分別包含各個類別的物體的可信度。
YOLO 的優點是速度快,該文章中使用的 24 層卷積網路在測試圖像上可達到 45 幀每秒,而使用另一個簡化的網路結構,可達到 155 幀每秒。該方法的缺點有:1, 邊界框的預測有很大的空間限制,例如每一個單元格只預測兩個邊界框,並且只有一個類別。2,該方法不能很好地檢測到成群出現的一些小的目標,比如一群鳥。3,如果檢測目標的長寬比在訓練數據中沒有出現過或者不常見,該模型的泛化能力較弱。
2.2 G-CNN[8]
G-CNN 將目標檢測問題看作是把檢測框從一些固定的網格逐漸變化到物體的真實邊框的問題。 這是一個經過幾次迭代,不斷更新的過程。
其原理圖如上所示,初始檢測框是對整個圖像進行不同尺度的網格劃分得到的,在經過卷積後得到物體的特徵圖像,將初始邊框對應的特徵圖像通過 Fast R-CNN 中的方法轉化為一個固定大小的特徵圖像,通過回歸得到更加準確的邊框,再次將這個新邊框作為初始邊框,做新的一次迭代。經過若干次迭代後的邊框作為輸出。
G-CNN 中使用約 180 個初始邊框,經過 5 次迭代, 檢測幀率在 3fps 左右,準確率比 Fast R-CNN 要好一些。
2.3 SSD[9]
SSD 也是使用單個的卷積神經網路對圖像進行卷積後,在特徵圖像的每一個位置處預測一系列不同尺寸和長寬比的邊界框。在測試階段,該網路對每一個邊界框中分別包含各個類別的物體的可能性進行預測,並且對邊界框進行調整以適應目標物體的形狀。
SSD 在訓練時只需要一幅輸入圖像和該圖像中出現的物體的邊界框。在不同的卷積層輸出是不同尺度的特徵圖像(如上圖中的和),在若干層的特徵圖像上的每一個位置處, 計算若干個(如 4 個)默認邊界框內出現各個目標物體的置信度和目標物體的真實邊界框相對於默認邊界框的偏差。因此對於大小為的特徵圖像,共產生個輸出。這有點類似於 Faster R-CNN 中的錨的概念,但是將這個概念用到了不同解析度的特徵圖像上。SSD 和 YOLO 的對比如下圖:
參考文獻
[1] Girshick, Ross, et al. "Rich feature hierarchies for accurate object detection and semantic segmentation." CVPR 2014.
[2] Girshick, Ross. "Fast r-cnn." ICCV2015.
[3] Ren, Shaoqing, et al."Faster R-CNN: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.
[4] Bell, Sean, et al. "Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks." arXiv preprint arXiv:1512.04143 (2015).
[5] Kong, Tao, et al. "HyperNet: Towards Accurate Region Proposal Generation and Joint Object Detection." arXiv preprint arXiv:1604.00600 (2016).
[6] Yang, Fan, Wongun Choi, and Yuanqing Lin. "Exploit all the layers: Fast and accurate cnn object detector with scale dependent pooling and cascaded rejection classifiers." CVPR 2016.
[7] Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." arXiv preprint arXiv:1506.02640 (2015).
[8] Najibi, Mahyar, Mohammad Rastegari, and Larry S. Davis. "G-CNN: an Iterative Grid Based Object Detector." arXiv preprint arXiv:1512.07729 (2015).
[9] Liu, Wei, et al. "SSD: Single Shot MultiBox Detector." arXiv preprint arXiv:1512.02325 (2015).
雷鋒網按:原作者taigw,本文原載於知乎專欄。
※深度學習之父的神經網路第三課!
※用金庸、古龍群俠名稱訓練 LSTM,會生成多麼奇葩的名字?
※還在費心學編程?微軟用深度學習 AI 幫你寫代碼
※TensorFlow在工程項目中的應用 視頻+文字轉錄(下)
※TensorFlow在工程項目中的應用 公開課視頻+文字轉錄(上)
TAG:唯物 |
※理解卷積神經網路?看這篇論文就夠了
※深度全解卷積神經網路
※深度概覽卷積神經網路全景圖,沒有比這更全的了
※一文看懂:深度神經網路加速和壓縮新進展年度報告
※「一文看懂」深度神經網路加速和壓縮新進展年度報告
※基於深度卷積網路進行諷刺檢測
※卷積神經網路的最佳解釋!
※人臉識別—深度卷積網路帶來的突破
※《網路成癮癥狀檢測表》 你中了沒!
※用於單目深度估計的深度有序回歸網路
※萬字長文帶你看盡深度學習中的各種卷積網路(下篇)
※淺析圖卷積神經網路
※如何從信號角度理解卷積神經網路?
※萬字長文帶你看盡深度學習中的各種卷積網路(上篇)
※深度網路揭秘之深度網路背後的數學
※深度卷積神經網路演化歷史及結構改進脈絡-40頁長文全面解讀
※深度|卷積神經網路十五問:CNN與生物視覺系統的研究探索
※你真的了解網路世界嗎?
※視錯覺,神經網路的盲點
※六本質量還不錯的網路小說,《修真世界》了解一下