深度學習目標檢測2013-2018單雙階段主流模型概覽及詳解

背景:深度學習引入目標檢測領域以來,給目標檢測領域帶來了很多突破性的進展,文章“Deep Learning for Generic Object Detection: A Survey”由香港中文大、國防科技大、芬蘭奧盧大學、澳大利亞悉尼大學、加拿大滑鐵盧大學的研究者共同發佈的一篇綜述文章,系統的總結了2013年深度學習引入目標檢測領域以來的進展。非常具有參考意義。

目的: 本文在該論文基礎上,總結相應目標檢測主流模型,並廣泛參考資料。文章內容對於後續目標檢測項目和科研很有參考意義。

參考論文地址:https://arxiv.org/abs/1809.02165

一、目標檢測概況及進展

目的:目標檢測:從一個圖像之中定位出物體。

意義:目標檢測是計算機視覺領域最基礎的問題之一。深度學習給目標檢測帶來了很多突破性的進展。

本文作用:提供了深度學習給目標檢測領域帶來的一個綜合的概述。

在這裏插入圖片描述

圖爲歷年最好的模型在voc數據集上的mAP,紅線爲引入深度學習的時間點。我們可以看出,引入深度學習後,目標檢測領域的mAP達到了一個快速的上升。
在這裏插入圖片描述
圖爲經典的目標檢測模型出現的時間點,左爲手動提取特徵,例如SIFT,HOG,LBP等等,模型多進展緩慢,右邊爲深度學習提取(DCNN)特徵。

在這裏插入圖片描述

經典的主流目標檢測模型出現的時間。

二、主流架構

2.1 主流架構概覽

在這裏插入圖片描述
在這裏插入圖片描述

取窗法依然爲目標檢檢測的主流。

缺點:

窗口數量多,並且隨着像素點的增長會呈二次方的增長。
窗口的斜率和大小都會增加搜索空間。
巨大的搜索空間使算法運算複雜度很高。

策略:

級聯
共享運算出的特徵
減少單個滑窗的運算量

2.2 兩種主流架構

在這裏插入圖片描述

兩種主流架構分別爲單階段和雙階段。

雙階段

一個階段提出備選框,一個階段對備選框進行判斷。是一個兩階段級聯的網絡。主要爲RCNN系列的網絡。

RCNN
SPPNet(Spatial Pyramid Pooling)
Fast RCNN
Faster RCNN
RFCN(Region based Fully ConvNet)
Mask RCNN
Light Head RCNN

單階段

單階段的網絡,整個生成備選框的過程一體化的實現。代表有YOLO系列和SSD(single shot detector)

DetectorNet
OverFeat
YOLO
YOLOv2 and YOLO9000
SSD(Single Shot Detector)

三、雙階段目標檢測模型

即備選框的生成和備選框的判斷是兩個過程。以RCNN系列爲主流和代表。

3.1 RCNN

【RCNN論文筆記】 https://blog.csdn.net/baidu_32173921/article/details/71741970

在這裏插入圖片描述
在這裏插入圖片描述

RCNN是最早出現的目標檢測模型。相當於運用AlexNet來獲取目標框。

RCNN訓練過程

先用ImageNet訓練AlexNet
用標註的樣本框對訓練好的AlexNet進行fine-tune
用這個AlexNet提取出訓練樣本框的特徵
用提取出的特徵訓練SVM分類器

RCNN測試過程

運用SelectiveSearch的方式生成備選框 選擇性搜索(selective search)https://blog.csdn.net/guoyunfei20/article/details/78723646
將生成的備選框送入AlexNet進行判斷,迴歸類和迴歸框

RCNN缺點

多階段的複雜的訓練過程
SVM與備選框的生成過程非常耗費運算和存儲資源
測試過程緩慢,對每一個備選框都要進行一次AlexNet+SVM分類

3.2 SPPNet

https://blog.csdn.net/v1_vivian/article/details/73275259
在這裏插入圖片描述
在這裏插入圖片描述

