陳仁文,袁婷婷,黃文斌,張宇翔
(南京航空航天大學 機械結構力學及控制國家重點實驗室,江蘇 南京210016)
隨著現(xiàn)代汽車中手機和許多其他娛樂(信息娛樂)系統(tǒng)的推出,駕駛員的注意力已提升到一個新的水平。這些系統(tǒng)提供了更多的便利,但同時增加了駕駛員分心和認知工作量的發(fā)生[1]。據(jù)世界衛(wèi)生組織的調查,交通事故是人類第八大死亡原因,駕駛員分心駕駛造成的交通事故數(shù)量逐步增加。疾病預防控制中心將分心駕駛依據(jù)視覺、手動、認知分為三種類型。駕駛員在駕駛過程中,使用手機或者發(fā)短信而造成的視線遠離駕駛路線的分心屬于視覺分心;手動分心主要涉及駕駛員在駕駛過程中雙手離開方向盤的各種活動,如吃東西、喝水、操作導航儀等;駕駛員處于安全駕駛姿勢,也有可能會在精神上分散駕駛注意力,這種由于注意力不集中或困倦而引起的分神屬于認知分心。
目前,學術界和汽車制造商正在開發(fā)新的高級駕駛員輔助系統(tǒng),以減輕或避免因駕駛員分心而導致的交通事故發(fā)生。即使是正在開發(fā)的自動駕駛汽車,也需要對駕駛員進行連續(xù)監(jiān)視、以確保駕駛員可以在緊急情況下接回駕駛任務。曾在2016年5月和2018年3月分別發(fā)生兩起由于駕駛員分心導致的自動駕駛車輛撞行人事故。無論是自動駕駛系統(tǒng)或是智能駕駛輔助系統(tǒng),基于視覺的傳感技術是核心,主要包括識別駕駛員的各種狀態(tài)、活動和車外的駕駛環(huán)境,其中駕駛員的姿態(tài)估計是本文的研究內容。對駕駛員姿態(tài)監(jiān)測的研究主要分為接觸式和非接觸式,由于接觸式監(jiān)測需要駕駛人員佩戴傳感器設備或者額外的輔助標記物,會降低駕駛體驗,可能影響駕駛人的正常駕駛操作等,非接觸式是目前的主流研究[2]。人體姿態(tài)估計算法僅通過視覺傳感器捕捉人員的運動姿態(tài),在汽車工業(yè)中得到了越來越多的關注。
人體姿態(tài)估計系統(tǒng)普遍采用Conv Nets(Con?volutional Neural Network,CNN)作 為 主 構 模塊,最早Toshev等人[3]提出“DeepPose”模型,由一個Alexnet后端(7層)和一個額外的最終層組成,這個最終層的輸出為關節(jié)坐標,使用L 2損失進行回歸訓練。Tompso等人[4]將輸出變?yōu)殡x散的熱圖而不是坐標點連續(xù)回歸,聯(lián)合使用CNN和圖形模型進行預測。其中,熱圖預測關節(jié)在每個像素發(fā)生的概率。Wei等人[5]提出了卷積式姿態(tài)機(CPM),由圖像特征計算模塊和預測模塊組成,通過多階段細化熱圖中關節(jié)點的位置,無需顯式的圖形模型。Newel等人[6]提出了一種新穎而直觀的架構,稱為堆疊式沙漏網(wǎng)絡,可以捕獲與身體相關的各種空間關系。重復的自下而上,自上而下的處理與中間監(jiān)督結合,并使用跳過連接來保留每個分辨率的空間信息。通過沙漏結構,全局和本地信息都可以被完全捕獲用于卷積神經網(wǎng)絡學習預測,在姿態(tài)估計中應用廣泛。
通用的人體姿態(tài)估計任務已取得重大突破,但文獻中針對車載用途的姿態(tài)估計模型很少,且無公開車載環(huán)境下人體姿態(tài)估計數(shù)據(jù)集。Borghi等人[7]提出了稱為“POSEidon”的神經網(wǎng)絡,用于深度圖像上駕駛員的肩部和頭部的姿勢估計,在pandora數(shù)據(jù)集上進行評估,該數(shù)據(jù)集是實驗室環(huán)境下采集的上半身姿態(tài)圖像。Yuen等人[8]修改了Cao等人[9]的PAF模型,實現(xiàn)了駕駛員和前排乘客的手腕和肘部識別。Chun等人[10]提出了名為“NADS-Net”的卷積網(wǎng)絡,使用resnet50網(wǎng)絡進行特征提取,以特征圖金字塔網(wǎng)絡(Feature Pyramid Networks)為主干網(wǎng)絡,采用多個檢測網(wǎng)絡實現(xiàn)駕駛員與前排乘客的姿態(tài)估計和安全帶檢測,模型的參數(shù)量為39 M。
本文提出了一個更加簡潔的輕量型卷積神經 網(wǎng) 絡(Fast Driver Pose Estimation,F(xiàn)DPENet),用于2D駕駛員的駕駛姿態(tài)的估計。FDPE-Net使用多特征聚合的兩級級聯(lián)結構和多任務學習,實現(xiàn)了在降低計算的復雜性和內存需求的同時,保持良好的檢測精度。與其他姿態(tài)估計模型相比,網(wǎng)絡的輸入圖片分辨率僅192 pixel×192 pixel,模型的參數(shù)量為0.7 M,計算量為207.3 M,可以實現(xiàn)車載端的實時檢測。另外,本文采集了不同駕駛員在自然駕駛狀態(tài)下的駕駛視頻數(shù)據(jù)集,并構建了用于駕駛員姿態(tài)估計的圖片數(shù)據(jù)集,其中標注了駕駛員的上半身關節(jié)點,并對數(shù)據(jù)集中的駕駛人員信息做了詳細的描述和統(tǒng)計,以觀測原始數(shù)據(jù)對算法的性能影響。
通用人體姿態(tài)估計已有較多大型公開數(shù)據(jù)集,而用于自動駕駛或駕駛輔助系統(tǒng)的姿態(tài)估計目前并無公開數(shù)據(jù)集,因此建立自然駕駛狀態(tài)下的姿態(tài)估計數(shù)據(jù)集是一項必不可少的復雜工作。
數(shù)據(jù)采集裝置僅使用一個固定角度的低成本廣角RGB攝像頭,以視頻格式采集數(shù)據(jù),其像素為1280 pixel×960 pixel。為減少身體姿態(tài)的關節(jié)遮擋和車外光線的影響,將攝像頭安裝于車內后視鏡下方,在車輛靜止狀態(tài)下拍攝駕駛員的模擬駕駛視頻。
完成原始視頻素材采集后,選取合適的視頻幀作為圖片數(shù)據(jù),使用在線圖像標注的Javascript標注工具LabelMe手工標注每張圖片中人體關節(jié)點的像素坐標,如圖1所示。標注方法采用通用的人體姿態(tài)估計公共數(shù)據(jù)集的標注方法,并將標注文件以coco數(shù)據(jù)集標注格式保存。最后,為保證數(shù)據(jù)集的質量,所有標注都進行了最終檢查,修復了存在錯誤的注釋。

