乾貨 | 目標檢測入門,看這篇就夠了(上)

AI科技大本營發表於2018-03-16

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1


作者 | 李家丞( 同濟大學數學系本科在讀,現格靈深瞳演算法部實習生)


近年來,深度學習模型逐漸取代傳統機器視覺方法而成為目標檢測領域的主流演算法,本系列文章將回顧早期的經典工作,並對較新的趨勢做一個全景式的介紹,幫助讀者對這一領域建立基本的認識。(營長注:因本文篇幅較長,營長將其分為上、下兩部分。)


導言:目標檢測的任務表述


如何從影像中解析出可供計算機理解的資訊,是機器視覺的中心問題。深度學習模型由於其強大的表示能力,加之資料量的積累和計算力的進步,成為機器視覺的熱點研究方向。


那麼,如何理解一張圖片?根據後續任務的需要,有三個主要的層次。


640?wx_fmt=jpeg

影像理解的三個層次


一是分類(Classification),即是將影像結構化為某一類別的資訊,用事先確定好的類別(string)或例項ID來描述圖片。這一任務是最簡單、最基礎的影像理解任務,也是深度學習模型最先取得突破和實現大規模應用的任務。其中,ImageNet是最權威的評測集,每年的ILSVRC催生了大量的優秀深度網路結構,為其他任務提供了基礎。在應用領域,人臉、場景的識別等都可以歸為分類任務。


二是檢測(Detection)。分類任務關心整體,給出的是整張圖片的內容描述,而檢測則關注特定的物體目標,要求同時獲得這一目標的類別資訊和位置資訊。相比分類,檢測給出的是對圖片前景和背景的理解,我們需要從背景中分離出感興趣的目標,並確定這一目標的描述(類別和位置),因而,檢測模型的輸出是一個列表,列表的每一項使用一個資料組給出檢出目標的類別和位置(常用矩形檢測框的座標表示)。


三是分割(Segmentation)。分割包括語義分割(semantic segmentation)和例項分割(instance segmentation),前者是對前背景分離的擴充,要求分離開具有不同語義的影像部分,而後者是檢測任務的擴充,要求描述出目標的輪廓(相比檢測框更為精細)。分割是對影像的畫素級描述,它賦予每個畫素類別(例項)意義,適用於理解要求較高的場景,如無人駕駛中對道路和非道路的分割。


本系列文章關注的領域是目標檢測,即影像理解的中層次。


目標檢測入門(一):目標檢測經典模型回顧


本文結構

640?wx_fmt=jpeg


兩階段(2-stage)檢測模型


兩階段模型因其對圖片的兩階段處理得名,也稱為基於區域(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可用於基於區域的定位和分割物體;

2)監督訓練樣本數緊缺時,在額外的資料上預訓練的模型經過fine-tuning可以取得很好的效果。


第一個貢獻影響了之後幾乎所有2-stage方法,而第二個貢獻中用分類任務(Imagenet)中訓練好的模型作為基網路,在檢測問題上fine-tuning的做法也在之後的工作中一直沿用。


傳統的計算機視覺方法常用精心設計的手工特徵(如SIFT, HOG)描述影像,而深度學習的方法則倡導習得特徵,從影像分類任務的經驗來看,CNN網路自動習得的特徵取得的效果已經超出了手工設計的特徵。本篇在區域性區域應用卷積網路,以發揮卷積網路學習高質量特徵的能力。


640?wx_fmt=jpeg

R-CNN網路結構


R-CNN將檢測抽象為兩個過程,一是基於圖片提出若干可能包含物體的區域(即圖片的區域性裁剪,被稱為Region Proposal),文中使用的是Selective Search演算法;二是在提出的這些區域上執行當時表現最好的分類網路(AlexNet),得到每個區域內物體的類別。


另外,文章中的兩個做法值得注意。


640?wx_fmt=jpeg

IoU的計算


