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