干貨 | 目標(biāo)檢測入門,看這篇就夠了(模型的評測與訓(xùn)練技巧)
文章結(jié)構(gòu)
檢測模型的評測指標(biāo)
目標(biāo)檢測模型本源上可以用統(tǒng)計推斷的框架描述,我們關(guān)注其犯第一類錯誤和第二類錯誤的概率,通常用準(zhǔn)確率和召回率來描述。準(zhǔn)確率描述了模型有多準(zhǔn),即在預(yù)測為正例的結(jié)果中,有多少是真正例;召回率則描述了模型有多全,即在為真的樣本中,有多少被我們的模型預(yù)測為正例。不同的任務(wù),對兩類錯誤有不同的偏好,常常在某一類錯誤不多于一定閾值的情況下,努力減少另一類錯誤。在檢測中,mAP(mean Average Precision)作為一個統(tǒng)一的指標(biāo)將這兩種錯誤兼顧考慮。
具體地,對于每張圖片,檢測模型輸出多個預(yù)測框(常常遠超真實框的個數(shù)),我們使用IoU(Intersection Over Union,交并比)來標(biāo)記預(yù)測框是否為預(yù)測正確。標(biāo)記完成后,隨著預(yù)測框的增多,召回率總會提升,在不同的召回率水平下對準(zhǔn)確率做平均,即得到AP,最后再對所有類別按其所占比例做平均,即得到mAP。
在較早的Pascal VOC數(shù)據(jù)集上,常采用固定的一個IoU閾值(如0.5, 0.75)來計算mAP,現(xiàn)階段較為權(quán)威的MS COCO數(shù)據(jù)集上,對不同的IoU閾值(0.5-0.95,0.05為步長)分別計算AP,再綜合平均,并且給出了不同大小物體分別的AP表現(xiàn),對定位準(zhǔn)確的模型給予獎勵并全面地展現(xiàn)不同大小物體上檢測算法的性能,更為科學(xué)合理。
在實踐中,我們不僅關(guān)注檢測模型的精度,還關(guān)注其運行的速度,常常用FPS(Frame Per Second,每秒幀率)來表示檢測模型能夠在指定硬件上每秒處理圖片的張數(shù)。通常來講,在單塊GPU上,兩階段方法的FPS一般在個位數(shù),而單階段方法可以達到數(shù)十。現(xiàn)在檢測模型運行的平臺并不統(tǒng)一,實踐中也不能部署較為昂貴的GPU進行推斷。事實上,很多文章并沒有嚴(yán)謹(jǐn)討論其提出模型的速度表現(xiàn)(加了較多的trick以使精度達到SOTA),另外,考慮到目前移動端專用芯片的發(fā)展速度和研究進展,速度方面的指標(biāo)可能較難形成統(tǒng)一的參考標(biāo)準(zhǔn),需要謹(jǐn)慎看待文章中匯報的測試結(jié)果。
標(biāo)準(zhǔn)評測數(shù)據(jù)集
Pascal VOC(Pascal Visual Object Classes)
鏈接:http://host.robots.ox.ac.uk/pascal/VOC/
自2005年起每年舉辦一次比賽,最開始只有4類,到2007年擴充為20個類,共有兩個常用的版本:2007和2012。學(xué)術(shù)界常用5k的trainval2007和16k的trainval2012作為訓(xùn)練集(07+12),test2007作為測試集,用10k的trainval2007+test2007和和16k的trainval2012作為訓(xùn)練集(07++12),test2012作為測試集,分別匯報結(jié)果。
Pascal VOC對早期檢測工作起到了重要的推動作用,目前提升的空間相對有限,權(quán)威評測集的交接棒也逐漸傳給了下面要介紹的COCO。
MS COCO(Common Objects in COntext-http://cocodataset.org)
COCO數(shù)據(jù)集收集了大量包含常見物體的日常場景圖片,并提供像素級的實例標(biāo)注以更精確地評估檢測和分割算法的效果,致力于推動場景理解的研究進展。依托這一數(shù)據(jù)集,每年舉辦一次比賽,現(xiàn)已涵蓋檢測、分割、關(guān)鍵點識別、注釋等機器視覺的中心任務(wù),是繼ImageNet Chanllenge以來最有影響力的學(xué)術(shù)競賽之一。
相比ImageNet,COCO更加偏好目標(biāo)與其場景共同出現(xiàn)的圖片,即non-iconic images。這樣的圖片能夠反映視覺上的語義,更符合圖像理解的任務(wù)要求。而相對的iconic images則更適合淺語義的圖像分類等任務(wù)。
COCO的檢測任務(wù)共含有80個類,在2014年發(fā)布的數(shù)據(jù)規(guī)模分train/val/test分別為80k/40k/40k,學(xué)術(shù)界較為通用的劃分是使用train和35k的val子集作為訓(xùn)練集(trainval35k),使用剩余的val作為測試集(minival),同時向官方的evaluation server提交結(jié)果(test-dev)。除此之外,COCO官方也保留一部分test數(shù)據(jù)作為比賽的評測集。
在分布方面,COCO的每個類含有更多實例,分布也較為均衡(上圖a),每張圖片包含更多類和更多的實例(上圖b和c,均為直方圖,每張圖片平均分別含3.3個類和7.7個實例),相比Pascal VOC,COCO還含有更多的小物體(下圖,橫軸是物體占圖片的比例)。
如本文第一節(jié)所述,COCO提供的評測標(biāo)準(zhǔn)更為精細化,提供的API不僅包含了可視化、評測數(shù)據(jù)的功能,還有對模型的錯誤來源分析腳本,能夠更清晰地展現(xiàn)算法的不足之處。COCO所建立的這些標(biāo)準(zhǔn)也逐漸被學(xué)術(shù)界認(rèn)可,成為通用的評測標(biāo)準(zhǔn)。您可以在這里找到目前檢測任務(wù)的LeaderBoard。
Cityscapes(https://www.cityscapes-dataset.com)
Cityscapes數(shù)據(jù)集專注于現(xiàn)代城市道路場景的理解,提供了30個類的像素級標(biāo)注,是自動駕駛方向較為權(quán)威的評測集。
檢測模型中的Bells and wisthles
本節(jié)介紹常見的提升檢測模型性能的技巧,它們常作為trick在比賽中應(yīng)用。其實,這樣的名稱有失公允,部分工作反映了作者對檢測模型有啟發(fā)意義的觀察,有些具有成為檢測模型標(biāo)準(zhǔn)組件的潛力(如果在早期的工作中即被應(yīng)用則可能成為通用做法)。讀者將它們都看作學(xué)術(shù)界對解決這一問題的努力即可。對研究者,誠實地報告所引用的其他工作并添加有說服力的消融實驗(ablation expriments)以支撐自己工作的原創(chuàng)性和貢獻之處,則是值得倡導(dǎo)的行為。
Data augmentation 數(shù)據(jù)增強
數(shù)據(jù)增強是增加深度模型魯棒性和泛化性能的常用手段,隨機翻轉(zhuǎn)、隨機裁剪、添加噪聲等也被引入到檢測任務(wù)的訓(xùn)練中來,其信念是通過數(shù)據(jù)的一般性來迫使模型學(xué)習(xí)到諸如對稱不變性、旋轉(zhuǎn)不變性等更一般的表示。通常需要注意標(biāo)注的相應(yīng)變換,并且會大幅增加訓(xùn)練的時間。個人認(rèn)為數(shù)據(jù)(監(jiān)督信息)的適時傳入可能是更有潛力的方向。
Multi-scale Training/Testing 多尺度訓(xùn)練/測試
輸入圖片的尺寸對檢測模型的性能影響相當(dāng)明顯,事實上,多尺度是提升精度最明顯的技巧之一。在基礎(chǔ)網(wǎng)絡(luò)部分常常會生成比原圖小數(shù)十倍的特征圖,導(dǎo)致小物體的特征描述不容易被檢測網(wǎng)絡(luò)捕捉。通過輸入更大、更多尺寸的圖片進行訓(xùn)練,能夠在一定程度上提高檢測模型對物體大小的魯棒性,僅在測試階段引入多尺度,也可享受大尺寸和多尺寸帶來的增益。
multi-scale training/testing最早見于[1],訓(xùn)練時,預(yù)先定義幾個固定的尺度,每個epoch隨機選擇一個尺度進行訓(xùn)練。測試時,生成幾個不同尺度的feature map,對每個Region Proposal,在不同的feature map上也有不同的尺度,我們選擇最接近某一固定尺寸(即檢測頭部的輸入尺寸)的Region Proposal作為后續(xù)的輸入。在[2]中,選擇單一尺度的方式被Maxout(element-wise max,逐元素取最大)取代:隨機選兩個相鄰尺度,經(jīng)過Pooling后使用Maxout進行合并,如下圖所示。
近期的工作如FPN等已經(jīng)嘗試在不同尺度的特征圖上進行檢測,但多尺度訓(xùn)練/測試仍作為一種提升性能的有效技巧被應(yīng)用在MS COCO等比賽中。
Global Context 全局語境
這一技巧在ResNet的工作[3]中提出,做法是把整張圖片作為一個RoI,對其進行RoI Pooling并將得到的feature vector拼接于每個RoI的feature vector上,作為一種輔助信息傳入之后的R-CNN子網(wǎng)絡(luò)。目前,也有把相鄰尺度上的RoI互相作為context共同傳入的做法。
Box Refinement/Voting 預(yù)測框微調(diào)/投票法
微調(diào)法和投票法由工作[4]提出,前者也被稱為Iterative Localization。微調(diào)法最初是在SS算法得到的Region Proposal基礎(chǔ)上用檢測頭部進行多次迭代得到一系列box,在ResNet的工作中,作者將輸入R-CNN子網(wǎng)絡(luò)的Region Proposal和R-CNN子網(wǎng)絡(luò)得到的預(yù)測框共同進行NMS(見下面小節(jié))后處理,最后,把跟NMS篩選所得預(yù)測框的IoU超過一定閾值的預(yù)測框進行按其分?jǐn)?shù)加權(quán)的平均,得到最后的預(yù)測結(jié)果。投票法可以理解為以頂尖篩選出一流,再用一流的結(jié)果進行加權(quán)投票決策。
OHEM 在線難例挖掘
OHEM(Online Hard negative Example Mining,在線難例挖掘)見于[5]。兩階段檢測模型中,提出的RoI Proposal在輸入R-CNN子網(wǎng)絡(luò)前,我們有機會對正負(fù)樣本(背景類和前景類)的比例進行調(diào)整。通常,背景類的RoI Proposal個數(shù)要遠遠多于前景類,F(xiàn)ast R-CNN的處理方式是隨機對兩種樣本進行上采樣和下采樣,以使每一batch的正負(fù)樣本比例保持在1:3,這一做法緩解了類別比例不均衡的問題,是兩階段方法相比單階段方法具有優(yōu)勢的地方,也被后來的大多數(shù)工作沿用。
但在OHEM的工作中,作者提出用R-CNN子網(wǎng)絡(luò)對RoI Proposal預(yù)測的分?jǐn)?shù)來決定每個batch選用的樣本,這樣,輸入R-CNN子網(wǎng)絡(luò)的RoI Proposal總為其表現(xiàn)不好的樣本,提高了監(jiān)督學(xué)習(xí)的效率。實際操作中,維護兩個完全相同的R-CNN子網(wǎng)絡(luò),其中一個只進行前向傳播來為RoI Proposal的選擇提供指導(dǎo),另一個則為正常的R-CNN,參與損失的計算并更新權(quán)重,并且將權(quán)重復(fù)制到前者以使兩個分支權(quán)重同步。
OHEM以額外的R-CNN子網(wǎng)絡(luò)的開銷來改善RoI Proposal的質(zhì)量,更有效地利用數(shù)據(jù)的監(jiān)督信息,成為兩階段模型提升性能的常用部件之一。
Soft NMS 軟化非極大抑制
NMS(Non-Maximum Suppression,非極大抑制)是檢測模型的標(biāo)準(zhǔn)后處理操作,用于去除重合度(IoU)較高的預(yù)測框,只保留預(yù)測分?jǐn)?shù)最高的預(yù)測框作為檢測輸出。Soft NMS由[6]提出。在傳統(tǒng)的NMS中,跟最高預(yù)測分?jǐn)?shù)預(yù)測框重合度超出一定閾值的預(yù)測框會被直接舍棄,作者認(rèn)為這樣不利于相鄰物體的檢測。提出的改進方法是根據(jù)IoU將預(yù)測框的預(yù)測分?jǐn)?shù)進行懲罰,最后再按分?jǐn)?shù)過濾。配合Deformable Convnets(將在之后的文章介紹),Soft NMS在MS COCO上取得了當(dāng)時最佳的表現(xiàn)。算法改進如下:
上圖中的f即為軟化函數(shù),通常取線性或高斯函數(shù),后者效果稍好一些。當(dāng)然,在享受這一增益的同時,Soft-NMS也引入了一些超參,對不同的數(shù)據(jù)集需要試探以確定最佳配置。
RoIAlign RoI對齊
RoIAlign是Mask R-CNN([7])的工作中提出的,針對的問題是RoI在進行Pooling時有不同程度的取整,這影響了實例分割中mask損失的計算。文章采用雙線性插值的方法將RoI的表示精細化,并帶來了較為明顯的性能提升。這一技巧也被后來的一些工作(如light-head R-CNN)沿用。
拾遺
除去上面所列的技巧外,還有一些做法也值得注意:
-
更好的先驗(YOLOv2):使用聚類方法統(tǒng)計數(shù)據(jù)中box標(biāo)注的大小和長寬比,以更好的設(shè)置anchor box的生成配置
-
更好的pre-train模型:檢測模型的基礎(chǔ)網(wǎng)絡(luò)通常使用ImageNet(通常是ImageNet-1k)上訓(xùn)練好的模型進行初始化,使用更大的數(shù)據(jù)集(ImageNet-5k)預(yù)訓(xùn)練基礎(chǔ)網(wǎng)絡(luò)對精度的提升亦有幫助
-
超參數(shù)的調(diào)整:部分工作也發(fā)現(xiàn)如NMS中IoU閾值的調(diào)整(從0.3到0.5)也有利于精度的提升,但這一方面尚無最佳配置參照
最后,集成(Ensemble)作為通用的手段也被應(yīng)用在比賽中。
總結(jié)
本篇文章里,我們介紹了檢測模型常用的標(biāo)準(zhǔn)評測數(shù)據(jù)集和訓(xùn)練模型的技巧,上述內(nèi)容在溯源和表述方面的不實之處也請讀者評論指出。從下一篇開始,我們將介紹檢測領(lǐng)域較新的趨勢,請持續(xù)關(guān)注。
責(zé)任編輯:售電衡衡
-
權(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)到智能城市