馬子越,彭瑞陽,孫曉晗,王鈺澤,李欣悅,孔祥勇
(上海理工大學健康科學與工程學院,上海 200093)
20 世紀以來,人體姿態(tài)估計作為計算機視覺技術(shù)中一個具有重要研究意義的領域,已逐漸融入人們的生活當中。例如,無人駕駛環(huán)境中對行人的姿態(tài)估計、電影和視頻制作中動作特效的設置等。此外,該技術(shù)在醫(yī)療健康領域發(fā)展前景和應用空間更為廣闊。
人體姿態(tài)估計是從處理后的圖像或視頻中定位與提取人體關(guān)鍵點,進而完成對人體關(guān)節(jié)和肢干的重構(gòu)。并且在環(huán)境改變、人數(shù)增加、對象互動、位置交叉、空間遮擋、大小不一等多種不確定的條件下均具有較高的適應性。
2017 年,Zhe 等[1]提出多人實時關(guān)鍵點的OpenPose 算法用于估計人體動作、面部表情、手指運動等,作為首個基于深度學習的姿態(tài)估計應用,推動了人體姿態(tài)估計發(fā)展。
根據(jù)維度深度信息,可將主流姿態(tài)估計算法分為2D姿態(tài)估計和3D 姿態(tài)估計。其中,3D 姿態(tài)估計對攝像頭、傳感器等設備要求較高。該方法常通過微軟Kinect 攝像頭捕捉人體25 個骨骼關(guān)鍵點,以獲得關(guān)鍵點的空間三維坐標。然而,2D 姿態(tài)估計相較于3D 姿態(tài)估計而言,前者的發(fā)展更為迅速,目前已大量應用于多種綜合場景。
根據(jù)圖像中檢測的目標人數(shù)又可將2D 姿態(tài)估計分為單目標人體姿態(tài)估計和多目標人體姿態(tài)估計。相較于單目標人體姿態(tài)估計,多目標人體姿態(tài)估計需要增加相應的算法以解決被檢測目標對象空間位置不確定、實際數(shù)量未知的問題。目前通常會選擇自頂向下(Top-down)或自底向上(Bottom-up)的方法。其中,自頂向下方法“先人后點”,精度較高;自底向上方法“先點后人”,速度較快。本文選取了部分使用經(jīng)典人體姿態(tài)估計算法的文章,并按照發(fā)表時間進行了整理分類,具體數(shù)據(jù)如表1所示。
Table 1 Some classical algorithms for human pose estimation表1 人體姿態(tài)估計的經(jīng)典算法部分列舉
經(jīng)典算法主要包括自底向上或自頂向下、單目標或多目標、單階段或多階段檢測算法。
1.2.1 自底向上或自頂向下方法
該方法目的在于構(gòu)建最優(yōu)關(guān)鍵點檢測路徑。Chen等[2]提出的級聯(lián)金字塔網(wǎng)絡結(jié)構(gòu)(Cascaded Pyramid Network,CPN)和Xiao 等[3]提出的Simple Baselines 算法均采用自頂而下的檢測方法進行多人關(guān)鍵點估計。其中,CPN 網(wǎng)絡對每一個區(qū)域框中的人體關(guān)鍵點進行回歸處理,輸出的關(guān)鍵點準確率較高;Simple Baselines 則較為簡單地構(gòu)造一個實現(xiàn)2D 到3D 人體關(guān)鍵點的回歸過程神經(jīng)網(wǎng)絡。
1.2.2 單目標檢測算法
該類方法以Wei 等[4]提出的卷積姿態(tài)機(Convolutional Pose Machines,CPM)和Newell 等[5]提出的堆疊沙漏網(wǎng)絡結(jié)構(gòu)(Stacked Hourglass Networks,SHN)為基礎。其中,CPM 算法基于順序化全卷積網(wǎng)絡結(jié)構(gòu),將深度學習應用于表達圖片的特征和空間信息,并在每一個階段都添加了中間監(jiān)督訓練環(huán)節(jié),在確保處理精度的同時又處理了各關(guān)鍵點之間的遠距離關(guān)系;SHN 算法則表達了多尺度的空間信息,先對圖像下采樣,再上采樣,然后加入中繼監(jiān)督訓練預測損失,實現(xiàn)了對圖片所有尺度下的信息采集和各種空間關(guān)系的識別。隨后,Newell 等[6]在堆疊沙漏基礎上提出了聯(lián)合嵌入算法(Associative Embedding),生成每個關(guān)節(jié)點的檢測熱圖和聯(lián)合嵌入預測標簽,該算法解決了多階段人體姿態(tài)估計不連續(xù)問題。
1.2.3 多目標檢測算法
Insafutdinov 等[7]提出ArtTrack 算法,通過簡化關(guān)節(jié)模型圖以加快識別過程,利用前饋卷積網(wǎng)絡承擔大部分計算量,在時間和空間雙維度上實現(xiàn)了多人姿態(tài)估計。Fang等[8]提出區(qū)域多人姿態(tài)檢測(Regional Multi-Person Pose Estimation,RMPE)較好地解決了區(qū)域框不精確的問題。Kocabas 等[9]提出基于姿態(tài)殘差網(wǎng)絡的多人姿態(tài)估計(Multi-Person Pose Estimation using Pose Residual Network,MultiPoseNet)算法處理姿態(tài)識別中的人檢測、關(guān)鍵點檢測、人分割和姿態(tài)估計4 大問題,首先通過兩個相互獨立的網(wǎng)絡分別完成圖片中人體和人體關(guān)鍵點檢測,然后利用殘差網(wǎng)絡進行聚類分析,以保證較高的處理精度和性能。Andriluka 等[10]提出多人姿態(tài)估計和跟蹤(Multi-Person Pose Estimation and Tracking,PoseTrack)算法,該算法受語義分割的啟發(fā)改進了OpenPose 模型的一些缺陷,支持在單個公式中聯(lián)合建模,但估計踝關(guān)節(jié)和腕關(guān)節(jié)的性能有所降低。He等[11]提出Mask R-CNN 算法,增加了一個分支為各目標生成預測分割掩碼便于后期進行實例分割、姿態(tài)估計,但該算法運算速度較慢。Papandreou 等[12]提出遠程方法調(diào)用(G-Remote Method Invocation,G-RMI)算法,該算法通過引入熱圖—偏移聚合方法提取人體關(guān)鍵點。
1.2.4 多階段檢測算法
Li 等[13]提出多階段人體姿態(tài)估計算法(Multi-stage Pose Estimation Network,MSPN)和Qi 等[14]提出的脈沖神經(jīng)網(wǎng)絡(Spiking Neural Network,SNN)均為多階段網(wǎng)絡。其中,通過MSPN 優(yōu)化單階段結(jié)構(gòu),將相鄰階段的特征相互聚合,采用多分支監(jiān)督管理方式優(yōu)化結(jié)果;SNN 算法相較于卷積神經(jīng)網(wǎng)絡降低了算法的能量消耗,但容易發(fā)生過激活或欠激活現(xiàn)象,導致準確度下降。
為了解決上述問題,Pishchulin 等[15]提出了線性規(guī)劃建模的DeepCut 算法,但該算法會導致計算量增加。Insafutdinov 等[16]對這一方法進行改進后提出了DeeperCut算法,通過壓縮待選節(jié)點數(shù)量,基于各節(jié)點間的距離排查重要節(jié)點是否存在重復,以減少算法的時間損耗。Sun等[17]提出高分辨率網(wǎng)絡結(jié)構(gòu)(High-Resoultion Net,HRNet),通過跨子網(wǎng)絡多尺度融合并聯(lián)網(wǎng)絡,使算法能夠持久保持高分辨率特征工作,提升了姿態(tài)識別的精確度。Cheng 等[18]提出Higher HRNet 算法解決了多人姿態(tài)估計人物尺度變化的影響,相較于HRNet 分辨率更高,通過結(jié)合多分辨率監(jiān)督和多分辨率聚合,能夠精準定位小型人體的關(guān)鍵點。Kreiss 等[19]使用部分強度域(Part Intensity Field,PIF)和部分親和域(Part Association Field,PAF)預測關(guān)鍵點的位置及關(guān)系,使算法在低分辨率、多人數(shù)、場景擁擠混亂等情況下仍具有良好的檢測效果。Cai等[20]提出殘差階梯網(wǎng)絡(Residual Steps Network,RSN)將相同空間大小的內(nèi)部特征進行聚合,使每一個殘差階梯網(wǎng)絡的基本單元(Residual Steps Block,RSB)利用內(nèi)部特征間信息進行準確定位。Zhang 等[21]提出分布感知的關(guān)鍵點坐標表示法(Distribution-Aware coordinate Representation of Keypoints,DARK),通過編碼關(guān)鍵點坐標,提升算法的性能。Huang等[22]提出無偏數(shù)據(jù)處理(Unbiased Data Processing,UDP)方法,采用單位長度代替像素大小度量圖像,在編碼、解碼過程中解決了統(tǒng)計誤差,進一步提升了算法的準確度。
在實際場景中,Kocabas 等[23]提出了基于背景更新的運動目標檢測(Visual Background Extractor,ViBe)算法,該算法在保證像素模型時間和空間連續(xù)性的情況下,能夠?qū)σ曨l中的人體進行姿態(tài)估計。Zhang 等[24]提出人體分割算法(Pose2Seg),利用像素分割技術(shù)將人體姿態(tài)估計應用于實際中。Zhang 等[25]提出4D 關(guān)聯(lián)圖模型(4D Association Graph),利用圖網(wǎng)絡對人體姿態(tài)進行實時捕捉,構(gòu)建一種可同時處理時間、空間等多維度的4D 關(guān)聯(lián)圖以優(yōu)化實時捕捉的關(guān)節(jié)點。
OpenPose 在多人圖像中主要使用了自底向上的方法對人體姿態(tài)進行估計,該方法不會隨著檢測人數(shù)增加而影響檢測速度,部分親和域技術(shù)可形成局部關(guān)聯(lián)場,確定某些姿勢是否隸屬于同一個人,從而建立人體各關(guān)鍵點之間的聯(lián)系,以提高檢測精度。
圖1 為OpenPose 實現(xiàn)人體姿態(tài)估計的流程。其中,圖(a)為輸入,圖(b)為身體部分位置的二維置信度映射圖集S,圖(c)為部分親和的二維向量場集L,圖(d)為人體關(guān)鍵點。
Fig.1 Openpose human posture estimation process圖1 OpenPose人體姿態(tài)估計流程
Fig.2 Key point of human skeleton圖2 人體骨骼關(guān)鍵點
如圖2 所示,OpenPose 提供了18 個人體關(guān)鍵點,設置了兩分支、多階段結(jié)構(gòu)的CNN 框架。其中,第一分支預測置信圖,輸出圖像特征;第二分支預測部分親和域,輸出空間特征。同時,采用多級級聯(lián)、連續(xù)重復及在每個階段設置中間監(jiān)管損失函數(shù)的方式優(yōu)化預測結(jié)果。
傳統(tǒng)OpenPose 模型通?;赩GG-19 網(wǎng)絡,使用標準卷積提取底層特征。然而,深度可分離卷積(Depthwise Separable Convolutions,DSC)擁有更輕量級的參數(shù),可提升運行速度。Sandler 等[26]提出基于深度可分離卷積的計算機視覺神經(jīng)網(wǎng)絡(MobileNet)模型,在小幅度降低精度的情況下,大幅度減少了模型計算量。文獻[27-31]將深度可分離卷積結(jié)構(gòu)引入OpenPose 模型中,對底層特征提取方式進行優(yōu)化,通過減少單個卷積層的計算量、模型參數(shù)、卷積層等方法,在不損失精度的條件下,提升了模型運行速度,解決了由于運算量過大,而無法在移動設備或嵌入式設備上運行的問題。
深度可分離卷積將原OpenPose 中的一個標準卷積層因式分解為一個Depthwise 卷積和一個Pointwise 卷積。其中,Depthwise 卷積核與輸入的每個通道進行卷積;Pointwise 與上層輸出的不同通道特征圖進行線性組合,從而將不同通道位于同一位置的特征信息進行高效利用和組合。圖3(a)為標準卷積層的標準卷積核結(jié)構(gòu),卷積核K的長度和寬度均為DK,輸入通道數(shù)為M,輸出通道數(shù)為N。
Fig.3 Convolution kernel structure圖3 卷積核結(jié)構(gòu)
此外,采用殘差網(wǎng)絡算法提取底層特征代替?zhèn)鹘y(tǒng)模型的VGG-19 網(wǎng)絡也可提升OpenPose 模型的檢測精度和訓練速度。朱洪堃等[32]將底層特征提取網(wǎng)絡更換為Res-18網(wǎng)絡,通過添加二階項融合的殘差網(wǎng)絡提取底層特征,對比性能后發(fā)現(xiàn)改進后的模型在精度和速度上均有所提升。馮文宇等[33]使用了自適應軟閾值的殘差網(wǎng)絡,顯著增加了模型的檢測精度且未明顯影響檢測速度。
在提取人體關(guān)節(jié)點數(shù)據(jù)后,還需進行分類處理才可用于判斷行為特征。目前,基于傳統(tǒng)機器學習分類器算法的應用較為廣泛,主要包括支持向量機(Support Vector Machine,SVM)、深度神經(jīng)網(wǎng)絡(Deep Neural Networks,DNN)、極限學習機(Extreme Learning Machine,ELM)、決策樹(Decision Tree,DT)、K 近鄰(K-NEearest Neighbors,KNN)等。本文主要介紹了SVM 和ELM 兩種分類算法。
3.2.1 SVM
SVM 是一種二分類模型,對于小樣本集具有較好的訓練效果,并可高效處理OpenPose 提取的高維數(shù)據(jù)集。為了將它適應于多分類任務,蘇超等[34]采用間接法構(gòu)建基于決策樹的SVM 多類分類器(ST-SVM)優(yōu)化分類方法,將所有信息循環(huán)二分直到每個結(jié)點歸屬到唯一類別。袁鵬泰等[35]為了提高SVM 分類器準確度,將改進Yolo 算法先行引入OpenPose 算法中,避免了在無人處識別關(guān)節(jié)點信息。李夢荷等[36]為實現(xiàn)多人行為識別,將特征矩陣輸入SVM分類器中進行分類,以提高識別準確度。蔡文郁等[37]通過原始視頻圖像中的關(guān)鍵點數(shù)據(jù)提取跌倒特征向量,經(jīng)過SVM 初級分類器分類后,再利用CNN 分類器進行二次分類,以降低模型計算量。
3.2.2 ELM
如圖4 所示,相較于傳統(tǒng)神經(jīng)網(wǎng)絡模型,ELM 網(wǎng)絡隨機設定輸入層與隱含層的鏈接權(quán)值W 和隱含層神經(jīng)元的偏置O,隱含層節(jié)點個數(shù)N 設置完成后即可固定不變。在執(zhí)行過程中,無需人工調(diào)整算法參數(shù),避免了反復迭代造成的時間損耗。張青等[38]通過對150 個圖像的100 次迭代測試發(fā)現(xiàn),ELM 網(wǎng)絡的測試精度和運行速度都顯著優(yōu)于BP 神經(jīng)網(wǎng)絡[39]。
Fig.4 ELM network computing principle圖4 ELM網(wǎng)絡計算原理
目前,人體姿態(tài)估計技術(shù)仍在不斷發(fā)展,基于Open-Pose 模型的人體姿態(tài)估計應用也在不斷更新,如表2所示。盡管對底層特征提取方式、數(shù)據(jù)分類方法等多方面均有所優(yōu)化,但在實際應用中,仍暴露出許多問題:
(1)檢測精度會因人體姿態(tài)的不同而變化。
(2)精度和速度在一些模型中無法同時得到提升。通常,為了提高模型運行速度會減少模型參數(shù),造成模型精度下降。
(3)各優(yōu)化模型相較于傳統(tǒng)OpenPose 模型而言,均基于實際應用背景下的特定數(shù)據(jù)集,并不具有通用性,應用場景相對單一。
Table 2 Some algorithms for human pose estimation optimization表2 人體姿態(tài)估計優(yōu)化的部分算法
人體姿態(tài)估計技術(shù)是計算機視覺技術(shù)中具有重要研究意義的領域之一,尤其在醫(yī)療健康領域中具有更加廣闊的發(fā)展前景。人體姿態(tài)估計有關(guān)的研究報告大部分側(cè)重于對基本模型、方法的歸納和介紹[40-41],研究人員可初步了解人體姿態(tài)估計的部分經(jīng)典算法,但很少有結(jié)合實際應用背景對算法進行分類的研究。為此,本文在對人體姿態(tài)估計算法進行分類列舉、詳細介紹后,系統(tǒng)地介紹了由OpenPose 算法演變而來的改進模型。首先,對25 種算法進行細致梳理和介紹。然后,對OpenPose 算法進行了具體闡述,并基于不同優(yōu)化對象,選取了7 種應用于實際的OpenPose 優(yōu)化模型進行深度分析。最后,總結(jié)基于Open-Pose 的改進算法的不足之處,為未來人體姿態(tài)估計技術(shù)的研究提供思路。