基於深度學習的目標檢測發展綜述(持續更新。。。)

0 前言
所謂目標檢測,就是找出圖像中所有感興趣的目標(物體),確定它們的位置和大小,是機器視覺領域的核心問題之一。由於各類物體有不同的外觀、形狀、姿態,加上成像時光照、角度、遮擋等因素的干擾,目標檢測一直是機器視覺領域最具有挑戰性的問題之一。

計算機視覺中關於圖像識別有四大類任務:
分類(Classification):解決“是什麼”的問題,即給定一張圖片或一段視頻判斷裏面包含什麼類別的目標;
定位(Location):解決“在哪裏”的問題,即定位出這個目標的的位置,通常爲但目標問題;
檢測(Detection):解決“是什麼、在哪裏”的問題,即定位出這個目標的的位置並且知道目標物分別是什麼,通常爲多目標問題;
分割(Segmentation):分爲實例的分割(Instance-level)和場景分割(Scene-level),解決“每一個像素屬於哪個目標物或場景”的問題;

在這裏插入圖片描述圖0.1:目標檢測任務分類

目標檢測對於人類來說並不困難,通過對圖片中不同顏色模塊的感知很容易定位並分類出其中目標物體,但對於計算機來說,面對的是RGB像素矩陣,很難從圖像中直接得到狗和貓這樣的抽象概念並定位其位置,再加上有時候多個物體和雜亂的背景混雜在一起,目標檢測變得十分困難。
但科學技術永遠是第一生產力,目標檢測始終是科研人員研究的熱點問題,各種理論和方法不斷湧現。
在傳統視覺領域,目標檢測主要集中於一些特定目標的檢測,比如人臉檢測和行人檢測等,已經形成了非常成熟的技術。但對於其他普通的目標檢測雖有過很多的嘗試,但是效果總是不太令人滿意。

傳統的目標檢測一般使用滑動窗口的框架,主要包括三個步驟:
1)利用不同尺寸的滑動窗口框住圖中的某一部分作爲候選區域;
2)提取候選區域相關的視覺特徵。比如人臉檢測常用的Harr特徵、行人檢測和普通目標檢測常用的HOG特徵等;
3)利用分類器進行識別,如常用的 SVM 模型。

傳統的目標檢測中,多尺度形變部件模型DPM (Deformable Part Model)是出類拔萃的,連續獲得VOC (Visual Object Class) 2007—2009的檢測冠軍,2010年其作者Felzenszwalb Pedro被VOC授予”終身成就獎”。DPM把物體看成了多個組成的部件(比如人臉的鼻子、嘴巴等),用部件間的關係來描述物體,這個特性非常符合自然界很多物體的非剛體特徵。DPM可以看做是 HOG+SVM 的擴展,很好的繼承了兩者的優點,在人臉檢測、行人檢測等任務上取得了不錯的效果,但是DPM相對複雜,檢測速度也較慢,從而也出現了很多改進的方法。正當大家熱火朝天改進DPM性能的時候,基於深度學習的目標檢測橫空出世,迅速蓋過了DPM的風頭,很多之前研究傳統目標檢測算法的研究者也開始轉向深度學習。

基於深度學習的目標檢測發展起來後,其實效果也一直難以突破。比如文獻“Deep Neural Networks for Object Detection. Advances in Neural Information Processing Systems 26 (NIPS), 2013”中的算法在VOC 2007測試集合上的mAP只能30%多一點,文獻“OverFeat: Integrated recognition, localization and detection using convolutional networks. In ICLR, 2014”中的OverFeat在ILSVRC 2013測試集上的mAP只能達到24.3%。2013年R-CNN誕生了,VOC 2007測試集的mAP被提升至48%,2014年時通過修改網絡結構又飆升到了66%,同時ILSVRC 2013測試集的mAP也被提升至31.4%。

R-CNN,即Region-based Convolutional Neural Networks,是一種結合區域提名(Region Proposal) 和卷積神經網絡(CNN)的目標檢測方法。Ross Girshick在2013年的開山之作《Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation》奠定了這個子領域的基礎。

