李奇武,楊小軍
(長安大學 信息工程學院,陜西 西安 710064)
在交通監控場景下,對道路車輛目標進行準確快速地檢測,對緩解交通壓力、應對交通安全問題具有積極意義。由于智能交通監控攝像頭等邊緣設備往往性能有限,設計一款輕量級的道路車輛目標檢測模型很有必要。
對目標檢測來說,一個重要的任務就是定位、分類視頻圖像當中的那些關注的目標[1]。傳統的目標檢測算法通常都是用滑動窗口進行區域的選擇,這種策略存在著耗時多、冗余窗口多、檢測效率低下、對資源的需求較高等缺點,同時人工設計的特征難以適應惡劣環境下的檢測任務,魯棒性低,其泛化性也較差,對目標的誤檢和漏檢比較多[2-3]。在復雜的應用場景下,傳統目標檢測算法往往難以滿足需求,而基于深度學習的目標檢測算法逐漸成為大家研究的重點。現階段基于深度學習的進行目標檢測的算法有很多,大致可分為兩類:一類是基于候選區域的兩階段算法,一類是基于回歸的單階段算法[4]。前一類算法通常精度比較高,但因為這類算法需要先找到候選區,之后才進行分類,速度較后一種算法慢,代表算法有R-CNN[5]等;后一類算法通常速度非常快,但檢測的準確度比前一類算法略低,常見的有SSD[6]和YOLO[7]等[8]。近些年來,許多學者都在將目標檢測的方法應用到車輛檢測上來,同時也在研究將其應用到嵌入式平臺中。杜金航等[9]將YOLOv3的骨干網Darknet53改進為有30個卷積層的卷積神經網絡,同時使用K-means聚類方法預測錨框,提高了車輛檢測的性能。魯博等[10]在YOLOv3-tiny網絡上引入BiFPN特征金字塔結構,檢測的準確度得到大幅提高,同時檢測速度也很快。孫皓澤等[11]以MobileNet作為骨干網構建了一個輕量級的檢測網絡,將殘差模塊與網絡中的檢測單元融合,提高對小目標的檢測性能,在小型移動偵查平臺能夠很好適用。李國進等[12]提出一種基于改進SSD的算法,通過用改進后的Inception模塊替換SSD網絡中的部分卷積層以及引入SENet注意力模塊,有效提高了對目標車輛的特征提取能力,提高了精度,但模型較為復雜,參數量大。張寶朋等[13]把YOLOv4的骨干網替換為改進的ShuffleNetV2,顯著降低了模型容量,但損失了檢測精度。
針對智能交通監控場景中,常見車輛檢測模型結構復雜,參數量大,難以在計算和存儲能力有限的邊緣設備中部署等問題,該文主要在YOLOv4網絡的基礎上做了兩點改進,用來構建輕量級的車輛檢測方法MC-YOLO。首先,將YOLOv4中負責初步提取特征的主干部分替換為MobileNetV3;然后,在主干部分和加強特征提取部分之間引入了有效的注意力模塊CBAM,它能夠篩選重要特征,彌補將主干網絡輕量化而引起的精度上的損失,提高模型的檢測能力。
MobileNet系列算法為了減少模型參數同時提升運算速度,都采取了將傳統的標準卷積替換為深度可分離卷積的方式[17]。如圖1所示,深度可分離卷積是由兩層組成的,分別是深度卷積(Depthwise Convolution)和1×1的逐點卷積(Pointwise Convolution)[18],它們的作用分別是進行濾波和線性組合,這樣操作有效減少了參數量和計算量[19]。

圖1 標準卷積與深度可分離卷積比較
假設輸入時的特征圖F的大小為DF×DF×M,在經過一系列卷積操作后輸出時的特征圖G的大小為DF×DF×N,其中DF用來表示特征圖的寬和高,M為輸入通道數,N為輸出通道數,DK代表卷積核的高與寬,對于標準卷積,它的計算量是:
DK·DK·M·N·DF·DF
(1)
而對于深度可分離卷積,它的計算量為:
DK·DK·M·DF·DF+M·N·DF·DF
(2)
將兩種卷積操作的計算量進行比較:
(3)
由式(3)可知,采用深度可分離卷積可大量減少計算量。
在MobileNetV1基礎上,為了提高網絡的表征能力,MobileNetV2引入了倒殘差結構[20],一方面壓縮了網絡規模,一方面提高了檢測性能。為了解決在訓練網絡的時候,由于網絡深度逐漸增加而出現的梯度消失的問題,ResNet中提出了殘差結構,類似的殘差結構在MobileNetV2中也存在,但是不同的是,在MobileNetv2中,在通過深度卷積DW進行特征提取之前,先進行了逐點卷積PW的升維操作,然后再一次使用逐點卷積PW進行降維操作[21-22]。倒殘差結構如圖2所示。
您好!我是一個快上初三的大男孩。我知道自己已經步入青春期了,最明顯的表現就是不愿意搭理父母,我也不知道為什么,但這就是我發自內心的感受,我覺得他們都不懂我,他們的關心讓我感到煩躁。另一方面,我又略感自責,但我只要放學回到家,就無法克制自己。父母應該感覺到了我的疏遠,我很苦惱。

