干貨 | 目標(biāo)檢測入門,看這篇就夠了(目標(biāo)檢測經(jīng)典模型回顧)
兩階段(2-stage)檢測模型
兩階段模型因其對圖片的兩階段處理得名,也稱為基于區(qū)域(Region-based)的方法,我們選取R-CNN系列工作作為這一類型的代表。
R-CNN: R-CNN系列的開山之作
Rich feature hierarchies for accurate object detection and semantic segmentation
論文鏈接:
https://arxiv.org/abs/1311.2524
本文的兩大貢獻:
1)CNN可用于基于區(qū)域的定位和分割物體;
2)監(jiān)督訓(xùn)練樣本數(shù)緊缺時,在額外的數(shù)據(jù)上預(yù)訓(xùn)練的模型經(jīng)過fine-tuning可以取得很好的效果。
第一個貢獻影響了之后幾乎所有2-stage方法,而第二個貢獻中用分類任務(wù)(Imagenet)中訓(xùn)練好的模型作為基網(wǎng)絡(luò),在檢測問題上fine-tuning的做法也在之后的工作中一直沿用。
傳統(tǒng)的計算機視覺方法常用精心設(shè)計的手工特征(如SIFT, HOG)描述圖像,而深度學(xué)習(xí)的方法則倡導(dǎo)習(xí)得特征,從圖像分類任務(wù)的經(jīng)驗來看,CNN網(wǎng)絡(luò)自動習(xí)得的特征取得的效果已經(jīng)超出了手工設(shè)計的特征。本篇在局部區(qū)域應(yīng)用卷積網(wǎng)絡(luò),以發(fā)揮卷積網(wǎng)絡(luò)學(xué)習(xí)高質(zhì)量特征的能力。
R-CNN網(wǎng)絡(luò)結(jié)構(gòu)
R-CNN將檢測抽象為兩個過程,一是基于圖片提出若干可能包含物體的區(qū)域(即圖片的局部裁剪,被稱為Region Proposal),文中使用的是Selective Search算法;二是在提出的這些區(qū)域上運行當(dāng)時表現(xiàn)最好的分類網(wǎng)絡(luò)(AlexNet),得到每個區(qū)域內(nèi)物體的類別。
另外,文章中的兩個做法值得注意。
IoU的計算
一是數(shù)據(jù)的準(zhǔn)備。輸入CNN前,我們需要根據(jù)Ground Truth對提出的Region Proposal進行標(biāo)記,這里使用的指標(biāo)是IoU(Intersection over Union,交并比)。IoU計算了兩個區(qū)域之交的面積跟它們之并的比,描述了兩個區(qū)域的重合程度。
文章中特別提到,IoU閾值的選擇對結(jié)果影響顯著,這里要談兩個threshold,一個用來識別正樣本(如跟ground truth的IoU大于0.5),另一個用來標(biāo)記負(fù)樣本(即背景類,如IoU小于0.1),而介于兩者之間的則為難例(Hard Negatives),若標(biāo)為正類,則包含了過多的背景信息,反之又包含了要檢測物體的特征,因而這些Proposal便被忽略掉。
另一點是位置坐標(biāo)的回歸(Bounding-Box Regression),這一過程是Region Proposal向Ground Truth調(diào)整,實現(xiàn)時加入了log/exp變換來使損失保持在合理的量級上,可以看做一種標(biāo)準(zhǔn)化(Normalization)操作。
小結(jié)
R-CNN的想法直接明了,即將檢測任務(wù)轉(zhuǎn)化為區(qū)域上的分類任務(wù),是深度學(xué)習(xí)方法在檢測任務(wù)上的試水。模型本身存在的問題也很多,如需要訓(xùn)練三個不同的模型(proposal, classification, regression)、重復(fù)計算過多導(dǎo)致的性能問題等。盡管如此,這篇論文的很多做法仍然廣泛地影響著檢測任務(wù)上的深度模型革命,后續(xù)的很多工作也都是針對改進這一工作而展開,此篇可以稱得上"The First Paper"。
Fast R-CNN: 共享卷積運算
Fast R-CNN
論文鏈接:
https://arxiv.org/abs/1504.08083
文章指出R-CNN耗時的原因是CNN是在每一個Proposal上單獨進行的,沒有共享計算,便提出將基礎(chǔ)網(wǎng)絡(luò)在圖片整體上運行完畢后,再傳入R-CNN子網(wǎng)絡(luò),共享了大部分計算,故有Fast之名。
Fast R-CNN網(wǎng)絡(luò)結(jié)構(gòu)
上圖是Fast R-CNN的架構(gòu)。圖片經(jīng)過feature extractor得到feature map, 同時在原圖上運行Selective Search算法并將RoI(Region of Interset,實為坐標(biāo)組,可與Region Proposal混用)映射到到feature map上,再對每個RoI進行RoI Pooling操作便得到等長的feature vector,將這些得到的feature vector進行正負(fù)樣本的整理(保持一定的正負(fù)樣本比例),分batch傳入并行的R-CNN子網(wǎng)絡(luò),同時進行分類和回歸,并將兩者的損失統(tǒng)一起來。
RoI Pooling圖示,來源:https://blog.deepsense.ai/region-of-interest-pooling-explained/
RoI Pooling 是對輸入R-CNN子網(wǎng)絡(luò)的數(shù)據(jù)進行準(zhǔn)備的關(guān)鍵操作。我們得到的區(qū)域常常有不同的大小,在映射到feature map上之后,會得到不同大小的特征張量。RoI Pooling先將RoI等分成目標(biāo)個數(shù)的網(wǎng)格,再在每個網(wǎng)格上進行max pooling,就得到等長的RoI feature vector。
文章最后的討論也有一定的借鑒意義:
-
multi-loss traing相比單獨訓(xùn)練classification確有提升
-
multi-scale相比single-scale精度略有提升,但帶來的時間開銷更大。一定程度上說明CNN結(jié)構(gòu)可以內(nèi)在地學(xué)習(xí)尺度不變性
-
在更多的數(shù)據(jù)(VOC)上訓(xùn)練后,精度是有進一步提升的
-
Softmax分類器比"one vs rest"型的SVM表現(xiàn)略好,引入了類間的競爭
-
更多的Proposal并不一定帶來精度的提升
小結(jié)
Fast R-CNN的這一結(jié)構(gòu)正是檢測任務(wù)主流2-stage方法所采用的元結(jié)構(gòu)的雛形。
文章將Proposal, Feature Extractor, Object Classification&Localization統(tǒng)一在一個整體的結(jié)構(gòu)中,并通過共享卷積計算提高特征利用效率,是最有貢獻的地方。
Faster R-CNN: 兩階段模型的深度化
Faster R-CNN: Towards Real Time Object Detection with Region Proposal Networks
論文鏈接:
https://arxiv.org/abs/1506.01497
Faster R-CNN是2-stage方法的奠基性工作,提出的RPN網(wǎng)絡(luò)取代Selective Search算法使得檢測任務(wù)可以由神經(jīng)網(wǎng)絡(luò)端到端地完成。粗略的講,F(xiàn)aster R-CNN = RPN + Fast R-CNN,跟RCNN共享卷積計算的特性使得RPN引入的計算量很小,使得Faster R-CNN可以在單個GPU上以5fps的速度運行,而在精度方面達(dá)到SOTA(State of the Art,當(dāng)前最佳)。
本文的主要貢獻是提出Regional Proposal Networks,替代之前的SS算法。RPN網(wǎng)絡(luò)將Proposal這一任務(wù)建模為二分類(是否為物體)的問題。
Faster R-CNN網(wǎng)絡(luò)結(jié)構(gòu)
第一步是在一個滑動窗口上生成不同大小和長寬比例的anchor box(如上圖右邊部分),取定IoU的閾值,按Ground Truth標(biāo)定這些anchor box的正負(fù)。于是,傳入RPN網(wǎng)絡(luò)的樣本數(shù)據(jù)被整理為anchor box(坐標(biāo))和每個anchor box是否有物體(二分類標(biāo)簽)。
RPN網(wǎng)絡(luò)將每個樣本映射為一個概率值和四個坐標(biāo)值,概率值反應(yīng)這個anchor box有物體的概率,四個坐標(biāo)值用于回歸定義物體的位置。最后將二分類和坐標(biāo)回歸的損失統(tǒng)一起來,作為RPN網(wǎng)絡(luò)的目標(biāo)訓(xùn)練。
由RPN得到Region Proposal在根據(jù)概率值篩選后經(jīng)過類似的標(biāo)記過程,被傳入R-CNN子網(wǎng)絡(luò),進行多分類和坐標(biāo)回歸,同樣用多任務(wù)損失將二者的損失聯(lián)合。
小結(jié)
Faster R-CNN的成功之處在于用RPN網(wǎng)絡(luò)完成了檢測任務(wù)的"深度化"。使用滑動窗口生成anchor box的思想也在后來的工作中越來越多地被采用(YOLO v2等)。這項工作奠定了"RPN+RCNN"的兩階段方法元結(jié)構(gòu),影響了大部分后續(xù)工作。
單階段(1-stage)檢測模型
單階段模型沒有中間的區(qū)域檢出過程,直接從圖片獲得預(yù)測結(jié)果,也被成為Region-free方法。
YOLO
You Only Look Once: Unified, Real-Time Object Detection
論文鏈接:
https://arxiv.org/abs/1506.02640
YOLO是單階段方法的開山之作。它將檢測任務(wù)表述成一個統(tǒng)一的、端到端的回歸問題,并且以只處理一次圖片同時得到位置和分類而得名。
YOLO的主要優(yōu)點:
-
快。
-
全局處理使得背景錯誤相對少,相比基于局部(區(qū)域)的方法, 如Fast RCNN。
-
泛化性能好,在藝術(shù)作品上做檢測時,YOLO表現(xiàn)比Fast R-CNN好。
YOLO網(wǎng)絡(luò)結(jié)構(gòu)
YOLO的工作流程如下:
1.準(zhǔn)備數(shù)據(jù):將圖片縮放,劃分為等分的網(wǎng)格,每個網(wǎng)格按跟Ground Truth的IoU分配到所要預(yù)測的樣本。
2.卷積網(wǎng)絡(luò):由GoogLeNet更改而來,每個網(wǎng)格對每個類別預(yù)測一個條件概率值,并在網(wǎng)格基礎(chǔ)上生成B個box,每個box預(yù)測五個回歸值,四個表征位置,第五個表征這個box含有物體(注意不是某一類物體)的概率和位置的準(zhǔn)確程度(由IoU表示)。測試時,分?jǐn)?shù)如下計算:
等式左邊第一項由網(wǎng)格預(yù)測,后兩項由每個box預(yù)測,以條件概率的方式得到每個box含有不同類別物體的分?jǐn)?shù)。 因而,卷積網(wǎng)絡(luò)共輸出的預(yù)測值個數(shù)為S×S×(B×5+C),其中S為網(wǎng)格數(shù),B為每個網(wǎng)格生成box個數(shù),C為類別數(shù)。
3.后處理:使用NMS(Non-Maximum Suppression,非極大抑制)過濾得到最后的預(yù)測框
損失函數(shù)的設(shè)計
YOLO的損失函數(shù)分解,來源:https://zhuanlan.zhihu.com/p/24916786
損失函數(shù)被分為三部分:坐標(biāo)誤差、物體誤差、類別誤差。為了平衡類別不均衡和大小物體等帶來的影響,損失函數(shù)中添加了權(quán)重并將長寬取根號。
小結(jié)
YOLO提出了單階段的新思路,相比兩階段方法,其速度優(yōu)勢明顯,實時的特性令人印象深刻。但YOLO本身也存在一些問題,如劃分網(wǎng)格較為粗糙,每個網(wǎng)格生成的box個數(shù)等限制了對小尺度物體和相近物體的檢測。
SSD: Single Shot Multibox Detector
SSD: Single Shot Multibox Detector
論文鏈接:
https://arxiv.org/abs/1512.02325
SSD網(wǎng)絡(luò)結(jié)構(gòu)
SSD相比YOLO有以下突出的特點:
-
多尺度的feature map:基于VGG的不同卷積段,輸出feature map到回歸器中。這一點試圖提升小物體的檢測精度。
-
更多的anchor box,每個網(wǎng)格點生成不同大小和長寬比例的box,并將類別預(yù)測概率基于box預(yù)測(YOLO是在網(wǎng)格上),得到的輸出值個數(shù)為(C+4)×k×m×n,其中C為類別數(shù),k為box個數(shù),m×n為feature map的大小。
小結(jié)
SSD是單階段模型早期的集大成者,達(dá)到跟接近兩階段模型精度的同時,擁有比兩階段模型快一個數(shù)量級的速度。后續(xù)的單階段模型工作大多基于SSD改進展開。
檢測模型基本特點
最后,我們對檢測模型的基本特征做一個簡單的歸納。
兩階段檢測模型Pipeline,來源:https://tryolabs.com/blog/2018/01/18/faster-r-cnn-down-the-rabbit-hole-of-modern-object-detection/
檢測模型整體上由基礎(chǔ)網(wǎng)絡(luò)(Backbone Network)和檢測頭部(Detection Head)構(gòu)成。前者作為特征提取器,給出圖像不同大小、不同抽象層次的表示;后者則依據(jù)這些表示和監(jiān)督信息學(xué)習(xí)類別和位置關(guān)聯(lián)。檢測頭部負(fù)責(zé)的類別預(yù)測和位置回歸兩個任務(wù)常常是并行進行的,構(gòu)成多任務(wù)的損失進行聯(lián)合訓(xùn)練。
檢測模型頭部并行的分支,來源同上
相比單階段,兩階段檢測模型通常含有一個串行的頭部結(jié)構(gòu),即完成前背景分類和回歸后,把中間結(jié)果作為RCNN頭部的輸入再進行一次多分類和位置回歸。這種設(shè)計帶來了一些優(yōu)點:
-
對檢測任務(wù)的解構(gòu),先進行前背景的分類,再進行物體的分類,這種解構(gòu)使得監(jiān)督信息在不同階段對網(wǎng)絡(luò)參數(shù)的學(xué)習(xí)進行指導(dǎo)
-
RPN網(wǎng)絡(luò)為RCNN網(wǎng)絡(luò)提供良好的先驗,并有機會整理樣本的比例,減輕RCNN網(wǎng)絡(luò)的學(xué)習(xí)負(fù)擔(dān)
這種設(shè)計的缺點也很明顯:中間結(jié)果常常帶來空間開銷,而串行的方式也使得推斷速度無法跟單階段相比;級聯(lián)的位置回歸則會導(dǎo)致RCNN部分的重復(fù)計算(如兩個RoI有重疊)。
另一方面,單階段模型只有一次類別預(yù)測和位置回歸,卷積運算的共享程度更高,擁有更快的速度和更小的內(nèi)存占用。讀者將會在接下來的文章中看到,兩種類型的模型也在互相吸收彼此的優(yōu)點,這也使得兩者的界限更為模糊。

