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