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

責(zé)任編輯:售電衡衡
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國(guó)自主研制的“人造太陽(yáng)”重力支撐設(shè)備正式啟運(yùn)
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è)典型實(shí)踐案例
2019-10-15泛在電力物聯(lián)網(wǎng)案例
-
新基建之充電樁“火”了 想進(jìn)這個(gè)行業(yè)要“心里有底”
2020-06-16充電樁,充電基礎(chǔ)設(shè)施,電力新基建 -
燃料電池汽車駛?cè)雽こ0傩占疫€要多久?
-
備戰(zhàn)全面電動(dòng)化 多部委及央企“定調(diào)”充電樁配套節(jié)奏
-
權(quán)威發(fā)布 | 新能源汽車產(chǎn)業(yè)頂層設(shè)計(jì)落地:鼓勵(lì)“光儲(chǔ)充放”,有序推進(jìn)氫燃料供給體系建設(shè)
2020-11-03新能源,汽車,產(chǎn)業(yè),設(shè)計(jì) -
中國(guó)自主研制的“人造太陽(yáng)”重力支撐設(shè)備正式啟運(yùn)
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長(zhǎng)期助力儲(chǔ)能行業(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)到智能城市
-
山西省首座電力與通信共享電力鐵塔試點(diǎn)成功
-
中國(guó)電建公司公共資源交易服務(wù)平臺(tái)摘得電力創(chuàng)新大獎(jiǎng)
-
電力系統(tǒng)對(duì)UPS的技術(shù)要求