圖2 MobileNetV2中的倒殘差結構
MobileNetV3的網絡結構中,一方面融合了深度可分離卷積、線性瓶頸結構,一方面引入了SE(Squeeze and Excitation)注意力模塊和h-swish函數等,速度和性能有了很大提升[23-24]。MobileNetV3的基礎模塊bneck結構如圖3所示。可以看到,它先通過1×1的卷積將維度升高,目的是對在高維空間得到的特征數據進行分析;再進行深度可分離卷積操作,同時,在這個結構里還嵌入了SE模塊,用來對不同通道的權重進行相應的調整;最后再通過1×1的卷積將維度降低,若步長為1,輸出與輸入進行殘差操作[24]。

圖3 bneck結構
MobileNetV3有large和small兩個版本,兩種模型的區別主要在于通道數的變化以及網絡中bneck的次數。該文采用MobileNetV3-large模型。
YOLOv4是在YOLOv3的基礎上發展而來的,如圖4所示,可以將網絡劃分為三個部分,分別是主干特征提取網絡CSPDarknet53、加強特征提取網絡以及預測網絡YOLO Head[25]。主干網絡CSPDarknet53借鑒了CSPNet的優點,提高了網絡的推理速度和準確性,可以看到輸入的圖像在主干網經過特征提取,得到三種不同尺度的特征層[26]。加強特征提取網絡主要是由SPP(空間金字塔池化)模塊和PANet(路徑聚合網絡)組成的,從圖中可以看到,SPP模塊將從主干網得到的最小尺寸的特征層利用四個不同尺度的最大池化進行處理,然后再傳入PANet與另外兩個特征層進行自上而下和自下而上的雙向特征融合,進一步加深了特征提取,最后由YOLO Head輸出預測結果[26-27]。

圖4 YOLOv4網絡結構
該文采用YOLOv4原有的損失函數。YOLOv4是在YOLOv3的基礎上發展而來,相較于YOLOv3,其在邊界框回歸損失部分進行了改進,將YOLOv3中的均方誤差損失函數替換為CIoU,在置信度損失和類別損失兩個方面與YOLOv3相同。由于IoU存在著只有在邊界框重疊的情況下才有效果的缺陷,YOLOv4采用CIoU,同時考慮了重疊面積、中心點距離以及長寬比三種因素,它的計算方式為:
(4)
(5)
(6)
其中,b和bgt代表預測框以及真實框的中心的位置,ωgt、hgt和ω、h則分別代表真實框和預測框的寬和高。
注意力機制是模仿人的神經系統提出的概念,在某個特定的場景中,不同物體對人的吸引力是不同的,對吸引力較強的物體,人往往會投入更多的注意力去關注它,這種情況也可以擴展到神經網絡中來,一般來說更重要的特征也應該被賦予更高的權重,以提升主干網絡對重要特征的關注度。該文結合輕量級注意力模塊CBAM(Convolutional Block Attention Module)對網絡進行優化,CBAM是一種即插即用的注意力模塊,能夠嵌入到網絡中的卷積層之間,雖然增加了較少的計算量,但能夠顯著提升檢測的準確度。CBAM同時關注了通道注意力信息和空間注意力信息,如圖5所示,它有通道注意力模塊CAM(Channel Attention Module)以及空間注意力模塊SAM(Spatial Attention Module)兩個子模塊,把這兩者結合起來,能夠讓網絡關注到更多的重要信息,起到提升模型的檢測性能的作用[28]。CBAM將某一層的特征圖抽取出來,接著進行通道維度與空間維度的提取后,與原特征圖進行結合作為下一層卷積層的輸入,強調重要特征,抑制一般特征。

圖5 CBAM結構
YOLOv4算法性能優異,但是其網絡結構復雜,參數量很大,難以應用于算力資源和內存資源有限的邊緣設備。如圖6所示,該文主要通過兩個方面對原YOLOv4算法進行改進:一方面,為了減少網絡的參數量,壓縮模型大小,通過替換骨干特征提取網絡來實現,將YOLOv4的主干網CSPDarknet53替換為MobileNetV3;另一方面,為了保證優化后的模型在輕量化的同時,使其檢測精度盡可能符合預期要求,在SPP模塊之后和PANet模塊之間以及主干和PANet模塊之間均嵌入了卷積注意力模塊CBAM,用以彌補模型輕量化導致的精度損失。

