帥澤群,李 軍,張世義
重慶交通大學(xué) 機(jī)電與車輛工程學(xué)院,重慶 400041
目標(biāo)檢測是機(jī)器視覺領(lǐng)域中最重要、最具研究意義的基礎(chǔ)任務(wù)之一。目標(biāo)檢測任務(wù)可以大致分為圖像分類和目標(biāo)定位,即在一定時間內(nèi)預(yù)測出物體所屬的類別和其在圖中的位置,為后續(xù)計算機(jī)處理圖像提供準(zhǔn)確的信息[1]。隨著計算機(jī)視覺計算的快速發(fā)展,目前主要的目標(biāo)檢測算法大多是通過深度學(xué)習(xí)搭建神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)自主的特征提取,從而代替?zhèn)鹘y(tǒng)手工提取特征的方式[2]。
行人檢測在目標(biāo)檢測領(lǐng)域的應(yīng)用價值也非常廣泛。對于自動駕駛的民用運(yùn)載工具,可以實(shí)現(xiàn)對行人信息的采集以及對擁擠路段交通狀況的分析。在其他領(lǐng)域內(nèi),可以將監(jiān)控攝像頭等作為載體進(jìn)行智能安檢工作,搭建行人異常行為檢測和人流量統(tǒng)計平臺。其次,最主要的檢測問題是擁擠行人場景下目標(biāo)遮擋十分嚴(yán)重以及小目標(biāo)較多等,這很容易造成檢測器的漏檢率和誤檢率的升高。近來由于深度學(xué)習(xí)的出現(xiàn),基于卷積神經(jīng)網(wǎng)絡(luò)的行人遮擋實(shí)時檢測算法有了很大的發(fā)展。周大可等人[3]以RetinaNet作為基礎(chǔ)框架,在回歸和分類支路分別添加空間注意力和通道注意力子網(wǎng)絡(luò),增強(qiáng)網(wǎng)絡(luò)對于行人可見區(qū)域的關(guān)注。劉麗等人[4]采用網(wǎng)絡(luò)剪枝的方式,精簡網(wǎng)絡(luò)冗余結(jié)構(gòu),避免網(wǎng)絡(luò)層數(shù)加深導(dǎo)致的退化和過擬合問題,同時減少參數(shù)量。Chu 等人[5]通過重新設(shè)計損失函數(shù)讓每一個預(yù)測框預(yù)測一組相關(guān)的實(shí)例,來改善行人檢測中高度重疊的問題,但整個模型推理過程較為復(fù)雜,實(shí)時性略低。
車載邊緣計算單元是無人駕駛汽車技術(shù)實(shí)現(xiàn)的重要組成部分,目前的車載設(shè)備有限的計算資源和存儲能力難以滿足大量的計算需求,在實(shí)時性方面也有一定限制[6]。因而通過加深網(wǎng)絡(luò)來提高檢測精度的神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)模型的輕量化設(shè)計成為了急需解決的問題,既要保證檢測器在擁擠行人場景下的精度和實(shí)時性,也要保證模型滿足車載圖形處理器(graphics processing unit,GPU)的算力和顯存的要求?;诰矸e神經(jīng)網(wǎng)絡(luò)的行人檢測算法主要分為“一階段”檢測和“二階段”檢測[7]。Faster R-CNN 作為經(jīng)典的二階段檢測算法,它的檢測效果十分出色,但是需要先使用區(qū)域建議網(wǎng)絡(luò)(region proposal network,RPN)結(jié)構(gòu)生成候選框,將RPN 生成的候選框再投影到特征圖上獲得相應(yīng)的特征矩陣,模型的結(jié)構(gòu)復(fù)雜且參數(shù)量較多,不適用于車載單元的計算[8]。YOLO系列[9]是一階段檢測器的代表,因其直接在特征圖上進(jìn)行預(yù)測,所以在檢測的實(shí)時性上有很大的優(yōu)勢,在無人駕駛汽車目標(biāo)檢測的實(shí)際應(yīng)用中很受歡迎。針對目前的行人檢測研究不能很好地兼顧檢測速度和檢測精度問題,本文選用YOLOv3 網(wǎng)絡(luò)作為基本的網(wǎng)絡(luò)框架,提出一種改進(jìn)行人檢測的算法。首先采用GhostNet 網(wǎng)絡(luò)作為骨干網(wǎng)絡(luò)替換Darknet53,為了實(shí)現(xiàn)多尺度的融合和性能的進(jìn)一步提升,在檢測器前最優(yōu)化地融合了金字塔池化模塊和改進(jìn)后的卷積注意力機(jī)制模塊。采用Mosaic算法對數(shù)據(jù)集進(jìn)行圖像增強(qiáng)處理,引入CIOU損失函數(shù)加快訓(xùn)練收斂。改進(jìn)后的整體網(wǎng)絡(luò)能夠簡單有效地獲取特征圖,在復(fù)雜的檢測環(huán)境下有很好的魯棒性,同時能夠提高檢測精度和檢測的實(shí)時性。
YOLOv3是YOLO系列中最具代表性的網(wǎng)絡(luò)模型,它結(jié)合了當(dāng)時市面上很多的優(yōu)勢模塊,又因其端到端的檢測方式帶來的良好的實(shí)時性,在各類領(lǐng)域的研究中被廣泛應(yīng)用[10]。和其他端到端的檢測器模型一樣[11],YOLOv3由骨干網(wǎng)絡(luò)和檢測頭兩部分組成,骨干網(wǎng)絡(luò)是對輸入的圖片進(jìn)行特征提取,對圖片尺寸進(jìn)行壓縮的同時提升特征圖片的通道數(shù),使網(wǎng)絡(luò)獲得更加全面的像素信息。檢測頭的作用是輸出網(wǎng)絡(luò)模型的預(yù)測值,其中包括置信度和相對于先驗(yàn)框信息參數(shù)的偏移量,再將預(yù)測值進(jìn)行解碼,得到最終的結(jié)果。
Darknet53是YOLOv3的骨干網(wǎng)絡(luò),是由YOLOv2的骨干網(wǎng)絡(luò)Darknet19改進(jìn)而得到的[12]。不同于Darknet19是由一系列卷積和池化層組合而成,Darknet53 在每一層引入了殘差網(wǎng)絡(luò)中的shortcut 操作,將每一層打包為一個殘差模塊,結(jié)構(gòu)十分清晰。這樣的短接操作使得在訓(xùn)練不佳時有了退化的選擇,保證了在加深網(wǎng)絡(luò)時圖像提取的正向收益。圖1為Darknet53的詳細(xì)結(jié)構(gòu)。
圖1 Darknet53網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Darknet53 network structure
首先輸入一張416×416的待檢測圖片,為了防止圖片失真會在圖像上加上灰度條。圖1 中的每個矩形方塊就代表一個殘差模塊,左側(cè)的數(shù)字代表該殘差模塊重復(fù)使用的次數(shù)。經(jīng)過兩次卷積后得到的特征圖可以與開始輸入進(jìn)殘差網(wǎng)絡(luò)的特征圖在通道維度上進(jìn)行相加,完成shortcut操作。通過如圖中多個殘差模塊的疊加完成了網(wǎng)絡(luò)的加深,提高預(yù)測的準(zhǔn)確度,而且因?yàn)槎探硬僮魇沟镁W(wǎng)絡(luò)在反向傳播過程中有效地緩解了梯度彌散的問題,提高了網(wǎng)絡(luò)的訓(xùn)練能力[13]。
為了實(shí)現(xiàn)多尺度的目標(biāo)檢測,YOLOv3通過構(gòu)建特征金字塔進(jìn)行加強(qiáng)特征提取[14]。因?yàn)榫矸e核需要對輸入圖像的全圖進(jìn)行卷積操作,而大的目標(biāo)所占的像素點(diǎn)會比小目標(biāo)多很多,所以卷積之后的特征層會保留很多與大目標(biāo)相關(guān)的信息,小目標(biāo)的特征信息很可能被遺漏,卷積的次數(shù)越多,小目標(biāo)的信息就會越少。這種情況在卷積核步長為2 時更加明顯。特征金字塔在下采樣之后搭建一個自下而上的上采樣層,擴(kuò)大特征層的尺寸來預(yù)測小目標(biāo),但是單純的上采樣操作并不能還原小目標(biāo)的特征信息,因此需要將下采樣層與上采樣層進(jìn)行逐層的融合,確保預(yù)測特征層有小目標(biāo)的特征信息[15]。Darknet53的最后一層再次通過卷積之后經(jīng)過檢測頭輸出預(yù)測結(jié)果,一部分進(jìn)行上采樣操作,將圖像尺寸大小調(diào)整到與Darknet53倒數(shù)第二層特征圖片的大小相同來進(jìn)行concat操作,即在通道方向上進(jìn)行拼接。接著融合的特征層進(jìn)行預(yù)測過程和上采樣操作,與倒數(shù)第三層進(jìn)行融合,再通過5次卷積形成最后一個預(yù)測特征層。
搭建形成了3個加強(qiáng)特征的預(yù)測特征層,在檢測器開始對輸出的預(yù)測值進(jìn)行解碼之前,會將3個特征層分別劃分為S×S個網(wǎng)格,S為特征層的尺寸,預(yù)測值會先判斷先驗(yàn)框內(nèi)是否有目標(biāo)物,目標(biāo)物的中心落在哪個網(wǎng)格內(nèi),就由其左上角的網(wǎng)格點(diǎn)進(jìn)行預(yù)測[16]。下面是預(yù)測框的解碼公式:
檢測端輸出數(shù)據(jù)是(tx,ty,tw,th),這4個參數(shù)是已知的。而且物體的中心落在了(cx,cy)網(wǎng)格點(diǎn)內(nèi),因此通過這個中心再加上相對于這個左上角中心的偏移量σ(tx)和σ(ty)就可以求得預(yù)測框的中心坐標(biāo)。pw和ph為先驗(yàn)框的高寬,通過公式可以求出預(yù)測框的寬和高。這樣預(yù)測框的4個值都可以解碼出來,再乘以特征圖的采樣率就可得到真實(shí)預(yù)測的邊界框參數(shù)[17]。最后將所有預(yù)測出來的框按照置信度分?jǐn)?shù)降序排列,保留一個置信度分?jǐn)?shù)最大的預(yù)測框A,再通過非極大值抑制算法舍棄與A的IOU大于設(shè)定閾值的預(yù)測框,即刪除掉檢測器認(rèn)為是同一類別重疊的預(yù)測框,就能解碼出最終的預(yù)測結(jié)果。
為了改善YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)過深,在移動端和車載單元的應(yīng)用上不具有實(shí)時性以及對遮擋小目標(biāo)漏檢率較高的問題,本文提出了改進(jìn)YOLOv3算法來提高針對擁擠行人場景檢測的準(zhǔn)確性和實(shí)時性。本文算法主要包含三部分:骨干網(wǎng)絡(luò)替換、空間金字塔池化模塊、高效搜索的注意力機(jī)制模塊。下面講解每個部分的具體工作。
在卷積神經(jīng)網(wǎng)絡(luò)的卷積過程中,很大的一部分是讓圖像進(jìn)行一個升維的操作來獲得更多的特征信息,這樣生成的特征層會擁有很多冗余的信息,這些信息保證了神經(jīng)網(wǎng)絡(luò)對輸入數(shù)據(jù)的全面理解[18]。但是通過對卷積操作進(jìn)行可視化,將一次卷積后每個通道上的圖片進(jìn)行對比就會發(fā)現(xiàn)很多特征圖上的信息十分相似。許多輕量化的設(shè)計理念致力于刪除這些看似多余的特征圖,這樣的做法是不妥的。因?yàn)樘卣餍畔㈦m然相似,但是細(xì)微的區(qū)別還是會影響模型最終的精度值,冗余的信息是一個成功模型不可或缺的一部分,所以在輕量化設(shè)計中不應(yīng)該剔除這些信息,而是應(yīng)該通過廉價的計算代替卷積計算來生成這些信息。
2.1.1 Ghost模塊和深度卷積
與一般的通過卷積生成特征層的方式不同,Ghost模塊的原理是先通過一次普通卷積生成一個較低維度的特征層,這個較低維度的特征層在每一個通道上進(jìn)行簡單的線性運(yùn)算,生成指定的特征圖,稱為Ghost 特征層。再將這個較低維度的特征層和Ghost特征層在通道維度上進(jìn)行拼接,得到最終的輸出層。圖2(a)為Ghost模塊的結(jié)構(gòu)原理,其中?i表示對特征層的線性操作,作用是保留最初特征層的原始映射。其實(shí)對線性操作的定義有很多,很多基于Ghost 模塊所使用的線性運(yùn)算也不是唯一的。本文全部采用的是深度卷積以減少計算量來生成Ghost 特征層。實(shí)驗(yàn)表明,在網(wǎng)絡(luò)中采用相同的計算操作可以高效地實(shí)現(xiàn)Ghost 模塊。圖2(b)為深度卷積的操作原理,每個特征圖通過一個1層通道的卷積核進(jìn)行卷積,生成一個對應(yīng)的特征圖,完全符合Ghost模塊對線性操作的要求。
圖2 Ghost模塊結(jié)構(gòu)和深度卷積Fig.2 Ghost module structure and depthwise convolution
假設(shè)輸入的圖像寬高以及通道數(shù)分別為W、H、C,卷積核尺寸為K。經(jīng)過普通卷積和Ghost 模塊卷積之后生成的特征層參數(shù)是一致的,設(shè)為W1×H1×N。其中W1和H1分別為輸出特征層的寬和高,N為卷積核的個數(shù)。因?yàn)镚host模塊中的線性運(yùn)算均為深度卷積操作,所以可以對比計算出兩種卷積方式的計算量。普通卷積的計算量為W1×H1×N×K×K×C,Ghost 模塊的計算量為。其中S表示這個原始特征層的通道數(shù)被劃分成了S份,設(shè)定個通道數(shù)用來做普通卷積,剩下S-1個做深度卷積。計算卷積操作參數(shù)壓縮比:
2.1.2 GhostNet網(wǎng)絡(luò)搭建與特征可視化
在構(gòu)建完Ghost 模塊之后就可以搭建Ghost 瓶頸層,GhostNet 網(wǎng)絡(luò)就由一層一層的瓶頸層模塊堆疊出來,類似于殘差模塊,每層之后都會進(jìn)行一次短接操作。在每個Ghost 瓶頸層中主要由兩個Ghost 模塊組成,第一層主要對輸入的圖像進(jìn)行升維,第二層是對升維后的圖像進(jìn)行降維以順利完成短接操作。SE模塊會對每個通道上的特征圖進(jìn)行平均池化操作,對更有意義的通道上的特征圖賦予更大的權(quán)重。圖3為加入SE模塊后的Ghost 瓶頸層網(wǎng)絡(luò)結(jié)構(gòu),其中綠色模塊為普通卷積,藍(lán)色模塊為深度卷積操作。
圖3 帶有SE模塊的Ghost瓶頸層結(jié)構(gòu)Fig.3 Ghost bottleneck layer structure with SE module
GhostNet網(wǎng)絡(luò)搭建完成之后,對深度卷積和普通卷積模塊進(jìn)行了可視化,采用的網(wǎng)絡(luò)是Pytorch 深度學(xué)習(xí)框架中自帶的MobileNetv2和VGG16,權(quán)重設(shè)為預(yù)訓(xùn)練權(quán)重。輸入待檢測圖片后分別提取兩個網(wǎng)絡(luò)中的第一層輸出的特征層。以校內(nèi)班級籃球隊的圖4 為例進(jìn)行兩種操作的特征圖可視化,其中藍(lán)色框中為深度卷積操作的可視化結(jié)果,綠色框中為普通卷積的可視化結(jié)果。
圖4 第一層特征圖的可視化Fig.4 Visualization of the first level feature map
神經(jīng)網(wǎng)絡(luò)中的卷積層在網(wǎng)絡(luò)沒有加深時,不會去獲取更加高級的語義信息,而是對全局的基本信息進(jìn)行提取。由圖4中的兩個可視化結(jié)果可以看出,廉價的線性操作即深度卷積也能較好地對全局信息進(jìn)行搜索提取,而且相對于普通卷積操作生成的特征圖還是存在著一定的差異性,說明線性操作生成的特征圖更加靈活多變。Ghost 模塊結(jié)合了普通卷積和線性操作,結(jié)合了兩個操作的優(yōu)勢又大大減少了計算資源,很好地證明了在特定場景下的可行性。
空間金字塔池化模塊最早是用于分類模型中的。在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中,最后用于分類的網(wǎng)絡(luò)大都是由全連接網(wǎng)絡(luò)組成。全連接網(wǎng)絡(luò)能夠搜索全局的神經(jīng)節(jié)點(diǎn)生成對應(yīng)類別的概率值,達(dá)到較好的分類效果。但是全連接網(wǎng)絡(luò)輸入的節(jié)點(diǎn)是固定的,因此帶來的缺點(diǎn)是必須保證輸入圖片尺寸是固定的。然而在實(shí)際訓(xùn)練過程中,圖像的尺寸不可能是完全統(tǒng)一的,需要對圖像進(jìn)行拉伸或者縮小,這就會導(dǎo)致圖像的失真。針對上述問題,SPPNet 網(wǎng)絡(luò)[19]應(yīng)用了空間金字塔池化模塊,該模塊接受來自上一層卷積后的特征圖,分別通過3個池化核大小為1×1、2×2、4×4的池化層進(jìn)行池化操作。這樣,在輸入的圖片存在多種尺度的情況下,經(jīng)過空間金字塔輸出的張量能夠得到統(tǒng)一,從而能進(jìn)行更好的分類。
本文采用空間金字塔模塊的設(shè)計思想來源于SPPNet 網(wǎng)絡(luò),但在結(jié)構(gòu)上又有一定的區(qū)別。在池化核大小方面,為了能夠快速搜索特征圖的局部信息和提升模型的計算速度,將原SPPNet 網(wǎng)絡(luò)中的池化核大小分別調(diào)整為5×5、9×9、13×13。本文設(shè)計的空間池化模塊池化后3 個分支會輸出與原始的輸入圖像一致的特征圖f1、f2、f3。與SPPNet 網(wǎng)絡(luò)將池化后的3 個張量拼接直接送入全連接層不同,生成的特征圖f1、f2、f3會再和原始圖像在通道維度上進(jìn)行拼接,生成圖像的尺寸不變,通道數(shù)是原始圖像的4 倍。這樣,與原始圖像的融合操作可以加強(qiáng)網(wǎng)絡(luò)的提取能力,而且池化操作能夠使數(shù)據(jù)降維,提升網(wǎng)絡(luò)的計算能力,同時也能擴(kuò)大模型的感受野,在擁擠行人這類多目標(biāo)場景下有著很大的檢測優(yōu)勢和可行性。本文在模型搭建過程中會將空間金字塔池化模塊分別搭建在3個預(yù)測器之前,對檢測精度和檢測速度做詳細(xì)的對比分析實(shí)驗(yàn)。
注意力機(jī)制模塊的設(shè)計原理是加強(qiáng)檢測器對圖片中更加重要的信息的注意,抑制與檢測內(nèi)容不相關(guān)的背景信息,使得檢測的效果有很大的提升,是一類簡單高效的特征提取模塊[20]。
2.3.1 卷積塊注意力機(jī)制
卷積塊注意力機(jī)制(convolution block attention module,CBAM)是結(jié)合了通道域和空間域的輕量化模塊,在結(jié)構(gòu)上兩種注意力機(jī)制模塊采用串行排列,它的優(yōu)勢不僅是提高模型的精度,而且可以與市面上任何神經(jīng)網(wǎng)絡(luò)模型相融合[21]。圖5為卷積塊注意力機(jī)制的結(jié)構(gòu)圖。通道注意力機(jī)制主要是關(guān)注圖像在通道維度上進(jìn)行升維之后哪些通道上的特征圖更重要,而空間注意力機(jī)制更加關(guān)注同一特征圖上更加重要的信息,通過不斷訓(xùn)練更新權(quán)重,賦予重要的通道或空間位置信息更大的權(quán)重,來加強(qiáng)模型的特征提取。
圖5 卷積塊注意力機(jī)制結(jié)構(gòu)圖Fig.5 Convolution block attention module structure
在圖像輸入進(jìn)卷積塊注意力機(jī)制后,首先會通過通道注意力機(jī)制在通道維度上對圖像信息進(jìn)行處理。假設(shè)輸入的原始特征圖F的維度為W×H×C,其中W和H為特征圖像的寬和高,C為特征層的通道數(shù)。在通道域中,輸入的圖像會分別在通道維度上進(jìn)行一次最大池化和平均池化操作。池化操作本身就是為了提取更加高級的語義信息,采用兩次不同的池化操作使高層次的特征信息更加豐富[22]。通過池化層可以得到兩個維度為1×1×C的張量,接著將兩個張量分別送入一個由全連接網(wǎng)絡(luò)組成的多層感知機(jī)中。共享網(wǎng)絡(luò)也是權(quán)重分配的關(guān)鍵,通過全連接對全局的神經(jīng)元節(jié)點(diǎn)進(jìn)行搜索,迭代更新出最優(yōu)的權(quán)重系數(shù)分配給原始的輸入特征圖。再將通過共享網(wǎng)絡(luò)形成的兩個維度不變的張量進(jìn)行加和操作,再通過Sigmoid激活后輸出為圖中的Mc。最后將維度為1×1×C的Mc和維度為W×H×C的原始輸入特征圖F進(jìn)行全乘操作,輸出通道域的結(jié)果F′。
輸出特征圖F′會接著作為空間域的輸入特征圖,通過平均池化和最大池化的操作將特征圖F′進(jìn)行壓縮,即圖像的尺寸不變,仍為W×H,而特征圖的通道數(shù)壓縮為1。將這兩個壓縮后的張量在通道維度上進(jìn)行拼接,通過維持尺度不變的卷積操作將其維度變?yōu)閃×H×1,再通過激活函數(shù)后輸出為圖中的Ms。最后同樣地將Ms和輸入的特征圖F′進(jìn)行點(diǎn)對點(diǎn)的相乘,輸出空間域的結(jié)果F′。
下面為卷積塊注意力機(jī)制的計算公式:
其中,σ表示Sigmoid 激活函數(shù),W1和W2分別為共享全連接網(wǎng)絡(luò)MLP的兩層權(quán)重,W0∈?C/r×C,W1∈?C×C/r。f7×7表示以7×7 大小的卷積核進(jìn)行卷積操作。
2.3.2 更加高效的通道搜索機(jī)制
本文針對卷積塊注意力機(jī)制模塊中的通道域進(jìn)行改進(jìn),提出使用一種更加高效的通道搜索機(jī)制。在上一小節(jié)所述的原始注意力機(jī)制模塊CBAM 中,將平均池化和最大池化得到的張量送入共享網(wǎng)絡(luò)是由兩層全連接層組成的神經(jīng)網(wǎng)絡(luò)。全連接神經(jīng)網(wǎng)絡(luò)會對全局的神經(jīng)節(jié)點(diǎn)進(jìn)行計算,如果上一層特征圖有很大的通道數(shù),池化后的通道數(shù)是保持不變的,那送入共享網(wǎng)絡(luò)的神經(jīng)節(jié)點(diǎn)必然很多,也就不可避免地增加了計算開銷,從而影響整個網(wǎng)絡(luò)的計算速度。另外,兩個全連接層的設(shè)計思路主要是通過對全局通道信息的搜索來捕獲跨通道之間的非線性關(guān)系,依靠跨通道的學(xué)習(xí)來確定分配給每個通道的權(quán)重。全連接層的降維操作也是讓模型保持較低的復(fù)雜度。而文獻(xiàn)[23]通過實(shí)驗(yàn)數(shù)據(jù)證明了單純地減少神經(jīng)元節(jié)點(diǎn)的降維操作會對最終的權(quán)重分配產(chǎn)生不良的影響,而且聯(lián)合全局的通道信息來學(xué)習(xí)通道之間的相關(guān)性效率很低且模型的性能提升不大。因此針對上述全連接式的搜索給模型帶來的弊端,本文提出了更加客觀高效的搜索方式,通過一維卷積對輸入?yún)?shù)進(jìn)行卷積操作,代替了原先共享網(wǎng)絡(luò)中的全連接層,從而避免了因降維壓縮使注意力機(jī)制的預(yù)測出現(xiàn)負(fù)面效果。并且由于神經(jīng)元節(jié)點(diǎn)之間跨度較大,它們所保存的信息相關(guān)性也不高。本文提出的搜索方式捕獲該神經(jīng)元節(jié)點(diǎn)附近節(jié)點(diǎn)的信息,通過對所有神經(jīng)元節(jié)點(diǎn)不斷地卷積和學(xué)習(xí),生成的神經(jīng)元節(jié)點(diǎn)保存的信息更加豐富,沒有過多冗余的信息。如圖6 所示,圖(a)為全連接層的搜索機(jī)制,圖(b)為更加高效的通道搜索。
圖6 兩種搜索機(jī)制Fig.6 Two search mechanisms
從圖6中可以看出,高效搜索機(jī)制對與選定通道相鄰近的通道進(jìn)行交互操作,這種局部的跨通道交互使捕獲的信息包含更多細(xì)節(jié),經(jīng)過不斷地向下卷積,新生成的節(jié)點(diǎn)保存的信息也更加完備。圖中的k值即為一維卷積核的大小,也就是該高效搜索機(jī)制的搜索廣度。文獻(xiàn)[23]給出了卷積核k的一個自適應(yīng)計算公式:
其中,C為輸入特征圖的通道數(shù),γ和b分別為設(shè)定好的參數(shù),γ=2 且b=1。|t|ood表示選取最近的奇數(shù)。由式(6)可知,特征圖的通道數(shù)越多,自適應(yīng)k值的選取就越大。因?yàn)檩敵龅木S度不變,所以k值的選取存在多樣性,可以將模型中的k值進(jìn)行固定,也可以根據(jù)通道維度的不同,選取多個k值進(jìn)行模型搭建。實(shí)驗(yàn)會將改進(jìn)后的CBAM 融入進(jìn)分類網(wǎng)絡(luò)和目標(biāo)檢測網(wǎng)絡(luò)中,聯(lián)合內(nèi)核k的自適應(yīng)公式去分析k值的選取和融合后網(wǎng)絡(luò)模型的性能。
本次實(shí)驗(yàn)平臺的系統(tǒng)為Windows系統(tǒng),使用的深度學(xué)習(xí)框架為Pytorch1.7,CUDA版本為10.1,編程語言為Python3.7。硬件部分為AMD Ryzen 7 4800H、CPU@2.9 GHz、16 GB RAM、NVIDIA GeForce RTX2060。數(shù)據(jù)集采用的是公開的WiderPerson 行人檢測數(shù)據(jù)集,一共有13 382張圖像,且大多圖片都拍攝于擁擠復(fù)雜的場景,行人較多且遮擋嚴(yán)重。整個數(shù)據(jù)集大約標(biāo)記40萬個注釋,分為Pedestrians、Riders、Partially-Visible Persons、Ignore、Crowd這5個類別。
本文采用Mosaic 算法對數(shù)據(jù)集進(jìn)行圖像增強(qiáng)處理,即隨機(jī)選取4張圖像拼接在一起輸入進(jìn)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。Mosaic算法增加了圖片中目標(biāo)的個數(shù),讓一張圖像中出現(xiàn)多個類別,增加了數(shù)據(jù)的多樣性。而且網(wǎng)絡(luò)能夠一次性統(tǒng)計多張圖片參數(shù),在GPU 計算能力或顯存不足的限制下優(yōu)勢更大。Epoch 設(shè)置為100,初始的學(xué)習(xí)率為0.001。WiderPerson 行人檢測數(shù)據(jù)集隨機(jī)選取9 000 張圖片作為訓(xùn)練集,2 000 張和3 382 張圖片分別作為驗(yàn)證集和測試集。批量處理圖片的大小設(shè)置為8。
損失函數(shù)上傳統(tǒng)的YOLOv3 采用的定位損失函數(shù)為對真實(shí)框的偏移量和預(yù)測框的偏移量求差值平方,但是這樣的算法很難反映出兩個邊界框的重合程度。本文使用引入IOU 概念的損失函數(shù)CIOU 來進(jìn)行損失值的求解。優(yōu)秀的回歸定位損失函數(shù)應(yīng)該考慮到三種幾何參數(shù):真實(shí)框與預(yù)測框的重疊面積、中心距離以及長寬比[24]。圖7為真實(shí)框A和預(yù)測框B的重疊狀態(tài)。
圖7 真實(shí)框與預(yù)測框重疊Fig.7 Real box and prediction box overlap
從圖7中可以看出IOU 為A與B相交的面積與A和B交集的比值,d為A和B中心點(diǎn)之間的歐式距離,c為真實(shí)框B和預(yù)測框A的所能達(dá)到的最長距離。因此CIOU值的計算公式可以表示為:
其中,W、H為預(yù)測框的寬和高,Wgt、Hgt為真實(shí)框的寬和高。引入CIOU的損失函數(shù)最終表示為:
通過式(11)進(jìn)行損失值的計算,不僅考慮了重疊面積和邊界框高和寬的收斂效果,還考慮了對于中心坐標(biāo)點(diǎn)的收斂,使得模型加速收斂且有更高的定位精度。
將上述的所有改進(jìn)方法都進(jìn)行一個最優(yōu)的融合,作為本文所搭建的最終神經(jīng)網(wǎng)絡(luò)檢測模型。采用平均查準(zhǔn)率(mean average precision,mAP)和在IOU=0.5 的條件下各個分類的精度值來對上述改進(jìn)后的模型性能進(jìn)行分析。表1 為改進(jìn)后的模型在各個類別上的精度以及平均查準(zhǔn)率。其中Darknet53即為原始YOLOv3的網(wǎng)絡(luò)結(jié)構(gòu),SPP1 表示在第一個預(yù)測器前融入空間金字塔池化模塊,SPP3 表示在三個預(yù)測器前都融入該模塊。CBAM即為原始的卷積塊注意力機(jī)制。
表1 改進(jìn)模型的mAP對比Table 1 mAP comparison of improved models 單位:%
從表1中可以看出,通過池化模塊和高效搜索的注意力機(jī)制改進(jìn)后的模型對行人的檢測精度達(dá)到75.35%,比改進(jìn)之前的模型主要在Pedestrians 和Riders 這兩個類別上精度分別提高了5.76個百分點(diǎn)和4.86個百分點(diǎn),平準(zhǔn)查準(zhǔn)率提高了3.28 個百分點(diǎn)。與原始的YOLOv3算法相比,改進(jìn)后的算法主要在Riders 和Partially 這兩類包含標(biāo)簽多數(shù)為小目標(biāo)或者遮擋目標(biāo)的類別上有所提高,在行人的檢測精度和模型的平均查準(zhǔn)率上也是基本接近于YOLOv3模型,能夠滿足對行人車輛的檢測要求。
為了體現(xiàn)改進(jìn)后模型的優(yōu)越性和該模型針對小型目標(biāo)檢測的泛化性能,本文采用了額外的公開數(shù)據(jù)集Visdrone。該數(shù)據(jù)集收集的數(shù)據(jù)都是采用無人機(jī)對地面上的行人和車輛等物體進(jìn)行高空拍攝的方式獲得的,因此每張圖片上不僅有很多待檢測的目標(biāo),而且遠(yuǎn)景下的目標(biāo)標(biāo)注框很小[25]。不僅如此,由于拍攝角度的問題,檢測器很難全方位地學(xué)習(xí)到物體的特征信息,比如在該數(shù)據(jù)集下檢測器只能學(xué)習(xí)到汽車頂部的一些特征信息,無法學(xué)習(xí)到類似車門和輪胎這一類側(cè)面視角的特征,這更加考驗(yàn)?zāi)P湍芊瘾@取高質(zhì)量的空間信息。表2 為市面上的一些輕量級檢測器和經(jīng)典的單階段檢測器在該數(shù)據(jù)集下的性能對比結(jié)果。
表2 不同檢測算法檢測性能對比結(jié)果Table 2 Performance comparison of different detection algorithms
從表2中可以看出,VoVNet算法的平均查準(zhǔn)率是最高的,但是較低的檢測速率也很大程度上限制了該檢測器的實(shí)際應(yīng)用范圍。ShuffleNetV2 這一系列的輕量化網(wǎng)絡(luò)在對小目標(biāo)的檢測準(zhǔn)確率和召回率上相對比較低,不能滿足實(shí)際的檢測需求。同時YOLOv3和YOLOv5-x由于深層次的殘差模塊的疊加也不能同時兼顧檢測精度和檢測速度。本文設(shè)計的整個網(wǎng)絡(luò)能夠很好地兼顧檢測精度和檢測速率,將原始的Darknet53 骨干網(wǎng)絡(luò)改為GhostNet網(wǎng)絡(luò),通過深度卷積和融合操作讓模型參數(shù)量從61.9 MB 降低至25.0 MB,整個網(wǎng)絡(luò)的檢測速率從改進(jìn)前的每秒39 幀提升至每秒60 幀,相比于其他單階段算法檢測速率最高提升了52.1%,能夠滿足車載單元計算或小型移動設(shè)備對實(shí)時性的檢測要求。另外從表2中可以看出,本文設(shè)計的整個網(wǎng)絡(luò)的平均查準(zhǔn)率達(dá)到35.6%,檢測效果優(yōu)于ShuffleNetV2系列、GhostNet等輕量化的網(wǎng)絡(luò),對于擁擠行人場景下重疊的人群和遠(yuǎn)景小目標(biāo)的檢測性能接近YOLOv3。
本文對全連接搜索機(jī)制和高效搜索機(jī)制通過實(shí)驗(yàn)進(jìn)行分析對比,也對高效搜索機(jī)制的搜索廣度k值進(jìn)行進(jìn)一步分析。通過在傳統(tǒng)的分類網(wǎng)絡(luò)AlexNet上添加了改進(jìn)后的注意力機(jī)制,對比分析k值對精度的影響。數(shù)據(jù)集采用的是自制的3 000 張標(biāo)注行人、動物等共5 類的圖片。實(shí)驗(yàn)結(jié)果如表3所示,SE為傳統(tǒng)的通道注意力機(jī)制模型,即共享網(wǎng)絡(luò)使用的是全連接層,模型的預(yù)測精度為0.810,而將全連接層替換為高效的局部搜索時,預(yù)測精度最高可以提升至0.843。在模型運(yùn)算的實(shí)時性方面,模型改進(jìn)前對于一張圖的檢測速度為2 873 ms,改進(jìn)搜索機(jī)制后的模型檢測速度比改進(jìn)前最高提升了38.6 ms,當(dāng)k值為7時,模型檢測速度最快為2 834.4 ms??梢钥闯龈咝У木植克阉飨啾扔谌B接搜索,不僅通過避免降維壓縮提升了檢測速度,而且使得整體模型檢測性能都有一定的提升。H-CBAM 為本文最終改進(jìn)的卷積注意力模型,k=3,5,7 是精度最低的值,可以看出,改進(jìn)后的注意力機(jī)制模型即使精度值最低,也比之前未改進(jìn)的模型的精度要高,可以證明改進(jìn)后的模型有很大的優(yōu)越性。當(dāng)k值為5 時,精度最高達(dá)到0.852,通過內(nèi)核k自適應(yīng)公式計算出來的k=5,也可以證明其合理性。
表3 不同k 值在分類網(wǎng)絡(luò)的精確度和時間比較Table 3 Accuracy and time comparison of different k values in classification networks
為了更好地理解注意力機(jī)制模塊對網(wǎng)絡(luò)帶來的效果提升,本文利用Grad-CAM算法對融合網(wǎng)絡(luò)進(jìn)行了熱力圖的可視化[26]。Grad-CAM 算法相對于類激活映射CAM 算法的泛化能力更強(qiáng),不需要修改網(wǎng)絡(luò)來重新訓(xùn)練,通過對各類別的所有特征圖反向傳播時的梯度計算并進(jìn)行線性融合,表征出卷積層激活輸出各點(diǎn)位對模型決策分類的重要程度,每個網(wǎng)格位置表示的是對該類別的關(guān)注度[27]。如圖8 所示,實(shí)驗(yàn)在AlexNet 網(wǎng)絡(luò)的基礎(chǔ)上,對比分析了融合卷積塊注意力機(jī)制前和融合后的熱力圖可視化結(jié)果。顏色越深的地方表示模型對它的關(guān)注度越高,即模型主要通過學(xué)習(xí)該圖片上顏色較深的部位來進(jìn)行檢測和定位??梢钥闯鲎⒁饬C(jī)制就是加強(qiáng)了對這些局部特征的學(xué)習(xí),也可以證明通過融合和改進(jìn)注意力機(jī)制去提高模型性能的方法是可行且高效的。
圖8 兩種網(wǎng)絡(luò)模型可視化熱力圖對比Fig.8 Comparison of two network models for visualization of thermodynamic diagrams
本文針對目前用來檢測擁擠行人場景的網(wǎng)絡(luò)模型復(fù)雜度高,計算量大,而車載單元的計算能力有限的問題,設(shè)計了一種輕量化的網(wǎng)絡(luò)結(jié)構(gòu),利用GhostNet 網(wǎng)絡(luò)來代替?zhèn)鹘y(tǒng)的骨干網(wǎng)絡(luò),通過廉價的線性操作獲得與深層次網(wǎng)絡(luò)相似的特征圖,大大減少了模型計算量。為了進(jìn)一步提高模型的精度和實(shí)現(xiàn)多尺度的融合,添加了空間金字塔模塊和改進(jìn)后的高效卷積塊注意力機(jī)制,聯(lián)合分類網(wǎng)絡(luò)來選取最高效的自適應(yīng)內(nèi)核k值,采用了Grad-CAM算法對融合前后的模型進(jìn)行熱力圖可視化,進(jìn)一步分析卷積塊注意力機(jī)制。通過CIOU 算法來加速訓(xùn)練模型的收斂,同時使預(yù)測框的回歸更加穩(wěn)定且定位精度更高。結(jié)果表明,改進(jìn)后的網(wǎng)絡(luò)在WiderPerson行人檢測數(shù)據(jù)集上行人類別查準(zhǔn)率達(dá)到75.35%,相比改進(jìn)之前的模型在行人查準(zhǔn)率和平均查準(zhǔn)率上分別提高了5.76 個百分點(diǎn)和3.28 個百分點(diǎn)。在Visdrone 數(shù)據(jù)集上,改進(jìn)后的網(wǎng)絡(luò)平均查準(zhǔn)率達(dá)到35.6%,在性能基本接近于YOLOv3的基礎(chǔ)上,每秒檢測圖片的數(shù)量可以達(dá)到60張,相較于傳統(tǒng)的單階段檢測算法,檢測速率最高提升了52.1%,能滿足移動設(shè)備以及車載計算對實(shí)時檢測速度和精度的要求。