•Introduced the traditional spatial pyramid pooling (SPP) into CNN architectures.
•Added an SPP layer on top of the last convolutional (CONV) layer to obtain features of fixed-length for the FC layers.
•Only needs to run the convolutional layers once on the entire test image to generate fixed-length features for region proposals of arbitrary size.
在此之前,所有的神經網絡都是需要輸入固定尺寸的圖片,比如224224(ImageNet)、3232(LenNet)、96*96等。這樣對於我們希望檢測各種大小的圖片的時候,需要經過crop,或者warp等一系列操作,這都在一定程度上導致圖片信息的丟失和變形,限制了識別精確度。

SPP-Net在最後一個卷積層後,接入了金字塔池化層,使用這種方式,可以讓網絡輸入任意的圖片,而且還會生成固定大小的輸出。

**金字塔池化:**當網絡輸入的是一張任意大小的圖片,這個時候我們可以一直進行卷積、池化,直到網絡的倒數幾層的時候,也就是我們即將與全連接層連接的時候,就要使用金字塔池化,使得任意大小的特徵圖都能夠轉換成固定大小的特徵向量。

優點:

輸入圖像可以隨意尺寸
先卷積提取特徵,再根據特徵生成備選框的特徵,節省大量運算

3.3 Fast RCNN and Faster RCNN

https://www.cnblogs.com/skyfsm/p/6806246.html

在這裏插入圖片描述

Fast RCNN

•End-to-end detector training
•Simultaneously learns a softmax classifier and class-specific bounding box regression using a multitask loss
•Sharing the computation of convolution across region proposals, and adds RoI pooling layer between the last CONV and FC layer to extract a fixed-length feature.

Faster RCNN

•VGG16 model
•Proposed an efficient and accurate Region Proposal Network (RPN) to generating region proposals. They utilize single network to accomplish the task of RPN for region proposal and Fast RCNN for region classification.

Fast RCNN

https://blog.csdn.net/shenxiaolu1984/article/details/51036677

在這裏插入圖片描述

最後一個卷積層後加了一個ROI pooling layer;
損失函數使用了multi-task loss(多任務損失)函數,將邊框迴歸直接加到CNN網絡中訓練。分類Fast R-CNN直接用softmax替代R-CNN用的SVM進行分類。
Fast R-CNN是端到端(end-to-end)的。

實驗過程

  • 網絡末端同步訓練的分類和位置調整,提升準確度
  • 使用多尺度的圖像金字塔,性能幾乎沒有提高
  • 倍增訓練數據,能夠有2%-3%的準確度提升
  • 網絡直接輸出各類概率(softmax),比SVM分類器性能略好
  • 更多候選窗不能提升性能

Faster RCNN

Faster R-CNN可以簡單地看做“區域生成網絡RPNs + Fast R-CNN”的系統,用區域生成網絡代替FastR-CNN中的Selective Search方法。Faster R-CNN這篇論文着重解決了這個系統中的三個問題:

  1. 如何設計區域生成網絡;
  2. 如何訓練區域生成網絡;
  3. 如何讓區域生成網絡和Fast RCNN網絡共享特徵提取網絡。

RPN
在這裏插入圖片描述

RPN的核心思想是使用CNN卷積神經網絡直接產生Region Proposal,使用的方法本質上就是滑動窗口(只需在最後的卷積層上滑動一遍),因爲anchor機制和邊框迴歸可以得到多尺度多長寬比的Region Proposal。

RPN網絡也是全卷積網絡(FCN,fully-convolutional network),可以針對生成檢測建議框的任務端到端地訓練,能夠同時預測出object的邊界和分數。只是在CNN上額外增加了2個卷積層(全卷積層cls和reg)。

①將每個特徵圖的位置編碼成一個特徵向量(256dfor ZF and 512d for VGG)。

②對每一個位置輸出一個objectness score和regressedbounds for k個region proposal,即在每個卷積映射位置輸出這個位置上多種尺度(3種)和長寬比(3種)的k個(3*3=9)區域建議的物體得分和迴歸邊界。

