劉 鑫,黃 進,楊 濤,王 晴
西南交通大學 電氣工程學院,成都 611756
目標檢測[1]是計算機視覺的一個熱門研究方向。目標檢測的基礎任務即識別與定位,需要識別出物體的類別屬性同時確定其在畫面中所處的具體位置。隨著深度學習的崛起,在監(jiān)控攝像頭越來越普及的當下,目標檢測更是活躍在人們的生活中,在行人檢測、交通檢測、工件瑕疵檢測、醫(yī)學圖像分析等領域都能看到其應用。目標檢測也是目前大火的視頻分析方向的一個重要基礎,包括視頻理解、監(jiān)控中的行人跟蹤以及行為識別等。
基于深度學習的目標檢測算法大致能分為兩類:兩階段(two-stage)目標檢測和單階段(one-stage)目標檢測。兩階段的目標檢測需要提前在特征圖上生成大量候選框,再進行高質量框篩選,最后再進行分類和位置回歸,而單階段目標檢測則是直接一步到位完成分類和回歸。Two-stage目標檢測算法以R-CNN系列[2-4]為代表,單階段經(jīng)典算法以SSD[5]、YOLO[6-8]、RetinaNet[9]等為代表。根據(jù)有無預設錨框,又能分為Anchor-based與Anchor-free的目標檢測算法。Anchor-free算法不需要提前預設錨框,對復雜場景下多尺度目標識別的普適性更強。在Anchor-free領域中,CornerNet[10]首次提出采用框對角預測替代錨框來進行定位與目標檢測;FCOS[11]則直接預測目標框四邊到目標中心的四邊距離來進行目標檢測;ExtremeNet[12]對目標框的四個頂點分別進行關鍵點預測,將預測結果進行幾何枚舉組合,再結合中心點預測以達到高質量的檢測結果;CentripetalNet[13]在角點預測的基礎上引入向心偏移和十字可變形卷積,將偏移與角點匹配對齊,從而預測出高質量的目標框;CenterNet[14]則將目標檢測變成了一個標準的關鍵點估計問題,使用熱力圖來進行目標中心點的預測和分類,每個熱力點同時結合高斯擴散預測目標的寬高信息;后續(xù)升級版的CenterNet2[15]中則是將寬高預測改為四邊距離預測。
在目標檢測,小目標由于其本身的特質,圖像占比小、紋理特征不顯著、淺層特征語義信息不足、高層特征信息缺失等原因,導致小目標的檢測尤為困難[16]。場景復雜的無人機視角下,檢測難度進一步提升。普遍的提升小目標檢測精度的方法是進行多層特征融合,例如早期的圖像金字塔,后期升級的特征金字塔FPN[17],以及在FPN基礎上的各種改進特征融合模塊PANet[18]、ASFF[19]、NAS-FPN[20]、BiFPN[21]、Recursive-FPN[22]等;另外一種方法是分而治之,如SSD、MS-CNN[23]、YOLO使用反卷積來強化淺層特征的語義信息,在不同分辨率特征層上對不同尺度的目標進行檢測,但還是依托了特征融合的思路。
特征融合雖然一定程度上解決了小目標檢測困難的問題,但是卷積網(wǎng)絡帶來的圖像特征的高冗余問題,在這個過程中往往是被忽略的。GhostNet[24]指出卷積網(wǎng)絡輸出的特征圖的不同通道中存在很多高度相似的冗余特征,某些通道層其實并不需要在整個數(shù)據(jù)流轉過程中進行激活。與此同時,越復雜深層的特征融合會帶來顯著的內存壓力,故而優(yōu)化淺層的特征融合就顯得尤為重要。因此本文針對圖像特征高冗余的優(yōu)化問題作為研究重點,在不影響算法速度的情況下,對算法進行優(yōu)化,以期提升小目標的檢測效果。
綜上,考慮到算法的通用性與擴展性,本文采用基于Anchor-free的CenterNet作為基礎網(wǎng)絡,針對圖像特征高冗余的優(yōu)化問題進行模型改進,以提升小目標的檢測性能,具體貢獻如下:
(1)構建自適應底層模塊(modified self-adaptive block,MSA),以削弱特征圖融合時的高冗余問題,使得模型更注重于對關鍵點的表達。
(2)解碼模塊(depthwise module,DW)采用深度可分離卷積[29]與用Mish激活來提高解碼效率和質量。
(3)在backbone輸出處引入升維全局上下文注意力模塊(global context block,GC-Block)[30],進一步削弱非關注點表達的同時,增強關鍵點的信息亮度。
CenterNet是一種單階段的Anchor-free目標檢測模型,其backbone有DLA(deep layer aggregation)[25]和Hourglass[26]兩種框架,其中DLA模型小巧,可移植性高,作為本文的主要研究對象
DLA網(wǎng)絡是一個高效的融合特征提取模塊,如圖1所示,包括內部特征融合和不同階段層的跳躍特征融合,相較于廣泛使用的殘差網(wǎng)絡ResNet而言,其充分利用了不同卷積層之間的特征,使模型擁有更高效的特征語義信息提取功能,模型更小精度更高。整個網(wǎng)絡采用樹狀結構搭建,每一個特征融合節(jié)點相當于一棵樹的樹根或者樹干支點,其余輸入融合節(jié)點的各基礎模塊相當于四散的樹枝,而一棵樹又可以擁有多個樹干支點,每個樹干支點都能開支散葉。不同樹之間的連接即跳躍特征融合,類似于生物學上的遺傳鏈,將每棵樹的信息傳遞到后續(xù)的樹根和樹葉中去。
圖1 DLA結構圖Fig.1 Structure of DLA
CenterNet將目標視作關鍵點檢測問題,使用高斯熱力圖進行物體的類別預測和中心回歸,在中心回歸的同時結合高斯擴散來預測物體的長寬。但由于物體中心并未全在矩形框的幾何中心處,可能會導致模型收斂困難,故而采用物體中心與四邊距的方式進行位置的回歸。預測示意如圖2所示。整個網(wǎng)絡的目標總檢測損失分為三個部分,一是類別損失,采用Focal-loss[9];二是框回歸損失,采用Giou-loss[27];三是中心偏移損失,采用L1損失,總損失為三者的線性加權和。
圖2 CenterNet預測示意圖Fig.2 Diagrammatic sketch of prediction for CenterNet
本文的網(wǎng)絡總體結構如圖3所示,主干部分采用DLA34結構作為框架,使用MSA自適應激活底層模塊進行搭建。由于小目標檢測的下采樣倍數(shù)不能過大,本文選取4作為下采樣最大倍率,主干輸出特征層為DLA2。緊接著加入了一個升維GC-Block注意力塊,對DLA2特征圖進行二次冗余優(yōu)化,得到特征圖DLA2+。最后使用深度可分離卷積結合Mish激活進行特征解碼模塊的構建,分類頭和回歸頭獨立進行預測。本章接下來的部分將對各修改部分進行詳細說明。
在神經(jīng)網(wǎng)絡中,激活函數(shù)的存在是為了向網(wǎng)絡模型中引入非線性因素,使模型可以任意逼近任何非線性函數(shù),這對于多種非線性的推理場景來說更加適用。常用的激活函數(shù)有Sigmoid、Tanh、Maxout、ReLU、Leaky ReLU等。其中ReLU激活解決了Sigmoid存在的梯度消失的問題,加快了網(wǎng)絡訓練的速度。但在負半軸,網(wǎng)絡輸出全部置零,而往往負數(shù)部份也存在一些很重要的特征信息,負半軸失活導致了模型學習信息的缺失。與此同時,在神經(jīng)網(wǎng)絡的數(shù)據(jù)傳播過程中,并不是每一層的每個通道的信息都值得傳輸?shù)较乱浑A段,網(wǎng)絡若能自適應地進行激活傳輸會大大提升特征的提取效率。ACON[28]激活使用3個可學習的參數(shù)(p1,p2,β)來控制模型以什么樣的方式進行數(shù)據(jù)激活。具體而言(詳見圖4),不重要的通道可進行失活處理,而重要的通道則要進行增強激活,網(wǎng)絡可以自適應地對接收到的數(shù)據(jù)分通道進行激活。
文獻[28]中指出最常用的最大值輸出函數(shù)Maxout(x1,x2,…,xn)可平滑近似為式(1)。
圖3 MSA-CenterNet總體結構Fig.3 Overall structure of MSA-CenterNet
圖4 ReLU激活與ACON激活示意圖Fig.4 Diagrammatic sketches of ReLU activation and ACON activation
圖5 一般激活與自適應ACON激活Fig.5 General activation and adaptive ACON activation
當β趨于∞時,Sβ趨近于最大值,而當β趨于0時,Sβ趨近于所有元素的算術平均值。激活函數(shù)大多可表示為max(ηa(x),ηb(x)),這里ηa(x),ηb(x)表示線性函數(shù),當n=2時,式(1)簡化為式(2):
圖6 BasicBlock與MSA結構圖Fig.6 BasicBlock and MSA structure diagram
至此,即推導出本文MSA中采用的自適應激活的函數(shù)表達式,其中p1、p2是網(wǎng)絡需要學習的激活權重,來控制激活的類型,例如Swish、PReLU等激活(見圖5(b)、(c))。β使用卷積模塊進行層歸一化處理后經(jīng)過Sigmoid函數(shù)后產(chǎn)生。每個通道的β控制激活一階導的平滑度,由圖5(d)可知,β越小越平滑,越大越陡峭。
DLA34中的基礎模塊使用ACON進行改造,搭建MSA模塊作為網(wǎng)絡的樹狀結構部份的基礎模塊,使網(wǎng)絡可自適應地對不同通道進行選擇性激活。修改后的網(wǎng)絡會對非關注信息進行抑制,具體模塊修改細節(jié)可見圖6。
圖7簡單展示了深度可分離卷積[29]的運算過程。深度可分離卷積先進行獨立的通道層卷積操作,卷積核按層獨立地只進行一次卷積,與普通卷積操作相比大大縮減了計算時間,最后對卷積結果使用1×1卷積進行深度擴充,給予后續(xù)網(wǎng)絡操作足夠的特征信息。
在解碼模塊處,將原始的普通卷積模塊修改為深度可分離卷積特征解碼模塊(具體模塊構造見圖8),模塊中的激活方式采用Mish精進模型的數(shù)據(jù)解析過程,將前期由于自適應通道激活帶來的部份高亮削弱調整回正,進一步抑制低關注區(qū)域特征的表達。
圖7 深度可分離卷積示意圖Fig.7 Schematic diagram of depth separable convolution
圖8 Decoder基礎模塊DW-Module結構圖Fig.8 Basic module DW-module structure diagram of decoder
在實驗過程中,雖然MSA與DW模塊的結合可以有效抑制非要素部份的表達,但在關鍵部份還是存在強度削減,雖然兩者部份已有較為明顯的區(qū)分,但是對網(wǎng)絡識別而言還是稍微有所欠缺,為進一步提升兩者之間的差異,讓網(wǎng)絡的“視線“更集中于要素點,本文引入升維GC-Block(global context-block)[30]注意力來進行對比增強操作。
GC-Block是清華大學研究人員結合了NL[31]與SE[32]兩者優(yōu)點而提出來的融合了全局上下文的通道注意力模塊,具體結構見圖9,運算過程見式(4):
其中,O是運算輸出,是輸入特征,對于圖像數(shù)據(jù)來說Np表示單層通道上的像素點數(shù)量H·W,W是線性變換矩陣,網(wǎng)絡中采用1×1卷積實現(xiàn),R表示ReLU,LN是層歸一化。
圖9 GC-Block結構圖Fig.9 Structure of GC-Block
升維GC-Block相較于原始模塊在注意力提煉部分(transform part)將原來的降維操作,改為以32為倍率的升維操作,可有效增強關鍵信息亮度。
VisDrone數(shù)據(jù)集[33]是由天津大學提供的一個大型的無人機捕獲數(shù)據(jù)集,該數(shù)據(jù)集不僅場景復雜且目標都普遍偏小,增大了檢測難度。該數(shù)據(jù)集上發(fā)布有四個任務:(1)圖像目標檢測;(2)視頻目標檢測;(3)單目標跟蹤;(4)多目標跟蹤。本文就圖像目標檢測作為研究方向,采用VisDrone2019數(shù)據(jù)集作為算法訓練和測試的基準,該數(shù)據(jù)集包含6 471張訓練圖片與1 610張測試圖片,共計10個類別:pedestrian、people、bicycle、car、van、truck、tricycle、awning-tricycle、bus、motor,其中pedestrian指行走或站立狀態(tài)的人,其余狀態(tài)的人均屬于people類。
模型評估采用COCO-style評價指標,包含AP、AP50、AP75、AR1、AR10、AR100。AP表示IoU在范圍[0.5,0.95]內以0.05為步長進行變化的綜合平均準確度(average precision),AP50、AP75分別是IoU等于0.5和0.75時的準確度。AR1、AR10、AR100分別表示最大檢測目標數(shù)為1、10、100時的平均召回率(average recall)。
模型使用Detectron2[34]框架來進行搭建與訓練。Detectron2是由Facebook提出的一個模塊化的深度學習框架,是對Pytorch框架的進一步封裝。整個訓練過程需要的操作均被模塊化處理,順應固定深度學習搭建模式,僅需對每個模塊進行自需處理再注冊到操作字典中,調用注冊名即可將模塊注入到固化的搭建系統(tǒng)中去,可靈活方便地替換模型零部件。
由圖10可知,整個模型的訓練包括三個流程,數(shù)據(jù)集的處理、模型的搭建、訓練與評估。
數(shù)據(jù)集處理部分將數(shù)據(jù)轉化為COCO格式數(shù)據(jù),隨后將數(shù)據(jù)集注冊到數(shù)據(jù)集字典中,建立COCO格式的Dataloader進行模型輸入數(shù)據(jù)的讀取。
模型搭建部分建立DLA34-CenterNet,在此基礎上修改模型結構建立MSA-CenterNet+++(+表示疊加,數(shù)量表示模塊增改數(shù)量,后文不再贅述)。具體子步驟描述如下(詳見圖10 Sub-step 4.*,*表示順序數(shù)字):
圖10 模型訓練流程圖Fig.10 Flow chart of model training
(1)使用MSA替換原始BasicBlock。MSA可自適應地分通道進行激活操作,可有效抑制非關注信息的表達。
(2)在BackBone輸出處添加升維GC-Block增強關鍵特征的語義信息,為避免歧義與簡化用語,后文涉及的GC-Block均指升維模塊。
(3)在Decoder部分使用深度可分離卷積結合Mish形成的DW模塊進行搭建,在均衡模型復雜度的情況下精進特征的解碼。
具體訓練環(huán)境配置如表1所示。訓練時,使用官方DLA34預訓練權重初始化新建網(wǎng)絡,修改部分采用Xavier初始化策略,圖像輸入大小長邊限制在1 333內,短邊限制在800以上,使用隨機裁剪放縮增強,訓練輪次設定為20 000,批處理大小設為16,權重衰減因子為0.000 1,初始學習率0.1,采用WarmupCosineLR學習率調整策略。
表1 訓練環(huán)境配置Table 1 Configuration of training environment
對測試集進行算法評估,對輸入圖像的處理均與訓練時保持一致。表2列出了RRNet、CenterNet-Hourglass、原始CenterNet等算法與本文改進的MSA-CenterNet+++在VisDrone2019圖像目標檢測數(shù)據(jù)集上的各評估結果,表中*表示數(shù)據(jù)來源于比賽總結文獻[35],其中粗體表示最優(yōu)結果。由表中結果可知,本文提出的算法,較原始CenterNet在各AP上均有所提升,其中mAP提升了約2.2個百分點,召回率提升了2.4個百分點,參數(shù)量雖稍有增加2.4 MB,由FPS結果可知在實際運行時對速度的影響可忽略不計。而相較于其他算法,高精度指標AP75與召回率也均為最優(yōu)結果。
原始算法與本文改進算法進行消融對比實驗,結果見表3。由表中展示結果可知,MSA、DW模塊、GC-Block對算法精度均有所提升。MSA相較于原始算法在AP上提升了1.0個百分點,在召回率上提升了1個百分點;在前者基礎上引入DW解碼模塊AP提升了1.2個百分點,召回率提升了1.3個百分點;MSA+DW+GC-Block的AP提升了2.2個百分點,召回率提升了2.4個百分點。消融實驗結果中均有所提升的精度與召回率,驗證了本文改進算法各模塊的有效性。
表2 現(xiàn)有算法與本文算法的模型大小與精度比較Table 2 Comparison of model size and accuracy between existing algorithms and algorithm in this paper
表3 模塊消融實驗Table 3 Module ablation experiment
圖11 模塊消融實驗中針對各類別準確度Fig.11 Accuracy for various classes in module ablation experiment
消融實驗更具體的針對測試集每個類別的準確度對比如圖11所示,其中“+“的含義與前文一致,0表示原始算法。
對測試集中一張圖片(圖12)的主干輸出特征進行分析,將相同的4個通道進行可視化,如圖13,排序順序從左至右為1到4。其中(a)是原始CenterNet的輸出結果,可以看到通道四周存在很多非關注信息特征,而在(b)MSA引入之后雜質較多的特征層明顯被削弱了表達,較為純凈的特征層中也有無關信息被抑制,但是仍然還是有較多雜質分布于各通道中。在此基礎上加入DW解碼模塊(c),可以看到特征層中的無用信息大多都被剔除了,與此同時通道1中的有用信息也得到了激活,通道3中的關鍵高亮部分也被調整回正。最后再加入GC-Block(d),可以明顯觀察到各通道中關鍵點的表達均被有效增強。關鍵信息的突出在后續(xù)解碼預測具有很重要的指導作用。上述對輸出通道的可視化結果進行的展示與分析,進一步證明了改進網(wǎng)絡的可行性與有效性。
圖12 測試集樣本展示圖Fig.12 Display diagram of test set sample
圖14是原始算法與改進算法的檢測結果展示圖,從上往下分別是原始CenterNet、MSA-CenterNet、MSACenterNet+(此處+表示在MSA基礎上疊加,與圖14的含義依次對應匹配,后文同理)、MSA-CenterNet++的檢測結果。從結果圖中可以看出,原始算法存在很多漏檢,替換MSA作為基礎塊之后效果有增強,再加入DW解碼模塊,最后加入GC-Block可以明顯看到MSA-CenterNet++的檢測效果是最優(yōu)的,對細節(jié)的把控也是最強的。
本文以目標檢測中Anchor-Free的經(jīng)典算法DLACenterNet為基礎,針對特征融合帶來的層間高冗余問題進行優(yōu)化,以小目標檢測為對象,提出自適應通道激活模塊MSA作為DLA搭建的基礎模塊,可有效抑制無關信息的表達,在主干輸出處加入升維GC-Block注意力模塊,增強關鍵點的語義信息,最后采用深度可分離卷積與Mish結合搭建了新的高質量解碼模塊DW,兼顧模型復雜度的同時增加解碼檢測精度。在公開數(shù)據(jù)集上的實驗結果表明,改進算法提升了復雜場景下的小目標檢測精度。
圖14 效果展示圖(+表示疊加,多個+表示在前者基礎上二次疊加)Fig.14 Effect display diagram