R-CNN這個領域目前研究非常活躍,先後出現了R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN、YOLO、SSD等研究。Ross Girshick作爲這個領域的開山鼻祖,在這發展過程中做出了巨大的貢獻,R-CNN、Fast R-CNN、Faster R-CNN、YOLO都和他有關。這些創新的工作其實很多時候是把一些傳統視覺領域的方法和深度學習結合起來了,比如選擇性搜索(Selective Search)和圖像金字塔(Pyramid)等。

深度學習相關的目標檢測方法目前大致分爲兩派:

1)基於區域提名的,如R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN等;
2)端到端(End-to-End),無需區域提名的,如YOLO、SSD等。

目前來說,基於區域提名的方法佔據上風,但端到端的方法速度上優勢明顯,後續的發展潛力較大。


在這裏插入圖片描述
圖0.2:目標檢測方法概述

1.1 相關研究
我們先來回顧一下目標檢測中廣泛使用的區域提名——選擇性搜索,以及用深度學習做目標檢測的早期工作——Overfeat 。

1.1.1 選擇性搜索
目標檢測的第一步是要做區域提名(Region Proposal),也就是找出可能的感興趣區域(Region Of Interest, ROI)。區域提名類似於光學字符識別 (OCR) 領域的切分,OCR切分常用過切分方法,簡單說就是儘量切碎到小的連通域(比如小的筆畫之類),然後再根據相鄰塊的一些形態學特徵進行合併。但目標檢測的對象相比OCR領域千差萬別,而且圖形不規則,大小不一,所以一定程度上可以說區域提名是比OCR切分更難的一個問題。

區域提名可能的方法有:

1)滑動窗口。滑動窗口本質上是窮舉法,利用不同的尺度和長寬比把所有可能的大大小小的塊都窮舉出來,然後送去識別,識別出來概率大的就留下來。顯然,這樣的方法複雜度太高,產生了很多的冗餘候選區域,在現實當中不可行。
2)規則塊。在窮舉法的基礎上進行了一些剪枝,只選用固定的大小和長寬比。這在一些特定的應用場景中是很有效的,比如拍照搜題APP小猿搜題中的漢字檢測,因爲漢字方方正正,長寬比大多比較一致,因此用規則塊做區域提名是一種比較合適的選擇。但是對於普通的目標檢測來說,規則塊依然需要訪問很多的位置,複雜度高。
3)選擇性搜索。從機器學習的角度來說,前面的方法召回是不錯了,但是精度並不能令人滿意,問題的核心在於如何有效地去除冗餘候選區域。其實冗餘候選區域大多是發生了重疊,選擇性搜索利用這一點,自底向上合併相鄰的重疊區域,從而減少冗餘。

當然,區域提名並不只有以上所說的三種方法,實際上這一方面是非常靈活的,因此變種也很多,感興趣的讀者自行參考相關文獻。

選擇性搜索的具體算法細節如下所示。總體上選擇性搜索是自底向上不斷合併候選區域的迭代過程。

在這裏插入圖片描述

輸入: 一張圖片
輸出:候選的目標位置集合L

算法
1)利用過切分方法得到候選的區域集合R = {r1,r2,…,rn}
2)初始化相似集合S = ϕ
3) foreach 相鄰區域對(ri,rj) do

計算相似度s(ri,rj)
S = S ∪ s(ri,rj)

4)while S not=ϕ do

得到最大的相似度s(ri,rj)=max(S)
合併對應的區域rt = ri ∪ rj
移除ri對應的所有相似度:S = S\s(ri,r*)
移除rj對應的所有相似度:S = S\s(r*,rj)
計算rt對應的相似度集合St
S = S ∪ St
R = R ∪ rt

5)L = R中所有區域對應的邊框

從算法不難看出,R中的區域都是合併後的,因此減少了不少冗餘,相當於準確率提升了,但是我們還需要繼續保證召回率,因此選擇性搜索算法中的相似度計算策略就顯得非常關鍵了。如果簡單採用一種策略很容易錯誤合併不相似的區域,比如只考慮輪廓時,不同顏色的區域很容易被誤合併。選擇性搜索採用多樣性策略來增加候選區域以保證召回,比如顏色空間考慮RGB、灰度、HSV及其變種等,相似度計算時既考慮顏色相似度,又考慮紋理、大小、重疊情況等。

總體上,選擇性搜索是一種比較樸素的區域提名方法,被早期的基於深度學習的目標檢測方法(包括Overfeat 和R-CNN等)廣泛採用,但被當前的新方法棄用了。