RPN網絡的輸入可以是任意大小(但還是有最小分辨率要求的,例如VGG是228*228)的圖片。如果用VGG16進行特徵提取,那麼RPN網絡的組成形式可以表示爲VGG16+RPN。

3.4 RFCN與Mask RCNN

https://blog.csdn.net/baidu_32173921/article/details/71741970

在這裏插入圖片描述

RFCN關鍵思想

分類需要特徵具有平移不變性,檢測則要求對目標的平移做出準確響應。現在的大部分CNN在分類上可以做的很好,但用在檢測上效果不佳。SPP,Faster R-CNN類的方法在ROI pooling前都是卷積,是具備平移不變性的,但一旦插入ROI pooling之後,後面的網絡結構就不再具備平移不變性了。因此,本文想提出來的position sensitive score map這個概念是能把目標的位置信息融合進ROI pooling。

在這裏插入圖片描述

R-FCN是在Faster R-CNN的框架上進行改造,

第一,把base的VGG16換車了ResNet,
第二,把Fast R-CNN換成了先用卷積做prediction,再進行ROI pooling。
由於ROI pooling會丟失位置信息,故在pooling前加入位置信息,即指定不同score map是負責檢測目標的不同位置。pooling後把不同位置得到的score map進行組合就能復現原來的位置信息。

MASK RCNN

mask rcnn是何凱明基於以往的faster rcnn架構提出的新的卷積網絡,一舉完成了object instance segmentation.

該方法在有效地目標的同時完成了高質量的語義分割。把原有的Faster-RCNN進行擴展,添加一個分支使用現有的檢測對目標進行並行預測。

在這裏插入圖片描述
主要貢獻其實就是roi align以及加了一個mask分支。

四、單階段目標檢測模型

即輸入圖像與輸出最終的框和分類是一個整體的過程。主流模型爲YOLO系列和最新的SSD

DetectNet
OverFeat
YOLO
YOLOv2 and YOLO9000
SSD(Single Shot Detector)

4.1 DetectNet 與 OverFeat

DetectNet與OverFeat是早期的單階段目標檢測模型。

https://blog.csdn.net/qq_35732097/article/details/79027095

Overfeat 把圖像分類、定位、檢測三個任務整合到一個框架中。Overfeat 在ILSVRC2013 的定位比賽中獲得第一名。Overfeat是一個特徵提取器。

主要是把分類網絡換成迴歸網絡,然後在各個scale 下訓練迴歸網絡來預測bounding box;然後融合預測的各個bounding box。

Multi-Scale Classification:
傳統的檢測/定位算法是固定image不變,採用不同的sliding window來支持不同尺度的物體。
對於CNN,sliding window的大小就是訓練時input的大小,是不可改變的。所以,CNN支持多尺度的方法就是固定sliding window的大小,改變image的大小(將圖像resize到對應的尺度上)。
我們最終分類是通過這樣的步驟:
1.在每個尺度下,去每個類的最大值,這樣構成C維向量;
2.對不同尺度的C維向量取均值
3.取平均化後的C維向量的Top1或Top5作爲預測的類
在這裏插入圖片描述
在這裏插入圖片描述

合併預測
1.在6個尺度下運行分類網絡,在每個尺度下選取top-k個類別,即對每張圖片預測類別,放在Cs集合中(這裏面是一張圖片的s尺度下類別集合)。
2.在每個尺度s下,運行迴歸網絡預測bbox,將Cs中每個類的bbox放在Bs集合中。
3.將各個尺度的Bs取並集,爲B。
4.對bbox進行融合:
是分類和定位的結合。不同的是,一張圖片可能多個位置同時訓練,且圖片中沒有物體的時候,需要預測背景。

4.2 YOLOv1

https://blog.csdn.net/u014380165/article/details/72616238

在這裏插入圖片描述
•GoogLeNet + YOLO layer
•Unified detector casting object detection as a regression problem from image pixels to spatially separated bounding boxes and associated class probabilities.
•YOLO makes more localization errors resulting from the coarse division of bounding box location, scale and aspect ratio.
•YOLO may fail to localize some objects, especially small ones, possibly because the grid division is quite coarse, and because by construction each grid cell can only contain one object.