圖1 標注樣本Fig.1 Examples of ground truth annotations.
數(shù)據(jù)集包含在不同的天氣和同一天的不同時間段等不同光照條件下26名駕駛員的樣本素材,共計3260張圖片,如圖2所示。每名駕駛員的樣本包含多種駕駛姿態(tài),圖3中c0~c7分別表示安全駕駛、右手打字、左手打字、右手打電話、左手打電話、喝水、調整車載音響以及整理頭發(fā)等駕駛員姿態(tài)。此外,為了觀測數(shù)據(jù)集分布的合理性和多樣性,避免所訓練模型的偏向性,還對一些可能影響姿態(tài)估計識別的變量進行了記錄,例如駕駛員的膚色、性別、著裝顏色深淺、是否帶眼鏡以及拍攝的時間段和天氣等,表1給出了其中部分變量的數(shù)據(jù)。

表1 數(shù)據(jù)集分布Tab.1 Data set statistics

圖2 不同駕駛員編號的樣本數(shù)量Fig.2 Sample size of different driver

圖3 不同駕駛姿態(tài)的樣本數(shù)量Fig.3 Sample size for each driver posture
人體姿態(tài)估計的目的是預測給定圖像中人體關節(jié)的空間坐標,運用二維坐標(x,y)來估計RGB圖像中的每個關節(jié)的二維姿態(tài)。對于駕駛員的姿態(tài)估計,僅需要考慮駕駛員的上半身關節(jié)點,本文使用k個身體關節(jié)點來表示駕駛員的位姿向量,即G k=g,g={...,gi,...},i∈{1,2,...,K},其中gi表示第i個關節(jié)點的坐標(x,y)。

其中σ表示預先確定的方差。
姿態(tài)估計問題可轉換為圖像的像素級回歸問題,通過使預測熱圖與目標熱圖之間距離的均方誤差(Mean Squared-Error,MSE)最小化對模型進行訓練。其中MSE損失函數(shù)可表示為:

