林 峰,劉永志
2020 年4 月,中國社會福利基金會等機構發布了《道路交通安全調研報告——2019 年度:不良駕駛行為》.報告指出分心駕駛、疲勞駕駛等不良駕駛行為是造成2019 年度中國道路交通事故的最主要原因.因此如何有效識別車輛司機駕駛狀態,對分心駕駛、疲勞駕駛等危險行為進行及時預警,對減少車輛交通事故的發生具有重大意義[1].
近年來,隨著行車記錄儀的普及,通過對駕駛人員實時影像檢測,快速識別不良行為并告警已逐漸成為解決不良駕駛行為的主流方案[2-3].在該方案中,基于深度學習的圖像識別技術被廣泛使用,并已在實踐中被證實具有較高的性能和準確性[4].但是傳統的深度學習圖像識別技術存在以下不足:一是需要開發人員掌握深度學習相關理論知識,能夠熟練使用Keras、TensorFlow 等第三方代碼庫,并具備手工搭建多層人工神經網絡模型的能力;二是深度學習模型訓練的過程往往需要消耗大量的計算資源,若開發人員硬件資源受限,將無法進行大規模圖像識別模型的構建;三是圖像識別模型一旦訓練完成后,缺乏便捷的手段將其快速部署,實用性不強[5-8].
機器學習PAI 平臺是阿里云計算有限公司開發的一款在線機器學習平臺.基于阿里云自身豐富的技術積累和強大的云計算資源,開發者只需準備訓練數據集,PAI 平臺可提供數據預處理、數據分析、數據可視化、模型評估、模型發布等一站式服務.Auto Learning自動學習模塊是機器學習PAI 平臺中的重要組件之一.在圖像識別問題上,只要訓練集數據質量得到保證,Auto Learning 自動學習模塊就能快速訓練足夠精確的模型,并提供一鍵發布模型的服務[9].鑒于此,本文利用阿里云機器學習PAI 平臺,結合Auto Learning 自動學習模塊,構建了線上駕駛行為識別模型,并進行了相關驗證和發布試驗.
機器學習PAI 平臺(Platform of Artificial Intelligence)是一款阿里云人工智能平臺,提供了一站式的機器學習解決方案.PAI 平臺起初僅服務于阿里巴巴集團內部業務,致力于讓阿里巴巴集團內部開發者能夠高效、簡潔、標準地使用人工智能技術.隨著平臺技術的不斷積累,2018 年機器學習PAI 平臺正式商業化,目前已積累了數萬企業客戶和個人開發者,是國內領先的線上機器學習平臺之一.機器學習PAI 平臺具有如下優點:①支持一站式機器學習,使用者只需要準備好訓練數據(注意:數據通常存放在阿里云OSS 或MaxCompute 系統中),數據上傳、數據預處理、特征工程、模型訓練、模型評估及模型部署等環節均可在阿里云PAI 平臺中操作實現.②對接阿里云DataWorks 大 數 據 平 臺,支 持SQL、UDF、UDAF、MR 等多種數據處理方式,靈活性較高.③生成模型的實驗流程支持DataWorks 平臺周期性調度,且調度任務可區分生產環境和開發環境,確保數據安全性.
機器學習PAI 平臺主要提供了可視化建模PAI-Studio、交互式AI 研發PAI-DSW,以及自動化建模Auto Learning 三種使用模式.其中Auto Learning 模式提供了自動機器學習服務,支持在線標注、自動模型訓練、超參優化及模型評估等常見機器學習操作.使用者只需準備少量標注數據,設置訓練時長,就可以得到深度優化的人工智能算法模型.
本文實驗數據來源于大數據算法競賽平臺Kaggle(賽題:State Farm Distracted Driver Detection),涉及26 位司機、10 種駕駛行為,合計22 424 張圖片.每張圖片尺寸均為640×480,約占40 KB 存儲空間.原始數據集體量較大,為方便實驗,抽選了具有代表性的兩名司機(司機編號:p021、p022)的樣本數據,并隨機拆分為訓練集(圖片數量:1 100)和測試集(圖片數量:220).其中圖片示例如圖1 所示,數據集分布見表1.

圖1 訓練樣本示例

