許大展,吳曉雨
(中國傳媒大學信息與通信工程學院,北京 100024)
隨著人工智能的快速發展,傳統汽車行業與信息技術的結合,無人駕駛逐漸出現在人們的視野中。路面標識作為無人駕駛和輔助駕駛的重要視覺信息,對它實時、正確的識別是行車安全的必要條件。
路面標識檢測隸屬于目標檢測技術范疇,傳統的目標檢測方法[1][2]主要是基于目標輪廓、目標特征的檢測方法,需要人為設計特征,存在一定的局限性。基于深度學習的目標檢測方法[3][4][5],避免了人為設計特征因素的影響,模型的泛化能力有較好的提升,但計算代價較高,收集的數據全部上傳到云端處理將會帶來較大時延,無法滿足低延時的應用需求。嵌入式終端計算設備更接近數據來源處,可對數據進行及時處理,減少云計算帶來較大時延的問題,但是嵌入式終端計算能力有限,無法實時處理復雜模型。因此,研究既準又快的路面標識檢測算法,既能處理路面標識受損、陰影、遮擋和天氣等因素,又能適應車載終端硬件性能,是一項非常具有挑戰性且應用性的工作。
針對以上問題,本文提出了一種基于深度學習的路面標識檢測模型,能夠在復雜場景下實現對路面標識的正確定位和分類,同時結合滿足實際應用的需求,將模型部署在嵌入式AI 計算設備Jetson TX2 上,并基于NVIDIA 推出的TensorRT 對網絡模型設計了優化加速和前向推理算法,以提高滿足模型在實際應用中的計算速度。
路面標識檢測是實現無人駕駛技術的重要環節之一,受到了許多專家學者的關注和研究。Wei Liu等人[1]使用傳統的檢測方法實現了多類別的路面標識檢測,利用Haar-lik 特征Adaboost 分類器將不存在標識的區域剔除,并用BW-HOG 特征的極限學習機ELM(Extreme Learning Machine)分類器進行具體分類。該方法可實現較好的檢測率,但不能滿足實時性的要求。Tairui Chen 等人[4]提出了一種二值化歸一梯度的路面標識檢測方法,并使用PCANet 分類器對檢測出的目標進行分類。該方法首次使用了深度學習的檢測方法對路面標識進行識別,與傳統方法相比有較好的效果。Eduardo Romera等人[5]將目標分割與檢測的方法用于路面標識識別,該方法可實現端到端的訓練,能學到圖像的關鍵信息,不僅可檢測出路面標識,還可檢測出道路、車道線、車輛、行人,能實現像素級別的分割,但與此同時消耗了大量的計算時間,不能滿足實時性的要求。TT-CNN 方法[6]在OverFeat[7]的基礎上進行改進的對路上的交通標識的識別網絡,但該算法較Faster RCNN[8]等方法計算耗時更長。基于分割的SegNet[9]、Mask-RCNN[10]和RPM-Net[11]網絡雖可以得到較精確的分割結果,但是計算速度上無法滿足應用場景的實時性要求。綜上,上述方法借助云端進行路面標識的檢測,將網絡模型直接部署到嵌入式終端平臺后因嵌入式平臺硬件資源有限,這些方法不能實現網絡的實時性推理,無法滿足實際應用需求。
網絡模型被部署到嵌入式終端平臺前需要對網絡模型進行壓縮和加速,以提高模型推理速度。現有的深度學習模型壓縮方法主要分為四類:參數修剪和共享[12]、低秩因子分解[13]、緊湊卷積濾波器[14]、知識蒸餾[15]。基于參數修剪和共享的方法針對模型參數的冗余性,試圖去除冗余和不重要的項,可以從預訓練模型或從頭開始訓練,較為靈活有效。基于低秩因子分解的技術使用矩陣/張量分解來估計深度學習模型的信息參數。基于緊湊卷積濾波器的方法設計了特殊的結構卷積濾波器來降低存儲和計算復雜度。知識蒸餾方法通過學習一個蒸餾模型,訓練一個更緊湊的神經網絡來重現一個更大的網絡的輸出。以上方法大多在模型訓練階段進行,實現模型的壓縮和加速。本文重點研究嵌入式設備Jetson TX2 的路面標識檢測算法,Jetson TX2 嵌入式設備是NVIDIA 公司推出的一款超好性能、低功耗的超級計算機[16],適用于智能型尖端裝置,如機器人、無人機、可攜式醫療設置等,可為終端提供人工智能技術支持[17][18],該平臺采用TensorRT推理引擎,以上提到的模型加速方法并不直接適用于該引擎。
綜上,目前已公開的無論是傳統的檢測方法還是基于深度學習的檢測方法,不能同時滿足復雜道路環境下路面標識的檢測精度以及嵌入式平臺下實時性要求。因此,針對當前路面標識識別方法存在的缺陷,本文重點研究了嵌入式平臺Jetson TX2 下快速準確的路面標識檢測算法,首先提出了基于層合并的RFCN 簡化模型,而后將模型部署到嵌入式平臺TX2,提出了基于TensorRT 網絡模型的前向推理優化加速方法,提出的算法在自建路面標識庫和公開數據庫均取得了較好的測試結果。
本文基于深度學習的目標檢測方法,針對路面標識的特點,從算法的準確性要求角度選用R-FCN[19]網絡作為實現對路面標識識別的基礎網絡,并采用了批量歸一化BN(Batch Normalization)層與卷積層參數融合的改進策略,減少模型內存占用,提升推理速度。
R-FCN沿用了Faster-RCNN中的RPN網絡結構,與之不同的是R-FCN使用了無全連層的ResNet[20]網絡。更重要的是R-FCN引入了位置敏感得分圖的概念,解決了分類需要滿足平移不變性和目標識別需要滿足平移可變性之間的矛盾。R-FCN在特征提取部分共享,極大減小了計算量,較Faster-RCNN 網絡在速度上有明顯的提升,在檢測準確率方面在檢測準確率方面明顯優于onestage 的SSD[21]和FSSD[22]等方法。
在滿足準確性要求的前提下,為了降低由網絡層數的加深所帶來的巨大時間消耗,本文將R-FCN 的基礎網絡ResNet50 替換為ResNet18,降低網絡的深度以達到網絡加速的目的。
R-FCN 模型中的BN 層在訓練階段對數據進行歸一化,加速網絡收斂,但在前向推理過程中占用大量內存,降低了推理速度。且BN 層和卷積層都是線性變換,因此為了加快推理速度,將上述基于R-FCN的路面標識檢測網絡模型中的BN 層與其相連的卷積層合并。
BN層可由公式(1)表示:

式中i 為[0, n]區間的正數,μ 和σ2分別為數據的均值與樣本的方差,γ 和β 訓練過程中可學習的兩個超參數,ε為趨于0的常數。
卷積層的輸出可由公式(2)表示,式中W 為網絡學習到的權重系數,B為偏差。

將BN 層與卷積層的參數融合,將卷積層的輸出作為BN 層的輸入,可得到新的卷積層的表示,如公式(3)表示:

其中α為可學習的超參數,Wmerged和Bmerged分別為融合后的卷積層的權重系數和偏差,如公式(4)、(5)、(6)所示。

在推理階段的模型解析中,合并后的層的計算量減小,內存占用減小,有利于推理速度的提升。簡化的網絡模型在準確率和效率上優于原始的R-FCN 模型,實驗結果及討論見實驗部分5.2.1。
為實現目標檢測模型的實時推理,將合并層后的R-FCN 網絡部署在嵌入式平臺Jetson TX2 上,結合NVIDIA 公司推出的TensorRT 引擎,本文提出了基于TensorRT的路標標識檢測網絡模型的優化加速方法。
TensorRT 是NVIDIA 公司推出的高性能優化推理引擎,可部署在嵌入式平臺,并且不需要任何深度學習框架的支持,即可實現對已有網絡模型的推理加速。TensorRT 的工作過程主要分為3 個部分,即網絡模型的解析,引擎的優化、推理執行階段,如圖1所示。