其中:y?i為預測值的熱圖,y i為真值的熱圖。因此,駕駛員姿態(tài)估計問題可重新構造為尋找使得損失函數(shù)最小的映射函數(shù)f:y j=f(I j)。
人體姿態(tài)估計需要捕捉圖片的各個尺度信息,雖然局部信息對于人體關節(jié)識別來說必不可少,但是最終整體的姿態(tài)估計需要對身體有一個連貫的理解。本文提出了一個兩階段級聯(lián)特征網(wǎng)絡,將圖像的高級語義信息與底層特征聚合,實現(xiàn)了低復雜度和低內存需求下的高效檢測。網(wǎng)絡基本組成是瓶頸狀的殘差結構[11],批量歸一化(Batch Normalization,BN)[12]與激活函數(shù)Re?LU組合使網(wǎng)絡更快地收斂,每一階段網(wǎng)絡應用連續(xù)的兩個1×1卷積來生成關鍵點預測熱圖,最終形成全卷積的網(wǎng)絡結構[13]。網(wǎng)絡整體結構如圖4所示,網(wǎng)絡輸出的關鍵點預測熱圖如圖5所示。

圖4 FDPE-Net的網(wǎng)絡結構Fig.4 FDPE-Net architecture

圖5 關節(jié)點預測熱圖的可視化Fig.5 Visualization of joints prediction heatmap
駕駛姿態(tài)識別任務是人體姿態(tài)估計在特定駕駛環(huán)境下的應用,根據(jù)遷移學習理論,本文選用經典的人體姿態(tài)估計網(wǎng)絡中Hourglass模塊為每階段的骨干結構。與其不同的是,本任務的姿態(tài)估計僅考慮上半身關節(jié)點,姿態(tài)的類別相對較少,且對模型的運行速度要求較高。研究發(fā)現(xiàn)在大型MPII基準測試中,每層通道具有高度冗余性,減少一半的數(shù)量(128)僅會導致性能下降不到1%[14],因此本文采用128個通道數(shù)構建了一個輕量型的CNN神經網(wǎng)絡。
本文所使用的Hourglass模塊使用池化層和卷積層提取1/2,1/4,1/8的低分辨率特征,使用跳躍連接保留每個分辨率的空間信息,達到最低分辨率后,網(wǎng)絡進行自上而下的上采樣和不同尺度的特征融合,結構如圖6所示。相鄰分辨率的特征融合時,首先將較低的分辨率進行最近鄰上采樣,然后對兩組特征逐元素相加[15]。具體的,本文所采用的Hourglass模塊由10個殘差塊、3個最大池化層和3個上采樣層組成,其中在跳躍連接的每個分支上各有一個殘差塊,所有的殘差塊通道數(shù)均為128。在殘差塊中采用深度可分離卷積[16],減少網(wǎng)絡的參數(shù)量,提高網(wǎng)絡的運算速度。

圖6 Hourglass模塊的結構Fig.6 A single Hourglass module
FDPE-Net由兩個級聯(lián)的神經網(wǎng)絡組成,輸入圖像為192 pixel×192 pixel×3 pixel的RGB圖像。每個階段的網(wǎng)絡輸入都由原始圖片的特征提取和來自前一階段的上下文信息組成,且兩階段級聯(lián)網(wǎng)絡的主干結構相同,但不共享權重參數(shù)。在第一個階段中,輸入圖片經過特征粗提取部分,將圖片的分辨率降低至48 pixel×48 pixel,再輸入到Hourglass模塊中提取低分辨率特征。并在實現(xiàn)特征融合后,應用兩個1 pixel×1 pixel卷積來生成高斯熱圖,表示如式(3)所示:其中:b K1(G k=g)表示第一階段預測的k個關節(jié)點的位置預測熱圖,w,h分別表示網(wǎng)絡輸出熱圖的寬度和高度。

第一階段單輸入實現(xiàn)粗略的姿態(tài)估計,第二階段通過原始圖片的特征提取和上一階段的上下文信息來聯(lián)合預測,實現(xiàn)更加精確地姿態(tài)估計。

其中:X′表示來自輸入圖片的特征提取;y1(X)表示第一階段融合多分辨率后中級語義特征;φ1(g,b1)表示第一階段粗略預測后的高級語義特征;b k2(G k=g)表示第二階段的位置預測熱圖。
本文采用多個損失函數(shù),第一階段輸出為H1,第二階段輸出為H2,將H1與H2串聯(lián)后,經過一個1×1卷積得到輸出H3,這3個輸出都采用均方誤差的平方根作為損失函數(shù),模型的最終損失函數(shù)表示為:

其中:W為模型可學習參數(shù),為每個損失函數(shù)的權重,M為訓練數(shù)據(jù)量,K為關節(jié)點數(shù)目,和分別為第j個樣本的第i個輸出的第k個關節(jié)點的預測輸出和真值,l為 均 方 誤 差 的平方根方程。
模型有多個輸出,使用多損失函數(shù)策略,可以使參數(shù)共享層將學習到的相關信息互相分享與互相補充,進而互相促進學習,提升對信息的穿透和獲取能力;另外,在多個輸出任務同時進行反向傳播時,共享表示會兼顧到多個輸出的反饋,模型通過平均各個輸出任務的噪聲而學習到更通用的表征;最后,模型使用多個損失函數(shù)也可以看做是對主要輸出任務的正則補充,可以防止過擬合,增強模型的泛化能力[18]。
本文根據(jù)駕駛人員將數(shù)據(jù)集劃分為訓練集和測試集,即測試集包含與訓練集不同的駕駛員、光照條件、駕駛背景等。數(shù)據(jù)集共計3260張圖片,其中訓練集2559張,測試集701張。
對訓練集做如下的數(shù)據(jù)預處理工作:首先依據(jù)標注的關節(jié)點生成人體檢測框,將圖片裁剪為192×192的不包含無關背景的訓練圖片;裁剪后的圖像使用隨機旋轉(-15°~15°)和隨機比例(0.8~1.2)來進行數(shù)據(jù)增強;最后對圖像做標準化處理。
FDPE-Net使 用Tensorflow[17]后 端 的keras實現(xiàn),使用NVIDIA Tesla P100 GPU進行了訓練和測試。在所有的實驗中,初始學習率為5e-4,總迭代輪數(shù)(Epoch)為300,每迭代100次,學習率降低5倍,輸入批次的大小(Batch Size)為8,使用RMSProp優(yōu)化算法。關鍵點的檢測準確性,使用評估指標PCK(Percentage of Correct Keypoints)[18]作為標準。在典型的通用人體姿態(tài)估計中,頭部的尺寸被用作PCK確定容忍度的參 考,即PCKh[9],本 文 也 采 用 相 同 的 評 估 標 準PCKh。
為了評估多損失函數(shù)策略和兩級級聯(lián)結構對模型的改進,設置了對比實驗,并保證所有實驗的設置相同。模型1設計為特征提取網(wǎng)絡和兩個hourglass模塊疊加的單輸出模型;模型2設計為一個兩階段級聯(lián)網(wǎng)絡,具有兩個輸出H1和H2;FDPE-Net網(wǎng)絡是一個兩階段級聯(lián)的多輸出網(wǎng)絡,其輸出分別為H1,H2和H3。各模型的預測精度見表2。

表2 不同模型的預測精度(PCKh@0.5)Tab.2 Model prediction accuracy(PCKh@0.5) (%)
從表2可以看出三種模型的預測精度差距主要在肘部和腕部,駕駛員的頭部、頸部以及肩部這類關節(jié)點由于其特征明顯,且不易被完全遮擋,在姿態(tài)估計任務中相對容易檢測。而腕部和肘部三種模型的預測精度有較大差異,主要因為人體的肘關節(jié)和腕關節(jié)的姿態(tài)更加靈活多樣,并且容易出現(xiàn)關節(jié)遮擋的情況。在駕駛員姿態(tài)估計中,絕大多數(shù)的駕駛員都更習慣用右手操作一些與駕駛任務無關的動作,如喝水、調節(jié)導航儀,發(fā)信息等。因此右肘和右腕的關節(jié)點預測是所有任務中最難以檢測的,準確的預測到此類關鍵點的坐標需要將圖片的低級特征與高級語義信息相結合,實現(xiàn)整體與局部的聯(lián)合預測。通過多任務學習和多特征聚合的兩階段級聯(lián)網(wǎng)絡,網(wǎng)絡可以學習到更多的上下文信息,第二階段的網(wǎng)絡可以對難以預測的關鍵點進行修正。另外,關節(jié)點的預測也并非是完全獨立的,當右肘的預測精度提高時,右腕的檢測精度也會隨之上升。
模型2與FDPE-Net網(wǎng)絡的各階段輸出預測精度見圖7,其中肩、肘、腕的預測精度分別表示左右兩個關節(jié)點的平均預測精度。從圖中可以看出,第一階段網(wǎng)絡,由于其網(wǎng)絡深度較淺,對于駕駛員的頭部和頸部這類相對容易檢測到的關節(jié)點可以達到較高的預測精度,而對腕關節(jié)和肘關節(jié)這類難檢測點預測精度較低。在FDPE-Net網(wǎng)絡中,通過使用多損失函數(shù)策略顯著提高了第一階段對腕關節(jié)和肘關節(jié)這類靈活性更大且易遮擋的部位的預測精度,各個任務之間的互相促進,使得網(wǎng)絡的整體精度較模型2有明顯地提升。
模型1的平均預測精度為91.90%;模型2的平均預測精度相比模型1提高了1.60%;而FDPE-Net網(wǎng)絡相比模型1的平均預測精度提高了3.84%,平均預測精度可達95.74%。Borghi等人提出的POSEidon網(wǎng)絡在其實驗室環(huán)境下采集的數(shù)據(jù)集上肩部姿態(tài)估計的平均精度為92.4%;Chun等人提出的NADS-Net網(wǎng)絡是對駕駛艙內的駕駛員和前排乘客進行姿態(tài)估計,關節(jié)點的平均預測精度為89%。本文所提出的FDPE-Net網(wǎng)絡實現(xiàn)了對駕駛員姿態(tài)的精確估計,在測試集上的檢測結果示例見圖8。

