看了這篇文章,了解深度卷積神經網絡在目標檢測中的進展

2020-12-08 雷鋒網

近些年來,深度卷積神經網絡(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 個類別的分類任務。

該方法在 VOC 2011 test 數據集上取得了 71.8% 的檢測精度。該方法的缺點是:1,訓練和測試過程分為好幾個階段:得到候選區域,DCNN 特徵提取, SVM 分類、SVM 邊界框回歸,訓練過程非常耗時。2,訓練過程中需要保存 DCNN 得到的特徵,很佔內存空間。3, 測試過程中,每一個候選區域都要提取一遍特徵,而這些區域有一定重疊度,各個區域的特徵提取獨立計算,效率不高,使測試一幅圖像非常慢。

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 的對比如下圖:

在 VOC 2007 測試圖像上,對於 300300 大小的輸入圖像,SSD 可達到 72.1% mAP 的準確率,速度為 58 幀每秒,且能預測 7k 以上個邊界框,而 YOLO 只能預測 98 個。下圖是上述幾個算法在性能上的對比:

參考文獻

[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,本文原載於知乎專欄

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 了解CNN這一篇就夠了:卷積神經網絡技術及發展
    在不同類型的神經網絡當中,卷積神經網絡是得到最深入研究的。早期由於缺乏訓練數據和計算能力,要在不產生過擬合的情況下訓練高性能卷積神經網絡是很困難的。標記數據和近來GPU的發展,使得卷積神經網絡研究湧現並取得一流結果。本文中,我們將縱覽卷積神經網絡近來發展,同時介紹卷積神經網絡在視覺識別方面的一些應用。
  • AI入門:卷積神經網絡
    講到AI不得不講深度學習,而講到深度學習,又不能不講卷積神經網絡。如果把深度學習比作中國的網際網路界,那捲積神經網絡和循環神經網絡就是騰訊和阿里級別的地位。今天我們主要討論的卷積神經網絡,到底卷積神經網絡能解決什麼問題,它的結構是怎樣的?是怎麼學習的?應用在哪些具體的產品上?本文將為大家一一解答。
  • 「一文看懂」深度神經網絡加速和壓縮新進展年度報告
    中國科學院自動化研究所的程健研究員,向大家介紹過去一年,深度神經網絡加速和壓縮方面所取得的進展。鄭板橋在《贈君謀父子》一詩中曾寫道,「刪繁就簡三秋樹,領異標新二月花。」這句詩講的是,在畫作最易流於枝蔓的蘭竹時,要去掉其繁雜使之趨於簡明如「三秋之樹」;而針對不同的意境要有發散的引申,從而使每幅作品都如「二月之花」般新穎。
  • 深度| 理解深度學習中的卷積
    有太多的公開課、教程在反覆傳頌卷積神經網絡的好,卻都沒有講什麼是「卷積」,似乎默認所有讀者都有相關基礎。這篇外文既友好又深入,所以翻譯了過來。文章高級部分通過流體力學量子力學等解釋卷積的做法在我看來有點激進,這些領域恐怕比卷積更深奧,所以只需簡略看看即可。以下是正文:卷積現在可能是深度學習中最重要的概念。正是靠著卷積和卷積神經網絡,深度學習才超越了幾乎其他所有的機器學習手段。
  • 萬字長文帶你看盡深度學習中的各種卷積網絡(上篇)
    雷鋒網 AI 科技評論按:深度學習中的各種卷積網絡大家知多少?對於那些聽說過卻又對它們沒有特別清晰的認識的小夥伴們,Kunlun Bai 這篇文章非常值得一讀。Kunlun Bai 是一位人工智慧、機器學習、物體學以及工程學領域的研究型科學家,在本文中,他詳細地介紹了 2D、3D、1x1 、轉置 、空洞(擴張)、空間可分離、深度可分離、扁平化、 分組等十多種卷積網絡類型。
  • 深度卷積神經網絡演化歷史及結構改進脈絡-40頁長文全面解讀
    Network In Network[16]的主要思想是用一個小規模的神經網絡來替代卷積層的線性濾波器,在這篇文獻中,小型網絡是一個多層感知器卷積網絡。顯這種小型網絡比線性的卷積運算有更強的的描述能力。 卷積核小型化是現在普遍接受的觀點,在VGG網絡中已經介紹了。
  • 深度學習技術和卷積神經網絡(CNN)讓機器視覺識別更智能
    隨著人工智慧技術的進步,深度學習技術(DL)和卷積神經網絡技術(CNN)領域的人工智慧(AI)被引入到機器視覺圖像處理系統的應用中來,從而幫助機器學習和機器檢測缺陷更加高效,使機器視覺識別的過程更加精確。也讓使用這些技術的企業可以從智能化中獲得更高的生產經營效益。
  • CVPR 2019 神經網絡架構搜索進展綜述
    神經網絡架構搜索(NAS)——前言那麼問題來了,神經網絡架構搜索(NAS)究竟是什麼?為什麼我們要了解NAS呢?(這一部分是為了去年完全沒有跟進領域內進展的人準備的)NAS的核心思想是使用搜索算法來發現用於解決我們的問題所需要的神經網絡結構。
  • 深度學習之卷積神經網絡經典模型
    LeNet-5模型一共有7層,每層包含眾多參數,也就是卷積神經網絡中的參數。雖然層數只有7層,這在如今龐大的神經網絡中可是說是非常少的了,但是包含了卷積層,池化層,全連接層,可謂麻雀雖小五臟俱全了。為了方便,我們把卷積層稱為C層,下採樣層叫做下採樣層。首先,輸入層輸入原始圖像,原始圖像被處理成32×32個像素點的值。
  • 孫啟超:卷積神經網絡在人臉識別技術中的應用 | AI研習社第51期猿...
    人工智慧包含了機器學習這一個子領域,機器學習又包含了表示學習(一種能自動抽取特徵的學習方式),而深度學習則是表示學習中最具代表性的一種學習。我們今天要講的 CNN 即卷積神經網絡,就是深度學習中的一種。機器學習的核心思想其實就是利用特徵來學習到我們所需要的知識,因而一種新的工作出現了,那就是專門做特徵工程的一類工程師。
  • 環信人工智慧專家李理:詳解卷積神經網絡
    深度學習受到大家的關注很大一個原因就是Alex等人實現的AlexNet(一種深度卷積神經網絡)在LSVRC-2010 ImageNet這個比賽中取得了非常好的成績。此後,卷積神經網絡及其變種被廣泛應用於各種圖像相關任務。 這裡主要參考了Neural Networks and Deep Learning和cs231n的課程來介紹CNN,兩部分都會有理論和代碼。
  • 深度| 一文概覽圖卷積網絡基本結構和最新進展
    目前其中有一些在專業領域中都得到了非常好的結果,在這之前的最佳結果都是由基於核的方法、基於圖論的正則化方法或是其他方法得到的。在這篇文章中,我將簡要介紹一下這個領域的最新進展,並指出各種方法的優缺點。在這篇文章中作者對這幾類模型的局限性進行了簡短的討論。我對 Ferenc 這篇綜述的看法見本文文末。
  • 一文了解卷積神經網絡基礎,建議收藏
    今天給大家講一下卷積神經網絡,主要包括四個部分:卷積神經網絡的歷史、全連接層、卷積層和池化層。CNN的英文全稱是Convolutional Neural Network,雛形是LeCun在1998年發明的LeNet網絡結構。
  • 知識普及:卷積神經網絡模型是怎樣工作的?可以做些什麼?
    知識普及:卷積神經網絡模型是怎樣工作的?可以做些什麼? 工程師青青 發表於 2018-08-30 17:37:00 在走進深度學習的過程中,最吸引作者的是一些用於給對象分類的模型。最新的科研結果表示,這類模型已經可以在實時視頻中對多個對象進行檢測。
  • 深度卷積神經網絡CNNs的多GPU並行框架及其應用
    嘗試更改Deep CNNs模型,訓練一個更大的網絡,增加濾波器數目,減小步長,增加中間卷積層feature map數目,訓練時所需顯存將達到9GB以上,使用單個Tesla K20c GPU(4.8GB顯存)無法開展訓練實驗;而多GPU模型並行訓練實驗中該模型的錯誤率對比圖1模型降低2%。
  • 要想了解卷積神經網絡,首先需要了解三種基本架構
    基本的比如人臉識別,人臉關鍵點,全景圖像的重建等等一般的可以用於圖像的物體識別(如人臉和汽車圖像),以及圖像的圖像變換(如人臉和人臉圖像),視頻編碼(如視頻監控和圖像目標識別)等。通過卷積神經網絡提取數據表徵特徵。要想了解卷積神經網絡,首先需要了解三種基本架構:全連接,池化和卷積。基於全連接架構的卷積神經網絡用於圖像和3d立體視覺等識別問題,可直接使用relu激活函數。
  • 一文讓你徹底了解卷積神經網絡
    卷積神經網絡(Convolutional Neural Network,CNN)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型圖像處理有出色表現。 它包括卷積層(convolutional layer)和池化層(pooling layer)。
  • 深度學習閱讀導航 | 03 FPN:基於特徵金字塔網絡的目標檢測
    推理時間大大增加,使得這種方法在實際應用中不切實際。此外,在圖像金字塔上端到端地訓練深層網絡,在內存方面也是不可行的。 近年來,深度卷積網絡的提出幾乎完全替代了傳統的基於手動設計特徵的方法。這說明當前基於單層特徵的檢測系統還是具有一定的局限性。(c)金字塔型特徵層級然而,圖像金字塔並不是計算多尺度特徵表示的唯一方法。深度卷積神經網絡逐層計算特徵層次,對於子採樣層,特徵層次具有固有的多尺度、金字塔形狀。這種網絡內要素層次結構生成了不同空間解析度的特徵圖,但由於深度不同導致了較大的語義鴻溝。
  • 理解神經網絡:從神經元到RNN、CNN、深度學習
    隨著時間的推移,證明了神經網絡在精度和速度方面,比其他的算法性能更好。並且形成了很多種類,像CNN(卷積神經網絡),RNN,自編碼,深度學習等等。神經網絡對於數據科學和或者機器學習從業者,就像線性回歸對於統計學家一樣。因此,對神經網絡是什麼有一個基本的理解是有必要的,比如,它是怎麼構成的,它能處理問題的範圍以及它的局限性是什麼。
  • 深度卷積神經網絡CNNs的多GPU並行框架 及其在圖像識別的應用
    1.CNNs模型並行導論1.1.典型應用分析:圖像識別 圖像識別是深度卷積神經網絡獲得成功的一個典型應用範例。 圖1揭示了一個具有5個卷積層和3個全連接層的深度卷積神經網絡,該模型可應用於圖像分類。