在這裏插入圖片描述
算法首先把輸入圖像劃分成SS的格子,然後對每個格子都預測B個bounding boxes,每個bounding box都包含5個預測值:x,y,w,h和confidence。x,y就是bounding box的中心座標,與grid cell對齊(即相對於當前grid cell的偏移值),使得範圍變成0到1;w和h進行歸一化(分別除以圖像的w和h,這樣最後的w和h就在0到1範圍)
即得到每個bounding box屬於哪一類的confidence score。也就是說最後會得到20
(772)=20*98的score矩陣,括號裏面是bounding box的數量,20代表類別。接下來的操作都是20個類別輪流進行:在某個類別中(即矩陣的某一行),將得分少於閾值(0.2)的設置爲0,然後再按得分從高到低排序。最後再用NMS算法去掉重複率較大的bounding box(NMS:針對某一類別,選擇得分最大的bounding box,然後計算它和其它bounding box的IOU值,如果IOU大於0.5,說明重複率較大,該得分設爲0,如果不大於0.5,則不改;這樣一輪後,再選擇剩下的score裏面最大的那個bounding box,然後計算該bounding box和其它bounding box的IOU,重複以上過程直到最後)。

缺點

位置精確性差,對於小目標物體以及物體比較密集的也檢測不好,比如一羣小鳥。
YOLO雖然可以降低將背景檢測爲物體的概率,但同時導致召回率較低。

4.3 YOLOv2與YOLO9000

爲提高物體定位精準性和召回率,YOLO作者提出了 《YOLO9000: Better, Faster, Stronger》 (Joseph Redmon, Ali Farhadi, CVPR 2017, Best Paper Honorable Mention),相比v1提高了訓練圖像的分辨率;引入了faster rcnn中anchor box的思想,對網絡結構的設計進行了改進,輸出層使用卷積層替代YOLO的全連接層,聯合使用coco物體檢測標註數據和imagenet物體分類標註數據訓練物體檢測模型。相比YOLO,YOLO9000在識別種類、精度、速度、和定位準確性等方面都有大大提升。
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
原文: https://www.cnblogs.com/makefile/p/YOLOv3.html © 康行天下

Ultilizing a number of strategies drawn from existing work

Using simpler DarkNet19 instead of GoogLeNet
Batch normalization
Removing the fully connected layers
Anchor boxes learned with k-means
Multi-scale training
Batch Normalization: v1中也大量用了Batch Normalization,同時在定位層後邊用了dropout,v2中取消了dropout,在卷積層全部使用Batch Normalization。

高分辨率分類器:v1中使用224 × 224訓練分類器網絡,擴大到448用於檢測網絡。v2將ImageNet以448×448 的分辨率微調最初的分類網絡,迭代10 epochs。

Anchor Boxes:v1中直接在卷積層之後使用全連接層預測bbox的座標。v2借鑑Faster R-CNN的思想預測bbox的偏移.移除了全連接層,並且刪掉了一個pooling層使特徵的分辨率更大一些.另外調整了網絡的輸入(448->416)以使得位置座標是奇數只有一箇中心點(yolo使用pooling來下采樣,有5個size=2,stride=2的max pooling,而卷積層沒有降低大小,因此最後的特徵是416/(2^5)=13).v1中每張圖片預測7x7x2=98個box,而v2加上Anchor Boxes能預測超過1000個.檢測結果從69.5mAP,81% recall變爲69.2 mAP,88% recall.

4.4 YOLOv3

https://blog.csdn.net/leviopku/article/details/82660381
在這裏插入圖片描述