表1 數據集分布
阿里云PAI 平臺中圖像識別模型依賴的訓練數據需存儲于OSS 平臺中.OSS(Object Storage Service,對象存儲服務)平臺提供面向海量數據規模的分布式存儲服務,具有穩定、可靠、安全、低成本的特點.在OSS 平臺中創建存儲空間(亦稱之為Bucket),新建目錄,并通過專用客戶端工具oss-browser,將1 100 張訓練集圖片進行上傳.值得注意的是,需要創建相應的RAM 角色(角色名:AutoLearningRole),并賦予AliyunOSSFullAccess 權限,阿里云PAI平臺才能訪問OSS 平臺圖像數據用于模型訓練.具體角色創建及賦權操作可見阿里云相關幫助文檔,此處不作贅述.
進入阿里云機器學習PAI 平臺,在“自動學習(Auto Learning)”欄目中,創建實例.其中在“創建實例”對話框中,選擇實例類型為“圖片分類”,并設置標注配置文件OSS 路徑.標注配置文件為CSV 文本文件,需手工生成,用于指定訓練集中各圖片所屬類別.文件內容包含樣本ID、圖片文件OSS 路徑,以及類別標注等信息,內容格式如下所示:
0,{"tfspath":"oss://linfengbucket.oss-cn-shanghai.aliyuncs.com/distracted_driver_detection/train/img_58285.jpg"},{"option":"c0"}
在Auto Learning 自動學習頁面中,通過隨機抽查,確認訓練圖片標注無誤后,即可進入模型訓練及評估階段.點擊頁面下方“完成標注”按鈕,彈出“開始訓練”對話框.配置最大訓練時長為60 分鐘后,點擊“開始訓練”按鈕.截止本文撰寫時,阿里云PAI 平臺Auto Learning 自動學習模塊仍處于公測階段,配置參數“最大訓練時長”不能超過60 分鐘,對訓練模型所消耗的阿里云計算資源無需付費.經過約11 分鐘時長的訓練,駕駛行為識別模型指標數據已達到預期:準確率99.08%,模型訓練結束.
模型訓練完畢后,可進行EAS 部署.阿里云EAS(Elastic Algorithm Service,彈性算法服務)支持將所訓練的模型發布為在線預測服務,通過RESTful API 形式供第三方系統或平臺使用.本文以流行的Python 編程語言作為實例,本地測試客戶端通過阿里云提供的eas-prediction 庫,進行模型在線接口調用,核心代碼如下所示.
# 引入模塊
from eas_prediction import PredictClient
from eas_prediction import StringRequest
# 初始化客戶端
client=PredictClient("接口公網URL地址")
client.set_token("接口TOKEN碼")
client.init()
# 構造請求參數
request=StringRequest(′{"image":"待預測圖片base64編碼"}′)
# 預測
response=client.predict()
print(response.response_data.decode())
在線預測服務返回的結果為JSON 字符串,提供了上傳圖片所屬各類別的概率,形如:
{"class_probs": {"c9": 2.4398683962090217e-08, "c8":1.7996175074586063e-06,……},"success":true,"request_id":"ff281367-4d25-435b-8cca-69b653ed5e48", "class_name":"c6","probs":[3.242876633891001e-09,5.356615773166595e-08,……],"predictions":3,"class":3}
通過使用PAI 平臺在線預測服務,結合上述核心Python 代碼,對含220 張駕駛圖片的測試集進行了預測分析,比對真實情況,220 張圖片駕駛行為均被準確識別,準確率為100%.同時經過測試,平均每張圖片預測耗時1 160毫秒,不超過1.5 秒,滿足駕駛行為檢測性能要求.
為與機器學習PAI 平臺方式進行對比分析,本文使用Python 編程語言,依托深度學習開源庫Keras(版本號:2.2.5)、TensorFlow(版本號:1.15.3),開發了CNN 卷積神經網絡模型.所設計的本地模型包含了卷積層、池化層、全連接層等結構,合計參數12 946 890 個.使用上述與機器學習PAI 平臺方式相同的1 100 張圖片進行模型訓練,在個人計算機中(CPU:1.8 GHz、4 核,內存:10 GB、DDR3)耗時約222 分鐘(3.7 小時),模型準確度及損失函數(categorical_crossentropy)逐漸收斂,如圖2 所示.

圖2 線下模型準確度、損失函數收斂曲線
通過對含220 張圖片的測試集進行測試,成功預測193 張圖片所屬駕駛行為,準確率為87.73%,此外平均每張圖片預測耗時43 毫秒.結合模型訓練耗時、測試集準確率、平均每幀圖片預測耗時及費用等因素,將本地開發模式與在線PAI 平臺模式進行對比,具體情況見表2.基于PAI 平臺Auto Learning 模式的方法具有如下特點:①操作人員不需要掌握額外的編程方法和深度學習技術,能夠將主要精力集中于訓練數據的采集和標注上.②依托阿里云IT 技術積累,圖像分類模型準確率較高.③可彈性提供模型訓練依賴的計算資源.④易于將模型發布為線上服務,方便其他系統或平臺使用.⑤資費合理,使用者無需承擔過高的費用,即可享受機器學習模型的訓練、測試、發布等一站式服務.

表2 兩種模型訓練模式對比
本文基于阿里云機器學習PAI 平臺,結合Auto Learning 自動學習模塊,利用1 100 張含10種駕駛狀態的車內影像數據,構建了一個高性能的線上駕駛行為識別模型.該方案解決了傳統本地線下模型訓練方式深度依賴開發能力和計算資源的缺陷,后續計劃將進一步豐富數據集,提升模型在多場景、多尺度情況下駕駛行為識別準確率.