1.1.2 OverFeat
OverFeat[論文下載鏈接]是用CNN統一來做分類、定位和檢測的經典之作,作者是深度學習大神Yann Lecun在紐約大學的團隊。OverFeat也是ILSVRC 2013任務3(分類+定位)的冠軍得主。

OverFeat的核心思想有三點:

1)區域提名:結合滑動窗口和規則塊,即多尺度(multi-scale)的滑動窗口;
2)分類和定位:統一用CNN來做分類和預測邊框位置,模型與AlexNet類似,其中1-5層爲特徵抽取層,即將圖片轉換爲固定維度的特徵向量,6-9層爲分類層(分類任務專用),不同的任務(分類、定位、檢測)共用特徵抽取層(1-5層),只替換6-9層;
3)累積:因爲用了滑動窗口,同一個目標對象會有多個位置,也就是多個視角;因爲用了多尺度,同一個目標對象又會有多個大小不一的塊。這些不同位置和不同大小塊上的分類置信度會進行累加,從而使得判定更爲準確。

OverFeat的關鍵步驟有四步:

1)利用滑動窗口進行不同尺度的區域提名,然後使用CNN模型對每個區域進行分類,得到類別和置信度。從下圖可以看出,不同縮放比例時,檢測出來的目標對象數量和種類存在較大差異

在這裏插入圖片描述
圖1.1.1: Overfeat關鍵步驟一

2)利用多尺度滑動窗口來增加檢測數量,提升分類效果,如下圖所示

在這裏插入圖片描述
圖1.1.2: Overfeat關鍵步驟二

3)用迴歸模型預測每個對象的位置,從下圖來看,放大比例較大的圖片,邊框數量也較多

在這裏插入圖片描述
圖1.1.3: Overfeat關鍵步驟三

4)邊框合併


在這裏插入圖片描述
圖1.1.4: Overfeat關鍵步驟四

Overfeat是CNN用來做目標檢測的早期工作,主要思想是採用了多尺度滑動窗口來做分類、定位和檢測,雖然是多個任務但重用了模型前幾層,這種模型重用的思路也是後來R-CNN系列不斷沿用和改進的經典方法。

當然Overfeat也是有不少缺點的,至少速度和效果都有很大提升空間,後面的R-CNN系列在這兩方面做了很多提升。

1.2 基於區域提名的方法
本小節主要介紹基於區域提名的方法,包括R-CNN、SPP-net、Fast R-CNN、Faster R-CNN、R-FCN。

1.2.1 R-CNN
如前面所述,早期的目標檢測,大都使用滑動窗口的方式進行窗口提名,這種方式本質是窮舉法,R-CNN[論文下載鏈接]採用的是Selective Search。

以下是R-CNN的主要步驟:

1)區域提名:通過Selective Search從原始圖片提取2000個左右區域候選框;
2)區域大小歸一化:把所有侯選框縮放成固定大小(原文采用227×227);
3)特徵提取:通過CNN網絡,提取特徵;
4)分類與迴歸:在特徵層的基礎上添加兩個全連接層,再用SVM分類來做識別,用線性迴歸來微調邊框位置與大小,其中每個類別單獨訓練一個邊框迴歸器。

其中目標檢測系統的結構如下圖所示,注意,圖中的第2步對應步驟中的1、2步,即包括區域提名和區域大小歸一化。

在這裏插入圖片描述
圖1.2.1: R-CNN框架

OverFeat可以看做是R-CNN的一種特殊情況,只需要把Selective Search換成多尺度的滑動窗口,每個類別的邊框迴歸器換成統一的邊框迴歸器,SVM換爲多層網絡即可。但是OverFeat實際比R-CNN快9倍,這主要得益於卷積相關的共享計算。

事實上,R-CNN有很多缺點:

1)重複計算:R-CNN雖然不再是窮舉,但依然有2000個左右的候選框,這些候選框都需要進行CNN操作,計算量依然很大,其中有不少其實是重複計算;
2)SVM模型:而且還是線性模型,在標註數據不缺的時候顯然不是最好的選擇;
3)訓練測試分爲多步,訓練的空間和時間代價很高:區域提名、特徵提取、分類、迴歸都是斷開的訓練的過程,中間數據還需要單獨保存,卷積出來的特徵需要先存在硬盤上,這些特徵需要幾百G的存儲空間;
4)速度慢:前面的缺點最終導致R-CNN出奇的慢,GPU上處理一張圖片需要13秒,CPU上則需要53秒。