一是資料的準備。輸入CNN前,我們需要根據Ground Truth對提出的Region Proposal進行標記,這裡使用的指標是IoU(Intersection over Union,交併比)。IoU計算了兩個區域之交的面積跟它們之並的比,描述了兩個區域的重合程度。


文章中特別提到,IoU閾值的選擇對結果影響顯著,這裡要談兩個threshold,一個用來識別正樣本(如跟ground truth的IoU大於0.5),另一個用來標記負樣本(即背景類,如IoU小於0.1),而介於兩者之間的則為難例(Hard Negatives),若標為正類,則包含了過多的背景資訊,反之又包含了要檢測物體的特徵,因而這些Proposal便被忽略掉。


另一點是位置座標的迴歸(Bounding-Box Regression),這一過程是Region Proposal向Ground Truth調整,實現時加入了log/exp變換來使損失保持在合理的量級上,可以看做一種標準化(Normalization)操作。


小結


R-CNN的想法直接明瞭,即將檢測任務轉化為區域上的分類任務,是深度學習方法在檢測任務上的試水。模型本身存在的問題也很多,如需要訓練三個不同的模型(proposal, classification, regression)、重複計算過多導致的效能問題等。儘管如此,這篇論文的很多做法仍然廣泛地影響著檢測任務上的深度模型革命,後續的很多工作也都是針對改進這一工作而展開,此篇可以稱得上"The First Paper"。


Fast R-CNN: 共享卷積運算


Fast R-CNN

論文連結:

https://arxiv.org/abs/1504.08083


文章指出R-CNN耗時的原因是CNN是在每一個Proposal上單獨進行的,沒有共享計算,便提出將基礎網路在圖片整體上執行完畢後,再傳入R-CNN子網路,共享了大部分計算,故有Fast之名。


640?wx_fmt=jpeg

Fast R-CNN網路結構


上圖是Fast R-CNN的架構。圖片經過feature extractor得到feature map, 同時在原圖上執行Selective Search演算法並將RoI(Region of Interset,實為座標組,可與Region Proposal混用)對映到到feature map上,再對每個RoI進行RoI Pooling操作便得到等長的feature vector,將這些得到的feature vector進行正負樣本的整理(保持一定的正負樣本比例),分batch傳入並行的R-CNN子網路,同時進行分類和迴歸,並將兩者的損失統一起來。


640?wx_fmt=png

RoI Pooling圖示,來源:https://blog.deepsense.ai/region-of-interest-pooling-explained/


RoI Pooling 是對輸入R-CNN子網路的資料進行準備的關鍵操作。我們得到的區域常常有不同的大小,在對映到feature map上之後,會得到不同大小的特徵張量。RoI Pooling先將RoI等分成目標個數的網格,再在每個網格上進行max pooling,就得到等長的RoI feature vector。


文章最後的討論也有一定的借鑑意義:


  • multi-loss traing相比單獨訓練classification確有提升

  • multi-scale相比single-scale精度略有提升,但帶來的時間開銷更大。一定程度上說明CNN結構可以內在地學習尺度不變性

  • 在更多的資料(VOC)上訓練後,精度是有進一步提升的

  • Softmax分類器比"one vs rest"型的SVM表現略好,引入了類間的競爭

  • 更多的Proposal並不一定帶來精度的提升


小結


Fast R-CNN的這一結構正是檢測任務主流2-stage方法所採用的元結構的雛形。


文章將Proposal, Feature Extractor, Object Classification&Localization統一在一個整體的結構中,並通過共享卷積計算提高特徵利用效率,是最有貢獻的地方。


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網路取代Selective Search演算法使得檢測任務可以由神經網路端到端地完成。粗略的講,Faster R-CNN = RPN + Fast R-CNN,跟RCNN共享卷積計算的特性使得RPN引入的計算量很小,使得Faster R-CNN可以在單個GPU上以5fps的速度執行,而在精度方面達到SOTA(State of the Art,當前最佳)。


本文的主要貢獻是提出Regional Proposal Networks,替代之前的SS演算法。RPN網路將Proposal這一任務建模為二分類(是否為物體)的問題。


