宋能超,鄧辰鑫*
(1.合肥市軌道交通集團有限公司,安徽 合肥 230001;2.上海澤高電子工程技術股份有限公司,上海 201900)
軌道交通在飛速發展并創造巨大的經濟和社會效益的同時,一系列亟待解決的技術問題有增無減。面對現存諸多疑難雜癥,從業人員難以通過傳統的理論或技術來解決。其中,地鐵車輛的駕駛員行為監測預警,作為地鐵車輛運行安全和智能運維的難點,是現今地鐵車輛朝智能駕駛發展的重點技術之一。
列車運行安全和智能運維等問題,可歸結于服務于列車安全性的車載設備的缺失性和不先進性,難以提供復雜情況下的安全保障。司機在正線行車時,需要集中精力駕駛,不做打電話、看手機等無關行為;在道岔前方、進站停車時,應做出手指口呼和目視確認等行為。司機駕駛行為的規范與否往往影響行車安全,目前尚無可靠的技術設備對此類行為進行監督。
駕駛行為分析可由人體行為分析遷移實現,常見的人體行為分析分為3 類,即傳統方法、自上而下和自下而上。傳統的人體行為分析在幾何先驗的基礎上,利用模板匹配進行分析,其核心在于利用模板表示整個人體結構。自上而下的方法主要由目標檢測器和單人人體骨骼關節點檢測器這兩部分組成,它首先檢測出圖像中的人臉(或人體)目標,再檢測出單個目標的人臉關鍵點(或人體骨骼關節點),利用目標檢測主要完成分類和定位兩種任務,目前主流的深度學習算法框架有FasterR-CNN、YOLO[1~3]、SSD 等。自下而上的方法,如Open Pose 方法[4]將部位親和力場和卷積姿態機相結合,通過對人體的不同肢體結構進行建模,使用部位親和力向量場來模擬不同肢體結構,從而分析人體行為。
從地鐵車輛運行安全和智能運維的角度出發,針對司機駕駛行為規范性等人工駕駛隱患,本研究提出一種基于雙YOLOX 目標檢測的方法監測司機駕駛行為,并通過模型加速策略將算法部署至邊緣計算的端側。司機駕駛行為安全預警系統作為車載技術防護裝備,具有先進性和智能性,能保障列車的安全運行。
YOLO 系列算法是目標檢測的經典算法之一,通過無分支的深度卷積網絡實現特征提取、候選框分類和回歸,網絡結構簡單,檢測速度能夠滿足實時檢測任務的要求。截止目前,其更新迭代包括早期YOLO框 架、YOLOv3~v5、YOLOX、YOLOv6 及 其 它 變 種 框架。YOLOX 以YOLOv3 作為起點,創新地將無錨框方式(Anchor Free)引入。本研究基于YOLOX 框架進行分析和計算。
圖1 顯示了分析策略的流程。使用兩個YOLOX模型,實現地鐵列車司機的駕駛行為檢測,監測包括疲勞(打哈欠或長時間閉眼)、打電話和抽煙。使用YOLOX-1 模型檢測人臉、手機和香煙,當出現手機和香煙時,輸出報警;若未檢測出手機和香煙并檢測出人臉,則將人臉圖像送入YOLOX-2 模型中,對閉眼、睜眼、哈欠進行檢測并統計,根據相應規則進行報警。

圖1 駕駛行為檢測流程
目前NVIDIA 平臺主流的邊緣計算設備包括Nvidia Jetson Nano、Nvidia Jetson Xavier NX、Nvidia AGX Xavier,這些設備體型小巧、價格便宜,適用于各種算力要求的邊緣嵌入式AI 計算。本研究使用NX 平臺進行計算,它用外形小巧的模組系統將超級計算機的性能帶到了邊緣端,擁有Xavier 般的性能和Nano的大小,可提供高達21 TOPS 的計算性能,能夠并行運行多個神經網絡并同時處理來自多個傳感器的數據,適用于無人機、便攜式醫療設備、小型商業機器人、智能攝像頭、高分辨率傳感器、自動光學檢測、智能工廠及其他高性能AI 系統。
2.2.1 模型頭部切片的加速
YOLOX 模型頭部使用聚焦模塊(Focus),來源于YOLOv5,將原始圖像(3×640×640)通過切片操作,形成特征圖(12×320×320),再送入后續卷積神經網絡。其目的在于得到無信息丟失的二倍下采樣特征圖。從高分辨率圖像中,周期性的抽出像素點重構到低分辨率圖像中,即把圖像相鄰的四個位置進行堆疊,聚焦寬、高維度信息至通道維度中,提高每個點感受野,同時在不降低網絡精度前提下,減少了計算量,增加了推理速度。

