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