看到這裏,肯定不少小夥伴會產生疑惑,既然R-CNN速度很慢,那爲什麼還說它是改進版?事實上,R-CNN的改進體現在其效果上的提升,其中ILSVRC 2013數據集上的mAP由OverFeat的24.3%提升到了31.4%,第一次有了質的改變。

1.2.2 SPP-net
SPP-net[論文下載鏈接]是MSRA何愷明等人提出的,其主要思想是去掉了原始圖像上的crop/warp等操作,換成了在卷積特徵上的空間金字塔池化層(Spatial Pyramid Pooling,SPP),如下圖所示。之所以要引入SPP層 ,主要原因是CNN的全連接層要求輸入圖片大小一致,而實際中的輸入圖片往往大小不一,如果直接縮放到同一尺寸,很可能有的物體會充滿整個圖片,而有的物體可能只能佔到圖片的一角。

傳統的解決方案是進行不同位置的裁剪,但是這些裁剪技術往往會導致一些問題出現,比如下圖的crop會導致物體不全,warp導致物體被拉伸後形變嚴重,SPP就是爲了解決這種問題的。SPP對整圖提取固定維度的特徵,再把圖片均分成4份,每份提取相同維度的特徵,再把圖片均分爲16份,以此類推。可以看出,無論圖片大小如何,提取出來的維度數據都是一致的,這樣就可以統一送至全連接層了。SPP思想在後來的R-CNN模型中也被廣泛用到。

在這裏插入圖片描述
圖1.2.2: 傳統crop/warp結構和空間金字塔池化網絡的對比

SPP-net的網絡結構如下圖所示,實質是最後一層卷積層後加了一個SPP層,將維度不一的卷積特徵轉換爲維度一致的全連接輸入。

在這裏插入圖片描述
圖1.2.3: SPP-net網絡結構

SPP-net做目標檢測的主要步驟爲:

1)區域提名:用Selective Search從原圖中生成2000個左右的候選窗口;
2)區域大小縮放:SPP-net不再做區域大小歸一化,而是縮放到min(w, h)=s,即統一長寬的最短邊長度,s選自{480,576,688,864,1200}中的一個,選擇的標準是使得縮放後的候選框大小與224×224最接近;
3)特徵提取:利用SPP-net網絡結構提取特徵;
4)分類與迴歸:類似R-CNN,利用SVM基於上面的特徵訓練分類器模型,用邊框迴歸來微調候選框的位置。

SPP-net解決了R-CNN區域提名時crop/warp帶來的偏差問題,提出了SPP層,使得輸入的候選框可大可小,但其他方面依然和R-CNN一樣,因而依然存在不少問題,這就有了後面的Fast R-CNN。

1.2.3 Fast R-CNN
Fast R-CNN[論文下載鏈接]是要解決R-CNN和SPP-net 2000個左右候選框帶來的重複計算問題,其主要思想爲:

1)使用一個簡化的SPP層 —— RoI(Region of Interesting) Pooling層,操作與SPP類似;
2)訓練和測試是不再分多步:不再需要額外的硬盤來存儲中間層的特徵,梯度能夠通過RoI Pooling層直接傳播;此外,分類和迴歸用Multi-task的方式一起進行;
3)SVD:使用SVD分解全連接層的參數矩陣,壓縮爲兩個規模小很多的全連接層。

如下圖所示,Fast R-CNN的主要步驟如下:

1)特徵提取:以整張圖片爲輸入,利用CNN得到圖片的特徵層;
2)區域提名:通過Selective Search等方法從原始圖片提取區域候選框,並把這些候選框一一投影到最後的特徵層;
3)區域歸一化:針對特徵層上的每個區域候選框進行RoI Pooling操作,得到固定大小的特徵表示;
4)分類與迴歸:然後再通過兩個全連接層,分別用softmax多分類做目標識別,用迴歸模型進行邊框位置與大小微調。

在這裏插入圖片描述
圖1.2.4: Fast R-CNN框架