圖1 TensorRT加速引擎構建流程Fig. 1 The pipeline of TensorRT acceleration engineer
首先TensorRT 使用Parser 模型解析器對訓練有素的深度學習模型進行解析,解析層與層之間的關系,消除未使用的輸出層,以減小計算,實現加速。TensorRT 作為優化工具,支持深度學習中的一些通用層的直接解析,如卷積層、池化層等,但對于一些特定的層是不能解析的,如本文采用的網絡R-FCN中的位置敏感候選區域池化(Position Sensitive ROI Pooling)層和Proposal層。
其次,引擎構建器會根據網絡部署的平臺以及參數配置選擇最優的Kernel,這些Kernel 針對所選目標平臺、推理任務的復雜程度以及一系列參數進行了手動調整和優化。在優化階段,TensorRT 將自動從Kernel 庫中選擇最適合目標平臺以及一系列參數的優化算法,從而構建優化加速引擎。
最后,在推理時創建上下文環境,主要是預先分配資源,并執行上一步獲得的優化引擎從而進行推理。不過在此之前可將生成的優化引擎序列化存儲在磁盤上備用,當下次需要執行推理時,再反序列化該引擎執行推理,無需每次執行推理時重復創建該引擎。
在前向推理階段,本文對所部署的簡化R-FCN采用TensorRT提出了進一步優化和重構策略:
一是進行網絡層垂直整合。將網絡層進行整合消除未使用的輸出層以避免不必要的計算。這里將目前主流神經網絡的Bias、ReLU 和卷積層進行垂直結構整合,以提高推理的效率,如圖2所示。

圖2 網絡層垂直整合Fig. 2 Network layer vertical integration
二是采用量化與半精度的壓縮。推理與訓練的過程不同,在推理的過程中,只需要進行前向傳播,因此可以使用較低的精度,如Float16 或者Int8。 研究表明,在CNN 的推理過程中使用Float16 或者Int8 對精度影響較小。考慮到平臺的配置以及本實驗任務的精度要求,本文使用半精度FP16 代替32 位float 數據精度,以獲得高效的推理性能。
Road Marking Dataset 數據集[23]是國外的路面標識數據集,但我國的路面標識和國外的存在一定的差異。文獻[6]提出的Tsinghua-Tencent100K 國內路面標識數據集和百度apollo公開數據集[24]路面標識的數量并不多、比較雜亂。因此,為了滿足我國實際道路場景的條件,本文自建了路面標識數據集。自建路面標識數據庫是從上述庫中選出1728 張圖片(2048×2048)作為原始數據。路面標識主要分為左轉箭頭、右轉箭頭、直行加左轉箭頭、直行加右轉箭頭、直行箭頭以及人行橫道6類。
由于可得到路面標識數據量較少且存在路面標識類別不均衡的問題,直行加左轉箭頭和直行加右轉箭頭的數量要遠遠低于其他種類的路面標識,因此需要對自建數據集進行數據擴充和均衡等預處理,以提高深度學習模型的檢測性能。本文采用了旋轉、亮度與對比度變化、色度變化、多尺度縮放等多種組合的數據擴充方法和過采樣及欠采樣相結合的數據均衡方法。均衡前后的數據構成如表1所示。從均衡后數據取出1200張的圖像作為測試集,并將余下的數據以7:3 的比例劃分訓練集以及驗證集,并確保同一張原始數據擴充之后的數據與原始數據在同一個集合中。

表1 自建路面標識數據集的原始數據、擴充數據、均衡數據Tab.1 Raw data,extended data,and balanced data of self-built road marking dataset
為了驗證模型的泛化性,除了上述提到的取出均衡后的1200張圖像作為測試集外,本文在測試數據中又加入了1300張不含以上6種路面標識的圖像作為負樣本。
5.2.1 簡化后的R-FCN網絡模型實驗
為驗證3.2 部分提出的簡化后網絡模型的有效性,本文首先在PC 機上進行了算法性能,使用的系統是Ubuntu16.04,顯卡是NVIDA 1080Ti。在自建的訓練庫和測試庫上,比較TT-CNN[6]、SSD[21]、FSSD[22]、原始的基于ResNet-50 的R-FCN[19]和本文簡化后R-FCN網絡模型的性能,稱簡化后的模型為R-FCN*,實驗結果見表2。表2分別給出了左轉、右轉等6種常見路面標識的AP(Average Precision)值及各方法最終mAP(mean Average Precision)值和計算速度,其中AP值表示各個類別的平均識別精度,mAP值表示所有類別的平均識別精度。從表2 可以看出,基于two-stage的RFCN 和本文簡化后網絡在準確率達到90%以上,較SSD 和FSSD 算法mAP 值有明顯提高。同時本文簡化后網絡較原始的R-FCN 方法在mAP 性能基本相當的情況下,計算速度由105ms/frame 減少至56ms/frame。