640?wx_fmt=jpeg

Faster R-CNN網路結構


第一步是在一個滑動視窗上生成不同大小和長寬比例的anchor box(如上圖右邊部分),取定IoU的閾值,按Ground Truth標定這些anchor box的正負。於是,傳入RPN網路的樣本資料被整理為anchor box(座標)和每個anchor box是否有物體(二分類標籤)。


RPN網路將每個樣本對映為一個概率值和四個座標值,概率值反應這個anchor box有物體的概率,四個座標值用於迴歸定義物體的位置。最後將二分類和座標迴歸的損失統一起來,作為RPN網路的目標訓練。


由RPN得到Region Proposal在根據概率值篩選後經過類似的標記過程,被傳入R-CNN子網路,進行多分類和座標迴歸,同樣用多工損失將二者的損失聯合。


小結


Faster R-CNN的成功之處在於用RPN網路完成了檢測任務的"深度化"。使用滑動視窗生成anchor box的思想也在後來的工作中越來越多地被採用(YOLO v2等)。這項工作奠定了"RPN+RCNN"的兩階段方法元結構,影響了大部分後續工作。


單階段(1-stage)檢測模型


單階段模型沒有中間的區域檢出過程,直接從圖片獲得預測結果,也被成為Region-free方法。


YOLO


You Only Look Once: Unified, Real-Time Object Detection

論文連結:

https://arxiv.org/abs/1506.02640


YOLO是單階段方法的開山之作。它將檢測任務表述成一個統一的、端到端的迴歸問題,並且以只處理一次圖片同時得到位置和分類而得名。


YOLO的主要優點:


  • 快。

  • 全域性處理使得背景錯誤相對少,相比基於區域性(區域)的方法, 如Fast RCNN。

  • 泛化效能好,在藝術作品上做檢測時,YOLO表現比Fast R-CNN好。


640?wx_fmt=jpeg

YOLO網路結構


YOLO的工作流程如下:


1.準備資料:將圖片縮放,劃分為等分的網格,每個網格按跟Ground Truth的IoU分配到所要預測的樣本。


2.卷積網路:由GoogLeNet更改而來,每個網格對每個類別預測一個條件概率值,並在網格基礎上生成B個box,每個box預測五個迴歸值,四個表徵位置,第五個表徵這個box含有物體(注意不是某一類物體)的概率和位置的準確程度(由IoU表示)。測試時,分數如下計算:


640?wx_fmt=jpeg


等式左邊第一項由網格預測,後兩項由每個box預測,以條件概率的方式得到每個box含有不同類別物體的分數。 因而,卷積網路共輸出的預測值個數為S×S×(B×5+C),其中S為網格數,B為每個網格生成box個數,C為類別數。


3.後處理:使用NMS(Non-Maximum Suppression,非極大抑制)過濾得到最後的預測框


損失函式的設計


640?wx_fmt=jpeg

YOLO的損失函式分解,來源:https://zhuanlan.zhihu.com/p/24916786


損失函式被分為三部分:座標誤差、物體誤差、類別誤差。為了平衡類別不均衡和大小物體等帶來的影響,損失函式中新增了權重並將長寬取根號。


小結


YOLO提出了單階段的新思路,相比兩階段方法,其速度優勢明顯,實時的特性令人印象深刻。但YOLO本身也存在一些問題,如劃分網格較為粗糙,每個網格生成的box個數等限制了對小尺度物體和相近物體的檢測。


SSD: Single Shot Multibox Detector


SSD: Single Shot Multibox Detector

論文連結:

https://arxiv.org/abs/1512.02325


640?wx_fmt=jpeg

SSD網路結構


SSD相比YOLO有以下突出的特點:


  • 多尺度的feature map:基於VGG的不同卷積段,輸出feature map到迴歸器中。這一點試圖提升小物體的檢測精度。

  • 更多的anchor box,每個網格點生成不同大小和長寬比例的box,並將類別預測概率基於box預測(YOLO是在網格上),得到的輸出值個數為(C+4)×k×m×n,其中C為類別數,k為box個數,m×n為feature map的大小。


