ECV 2021 冠軍方案解讀:船只數(shù)量檢測方案

極市導讀
?本文為獲得船只數(shù)量檢測冠軍的蔡劼團隊方案解讀,該團隊使用anchor-free方法以及隨機水平翻轉(zhuǎn),多尺度訓練,mixup,autoaugment以及gridmask的數(shù)據(jù)增強方法。>>加入極市CV技術交流群,走在計算機視覺的最前沿
數(shù)據(jù)分析
本次比賽一共包含了9902張訓練集,測試集由4242張,數(shù)據(jù)采集的場景大概有10個左右,格式都比較規(guī)范,都是1080P的圖像大小。類別數(shù)也只包含了boat一類。
賽題最終需要在OpenVINO平臺上部署推理,同時算法精度需要大于0.6,算法的FPS需要大于5才能達到評獎的下限要求,其中評估算法精度的方法為F1 Score(IoU>0.5)。部分樣例圖像如下所示。

最初需要對本賽題提供的訓練數(shù)據(jù)進行數(shù)據(jù)分析,分析結(jié)果如下,船只由于自身形狀特點以及成像場景(遠近不一)的差異導致標定框?qū)捀弑确秶兓?,同時遠景下的船只還暴露了本次比賽需要注意小目標的問題。
兩個方面的因素決定了anchor-based的方法需要花費大量精力去設計anchor。從GT個數(shù)分析來看,本次任務也存在部分樣本包含了大量的真值標定框,對于這種密集場景下的目標檢出和檢準也需要多注意。

技術展示(訓練)
接下來是本次比賽的技術展示,分為兩個部分,分別對應訓練和測試部署。
經(jīng)過上述分析之后,我們認為目前比較適合本次比賽的方法應該是anchor-free的算法,如下圖所示,anchor-based算法需要預定義一系列尺度不一,大小不一的anchor,在訓練過程中基于這些anchor對目標bbox進行回歸預測,而anchor-free算法則是直接從特征圖上回歸出特定的bbox和類別置信度,流程上更加簡練,也避免了很多類似于anchor生成,anchor回歸計算的操作,更重要的是后處理階段會更簡單,比如centernet中的后處理操作便可以通過maxpooling層結(jié)合一些篩選得到,避免了nms算法影響推理效率的問題。

在模型訓練過程中,我們主要采用了以下數(shù)據(jù)增強方法:隨機水平翻轉(zhuǎn),多尺度訓練,mixup,autoaugment以及gridmask。前面兩個不需要過多介紹,都是檢測任務里面的常規(guī)操作,mixup通過疊加融合兩張圖片提升輸入模型的多樣性。

autoaugment則采用了谷歌之前在COCO數(shù)據(jù)集上搜索得到的policy直接遷移到本次任務的數(shù)據(jù)集上進行數(shù)據(jù)增強,其本質(zhì)上就是找到一組合理的數(shù)據(jù)增強policy組合,同時提升輸入樣本的多樣性,進一步提升模型的泛化能力。

gridmask通過動態(tài)網(wǎng)格狀擦除原圖局部區(qū)域的方式增加模型訓練過程中的難度,具有較高的正則作用,基于擦除的方法本質(zhì)上都是增加輸入樣本的難度,通過擦除也一定程度上迫使模型在學習過程中關注到樣本中更豐富的代表性特征,gridmask相較于之前的random erasing和cutout等操作,避免了一大塊擦除區(qū)域?qū)⒅攸c區(qū)域整體擦除,同時動態(tài)的網(wǎng)格擦除方法也增加了擦除類型的多樣性,有利于提升模型的魯棒性。

在模型結(jié)構設計方面,考慮到需要在CPU平臺上結(jié)合OpenVINO優(yōu)化工具進行模型的優(yōu)化以及部署,除了需要考慮到OpenVINO工具包的算子支持情況之外,模型首先理論計算量肯定不能太少,也不能包含太多花里胡哨的操作。好在CPU平臺上grouped convolution的優(yōu)化力度還算強大,其實際推理效率還是高于常規(guī)的卷積操作的,同時考慮到最新的結(jié)構性能表現(xiàn)較為優(yōu)異,所以我們選擇了RegNet作為模型backbone,其代表的是一個種群的模型。
如下圖所示,該類型的RegNet遵循了一套計算公式,所以使得我們可以根據(jù)目標計算量生成對應的模型結(jié)構,最終為了平衡效率和性能,我們選擇了RegNetX-400MF作為最終的backbone進行訓練。

檢測器模型的整體結(jié)構如下,根據(jù)現(xiàn)在主流的檢測器描述思路,我們將其分為backbone,neck以及head三個區(qū)域進行描述,backbone上文已經(jīng)介紹了。
neck我們選擇了標準的PAFPN結(jié)構,對其中的通道數(shù)做了輕量化的改進,具體來說就是將其中的卷積變成了通道數(shù)為64的depthwise convolution層。
在head的設計上,我們主要引入了兩個模塊,一個是MultiScale Fuse,另一個是SSH Head。
MultiScale Fuse模塊其實就是目前ASFF那篇文章對于多尺度特征圖融合模塊的一個輕量化改進,在anchor-free算法中,一般習慣采用4x降采樣的特征圖作為最終的分辨率去完成剩下的bbox回歸以及分類工作。在設計這個MultiScale Fuse模塊時為了保證推理效率,我們將softmax歸一化拿掉了,這個操作其中的exp計算會比較耗時,我們采用了BiFPN中最后采用的累加后歸一化的思路。
同時在多尺度特征融合上早期也考慮了concat的操作,最終沒采用的原因也是因為計算量的考慮,concat先不說顯著增加了通道數(shù),同時這部分特征都是upsample到4x降采樣分辨率下的特征圖,其后任何一個對這個大分辨率特征圖做處理的操作都會使得計算量快速上升,如果只是32x降采樣后的分辨率的話,通道數(shù)升了也就升了,計算量上的影響不會特別大。