圖6 MC-YOLO網絡結構
實驗的環境配置:CPU為Intel Core i7-10875H CPU @2.30 GHz;內存16G;顯卡為NVIDA GeForce RTX 2060。在Windows 10系統上進行車輛檢測模型的開發,開發環境為Python 3.7,CUDA10.0,深度學習框架為PyTorch。
實驗數據集:針對該文研究的路側交通監控場景的車輛檢測,由于UA-DETRAC[29]數據集的拍攝角度與監控攝像頭相近,因此采用該數據集作為實驗的數據集。
UA-DETRAC數據集包括100個從現實世界交通場景中拍攝的視頻,有超過14萬幀的視頻圖像,人工標注了8 250個車輛目標,有121萬目標檢測框被標注,它考慮了四種照明條件,即多云、夜間、晴天和雨天;UA-DETRAC數據集將車輛分為四類:car、bus、van和others[30],由于該文主要討論的是車輛檢測,故不再區分車輛類型,以car作為唯一的類型。同時,為了檢驗該模型的檢測效果,作為UA-DETRAC數據集測試集的補充,通過模擬交通監控拍攝角度,分別在白天和夜晚車流量較多的時段于西安市二環南路東段立交橋采集了兩段視頻,視頻分辨率為1 280×720,FPS為30,每段時長均為5分鐘。
評價指標:使用精確度(Precision)、平均精度(AP)、參數量、模型大小和FPS作為評價指標。
3.2 模型訓練
在訓練之前,把實驗所用到的UA-DETRAC數據集中的圖像隨機劃分為兩份,其中訓練集用到的圖像占80%,剩余的則是測試集的圖像。將原尺寸的圖像輸入網絡,在網絡輸入端進行圖片的調整,將原圖像的大小調整為416×416再輸入網絡。該文對模型的訓練主要分成兩步,在第一個階段只訓練MC-YOLO網絡的主干,這個階段只訓練50個Epoch,它的學習率lr設為0.001,此階段每次迭代的batch_size為16;第二個階段則是對整個MC-YOLO網絡進行訓練,將lr調整為0.000 1,訓練的次數則設置為100個Epoch,此階段將batch_size調整為8。在整個訓練過程中,均采用Adam優化器,將其權重衰減設置為0.000 5,而且采用了標簽平滑策略,設置為0.005。MC-YOLO模型和YOLOv4模型的訓練集Loss變化曲線和測試集Loss變化曲線的對比如圖7所示。可以看到,當訓練次數超過100個Epoch時,MC-YOLO的Loss曲線已經開始趨于穩定,相較于YOLOv4收斂更快。

圖7 MC-YOLO與YOLOv4的Loss曲線對比
為驗證該算法的可行性,以及改進模塊對交通監控場景下的車輛檢測模型的影響,將YOLOv4分別與替換主干網后的模型MobileNetV3-YOLOv4以及該文提出的MC-YOLO進行比較,將改進的方法與原YOLOv4在相同的環境下進行訓練,在模型大小、平均精度AP、參數量以及FPS四方面進行比較,結果如表1所示。

表1 實驗結果對比
由表1可看出,在將YOLOv4的主干網用MobileNetV3替換YOLOv4的主干特征提取網絡可以顯著壓縮模型大小,將模型大小從245.5 MB壓縮到44.7 MB,但同時也造成了一部分精度的損失,在加入CBAM注意力模塊后,對檢測效果的提升較為明顯,模型大小雖然比MobileNetV3-YOLOv4模型略大,但與原YOLOv4模型相比,減少了約190 MB,參數量也降低了約77%,同時保證了較好的檢測精度,在相同的硬件條件下,MC-YOLO模型的速度比YOLOv4提升了約21%,能夠滿足實時性檢測的需求。
為更直觀體現MC-YOLO車輛檢測方法的性能,驗證其在不同天氣情況下的檢測效果,在UA-DETRAC數據集中選取了雨天、夜晚兩種天氣條件下的圖像,圖像中包含部分遮擋的目標以及小目標,將MC-YOLO與YOLOv4兩者進行比較,結果如圖8所示。

圖8 UA-DETRAC數據集測試結果對比
從圖8中可以看出,無論在雨天還是夜晚,改進后的車輛檢測算法都保持著較好的檢測精度,對部分遮擋的車輛和遠處的車輛也能較為準確地識別,證明了算法的魯棒性。為了檢驗該模型的泛化能力,在人工采集的西安市二環南路東段立交橋監控視頻圖像上進行測試,得到MC-YOLO和YOLOv4的檢測結果對比如圖9所示,體現了較好的泛化性。

圖9 實際應用場景測試結果對比
為模擬現實交通監控場景下的車輛檢測,選擇UA-DETRAC數據集進行訓練和評估,在YOLOv4的基礎上通過替換主干網以及引入注意力模塊提出了輕量級車輛檢測方法MC-YOLO。實驗結果表明,MC-YOLO模型的AP與YOLOv4相近,但有效降低了模型的大小和復雜度,在不同的天氣狀況下對車輛進行檢測的效果較為理想,體現了較好的魯棒性,同時泛化性較好,能夠滿足交通監控場景下的車輛檢測任務。