小結


SSD是單階段模型早期的集大成者,達到跟接近兩階段模型精度的同時,擁有比兩階段模型快一個數量級的速度。後續的單階段模型工作大多基於SSD改進展開。


檢測模型基本特點


最後,我們對檢測模型的基本特徵做一個簡單的歸納。


640?wx_fmt=jpeg

兩階段檢測模型Pipeline,來源:https://tryolabs.com/blog/2018/01/18/faster-r-cnn-down-the-rabbit-hole-of-modern-object-detection/


檢測模型整體上由基礎網路(Backbone Network)和檢測頭部(Detection Head)構成。前者作為特徵提取器,給出影像不同大小、不同抽象層次的表示;後者則依據這些表示和監督資訊學習類別和位置關聯。檢測頭部負責的類別預測和位置迴歸兩個任務常常是並行進行的,構成多工的損失進行聯合訓練。


640?wx_fmt=jpeg

檢測模型頭部並行的分支,來源同上


相比單階段,兩階段檢測模型通常含有一個序列的頭部結構,即完成前背景分類和迴歸後,把中間結果作為RCNN頭部的輸入再進行一次多分類和位置迴歸。這種設計帶來了一些優點:


  • 對檢測任務的解構,先進行前背景的分類,再進行物體的分類,這種解構使得監督資訊在不同階段對網路引數的學習進行指導

  • RPN網路為RCNN網路提供良好的先驗,並有機會整理樣本的比例,減輕RCNN網路的學習負擔


這種設計的缺點也很明顯:中間結果常常帶來空間開銷,而序列的方式也使得推斷速度無法跟單階段相比;級聯的位置迴歸則會導致RCNN部分的重複計算(如兩個RoI有重疊)。


另一方面,單階段模型只有一次類別預測和位置迴歸,卷積運算的共享程度更高,擁有更快的速度和更小的記憶體佔用。讀者將會在接下來的文章中看到,兩種型別的模型也在互相吸收彼此的優點,這也使得兩者的界限更為模糊。


目標檢測入門(二):模型的評測與訓練技巧


文章結構


640?wx_fmt=jpeg


檢測模型的評測指標


目標檢測模型本源上可以用統計推斷的框架描述,我們關注其犯第一類錯誤和第二類錯誤的概率,通常用準確率和召回率來描述。準確率描述了模型有多準,即在預測為正例的結果中,有多少是真正例;召回率則描述了模型有多全,即在為真的樣本中,有多少被我們的模型預測為正例。不同的任務,對兩類錯誤有不同的偏好,常常在某一類錯誤不多於一定閾值的情況下,努力減少另一類錯誤。在檢測中,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)


640?wx_fmt=jpeg

檢測任務在COCO資料集上的進展


COCO資料集收集了大量包含常見物體的日常場景圖片,並提供畫素級的例項標註以更精確地評估檢測和分割演算法的效果,致力於推動場景理解的研究進展。依託這一資料集,每年舉辦一次比賽,現已涵蓋檢測、分割、關鍵點識別、註釋等機器視覺的中心任務,是繼ImageNet Chanllenge以來最有影響力的學術競賽之一。


640?wx_fmt=jpeg

iconic與non-iconic圖片對比


相比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資料作為比賽的評測集。


640?wx_fmt=jpeg

COCO資料集分佈


在分佈方面,COCO的每個類含有更多例項,分佈也較為均衡(上圖a),每張圖片包含更多類和更多的例項(上圖b和c,均為直方圖,每張圖片平均分別含3.3個類和7.7個例項),相比Pascal VOC,COCO還含有更多的小物體(下圖,橫軸是物體佔圖片的比例)。


640?wx_fmt=jpeg

COCO資料集物體大小分佈


