劉春艷 司夏巖 屈太元 王洋 王健偉






摘要:為滿足用戶對汽車座椅方便性和舒適性的需求,制造商需要考慮駕駛員的人體參數。本文提出一種基于計算機視覺的車內外人體參數自動測量系統。該系統的軟件部分利用了DeepLabv3+進行語義分割,通過對輸入層圖像進行處理,實現對人體的分割和定位。同時,使用OpenPose進行特征點提取和位置回歸,以獲取更精確的人體參數。通過搭建神經網絡模型預測出實際人體參數,并將其與實際理論值進行比對。硬件部分由攝像頭、Arduino和NVIDIA Jetson TX2 NX組成。經測試,受試者10項人體參數的預測值與實際值的平均誤差均小于5%,整體運行時間36秒。這表明該系統具有較高精確度和魯棒性,可以通過計算機視覺技術和神經網絡模型獲取駕駛員的人體參數,并根據這些參數來調節汽車座椅,以提供更好的駕駛體驗和人體舒適性。
關鍵詞:DeepLabv3+;OpenPose;人體參數;汽車座椅
中圖分類號:TP391? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)35-0076-04
開放科學(資源服務)標識碼(OSID)
在汽車設計領域,人體尺寸數據對于實現乘員艙布置設計和校核非常重要。這些數據是進行H點設計、測量裝置及界面設計的基礎,并為進出車門的方便性、乘員乘坐空間設計以及座椅自動調整等人機工程設計提供數據參考。長時間駕駛汽車若不能保持科學、舒適的坐姿,會導致駕駛人員的不適感加劇,并可能對其椎骨、椎間盤、肌腱、韌帶等部位造成損傷,甚至影響身體健康。為了達到健康舒適的效果,在設計汽車時制造商更多地考慮汽車是否適合使用者的人體參數。我國在1988年制定了GB10000—88《中國成年人人體尺寸》標準,提供了我國成年人人體裸體尺寸的基礎數據,并按照人機工程學的要求進行設計。然而,目前人體特征已經發生了較大變化,現行的人體數據已經無法滿足設計需求,也不能實時,采集人體數據并對座椅進行舒適性調整。因此,本文提出了一種基于神經網絡的面向汽車座椅的人體參數采集與分析系統。該系統采用非接觸式測量方法對車外和車內的人體參數進行測量,可以為汽車座椅設計提供更準確的人體參數數據。
1 系統實現原理及步驟
該系統使用PyTorch框架,通過DeeplabV3+進行語義分割來獲取被測人體的輪廓,使用OpenPose進行人體姿態估計來獲取人體關鍵點。通過延展人體軀干關鍵點的連線與人體輪廓邊緣的交點,計算所需尺寸的歐氏距離。最后,使用事先采集的大量人體數據集,利用最小二乘法將歐氏距離與實際尺寸進行映射,得到像素-厘米比例尺。
系統包括以下幾個主要部分:
1) 對系統所需的軟件進行可行性評估與測試,確保系統能夠正常運行。
2) 采集大量的人體數據集,包括需要進行后續處理的圖片和真實的人體尺寸,用于系統訓練和驗證。
3) 部署DeeplabV3+和OpenPose所需的系統環境,包括相關的庫和依賴項。
4) 對前期采集的數據集進行語義分割和人體姿態估計,從中獲取歐氏距離信息。
5) 使用最小二乘法將歐氏距離映射到實際尺寸,得到像素-厘米比例尺。
6) 進行性能測試和調優,確保系統的準確性和穩定性。
2 DeepLabv3+模型介紹及其應用
DeepLabv3+是一種基于深度卷積神經網絡的語義分割算法,采用了編碼器-解碼器結構。該算法可以對輸入的人體圖像進行像素級別的分類,輸出二值化的人物輪廓。模型包含3部分:首先是一個預訓練的特征提取器(通常是一個標準的卷積神經網絡),然后是一個空洞卷積模塊用于特征增強,最后是一個解碼器用于產生像素級別的分類結果。其中,空洞卷積模塊是DeepLabv3+的核心部件,通常被稱為“ASPP”(Atrous Spatial Pyramidal Pooling)。
在ASPP中,使用一些不同的膨脹率(或稱為空洞率)的卷積核來捕獲不同的尺度信息。具體來說,假設ASPP使用了m個不同的膨脹率,對于每個膨脹率,使用一個大小為k×k的卷積核來進行卷積操作,其中k是卷積核的大小,通常設置為3或5。因此,ASPP的輸出結果是m個不同的特征映射,然后將這些特征映射合并,并使用一個1×1的卷積核進行特征融合,最終得到全局感受野的特征映射。
在解碼器中,使用一個上采樣(或稱為反卷積)模塊來將特征圖恢復到與輸入圖像相同的分辨率,然后使用一個小的卷積核對這些特征進行分類,得到像素級別的分類結果。在輸出結果中,像素級別分類的值為1則表示該像素屬于人體輪廓,否則為0。
DeepLabv3+公式描述如下:
輸入: I ∈ R^H×W×3
特征提取:f(I) ∈ R^{H'×W'×C}
ASPP:F ∈ R^{H'×W'×(m×C)}
特征融合:M ∈ R^{H'×W'×C}
解碼器:P ∈ R^{H×W}
其中,H、W、C分別表示輸入圖像的高度、寬度和通道數;H'、W'表示特征提取器輸出特征圖的大小(通常比輸入圖像較小);m是ASPP模塊中不同膨脹率的數量。最終輸出為二值化的人物輪廓P,形狀與輸入圖像相同,每個像素的值為0或1,表示該像素是否屬于人體輪廓。
3 OpenPose算法及其應用
OpenPose算法是一種基于卷積神經網絡的人體姿態估計算法。它通過檢測和關聯人體關鍵點來實現對人體姿態的估計,使用了多階段的卷積神經網絡來提取特征,并生成關鍵點的置信度圖和連接關系的中間矢量。
3.1 關鍵點檢測
在關鍵點檢測階段使用了一個多階段的卷積神經網絡。給定輸入圖像I,該階段旨在預測每個關鍵點的位置。
輸入:圖像 I
輸出:關鍵點置信度圖 S 和中間矢量 V
階段1(Paf處理):z = ConvolutionalLayers(I)
S = confidenceMaps(z) # 每個關鍵點的置信度圖
V = Pafs(z) # 關鍵點之間的中間矢量(連接關系)
階段2(關鍵點再定位): f = FeaturesConcatenation(I, S, V)
S' = confidenceMaps(f) # 更新的置信度圖
V' = Pafs(f) # 更新的中間矢量
3.2 姿態關聯
在關鍵點檢測階段得到置信度圖和中間矢量后,OpenPose算法使用基于貪婪算法的姿態關聯方法來將檢測到的關鍵點進行匹配,得到每個人的完整姿態信息。
輸入:關鍵點置信度圖 S' 和中間矢量 V'
輸出:人體的完整姿態信息
姿態關聯:K = keypointsAssociation(S', V') # 關鍵點的匹配
P = poseEstimation(K) # 姿態估計
式中,ConvolutionalLayers表示卷積層,confidenceMaps表示置信度圖生成模塊,Pafs表示連接中間矢量生成模塊,FeaturesConcatenation表示特征融合模塊,keypointsAssociation表示關鍵點關聯模塊,poseEstimation表示姿態估計模塊。
4 方法流程介紹
4.1 人體參數的獲取
人體參數測量系統大致分為5步:①輸入層圖像的獲取:運用相機模塊獲得輸入層圖像,在拍攝時,相機距離被測者2 m,距離地面高度1.8 m。通常人體參數測量將運用正面的人體圖像,但是為了更好的訓練模型,除正面站立之外,還準備了側面站立、側面平舉、側面坐姿、車內側面和車內正面(距離60 cm) 作為輸入層圖像,具體如圖3(a)~(g)所示,共拍攝500人的圖像作為訓練集。
4.2 圖像語義分割
采用DeepLabv3+網絡模型[4]進行語義分割:如圖4所示,首先使用DeepLabv3+模型對作為輸入層圖像的圖3(a)進行語義分割,將輸入層圖像的人物與背景分割,提取出分割得到的人物特征層圖4(a)并儲存,對圖3(a)進行二值化處理后得到圖4(b),再對二值化圖像進行輪廓提取得到圖4(c),最后將輸入層圖像3(a)與二值化處理得到的圖像4(b)進行邏輯與運算得到最終提取出的人物圖像,如圖4(d)所示。
4.3 利用OpenPose算法提取人體關鍵點
由于OpenPose2019具有較高的可靠性和魯棒性,計算量較低,更適合部署在移動設備上。因此,在本項目中采用OpenPose2019作為關鍵點檢測,以下簡稱為OpenPose。將獲取的人體圖像輸入OpenPose算法檢測后,得到人體關鍵點信息,對圖3處理后的圖像如圖5所示。
4.4 人體參數值測量
人體身高的像素距離,即人體的腳部最低點與人體頭部最高點之間的垂直距離,臀寬為臀部關鍵點與人體邊緣兩個交點的長度,坐高為人體處于坐姿狀態下頭部最高點與腳步最低點之間的距離,膝高為膝蓋上面到腳底的距離,眼高為眼睛到臀與座椅接觸面之間的距離,膝高、眼高、大臂長、小臂長、大腿長、小腿長的計算方法相同,此處以小臂為例,如圖6所示,假定OpenPose輸出的左肘、左腕的坐標分別為[xE,yE]、[(xW,yW)],則左肘的垂線與左腕水平線的交點坐標為[(xE,yW)],利用歐幾里得距離,計算左小臂的像素長度如式(1) 所示,同理可計算出其他參數值。
[L=(xE-xW)2+(yE-yW)2]? ? (1)
4.5 利用神經網絡進行人體參數預測
本文的多層感知機神經網絡中采用的ReLU激活函數是一個分段線性函數,當前節點的輸入為正時,經過ReLU函數將直接激活輸出,否則輸出為零。這樣做相比于Sigmoid和Tanh用指數方式去近似零輸出,使用max函數能夠輸出真零值,而看似更像線性函數的特點也能有效避免訓練網絡時存在梯度消失的問題,促進處在深層的神經網絡仍能接收到有效梯度信息繼續進行學習。在進行人體圖像回歸至各節點的過程中,需要引入中間層的損失函數loss,本文設計的方法采用的是均方損失函數,如式(2) 所示,以此來保證一定深度的神經網絡進行訓練。
[loss(xi,yi)=(xi-yi)2]? ? (2)
5 系統的運行與測試
5.1 操作流程
為方便使用及商業化,將人體參數采集系統部署到NVIDIA Jetson TX2 NX[5]上,然后用Arduino[6]進行通信進而控制座椅,具體流程如下:
連接攝像頭:首先,將攝像頭連接到Jetson TX2 NX板的適當接口上。確保攝像頭與Jetson TX2 NX能夠正常通信。
安裝所需軟件:在Jetson TX2 NX上安裝適當的操作系統和驅動程序。確保操作系統和驅動程序與所使用的攝像頭兼容。
配置編程環境:設置Jetson TX2 NX的開發環境,例如安裝Python和開發所需的其他庫和工具。
燒入代碼:將測試好的代碼燒錄。
與Arduino通信:將Arduino連接到Jetson TX2 NX,并使用串口通信或其他通信協議與其進行通信。
參數分析和控制座椅:根據人體參數的處理結果控制座椅電機,實現座椅的運動。
測試和調試:將所有組件連接在一起測試系統的功能。確保代碼能夠正確地讀取攝像頭數據,與Arduino進行通信,并使座椅根據人體參數進行控制。
5.2 誤差分析
為驗證本系統的準確性,隨機選取一人進行測試。被測者的真實值:身高、肩寬、大臂長、小臂長、大腿長、小腿長、膝高、眼高、臀寬、坐高均由專業測量師測量,進而保證真實值的準確性。具體數據如表1所示。
6 結論
該套面向汽車座椅的人體參數采集與分析系統的開發讓汽車制造商能夠提供更加個性化和舒適的駕駛體驗。該系統不僅可以準確地測量駕駛員的人體參數,還可以根據這些參數來控制汽車座椅,以提供更加貼合駕駛員需求的乘坐體驗。隨著汽車工業的飛速發展,這種基于計算機視覺的人體參數測量系統為汽車制造商提供了一個切實可行的解決方案。它將有助于提高整個汽車行業的競爭力和創新水平,同時也能夠極大地改善駕駛員的舒適性和健康狀況。因此,這種系統具備廣泛應用前景和市場潛力。
參考文獻:
[1] 萬樂玲.基于圖像的人體尺寸測量方法及系統設計[D].南京:南京信息工程大學,2022.
[2] 李夢荷,許宏吉,石磊鑫,等.基于骨骼關鍵點檢測的多人行為識別[J].計算機科學,2021,48(4):138-143.
[3] D’ANTONIO E,TABORRI J,PALERMO E,et al.A markerless system for gait analysis based on OpenPose library[C]//2020 IEEE International Instrumentation and Measurement Technology Conference (I2MTC).Dubrovnik,Croatia.IEEE,2020:1-6.
[4] ZAFAR M,AMIN J,SHARIF M,et al.DeepLabv3+-based segmentation and best features selection using slime mould algorithm for multi-class skin lesion classification[J].Mathematics,2023,11(2):364.
[5] 張曉華.基于Jetson TX2的老人跌倒監護設計[J].現代電子技術,2022,45(20):45-48.
[6] 鄧梓洛,冼進.基于Arduino災難智能遠程探測車設計[J].電子設計工程,2023,31(9):191-195.
【通聯編輯:唐一東】