圖2 Focus 結構示意
但這種非常規計算,對于邊緣計算設備,尤其端側的圖形處理單元(GPU)來說,存在速度和精度上的不穩定性。在模型部署時,將Focus 從模型中移除,并在中央處理單元(CPU)中計算Focus、GPU 異步接受Focus 的結果,消除Focus 在GPU 中的異常耗時,達到穩定計算和加速的效果。
2.2.2 激活函數算子的替換
激活函數完成了數據的非線性變換,解決線性模型的表達、分類能力不足的問題。它改變了數據的線性關系,使深層神經網絡有了實際的意義,讓網絡更強大。它使網絡可以學習復雜的事物、數據以及表示輸入輸出之間非線性的復雜的任意函數映射。此外,激活函數執行了數據的歸一化,將輸入數據映射到某個范圍內再往下傳遞,限制了數據因多層網絡傳遞而數據過大和溢出風險。
修正線性單元(ReLU, Rectified Linear Unit)激活函數是神經網絡常用激活函數之一,其實質為分段線性函數,對負值進行單側抑制,具有稀疏性、無梯度飽和或梯度消失的現象、計算簡單的優點。

YOLOX 模型使用SiLU 激活函數,

是介于線性函數與ReLU 函數之間的平滑函數,具有無上界有下界、平滑、非單調的特性,讓其模型效果優于ReLU 激活函數,顯著提高了神經網絡的準確性。SiLU 激活函數以復雜的非線性提高了精度,但因其核心為指數計算,在端側上的計算成本比ReLU 激活函數高。因此,本研究通過硬解碼方法,使用Hardswish激活函數代替SiLU 激活函數,在不降低精度的前提下,加速端側激活函數的計算,函數圖像見圖3。


圖3 SiLU 激活函數和Hardwish 激活函數
表1 計算了在NVIDIA-NX 平臺下使用2.2 所述策略的加速結果,其中,NANO、TINY 和S 表示YOLOX 中三種大小不同的模型。表中模型推理的最終預測結果均一致,加速策略不改變模型的預測結果,驗證了其準確性。以TINY 模型為例,使用2.2 所述策略后其檢測幀率提升了66.7%。

表1 加速前后模型計算結果
檢測主機結合面部攝像機完成駕駛員行為監測。主機內含NVIDIA-NX 模塊,通過減震工藝固定于機箱中,滿足地鐵列車的環境振動[5,6]。主機輸入電源DC 24 V,最大功率不超過50 W,能存儲不小于15 d的系統運行日志,并將檢測視頻推流至服務器上。主機外觀見圖4。

圖4 檢測主機實物圖
面部攝像機安裝在操作臺正中間的帽檐處,見圖5。

圖5 面部攝像機安裝位置
在合肥地鐵某列車安裝的試點設備,從2021 年11 月至2022 年8 月,日均檢測次數約10 萬次,其中日均誤報937 次,誤報率約9.37‰,誤報時間持續約100 秒。圖6 和圖7 展示了兩種典型的疲勞檢測結果。

圖6 疲勞檢測結果(打哈欠)

圖7 疲勞檢測結果(閉眼占比高)
(1) 使用雙YOLOX 目標檢測的方法監測司機駕駛行為,試點運行效果良好。
(2) 模型通過加速策略部署至邊緣計算的端側,使計算幀率提高了66.7%。