如本文第一節所述,COCO提供的評測標準更為精細化,提供的API不僅包含了視覺化、評測資料的功能,還有對模型的錯誤來源分析指令碼,能夠更清晰地展現演算法的不足之處。COCO所建立的這些標準也逐漸被學術界認可,成為通用的評測標準。您可以在這裡找到目前檢測任務的LeaderBoard。


640?wx_fmt=jpeg

錯誤來源分解,詳見http://cocodataset.org/#detections-eval


Cityscapes(https://www.cityscapes-dataset.com)


640?wx_fmt=jpeg

Cityscapes資料示例


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進行合併,如下圖所示。


640?wx_fmt=jpeg

使用Maxout合併feature vector


近期的工作如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,這一做法緩解了類別比例不均衡的問題,是兩階段方法相比單階段方法具有優勢的地方,也被後來的大多數工作沿用。


640?wx_fmt=jpeg

OHEM圖解


但在OHEM的工作中,作者提出用R-CNN子網路對RoI Proposal預測的分數來決定每個batch選用的樣本,這樣,輸入R-CNN子網路的RoI Proposal總為其表現不好的樣本,提高了監督學習的效率。實際操作中,維護兩個完全相同的R-CNN子網路,其中一個只進行前向傳播來為RoI Proposal的選擇提供指導,另一個則為正常的R-CNN,參與損失的計算並更新權重,並且將權重複制到前者以使兩個分支權重同步。


OHEM以額外的R-CNN子網路的開銷來改善RoI Proposal的質量,更有效地利用資料的監督資訊,成為兩階段模型提升效能的常用部件之一。


Soft NMS 軟化非極大抑制


640?wx_fmt=jpeg

NMS後處理圖示


NMS(Non-Maximum Suppression,非極大抑制)是檢測模型的標準後處理操作,用於去除重合度(IoU)較高的預測框,只保留預測分數最高的預測框作為檢測輸出。Soft NMS由[6]提出。在傳統的NMS中,跟最高預測分數預測框重合度超出一定閾值的預測框會被直接捨棄,作者認為這樣不利於相鄰物體的檢測。提出的改進方法是根據IoU將預測框的預測分數進行懲罰,最後再按分數過濾。配合Deformable Convnets(將在之後的文章介紹),Soft NMS在MS COCO上取得了當時最佳的表現。演算法改進如下:


640?wx_fmt=jpeg

Soft-NMS演算法改進


上圖中的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)作為通用的手段也被應用在比賽中。


總結


本篇文章裡,我們介紹了檢測模型常用的標準評測資料集和訓練模型的技巧,上述內容在溯源和表述方面的不實之處也請讀者評論指出。從下一篇開始,我們將介紹檢測領域較新的趨勢,請持續關注。


Reference

[1]: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

[2]: Object Detection Networks on Convolutional Feature Maps

[3]: Deep Residual Learning for Image Classification

[4]: Object Detection via a Multi-region & Semantic Segmentatio-aware CNN Model

[5]: Training Region-based Object Detectors with Online Hard Example Mining

[6]: Improving Object Detection With One Line of Code

[7]: Mask R-CNN


插播:格靈深瞳2018春季校招現已啟動!點選檢視格靈深瞳空中宣講會


招聘

新一年,AI科技大本營的目標更加明確,有更多的想法需要落地,不過目前對於營長來說是“現實跟不上靈魂的腳步”,因為缺人~~


所以,AI科技大本營要壯大隊伍了,現招聘AI記者和資深編譯,有意者請將簡歷投至:gulei@csdn.net,期待你的加入!


如果你暫時不能加入營長的隊伍,也歡迎與營長分享你的精彩文章,投稿郵箱:suiling@csdn.net


AI科技大本營讀者群(計算機視覺、機器學習、深度學習、NLP、Python、AI硬體、AI+金融、AI+PM方向)正在招募中,關注AI科技大本營微信公眾號,後臺回覆:讀者群,聯絡營長,新增營長請備註姓名,研究方向。


640?wx_fmt=gif

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png


☟☟☟點選 | 閱讀原文 | 檢視更多精彩內

相關文章