Fast R-CNN比R-CNN的訓練速度(大模型L)快8.8倍,測試時間快213倍,比SPP-net訓練速度快2.6倍,測試速度快10倍左右。

在這裏插入圖片描述
圖1.2.5: Fast R-CNN, R-CNN, SPP-net的運行時間比較

1.2.4 Faster R-CNN
Fast R-CNN使用Selective Search來進行區域提名,速度依然不夠快。Faster R-CNN[論文下載鏈接]則直接利用RPN(Region Proposal Networks)網絡來計算候選框。RPN以一張任意大小的圖片爲輸入,輸出一批矩形區域提名,每個區域對應一個目標分數和位置信息。Faster R-CNN中的RPN結構如下圖所示。

在這裏插入圖片描述
圖1.2.6: Region Proposal Network(RPN)

Faster R-CNN的主要步驟如下:

1)特徵提取:同Fast R-CNN,以整張圖片爲輸入,利用CNN得到圖片的特徵層;
2)區域提名:在最終的卷積特徵層上利用k個不同的矩形框(Anchor Box)進行提名,k一般取9;
3)分類與迴歸:對每個Anchor Box對應的區域進行object/non-object二分類,並用k個迴歸模型(各自對應不同的Anchor Box)微調候選框位置與大小,最後進行目標分類。

總之,Faster R-CNN棄用了Selective Search,引入了RPN網絡,使得區域提名、分類、迴歸一起共用卷積特徵,從而得到了進一步的加速。但是,Faster R-CNN需要對20000個Anchor Box先判斷是否是目標(目標判定),然後再進行目標識別,分成了兩步。

1.2.5 R-FCN
前面的目標檢測方法都可以細分爲兩個子網絡:
1)共享的全卷積網絡;
2)不共享計算的ROI相關的子網絡
(比如全連接網絡)。

R-FCN[論文下載鏈接]則將最後的全連接層換爲了一個位置敏感的的卷積網絡,從而讓所有計算都可以共享。具體來說,先把每個提名區域劃分爲k×k個網格,比如R-FCN原文中k的取值爲3,則對應的九個網格分別表示:左上top-left,上中top-center,……,右下bottom-right,對應下圖中的九宮格及不同顏色的塊,每個Grid都有對應的編碼,但預測時候會有C+1個輸出,C表示類別數目,+1是因爲有背景類別,全部的輸出通道數量爲k2×(C+1)。

在這裏插入圖片描述
圖1.2.7: R-FCN的person分類可視化過程
在這裏插入圖片描述圖1.2.8: R-FCN框架

需要注意的是,上面兩張圖中不同位置都存在一個九宮格,但是Pooling時候只有一個起作用,比如bottom-right層只有右下角的小塊起作用。那麼問題來了,這一層其他的8個框有什麼作用呢?答案是它們可以作爲其他ROI(偏左或偏上一些的ROI)的右下角。

R-FCN的步驟爲:

1)區域提名:使用RPN(Region Proposal Network,區域提名網絡),RPN本身是全卷積網絡結構;
2)分類與迴歸:利用和RPN共享的特徵進行分類。當做bbox迴歸時,則將C設置爲4。

1.3 端到端的方法
接下來介紹端到端(End-to-End)的目標檢測方法,這些方法無需區域提名,包括YOLO和SSD等。

1.3.1 YOLO
YOLO[論文下載鏈接],即You Only Look Once,顧名思義就是隻看一次,進一步把目標判定和目標識別合二爲一,所以識別性能有了很大提升,達到每秒45幀,而在快速版YOLO(Fast YOLO,卷積層更少)中,可以達到每秒155幀。

網絡的整體結構如下圖所示,針對一張圖片,YOLO的處理步驟爲:

1)把輸入圖片縮放到448×448大小
2)運行卷積網絡

對模型置信度卡閾值,得到目標位置與類別。

在這裏插入圖片描述圖1.3.1: YOLO檢測系統

網絡的模型如下圖所示,將448×448大小的圖切成S×S的網格,目標中心點所在的格子負責該目標的相關檢測,每個網格預測B個邊框及其置信度,以及C種類別的概率。YOLO中S=7,B=2,C取決於數據集中物體類別數量,比如VOC數據集就是C=20。對VOC數據集來說,YOLO就是把圖片統一縮放到448×448,然後每張圖平均劃分爲7×7=49個小格子,每個格子預測2個矩形框及其置信度,以及20種類別的概率。