圖8 測試集的檢測示例可視化Fig.8 Visualization of detection examples of the test set
駕駛員的駕駛姿態(tài)估計除了需要較高的預測精度外,還需較快的運行速度和較小的算力。本文從模型的參數(shù)量(Parameters)和計算量乘加運 算 次 數(shù)MACC(Multiply Accumulate Opera?tions)來評估模型,各模型的指標評估見表3。FDPE-Net網(wǎng)絡的基本組成是瓶頸狀的殘差結構,為減少網(wǎng)絡的參數(shù)量,提高網(wǎng)絡的運算速度,網(wǎng)絡中的所有殘差結構均采用深度可分離卷積,通過對比實驗,驗證該設計的有效性。

表3 不同模型的指標評估Tab.3 Index evaluation of different models
從表3可以看出本文所設計的模型參數(shù)量和計算量都屬于輕量級網(wǎng)絡。當殘差塊使用普通卷積層時,模型參數(shù)量是深度可分離卷積的2.4倍,計算量是深度可分離卷積的5倍。本文第二節(jié)所描述的模型參數(shù)量僅有0.7 M,計算量207.3 M,精確度可以達到95.74%,可以實現(xiàn)駕駛員駕駛姿態(tài)的實時檢測。
四種對比模型的各關節(jié)點預測精度見圖9,C_2與D_2相比,其預測精度差主要集中在肘部和腕部這類難預測點,由于深度可分離卷積大大的減小了模型的參數(shù)量,模型2網(wǎng)絡結構簡單,不足以學習到的姿態(tài)關節(jié)點的表示。C_3與D_3相比,D_3的預測精度更高,這是由于FDPE-Net網(wǎng)絡在多損失函數(shù)的約束下,C_3的參數(shù)量較大,在訓練中相比D_3更難以學習到最佳參數(shù)。

圖9 不同模型的各關節(jié)點精度Fig.9 Key point prediction accuracy of each model
在本文中,我們提出了一個更加簡潔的輕量型卷積神經網(wǎng)絡(FDPE-Net),用于2D駕駛員的駕駛姿態(tài)的估計。FDPE-Net是以Hourglass為骨干結構的輕量型多特征聚合卷積神經網(wǎng)絡,模型參數(shù)量僅0.7 M,對駕駛員關節(jié)點的平均預測精度可達95.74%。通過設置對比試驗,驗證了兩級級聯(lián)結構和多任務學習策略在本研究中的有效性。此外,本文設計并構建了一個在自然駕駛狀態(tài)下的,人體上半身姿態(tài)估計高質量數(shù)據(jù)集。數(shù)據(jù)集除了包含人體關節(jié)點注釋外,還詳細描述了駕駛員的詳細信息和光照條件,用于減少數(shù)據(jù)集偏差。出于安全考慮,我們的數(shù)據(jù)集僅在車輛靜止狀態(tài)下采集,且采集的數(shù)量有限,一個潛在的優(yōu)化方向是通過合成虛擬數(shù)據(jù)集來擴大數(shù)據(jù)量,實現(xiàn)使用較少的真實數(shù)據(jù)有效的學習網(wǎng)絡。另外,本文的研究基于視頻圖像逐幀的檢測,也可以參考Pavllo等人[19]提出的基于2D關鍵點的時間卷積的完全卷積模型,考慮時間信息(例如光流)。