另一個head部分的改進是SSH Head,這部分的結(jié)構如下所示,結(jié)構與人臉檢測領域的SSH一致,區(qū)別在于做了對應的輕量化改進,這個模塊可以在輸入特征圖上提供多尺度感受野的效果,特別是針對本次賽題船只目標尺度差異大的問題能有較好的兼容性。

其余的訓練技巧還包含了warmup,sgdgc優(yōu)化器以及SWA訓練等常規(guī)優(yōu)化操作,特別的,針對本次采用的anchor-free模型以及F1-Score評價指標,我們對方案中的高斯圖生成過程進行了微調(diào),收縮了生成的高斯響應圖,一定程度上弱化模型的召回能力,過多的bbox召回在mAP評價指標中影響較小,但是對于F1-Score指標來說影響是比較大的。如下圖所示,在兩種較為極端的高斯圖中間,需要微調(diào)得到平衡點。

技術展示(測試部署)
在模型測試部署方面,首先我們分析了這一次比賽要求的部署平臺為單核CPU的虛擬化環(huán)境,CPU架構為Cascade Lake。因為容器化的時候只分配了一個核心,同時模型的量級也比較小并不屬于計算密集型的時候,編寫代碼反而不需要引入多核或者多進程的操作,這樣反而會降低推理效率。
同時相比于全精度fp32對部署的檢測器進行推理,我們可以采用低精度進行替換,在模型并不復雜,數(shù)據(jù)場景也不復雜的時候,犧牲可接受范圍內(nèi)的精度損失換取效率上的提升也是比較合適的。
在模型部署過程中,我們對模型的前后處理進行了對應的優(yōu)化,同時借助OpenVINO提供的Model Optimizer工具在模型轉(zhuǎn)換階段也對檢測器進行了對應的優(yōu)化。這部分操作分別如下:
CenterNet中后處理采用simple nms替換傳統(tǒng)算法中的nms操作,相較于輸出bbox按置信度排序以后抑制處理,simple nms直接使用了maxpooling操作處理最后的特征圖,然后保留那些經(jīng)過maxpooling以后跟原特征圖對應位置一致的值,作為最終需要回歸bbox和輸出分類結(jié)果的區(qū)域。這些操作是可以轉(zhuǎn)為onnx并且再次轉(zhuǎn)換為OpenVINO的IR形式,借助OpenVINO內(nèi)部實現(xiàn)的算子高效完成這部分操作。 目前很多推理框架在模型推理engine初始化時都會存在冷啟動問題,即剛開始的推理效率是不準確的,在本次任務中,我們可以在測試sdk的init函數(shù)中設計推理engine的warmup邏輯,即構造偽數(shù)據(jù)輸入到推理engine中循環(huán)推理N次,讓推理engine度過冷啟動階段,為之后的正常運行提供保障。 OpenVINO提供了Model Optimizer工具(之后簡稱為mo工具)除了可以將常用的深度學習訓練框架格式轉(zhuǎn)為自有的IR格式之外,還提供了一系列的預處理優(yōu)化功能,比如說在轉(zhuǎn)換階段將mean值,std值和對應的歸一化操作融合到自有的IR中進行處理,同時也提供了輸入數(shù)據(jù)的通道轉(zhuǎn)換操作(比如RGB->BGR)。這些優(yōu)化策略能夠?qū)⒉渴疬^程中的繁瑣預處理交給mo工具進行優(yōu)化,一方面降低了開發(fā)效率,另一方面mo優(yōu)化后的預處理大部分時候肯定比自己實現(xiàn)的預處理更高效。
總結(jié)
經(jīng)過上述所述操作后,我們團隊在本次比賽的A榜和B榜(最終未公開)上都取得了第一的成績。同時對本次比賽進行展望,我們認為:
我們認為本次競賽我們方案的優(yōu)勢在于anchor-free方法部署方便,后處理容易高效實現(xiàn);模型收斂速度快,在有限的資源限制下還能夠提供足夠的調(diào)優(yōu)空間; 我們的方案缺點在anchor-free方法實際評估下來在相對復雜的場景下表現(xiàn)還是不如anchor-based的方法,同時只采用一個尺度的特征圖完成分類和回歸多少有些力不從心。 對于該方法下一步的嘗試,我們認為可以嘗試下學術界的最新成果,比如YOLOX系列的模型,在最新成果的基礎上進行改進,調(diào)優(yōu),最新的成果一定是有他自己獨特的優(yōu)勢的。同時對于模型推理效率的提升,可以考慮模型裁剪,對backbone進行能接受掉點范圍內(nèi)的剪枝,在性能和效率之間獲取平衡。
如果覺得有用,就請分享到朋友圈吧!
公眾號后臺回復“88”獲取嚴彬:STARK-
基于時空Transformer的視覺目標跟蹤PPT下載

#?CV技術社群邀請函?#

備注:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳)
即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術交流群
每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