在這裏插入圖片描述圖1.3.2: YOLO模型

YOLO簡化了整個目標檢測流程,速度的提升也很大,但是YOLO還是有不少可以改進的地方,比如S×S的網格就是一個比較啓發式的策略,如果兩個小目標同時落入一個格子中,模型也只能預測一個;另一個問題是Loss函數對不同大小的bbox未做區分。

1.3.2 SSD

SSD[論文下載鏈接],即Single Shot MultiBox Detector,衝着YOLO的缺點來的。SSD的框架如圖1.3.3所示,圖1.3.3(a)表示帶有兩個Ground Truth邊框的輸入圖片,圖1.3.3(b)和©分別表示8×8網格和4×4網格,顯然前者適合檢測小的目標,比如圖片中的貓,後者適合檢測大的目標,比如圖片中的狗。在每個格子上有一系列固定大小的Box(有點類似前面提到的Anchor Box),這些在SSD稱爲Default Box,用來框定目標物體的位置,在訓練的時候Ground Truth會賦予給某個固定的Box,比如圖1.3.3(b)中的藍框和圖1.3.3©中的紅框。

在這裏插入圖片描述圖1.3.3: SSD框架

SSD的網絡分爲兩部分,前面的是用於圖像分類的標準網絡(去掉了分類相關的層),後面的網絡是用於檢測的多尺度特徵映射層,從而達到檢測不同大小的目標。SSD和YOLO的網絡結構對比如圖所示。

在這裏插入圖片描述圖1.3.4: SSD和YOLO的網絡結構對比

SSD在保持YOLO高速的同時效果也提升很多,主要是借鑑了Faster R-CNN中的Anchor機制,同時使用了多尺度。但是從原理依然可以看出,Default Box的形狀以及網格大小是事先固定的,那麼對特定的圖片小目標的提取會不夠好。

1.3.3 YOLOv2 & YOLO9000

經過Joseph Redmon等的改進,YOLOv2和YOLO9000算法[論文下載鏈接]在2017年CVPR上被提出,並獲得較佳論文提名,重點解決召回率和定位精度方面的誤差。採用Darknet-19作爲特徵提取網絡,增加了批量歸一化(Batch Normalization)的預處理,並使用224×224和448×448兩階段訓練ImageNet預訓練模型後fine-tuning。

相比於原來的YOLO是利用全連接層直接預測bounding box的座標,YOLOv2借鑑了Faster R-CNN的思想,引入anchor機制,利用K-Means聚類的方式在訓練集中聚類計算出更好的anchor模板,在卷積層使用anchorboxes操作,增加候選框的預測,同時採用較強約束的定位方法,大大提高算法召回率。結合圖像細粒度特徵,將淺層特徵與深層特徵相連,有助於對小尺寸目標的檢測。

在這裏插入圖片描述
圖1.3.5: YOLOv2在VOC2007上的速度和精度

1.3.4 R-SSD

2017年首爾大學提出了R-SSD算法,解決了SSD算法中不同層feature map都是獨立作爲分類網絡的輸入,容易出現相同物體被不同大小的框同時檢測出來的情況,還有對小尺寸物體的檢測效果比較差的情況。R-SSD算法一方面利用分類網絡增加不同層之間的feature map聯繫,減少重複框的出現;另一方面增加feature pyramid中feature map的個數,使其可以檢測更多的小尺寸物體。

特徵融合方式採用同時利用pooling和deconvolution進行特徵融合,這種特徵融合方式使得融合後每一層的feature map個數都相同,因此可以共用部分參數,具體來講就是default boxes的參數共享。

在這裏插入圖片描述
圖1.3.6: 三種特徵融合方式

1.3.5 DSSD

爲了解決SSD算法檢測小目標困難的問題,2017年北卡大學教堂山分校的Cheng-Yang Fu等提出DSSD算法[論文下載鏈接],將SSD算法基礎網絡從VGG-16更改爲ResNet-101,增強網絡特徵提取能力,其次參考FPN算法思路利用去卷積結構將圖像深層特徵從高維空間傳遞出來,與淺層信息融合,聯繫不同層級之間的圖像語義關係,設計預測模塊結構,通過不同層級特徵之間融合特徵輸出預測物體類別信息。

