石 健,成 前,金立生,胡耀光,蔣曉蓓,郭柏蒼,王武宏
(1.北京理工大學機械與車輛學院,北京100081;2.燕山大學車輛與能源學院,秦皇島066004)
目前實現(xiàn)無人駕駛的技術(shù)方案可分為兩種,一種是偏向個體的自主式無人駕駛,另一種是強調(diào)協(xié)同的網(wǎng)聯(lián)式無人駕駛[1]。兩種方案都以環(huán)境感知模塊作為基礎,為后續(xù)的規(guī)劃決策提供支撐。從現(xiàn)有研究和已落地的成果來看,基于雷達的感知技術(shù)已日益成熟[2],但由于其存在著對目標實例感知較差的缺點,無法對復雜交通場景進行有效識別,因此,基于攝像頭的感知技術(shù)是實現(xiàn)場景理解的關(guān)鍵。當前基于攝像頭的感知主要圍繞著深度學習所展開,其面向交通參與者的多類任務(分類,檢測,跟蹤,分割等)極大地提升了對復雜交通場景的識別效率。
在無人駕駛環(huán)境感知模塊中,車輛檢測分類是基礎而重要的工作。國內(nèi)外對于交通場景下的車輛識別進行了眾多研究??梢院喴偨Y(jié)為:從檢測視角劃分,面向自主式無人駕駛的自車視角(ego view)和面向網(wǎng)聯(lián)式無人駕駛的鳥瞰路側(cè)視角(topdown view);從檢測算法劃分,改進單階段或兩階段檢測算法以提升檢測精度與速度,融合其他信息(如點云信息,深度信息等)的檢測算法以提升檢測效果。
文獻[3]中提出一種改進SSD(single shot multi?box detector)算法,引入Inception?like block代替原始SSD中額外特征層來處理多尺度車輛檢測,從而增強對小型車輛的檢測,在鳥瞰視角下得到了較好的檢測效果。文獻[4]中提出一種改進YOLOv3算法,通過使用MobileNetV2替換Darknet?53作為特征提取的骨干網(wǎng)絡,實現(xiàn)了模型輕量化,對自車視角下的3類車輛進行了有效檢測。文獻[5]中針對兩階段檢測算法Faster?RCNN中候選區(qū)域生成網(wǎng)絡(RPN)模塊在進行目標檢測時對目標特征提取不夠充分的問題,提出一種基于改進RPN的Faster?RCNN網(wǎng)絡SAR圖像車輛目標檢測方法,與傳統(tǒng)RPN相比,其準確率更高,泛化性能更強。文獻[6]中提取前車局部二值特征、Haar?like特征和方向梯度直方圖特征的融合特征作為支持向量機分類器輸入,結(jié)合卷積神經(jīng)網(wǎng)絡模型進行級聯(lián)檢測,獲得了較好的車輛檢測效果。文獻[7]中提出一種“多層網(wǎng)格法”用來確定LSTM的超參數(shù),并利用基于改進長短時記憶神經(jīng)網(wǎng)絡自適應增強算法(LSTM?AdaBoost)的多天氣車輛分類方法,在多種復雜天氣下對車輛進行了有效的檢測與分類。文獻[8]中設計了一種單目深度估計方法,將RGB信息轉(zhuǎn)化為深度模態(tài)信息,利用RGB圖像和深度圖像作為輸入,進行級聯(lián)檢測,提高了車輛檢測性能。文獻[9]中在雷達點云的基礎上,提出了一種新的以視覺信息為導向的生成器(pro?posal generator),利用PointNet++學習點云的局部特征,并改進了交并比(IoU)預測分支附加到網(wǎng)絡中,使得三維車輛檢測的效果得到較大提升。
針對上述文獻可以發(fā)現(xiàn)以下3點問題:第1,多數(shù)研究都圍繞檢測和分類算法開展,對算法工程化應用未作詳細探討,且由于算法研究與實際需求場景存在的差異性較大,使得當前的算法工程化難以落地;第2,由于深度學習模型易受數(shù)據(jù)維度和數(shù)據(jù)量制約,因此多數(shù)研究都以公開數(shù)據(jù)集中的粗粒度標簽為基礎,進行后續(xù)算法的調(diào)優(yōu)和驗證,但在細粒度車輛分類上的研究不夠深入(細粒度的車輛分類是指大類下的子類識別,例如,一般只將車輛粗粒度的分為小型汽車、卡車和公交車,不會在小型汽車中細粒度的劃分出轎車和SUV等),這使得復雜交通環(huán)境下的場景理解難以深入;第3,一般研究只在算法和模型上給出了理論上的論證,但從環(huán)境感知模塊的整體技術(shù)結(jié)構(gòu)方案上都未作說明,尤其是在后續(xù)輸出如何與決策規(guī)劃等模塊的耦合聯(lián)動上未作明確闡述。
基于以上分析,本文中從面向網(wǎng)聯(lián)式無人駕駛的視角出發(fā),提出使用視頻結(jié)構(gòu)化算法作為路側(cè)端感知策略,通過對應用環(huán)境進行拆解,對視頻結(jié)構(gòu)化框架進行設計,并在此基礎上,提出適用于本文視頻結(jié)構(gòu)化算法的細粒度車輛檢測分類模型。對輕量化的細粒度車輛檢測分類具有較強的研究價值,對無人駕駛環(huán)境感知技術(shù)方案的設計和實現(xiàn)具有一定的工程意義。
視頻結(jié)構(gòu)化算法多用于安防與智能監(jiān)控[10-11]領(lǐng)域,其核心思想是對視頻圖像中關(guān)注的人、車、非機動車等目標提供更深層次的結(jié)構(gòu)化解析,如出現(xiàn)在視頻中人的樣貌、衣著,車輛的類型、顏色等。而在當前的無人駕駛環(huán)境感知任務中,實現(xiàn)復雜交通環(huán)境的場景理解是關(guān)鍵且必要的。因此,視頻結(jié)構(gòu)化從任務實現(xiàn)的角度是適用的,并且在保證視頻結(jié)構(gòu)化穩(wěn)定準確輸出的前提下,可以利用輸出結(jié)果,為后續(xù)決策控制模塊提供支撐。在面向網(wǎng)聯(lián)式的無人駕駛環(huán)境感知的技術(shù)方案中,對于路側(cè)端設備有著較高的計算需求,且與設計成本存在著較難平衡的關(guān)系。綜上,如何定義適用于網(wǎng)聯(lián)式無人駕駛的視頻結(jié)構(gòu)化場景并設計各算法模型在視頻結(jié)構(gòu)化之間的邏輯,是視頻結(jié)構(gòu)化算法在工程實現(xiàn)中亟需解決的難題。
視頻結(jié)構(gòu)化的基礎是通過訓練得到精度高,速度快,泛化性好,魯棒性強的輕量化深度學習模型,而其難點在于以下兩點。
首先,通常來說,單階段檢測算法和兩階段檢測算法在檢測速度和檢測精度上難以平衡。單階段檢測算法在檢測速度上有優(yōu)勢,但在檢測精度上差于兩階段檢測算法。
其次,深度學習受數(shù)據(jù)集數(shù)量和質(zhì)量的影響很大,手工標注數(shù)據(jù)的成本過高,而當前基于弱監(jiān)督和半監(jiān)督標注的標注精度還有待提高[12]。
視頻結(jié)構(gòu)化通過調(diào)用整合不同深度學習模型,可以較好地解決過度依賴數(shù)據(jù)標注的問題,但其帶來的新挑戰(zhàn)是:(1)多深度學習模型的堆疊使得輕量化模型的任務更加緊迫;(2)由于計算資源的限制,各模型間的邏輯關(guān)系需要通過硬件平臺連續(xù)組織調(diào)試,使得模型工程化的要求更加嚴苛。
視頻結(jié)構(gòu)化作為一個系統(tǒng)性輸出,其對計算資源的分配和要求是十分嚴苛的,需要考慮的不僅包含模型的訓練和優(yōu)化,更需要考慮模型的移植和加速,因此不同硬件平臺下的處理能力(如FLOPS)和編譯工具(如NCNN/MNN)都是需要考慮的重要內(nèi)容。
本文中設計了一種面向路側(cè)端的視頻結(jié)構(gòu)化框架。具體的框架結(jié)構(gòu)如圖1所示。
圖1 面向路側(cè)端的視頻結(jié)構(gòu)化框架
通過訓練不同深度學習模型來突破數(shù)據(jù)集限制(例如,標注限制,數(shù)據(jù)量限制等),通過組合多深度學習模型來豐富細粒度信息,通過設計算法策略來穩(wěn)定輸出有效內(nèi)容。利用深度學習模型層,結(jié)構(gòu)化層與計算資源的交互、申請與分配使得結(jié)構(gòu)化輸出更加合理穩(wěn)定,實現(xiàn)復雜交通場景的有效理解。
車輛檢測分類是實現(xiàn)復雜交通場景理解的基礎,探究適用于視頻結(jié)構(gòu)化的輕量化細粒度車輛檢測分類模型具有理論研究意義和實際應用價值。現(xiàn)階段,常用的輕量化模型方法是使用輕量級的網(wǎng)絡代替單階段和兩階段檢測算法中較重的網(wǎng)絡作為特征提取的骨干網(wǎng)絡(例如,用MobileNets或ShuffleNet代替YOLO系列中的Darknet網(wǎng)絡)。但經(jīng)過實際的工程化模型測試,類似于MobileNetV2代替Darknet-53得到的改進模型,由于其中含有大量的1×1和3×3卷積,頻繁申請交換內(nèi)存,使得網(wǎng)絡前向推理速度不能達到符合預期的在視頻結(jié)構(gòu)化中應用的速度。因此,本文中使用“檢測+分類”的思想,利用YO?LOv4[13]作為基礎檢測算法,并使用剪枝策略對所得模型進行壓縮處理,使用ResNet18作為分類網(wǎng)絡的骨干網(wǎng)絡,最后將兩模型級聯(lián)得到細粒度的車輛檢測分類模型。
YOLO系列[14-16]算法是主流的單階段檢測算法。YOLOv4在算法理論上集成了很多優(yōu)秀的思想,且進行了大量實驗論證,因此是目前最新、效果最好的版本。其較YOLOv3的主要改進在于,在使用YOLOv3頭部的基礎上,使用CSPDarknet?53(網(wǎng)絡結(jié)構(gòu)如圖2所示)替換了Darknet?53作為骨干網(wǎng)絡,并利用SPP模塊增加了感受野,在數(shù)據(jù)增強和激活函數(shù)等處理方式上都進行了調(diào)整。
圖2 CSPDarknet?53網(wǎng)絡結(jié)構(gòu)
剪枝作為模型壓縮的重要手段之一,可以分為結(jié)構(gòu)剪枝和非結(jié)構(gòu)剪枝,由于非結(jié)構(gòu)化剪枝需要定制化軟硬件的支持,因此,本文中采取結(jié)構(gòu)化的手動剪枝策略[17-20]。
通道剪枝是目前常用的剪枝策略,本文中通過調(diào)整通道稀疏性來實現(xiàn)靈活性和易操作性的平衡。由于通道剪枝需要修減與通道所關(guān)聯(lián)的所有輸入與相關(guān)連接。因此,無法對預訓練模型進行權(quán)重剪裁。針對此問題,在每一個通道上都引入了一個乘以通道輸出的尺度因子γ,通過對網(wǎng)絡權(quán)重和γ的聯(lián)合訓練,對γ進行稀疏正則化處理。而后利用γ進行通道剪枝,并微調(diào)剪枝后的網(wǎng)絡。γ的引入公式為
式中:(x,y)為訓練數(shù)據(jù)標簽的輸入與輸出;W為訓練的權(quán)重,可認為整體為常規(guī)卷積神經(jīng)網(wǎng)絡訓練的損失函數(shù);g(γ)為稀疏函數(shù);λ為平衡因子。
具體的優(yōu)化流程可表示為圖3。
圖3 通道剪枝流程
通道剪枝的本質(zhì)是刪除“不重要”通道上所有的輸入與輸出連接,因此,可以通過通道剪枝獲得一個較窄的網(wǎng)絡,由此進行模型的輕量化??梢詫ⅵ米鳛橹虚g變量,且由于其與網(wǎng)絡權(quán)重共同優(yōu)化,網(wǎng)絡可以識別出“不重要”的通道,去除這些通道不會對泛化性能產(chǎn)生很大的影響,如圖4所示。
圖4 網(wǎng)絡剪枝示意
批處理歸一化(batch normalization,BN)[21]被看作是目前的標準方法來實現(xiàn)快速收斂和獲得更好的泛化性能。利用BN層使用小批次(mini-batch)數(shù)據(jù)將內(nèi)部激活函數(shù)正則化,設zin和zout為一個BN層的輸入與輸出,B為當前的小批次的Batch,那么BN層可表示為
式中:μB和σB是在B下的輸入激活的平均值和標準差;γ和β是可被訓練的尺度和變換參數(shù),這兩個參數(shù)在理論上提供了將正則化激活函數(shù)線性轉(zhuǎn)換回任何尺度上的可能性。一般來說,BN層都會被放在卷積層的后面,因此,本文中直接在BN層使用γ因子用于剪裁通道,從而實現(xiàn)通道剪枝。在網(wǎng)絡剪枝優(yōu)化以后,重新對網(wǎng)絡進行微調(diào)。得到基于剪枝優(yōu)化的YOLOv4車輛檢測模型。
對于視頻結(jié)構(gòu)化來說,細粒度屬性是實現(xiàn)結(jié)構(gòu)化輸出的關(guān)鍵內(nèi)容。本文中在考慮車輛相關(guān)信息的基礎上,將車輛種類(type)分為16類,車輛顏色(color)分為12種,具體屬性如表1和表2所示。本文中通過細粒度的車輛類型和顏色組合基本可以覆蓋當前交通場景下所需理解的所有車輛。
表1 細粒度車輛類型
表2 細粒度車輛顏色
在車輛分類模型中,采用ResNet18作為特征提取的骨干網(wǎng)絡[22],其網(wǎng)絡結(jié)構(gòu)示意如圖5所示。
圖5 ResNet18網(wǎng)絡結(jié)構(gòu)示意圖
圖像分類經(jīng)常使用的損失函數(shù)是Softmax損失(Softmax loss),可表示為
式中:LS為Softmax loss;Wx+b為全連接輸出;log為xi屬于類別yi的概率;m表示mini?batch的大小。
使用Softmax loss分類時可能會導致類別的界限不清晰,因此,本文在使用Softmax loss的基礎上,加入了Center loss[23],可表示為
式中:LC表示Center loss;cyi表示第yi個類別的特征中心;xi表示全連接層之前的特征;m表示mini?batch的大小。從實際意義上來說,Center loss是希望一個Batch中的每個樣本的特征離特征中心距離的平方和越小越好,即類內(nèi)距離要越小越好。本文最終損失函數(shù)可表示為
在得到剪枝優(yōu)化的車輛檢測模型和細粒度的車輛分類模型以后,對兩模型進行了級聯(lián),具體的級聯(lián)策略為:視頻流推流進網(wǎng)絡后,利用檢測模型的檢測框(bounding box),作為分類模型的輸入,最終的標簽輸出組成為“檢測框+類型+顏色”。
訓練設備與環(huán)境主要包括:Intel(R)Xeon(R)Gold 6129@2.30GHz CPU,NVIDIA GeForce RTX 2080Ti*4 GPU,Ubuntu18.04,Pytorch1.7,Darknet,Tensorflow1.13。
由于希望在實際工程下進行模型驗證,因此在海思平臺下進行了模型移植,主要的設備與環(huán)境包括:海思Hi3516DV300模組套件,Caffe1.0。
實驗使用了BDD100K[24]數(shù)據(jù)集、VERI-Wild[25]數(shù)據(jù)集和自采標注的數(shù)據(jù)集。由于BDD100K數(shù)據(jù)集中的圖像數(shù)據(jù)是面向自車視角,因此使用其作為YOLOv4原始網(wǎng)絡模型的預訓練數(shù)據(jù)集,得到的網(wǎng)絡模型及權(quán)重經(jīng)通道剪枝后,使用鳥瞰視角的自采標注數(shù)據(jù)集進行微調(diào)。重新對VERI-Wild數(shù)據(jù)集進行了圖像分類和整理,并在其中添加了自采標注的數(shù)據(jù)集,在圖像類別數(shù)量不平衡的問題上,使用了數(shù)據(jù)增強。重構(gòu)的數(shù)據(jù)集如表3和圖6所示。
表3 重構(gòu)VERI-Wild數(shù)據(jù)集
選取不同角度的路側(cè)端視頻對級聯(lián)模型進行了可視化,選取的部分車輛檢測分類效果如圖7所示。
圖7 不同視角下車輛檢測分類效果
針對YOLOv4車輛檢測模型,其和經(jīng)通道剪枝優(yōu)化的YOLOv4車輛檢測模型(微調(diào)后)的模型體積、前向推理時間(輸入1920×1080)和測試集mAP如表4所示。為平衡模型體積和mAP,本文中在多版本剪枝優(yōu)化模型中,選取了mAP下降0.006,模型體積減小約60%的YOLOv4-Pruned模型。
表4 車輛檢測模型指標
針對細粒度車輛分類模型,模型體積、前向推理時間(輸入416×416)、分類準確率(類型、顏色均正確)如表5所示。
表5 細粒度車輛分類模型指標
針對細粒度的車輛檢測分類級聯(lián)模型,模型體積、FPS(輸入1920×1080),和在測試集上的mAP如表6所示。
表6 細粒度車輛檢測分類級聯(lián)模型指標
在海思平臺Hi3516DV300(算力為1.0Tops)上進行了模型的移植與測試,由于海思僅支持Caffe模型,因此,將多框架模型轉(zhuǎn)化統(tǒng)一為Caffe模型,具體為:Darknet模型轉(zhuǎn)為Caffe模型,Pytorch模型先轉(zhuǎn)為ONNX模型,后將ONNX模型轉(zhuǎn)為Caffe模型,在海思平臺上進行了模型移植,針對細粒度的車輛檢測分類級聯(lián)模型,模型體積、FPS(輸入1920×1080)和在測試集上的mAP如表7所示。
表7 海思平臺細粒度車輛檢測分類級聯(lián)模型指標
從以上各表對比可以看出,經(jīng)剪枝優(yōu)化后的檢測模型與細粒度的車輛分類模型級聯(lián)后,在1920×1080輸入,NVIDIA GeForce RTX 2080Ti下,可在微小精度損失的情況下,F(xiàn)PS達到23,在海思平臺下,F(xiàn)PS達到13。需要說明的是,海思平臺下的模型未經(jīng)量化。
本文中分析當前無人駕駛環(huán)境感知技術(shù)面臨的難題,提出了一種面向視頻結(jié)構(gòu)化的解決方案,其可以概括為:通過合理分配計算資源,優(yōu)化多深度學習模型,制定深度學習模型間交互邏輯,合理結(jié)構(gòu)化輸出圖像,以涵蓋豐富信息,實現(xiàn)復雜交通場景理解。
根據(jù)所提出的視頻結(jié)構(gòu)化算法框架,設計了一種適用于視頻結(jié)構(gòu)化算法的細粒度車輛檢測分類模型。針對檢測模型,通過對YOLOv4進行通道剪枝,使得模型體積減小約60%,前向推理時間減少約40%。提供了16種類型、12種顏色的細粒度車輛分類模型,基本可以覆蓋目前交通場景下常見的所有車輛。級聯(lián)檢測分類模型在GPU下的測試可達到23 FPS,且本文進行了工程上的模型移植驗證,在海思平臺Hi3516DV300上,未經(jīng)量化的模型可以在不掉精度的前提下穩(wěn)定在13 FPS。Hi3516DV300的算力有限,在實驗中僅作工程化演示,后續(xù)實際應用需在大算力平臺下進行,如NVIDIA Jetson Xavier NX等。
后續(xù)可在本文提供的多路側(cè)端設備視頻結(jié)構(gòu)化輸出下,圍繞車輛重識別(用于身份合并)和多車交互決策與規(guī)劃等內(nèi)容進行研究。