表2 自建路面標識數據集的不同算法性能比較Tab.2 Performance comparison on self-built road marking dataset
此外,針對路面標識多出現在圖片下方的特點,本文對輸入網絡的圖像首先進行了預處理,對圖像頂部1/3進行了裁剪。原始基于ResNet50的模型對預處理后的圖像處理速度由105ms/frame 縮短到90ms/frame,簡化后的網絡模型的處理速度縮短至56ms/frame,而平均mAP基本保持不變,說明簡化后的算法模型在PC機環境下滿足實時性的要求。
5.2.2 基于TensorRT的優化加速算法實驗
本文將上述簡化后的R-FCN 模型部署到嵌入式平臺TX2 上,表3 給出了在自建庫上基于TensorRT 優化加速前后模型性能的比較。若未采用優化加速算法,簡化后的R-FCN 模型在TX2 平臺上計算速度為241ms/frame,這也說明了嵌入式平臺計算能力遠不及PC 服務器的計算能力。本文提出的基于網絡層垂直整合和半精度量化的優化網絡模型,在TX2平臺上計算速度由241ms/frame 提高到123ms/frame,加速效果顯著。

表3 自建數據集優化加速前后性能對比Tab.3 Performance comparison of acceleration on self-built road marking dataset
5.2.3 Road Marking數據集的實驗
為進一步驗證本文提出算法的魯棒性,我們亦在國外公開數據庫Road Marking Dataset 上,進行了多種路面標識的檢測測試。雖然原始的Road Marking數據集每張圖像存在一個或多個目標,但每張圖像的標注信息只包含一個目標。因此,為了滿足實際場景中同時測試多種路標識的應用需求,本文對該數據集1443 張圖像(800×600)重新標注,該路面標識主要分為“35”,“40”,“left turn”,“right turn”,“forward”,“stop”,“ped”,“bike”,“xing”,“rail”10 類。由于數據量較少的原因,同樣需要擴充數據,并針對數量偏少的類別進行均衡。表4給出了基于簡化后網絡模型在TX2平臺上優化加速前后模型性能的最終比較。

表4 Road Marking數據集優化前后性能對比Tab.4 Performance comparison on Road Marking dataset
如表4所示,經過優化后,模型在推理時間性能上有近一半的提升,在檢測準確率上僅有較小的損失,其中Road Marking 數據集中的類別除“left turn”,“xing”外檢測準確率均達到90%左右。“left turn”這類路標在一些測試圖像中對應到磨損的小目標區域,故存在一定比例的漏檢,“xing”路標在數據庫中數量較少,一定程度上影響了其特征學習導致檢測準確率相對其他類別較低。
圖3 和圖4 分別給出了自建庫和Road Marking 測試集上部分可視化結果。如圖3(a)和圖3(b)所示,在不同光照條件下實現了對路面標識的準確檢測,圖3(c)和圖3(d)實現了在交通路口以及在路面標識有陰影遮擋情況下的準確檢測。從圖4中也可看出在不同場景、不同天氣及光照下該算法均能實現較為準確的檢測,圖4(e)和圖4(f)實現了在不同場景下的多類目標的準確檢測。實驗結果表明本文提出的路面標識算法在復雜環境下具有較好的魯棒性,且在檢測正確前提下,優化加速后的模型在嵌入式平臺上推理速度有較大提升。

圖3 自建庫測試集部分可視化結果Fig. 3 Partial visualization results on test set of self-built dataset

圖4 Road Marking測試集部分可視化結果Fig. 4 Partial visualization results on test set of Road Marking dataset
為了滿足無人駕駛中路面標識實時檢測的要求,本文將路面標識檢測模型部署在嵌入式平臺TX2上,對網絡模型進行優化加速。使用TensorRT優化加速工具,在推理過程中對網絡層進行融合,并采用量化的方法實現了網絡模型的前向加速,在滿足準確率的前提下,實現了推理運行時上的較大提升,具有一定的研究意義和應用價值。