DSSD算法中有兩個特殊的結構:Prediction模塊;Deconvolution模塊。前者利用提升每個子任務的表現來提高準確性,並且防止梯度直接流入ResNet主網絡。後者則增加了三個Batch Normalization層和三個3×3卷積層,其中卷積層起到了緩衝的作用,防止梯度對主網絡影響太劇烈,保證網絡的穩定性。

在這裏插入圖片描述
圖1.3.7: SSD和DSSD網絡結構對比

1.3.6 DSOD

2017年復旦大學提出DSOD算法,其並不是在mAP上和其他檢測算法做比較,看誰的算法更有效或者速度更快,而是從另一個角度切入說明fine-tune和直接訓練檢測模型的差異其實是可以減小的,也就是說訓練一個檢測模型可以不需要大量的數據和預訓練好的模型。

這是由於預訓練模型的限制導致:遷移模型結構靈活性差,難以改變網絡結構;分類任務預訓練模型和檢測任務訓練會有學習偏差;雖然微調會減少不同目標類別分佈的差異性,但深度圖等特殊圖像遷移效果差異較大。

SSD算法是在六個尺度的特徵圖上進行檢測,將這六個檢測結果綜合起來,DSOD算法則則根據DenseNet的設計原理,將相鄰的檢測結果一半一半的結合起來。DSOD算法是基於SSD算法基礎上做的修改,採用的特徵提取網絡是DenseNet。

採用Dense Block結構,能避免梯度消失的情況。同時利用Dense Prediction結構,也能大大減少模型的參數量,特徵包含更多信息。設計stem結構能減少輸入圖片信息的丟失,stem結構由3×3卷積和2×2的max pool層組成,其還可以提高算法檢測的mAP。

在這裏插入圖片描述
圖1.3.8: DSOD預測層

1.3.7 RON

2017年清華大學提出了RON算法,結合two stage名的方法和one stage方法的優勢,更加關注多尺度對象定位和負空間樣本挖掘問題。

多尺度對象定位——各種尺度的物體可能出現在圖像的任何位置,因此應考慮成千上萬個具有不同位置/尺度/方位的區域。多尺度表徵將顯著改善各種尺度的物體檢測,但是這些方法總是在網絡的一層檢測到各種尺度的對象;

負空間挖掘——對象和非對象樣本之間的比例嚴重不平衡。因此,對象檢測器應該具有有效的負挖掘策略。

RON算法通過設計方向連接結構,利用多尺度表徵顯著改善各種多尺度物體檢測,同時爲了減少對象搜索空間,在卷積特徵圖創建objectness prior引導目標對象搜索,訓練時將檢測器進行聯合優化。並通過多任務損失函數聯合優化了反向連接、objectness prior和對象檢測,因此可直接預測各種特徵圖所有位置的最終檢測結果。

在這裏插入圖片描述圖1.3.8: RON

1.3.8 YOLOv3

在這裏插入圖片描述圖1.3.9: 速度對比圖

從上邊的圖中就可以看出,YOLOv3[論文下載鏈接]最主要的提升網絡的就算速度。YOLOv3能在22毫秒內完成處理,並取得28.2mAP的成績。它的精度和SSD相當,但速度要快上3倍。 但是整體模型也變得複雜不少。

2. 小結

隨着深度學習技術在圖像各領域的研究深入,出現越來越多的新理論、新方法。two stage的方法和基於迴歸思想的one stage方法兩者相互借鑑,不斷融合,取得了很好的效果,也爲我們展示了一些未來發展趨勢:

1)參考上下文特徵的多特徵融合
2)多尺度的對象定位
3)結合循環神經網絡(RNN)的圖像語義分析

在這裏插入圖片描述
圖2.1:部分目標檢測算法精度和速度對比

誠然,目標檢測還有很長的路要走,比如業界公認較難的小目標檢測問題。但我們有理由相信會不斷有各種突破出現,還是那句老話——科學技術是第一生產力,期待未來基於深度學習的目標檢測的進一步突破!

本文參考了衆多網絡資料及論文原文,在此表示感謝!!

在這裏插入圖片描述
(關注微信公衆號“StrongerTang”,看更多文章,和小湯一起學習,一同進步!)

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