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