DBL: 如圖1左下角所示,也就是代碼中的Darknetconv2d_BN_Leaky,是yolo_v3的基本組件。就是卷積+BN+Leaky relu。對於v3來說,BN和leaky relu已經是和卷積層不可分離的部分了(最後一層卷積除外),共同構成了最小組件。
resn:n代表數字,有res1,res2, … ,res8等等,表示這個res_block裏含有多少個res_unit。這是yolo_v3的大組件,yolo_v3開始借鑑了ResNet的殘差結構,使用這種結構可以讓網絡結構更深(從v2的darknet-19上升到v3的darknet-53,前者沒有殘差結構)。對於res_block的解釋,可以在圖1的右下角直觀看到,其基本組件也是DBL。
concat:張量拼接。將darknet中間層和後面的某一層的上採樣進行拼接。拼接的操作和殘差層add的操作是不一樣的,拼接會擴充張量的維度,而add只是直接相加不會導致張量維度的改變。

backbone 整個v3結構裏面,是沒有池化層和全連接層的。前向傳播過程中,張量的尺寸變換是通過改變卷積核的步長來實現的,比如stride=(2, 2),這就等於將圖像邊長縮小了一半(即面積縮小到原來的1/4)。在yolo_v2中,要經歷5次縮小,會將特徵圖縮小到原輸入尺寸的1/25
1/25,即1/32。輸入爲416x416,則輸出爲13x13(416/32=13)。
Output : yolo v3輸出了3個不同尺度的feature map,如上圖所示的y1, y2, y3。這也是v3論文中提到的爲數不多的改進點:predictions across scales
這個借鑑了FPN(feature pyramid networks),採用多尺度來對不同size的目標進行檢測,越精細的grid cell就可以檢測出越精細的物體。
y1,y2和y3的深度都是255,邊長的規律是13:26:52
對於COCO類別而言,有80個種類,所以每個box應該對每個種類都輸出一個概率。
yolo v3設定的是每個網格單元預測3個box,所以每個box需要有(x, y, w, h, confidence)五個基本參數,然後還要有80個類別的概率。所以3*(5 + 80) = 255。這個255就是這麼來的。(還記得yolo v1的輸出張量嗎? 7x7x30,只能識別20類物體,而且每個cell只能預測2個box,和v3比起來就像老人機和iphoneX一樣)

4.5 SSD

https://blog.csdn.net/a8039974/article/details/77592395

在這裏插入圖片描述

在這裏插入圖片描述

SSD effectively combines ideas from RPN in Faster RCNN, YOLO and multiscale CONV features to achieve fast detection speed while still retaining high detection quality.

SSD,全稱Single Shot MultiBox Detector,是Wei Liu在ECCV 2016上提出的一種目標檢測算法,截至目前是主要的檢測框架之一,相比Faster RCNN有明顯的速度優勢,相比YOLO又有明顯的mAP優勢(不過已經被CVPR 2017的YOLO9000超越)。SSD具有如下主要特點:

從YOLO中繼承了將detection轉化爲regression的思路,同時一次即可完成網絡訓練
基於Faster RCNN中的anchor,提出了相似的prior box;
加入基於特徵金字塔(Pyramidal Feature Hierarchy)的檢測方式,相當於半個FPN思路
進SSD算法的優點應該很明顯:運行速度可以和YOLO媲美,檢測精度可以和Faster RCNN媲美。除此之外,還有一些雞毛蒜皮的優點,不解釋了。這裏談談缺點:

需要人工設置prior box的min_size,max_size和aspect_ratio值。網絡中prior box的基礎大小和形狀不能直接通過學習獲得,而是需要手工設置。而網絡中每一層feature使用的prior box大小和形狀恰好都不一樣,導致調試過程非常依賴經驗。
雖然採用了pyramdial feature hierarchy的思路,但是對小目標的recall依然一般,並沒有達到碾壓Faster RCNN的級別。作者認爲,這是由於SSD使用conv4_3低級feature去檢測小目標,而低級特徵卷積層數少,存在特徵提取不充分的問題。

五、基礎子問題

5.1 特徵表示

  1. Detecting with combined features of multiple CNN layers
  2. Detecting at multiple CNN layers;
  3. Combinations of the above two methods

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

5.2 局部特徵表示

在這裏插入圖片描述

在這裏插入圖片描述

六、數據集與表現

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

七、主流模型性能總結

在這裏插入圖片描述
————————————————
版權聲明:本文爲CSDN博主「邢翔瑞」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_36474809/article/details/84172579

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章