曹立波 趙俊杰 陳凱 戴麗華 朱李平 陶強
(1.湖南大學,汽車車身先進設計制造國家重點實驗室,長沙 410082;2.長沙立中汽車設計開發(fā)股份有限公司,長沙 410205)
為降低兒童獨自長時間留在密閉的車內(nèi)發(fā)生危險的可能性,中國新車評價規(guī)程(China-New Car Assessment Program,C-NCAP)將在2025 年版管理規(guī)則中加入兒童存在檢測測試項目,為安裝該裝置的車輛提供加分項。
檢測車內(nèi)是否滯留兒童需要借助傳感器來實現(xiàn),現(xiàn)有技術大多使用紅外熱傳感器、電容傳感器等。楊波等[1]通過紅外熱傳感器檢測車內(nèi)是否存在兒童,但在車內(nèi)溫度高于50 ℃時傳感器會出現(xiàn)“高溫致盲”現(xiàn)象;王潤民等[2]利用電容傳感器,將人體等效為電容,根據(jù)電容的改變判斷是否有人滯留在座位上,但難以特異性地區(qū)別人體和其他物體。Levi[3]提出了一種神經(jīng)網(wǎng)絡結構用于進行年齡段分類,檢測速度較快,但當車內(nèi)遺留人員的面部所在平面與相機所在平面的夾角大于40°時,無法檢測到人臉,也無法提取面部特征。
基于深度傳感器中深度信息的肢體尺寸測量技術可以排除上述情況的干擾,檢測準確率較高,有較強的實用價值,故本文提出基于肢體尺寸的車內(nèi)遺留兒童檢測方法。首先通過OpenPose 算法檢測車內(nèi)遺留人員身體的9 個骨骼點,得到每個骨骼點在紅外圖上的像素坐標,再利用相機內(nèi)參和骨骼點的深度信息求得每個骨骼點在深度相機坐標系下的空間坐標值,通過求得所需肢體兩端骨骼點間的歐氏距離獲得肢體尺寸,最后利用最小二乘法擬合出肢體尺寸與人體體積的關系,利用人體體積與設定的閾值的關系判斷其為成人或兒童。
考慮到乘員的自救能力,本文將13 歲及以下年齡段的乘員劃分為兒童,其余年齡乘員劃分為成人。
本文采用TOFIR 深度相機進行圖像深度數(shù)據(jù)的采集。TOFIR 深度相機通過紅外發(fā)射器向目標連續(xù)發(fā)射紅外脈沖,由傳感器接收返回的脈沖信號,通過測量紅外脈沖發(fā)射及被接收的時間差,計算得到相機與被拍攝物體的距離以產(chǎn)生深度信息,從而得到RGB 圖片、紅外圖片及深度圖片。
本文數(shù)據(jù)采集對象為20 位成人和20 位兒童,采集的數(shù)據(jù)集為視頻數(shù)據(jù)集,每個視頻的錄制時長為5 min 左右,視頻幀速率為15 幀/s。在視頻錄制過程中,兒童和成人單獨或兩兩一組坐在汽車的后排座椅上,為了確保視頻數(shù)據(jù)集的真實性,要求試驗對象在車內(nèi)自由動作,數(shù)據(jù)采集示例如圖1 所示。
圖1 視頻數(shù)據(jù)采集示例
為使試驗結果具有可比對性,在錄制數(shù)據(jù)集前采集了每個試驗對象的真實肢體尺寸。具體采集方法為在一面干凈的墻上水平和垂直方向分別粘貼最小刻度為1 mm的標尺,測量時要求試驗對象背靠且緊貼墻壁,如圖2所示。
圖2 測量試驗對象的肢體尺寸
本文采用OpenPose算法進行人體骨架的識別[4]。OpenPose算法采用自下而上的人體骨骼算法,分為2個步驟,先通過卷積姿態(tài)機(Convolutional Pose Machines,CPM)檢測圖片中所有的人體骨骼點,再通過骨骼點親和域(Part Affinity Fields,PAFs)算法將同一試驗對象的所有骨骼點聚類在一起并進行連接。
本文使用的訓練數(shù)據(jù)集是COCO 數(shù)據(jù)集,共有18 個骨骼關鍵點,如圖3 所示。OpenPose 算法由2個分支組成,算法模型結構如圖4 所示。模型的輸入為RGB 彩色圖片,通過特征提取主干網(wǎng)絡VGG-19 提取輸入圖片的特征并輸入到2 個平行的分支結構中。第1個分支用來訓練骨骼點的坐標位置和置信度,輸出包含人體骨骼點位置信息的熱力圖和置信度;第2 個分支用于訓練人體骨骼點的親和度,輸出為每2個骨骼點間的親和度,進一步連接親和度最高的骨骼點,形成肢體。在訓練階段,每個特征圖都利用損失函數(shù)計算損失值,再根據(jù)損失結果對前面的網(wǎng)絡結構進行反饋,不斷更新網(wǎng)絡參數(shù),網(wǎng)絡一直進行循環(huán),直至收斂。
圖3 人體18個骨骼點
圖4 OpenPose算法結構
本文試驗的數(shù)據(jù)采集使用由相機輸出的3 種類型圖片,分別為尺寸為640×480 的RGB 圖片、尺寸為240×240 的紅外圖片及尺寸為240×240 的深度圖片??紤]到RGB 圖的成像質(zhì)量受光照條件影響較大,在過亮或過暗條件下,OpenPose 算法在RGB 圖上的骨骼點檢測效果很差。但紅外圖的成像質(zhì)量不受外界光照條件的干擾,OpenPose算法在該類圖上檢測效果良好,因此,本文骨骼點檢測算法的輸入數(shù)據(jù)為尺寸為240×240 的紅外圖。
以紅外圖片作為輸入,經(jīng)過OpenPose 神經(jīng)網(wǎng)絡,輸出18 個骨骼點的像素坐標。在紅外圖和深度圖尺寸一致的情況下,將紅外圖片上骨骼點的像素坐標投影到深度圖上,即可獲得該像素點在該相機坐標下的深度信息。進一步獲取相機內(nèi)參fx、fy、cx、cy,其中fx為相機的水平焦距,fy為相機的垂直焦距,cx為相機在水平方向上的偏移量,cy為相機在垂直方向上的偏移量。將所需骨骼點的像素坐標(x′,y′)轉化為相機坐標系下的空間坐標(x,y,z):
式中,z為骨骼點與相機平面的距離,通過相機直接測得。
利用歐氏距離公式即可求得任意兩骨骼點之間的空間距離,即人體的肢體尺寸。
本文利用Python 語言書寫代碼,獲取了視頻數(shù)據(jù)集中試驗對象每一幀各肢體的測量長度,并將其記錄在表格中,繪制試驗對象每一視頻幀的肩寬測量結果散點圖,如圖5 所示。由圖5 可知,測得的該試驗對象的真實肩寬為0.31 m,允許誤差范圍為0.26~0.36 m。
圖5 幀數(shù)-肩寬散點圖
從圖5 中可以看出,由于車內(nèi)人員的自由活動以及相機自身存在的誤差,相機測量值與實際值不完全一致,且當試驗對象身體被部分遮擋或相對于相機有較大偏角時,肩寬的測量結果與真實值的差值較大。因此,需剔除不合理的肢體尺寸數(shù)據(jù)以確保試驗結果的準確性。
在將圖片中骨骼點的像素坐標轉化為相機坐標系下的空間坐標過程中,發(fā)現(xiàn)某些骨骼點的深度為0 mm,如圖6 所示。出現(xiàn)上述現(xiàn)象的原因是某些骨骼點映射到了車內(nèi)座椅上,而試驗車輛的座椅為黑色,TOFIR 深度相機發(fā)射的紅外光到達黑色座椅上時被吸收導致紅外光無法反射,因此黑色座椅上所有點的深度值均為0 mm。
圖6 骨骼點深度值為0 mm的情況示例
考慮到實際情況下,人體骨骼點與相機的距離為0 mm的概率可以忽略不計,故可直接剔除此類數(shù)據(jù)。
試驗過程中發(fā)現(xiàn),當試驗對象某個骨骼點被遮擋且遮擋面積不大時,該骨骼點仍會被識別,如圖7所示。在該情景中,試驗對象左手遮擋了右肘關節(jié)點,但右肘關節(jié)點仍被骨骼點檢測算法推理獲得。根據(jù)紅外相機的特性,該肘關節(jié)點測量的深度結果為左手手背的深度,會造成該骨骼點在相機坐標系下的坐標位置與真實的坐標位置不一致,從而進一步影響與該骨骼點相關的肢體尺寸的計算。
圖7 骨骼點被遮擋情況舉例
針對此類情況,本文將試驗對象的肢體均視為一個向量a,向量兩端的2 個骨骼點分別為A(x1,y1)、B(x2,y2),在向量中心取一點C(x3,y3),將向量a均分為2個向量b、c,二者的夾角為:
在骨骼點A、B均無遮擋的情況下,向量b、c之間的夾角較?。欢鳤、B中至少有一個被遮擋時,向量b、c之間的夾角較大,如圖8所示。通過大量數(shù)據(jù)分析,本文選取向量b、c夾角的閾值為20°,即夾角大于20°時,認定該肢體兩端的2個骨骼點中至少有一個被遮擋。
圖8 向量夾角的計算
當試驗對象處于相機視角邊緣位置且僅部分肢體在視圖內(nèi)時,OpenPose 算法會將視圖內(nèi)的部分肢體視為完整肢體,仍然推理出了該肢體上的所有骨骼點,如圖9 所示。從圖9 中可以看出,該試驗對象的左手只有部分在視圖中,該情況下算法推理出的左手腕骨骼點位置錯誤,因此,該情況下求得的錯誤肢體尺寸也需剔除。
圖9 骨骼點定位錯誤情況舉例
本研究選取9 段肢體作為研究對象,如圖10 所示。由于鼻子骨骼點是非固定的,鼻子和頸部間的肢體尺寸也是可變的,故該肢體尺寸不用于計算與其他肢體尺寸的比值。
圖10 人體骨架信息
考慮到人體的形態(tài)和體態(tài)雖各不相同,但每個人相同的2 個肢體間的比值是相似的,人體尺寸數(shù)據(jù)相關性的研究[5]驗證了這一觀點。通過查閱中國成年人人體尺寸[6]和中國未成年人人體尺寸[7]的相關文獻,選擇其中的4 個年齡段,并采用每個年齡段的肢體的平均值作為該年齡段的標準,如表1 所示。
表1 各年齡段肢體尺寸平均值
計算不同年齡段各肢體間的比值,然后選擇需要的肢體比值并賦予其閾值范圍,如表2 所示。首先,將每一幀中肢體3作為第一置信度的肢體,計算肢體3與其他肢體的尺寸比值,如果超過1/3的比值處于正常閾值范圍,則認定該視頻幀下測得的肢體3 的長度合理,同時,與肢體3 的比值在合理閾值范圍內(nèi)的肢體也認定為合理,輸出該視頻幀下所有合理的肢體尺寸。如果肢體3與其他肢體的比值在設定閾值范圍內(nèi)的數(shù)量少于比值總數(shù)量的1/3,則認為肢體3 的測量尺寸不合理并將其舍棄,進一步選擇肢體4 作為第一置信度的肢體,重復上述操作判斷該視頻幀下測量得到的肢體4 的尺寸是否合理,若合理,輸出肢體4 的尺寸及與肢體4 的比值在合理閾值范圍內(nèi)的所有肢體尺寸,否則舍棄肢體4 的測量尺寸,進一步選擇肢體6作為第一置信度的肢體,重復上述操作,若肢體6 的尺寸仍然被判斷為不合理,則舍棄該視頻幀下的所有肢體尺寸,進入視頻下一幀重復上述操作。
表2 肢體比值的合理區(qū)間
在經(jīng)過上述3類后處理后,由合理邊界構成的合理區(qū)間內(nèi)的數(shù)據(jù)量與總數(shù)據(jù)量的占比由89.00%提升到97.91%,標準差由0.110 8 m 降低到0.036 3 m,如圖11所示,該試驗對象肩寬測量值的準確性大幅提高。
圖11 不同視頻幀肩寬散點圖處理前、后對比
在判斷車內(nèi)遺留乘員是成人或兒童的過程中,如果僅利用人體上的某一個肢體,判斷結果受該肢體的影響較大,即魯棒性不強。本文先對每一幀所需的9 段肢體進行前文中的后處理操作,剔除測量結果準確性低的肢體,利用剩余的所有肢體數(shù)據(jù)擬合出車內(nèi)乘員的體積,根據(jù)體積的閾值判斷車內(nèi)被遺留的乘員中是否存在兒童。
在進行肢體和體積的擬合時,本文首先在HumanShape 網(wǎng)站上下載人體模型共285個,如圖12所示。模型的身高范圍為1 000~1 900 mm,身體質(zhì)量指數(shù)(Body Mass Index,BMI)范圍為16~28 kg/m2。每個模型的肢體尺寸可以從HumanShape 網(wǎng)站上直接獲取,體積可以通過代碼求得,進一步通過最小二乘法擬合出人體模型的肢體尺寸與體積之間的關系。
圖12 標準人體模型
人體的體積與身高存在線性相關關系[8],因此本文以肢體尺寸作為自變量,人體體積V作為因變量,建立多元一次回歸方程,利用最小二乘法進行擬合,考慮到肢體的對稱性,取對稱肢體的平均值進行計算,結果為:
式中,t1為肢體2(半肩)的尺寸;t2為肢體3(上臂)的尺寸;t3為肢體4(前臂)的尺寸;t4為肢體9(頸部到髖)的尺寸。
本文選取體積0.04 m3作為區(qū)分成人和兒童的閾值,即將通過本文算法測得的體積不大于該閾值的乘員認定為兒童,大于該閾值的乘員認定為成人。
本文提出了一種基于TOFIR 深度相機的人體骨骼尺寸校正算法,并以人體骨骼尺寸為自變量,人體體積為因變量建立人體多元線性回歸模型,最后將其應用于車內(nèi)遺留兒童的檢測。試驗結果表明:帶有深度信息的紅外圖片相比于普通紅外圖片更能還原真實情況。基于帶有深度信息的紅外圖片和OpenPose 算法測量出的肢體尺寸,在經(jīng)過本文提出的后處理方法剔除誤差較大的尺寸后,可以根據(jù)乘員體積準確識別出車內(nèi)是否存在兒童,且測量結果不受到光照條件及車內(nèi)乘員行為動作的影響,具有較強的魯棒性。
由于骨骼尺寸校正算法設計得較為復雜,算法處理時間較長,目前該算法的運行速度還有待提升,后續(xù)可以進一步簡化骨骼尺寸校正算法,在略降低算法準確率的情況下提高其推理速度,以滿足實時性要求。