責(zé)任編輯:售電衡衡
- 相關(guān)閱讀
- 泛在電力物聯(lián)網(wǎng)
- 電動汽車
- 儲能技術(shù)
- 智能電網(wǎng)
- 電力通信
- 電力軟件
- 高壓技術(shù)
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計 -
中國自主研制的“人造太陽”重力支撐設(shè)備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng)
-
新基建助推 數(shù)據(jù)中心建設(shè)將迎爆發(fā)期
2020-06-16數(shù)據(jù)中心,能源互聯(lián)網(wǎng),電力新基建 -
泛在電力物聯(lián)網(wǎng)建設(shè)下看電網(wǎng)企業(yè)數(shù)據(jù)變現(xiàn)之路
2019-11-12泛在電力物聯(lián)網(wǎng) -
泛在電力物聯(lián)網(wǎng)建設(shè)典型實踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進這個行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎(chǔ)設(shè)施,電力新基建 -
燃料電池汽車駛?cè)雽こ0傩占疫€要多久?
-
備戰(zhàn)全面電動化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計 -
中國自主研制的“人造太陽”重力支撐設(shè)備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業(yè)發(fā)展
-
探索 | 既耗能又可供能的數(shù)據(jù)中心 打造融合型綜合能源系統(tǒng)
2020-06-16綜合能源服務(wù),新能源消納,能源互聯(lián)網(wǎng) -
5G新基建助力智能電網(wǎng)發(fā)展
2020-06-125G,智能電網(wǎng),配電網(wǎng) -
從智能電網(wǎng)到智能城市