史小強, 黃 鋼,2, 蘇可怡
(1.上海理工大學(xué)健康科學(xué)與工程學(xué)院, 上海 200093;2.上海健康醫(yī)學(xué)院附屬嘉定中心醫(yī)院上海市分子影像學(xué)重點實驗室, 上海 201318;3.中國醫(yī)藥工業(yè)研究總院, 上海 201203)
隨著科技的發(fā)展,含有人體信息的二維圖像被應(yīng)用到各個領(lǐng)域。人體圖像包含人體骨骼關(guān)節(jié)點信息,若是能有效利用,這些信息就可以在動作識別、人工智能、疾病預(yù)測等領(lǐng)域發(fā)揮出重要價值。目前,人體關(guān)鍵點檢測主要用于人體姿態(tài)估計[1]、人機交互[2]、輔助醫(yī)療器械診斷[3]等領(lǐng)域。
由于二維人體圖像的復(fù)雜性較高,如受遮擋因素、環(huán)境因素、角度因素等的影響,使二維人體關(guān)鍵點檢測受到巨大挑戰(zhàn)。通過對二維人體關(guān)鍵點檢測方法的研究,發(fā)現(xiàn)無論是單人圖像還是多人圖像,基于深度方法的檢測精度都明顯高于基于傳統(tǒng)方法的檢測精度;而且,基于傳統(tǒng)的人體關(guān)鍵點檢測方法主要依賴于提取人工設(shè)定的特征,不但效率低,而且會耗費大量的人力。目前,基于深度學(xué)習(xí)的方法是用于二維人體關(guān)鍵點檢測的主流方法。
二維人體關(guān)鍵點檢測又可分為傳統(tǒng)方法和深度方法,在深度學(xué)習(xí)方法應(yīng)用于人體關(guān)鍵點檢測之前,單人二維人體關(guān)鍵點檢測是傳統(tǒng)方法的研究重點。深度學(xué)習(xí)理論實現(xiàn)了人體關(guān)鍵點檢測從單人二維關(guān)鍵點檢測到多人關(guān)鍵點檢測的推廣,并且檢測精度有了極大的提升,使人體關(guān)鍵點檢測能夠應(yīng)用在更多的場景中。
人體關(guān)鍵點檢測的傳統(tǒng)方法主要是依賴于圖像的圖形結(jié)構(gòu)實現(xiàn)檢測,例如邊緣檢測、角點檢測、區(qū)域分割等技術(shù)。此外,基于圖模型的方式也被提出,比如隨機場模型和依賴圖模型。1973年,FISCHLER等[4]依靠圖模型提出圖形結(jié)構(gòu)的匹配(Matching of Pictorial Structures,PSM)來檢測面部結(jié)構(gòu)的關(guān)鍵點。FELZENSZWALB等[5]在FISCHLER的基礎(chǔ)上對算法進(jìn)行了改進(jìn)和優(yōu)化,使得PSM算法更加高效、準(zhǔn)確,并且可以在更多的應(yīng)用領(lǐng)域中使用。此后,ANDRILUKA等[6]將PSM應(yīng)用在人體關(guān)鍵點檢測的模型中,提出了一種基于部件的模型,將人體分解為多個部件,并使用圖形結(jié)構(gòu)匹配算法檢測每個部件的關(guān)鍵點,從而實現(xiàn)全身姿態(tài)估計。在此基礎(chǔ)之上,FELZENSZWALB等[7]提出一種可變形部件模型(Deformable Part Model,DPM),將物體分解為多個部分并通過對局部特征進(jìn)行建模捕捉物體的各種形狀變化。在人體關(guān)鍵點檢測任務(wù)中,DPM可以用于學(xué)習(xí)和識別不同人體姿態(tài)的結(jié)構(gòu)模式。此后,基于圖像的圖形結(jié)構(gòu)的人體關(guān)鍵點檢測算法成為傳統(tǒng)方法的主流算法。
基于圖像的圖形結(jié)構(gòu)的人體關(guān)鍵點檢測算法主要包括用來描繪人體組成部分的部件模型及描繪部位的空間關(guān)系的空間模型。NAEGELI等[8]將圖像分割技術(shù)應(yīng)用在人體關(guān)鍵點檢測中,去除了人體圖像的背景對檢測精度的干擾。ACHILLES等[9]提出了一種基于具有決策功能的部位檢測器,以提高人體關(guān)鍵點檢測的檢測精度。在基于空間模型的算法中,WANG等[10]提出了一種非樹形結(jié)構(gòu),解決了人體關(guān)鍵點檢測中自遮擋的問題。YANG等[11]提出了混合部件模型,解決了空間約束的多變性。
基于傳統(tǒng)方法的二維人體關(guān)鍵點檢測需要人工設(shè)計特征,具有高效率、效果直觀、方法簡單的優(yōu)點。但是,由于人體圖像的背景復(fù)雜多變,使其檢測準(zhǔn)確度難以提升,無法達(dá)到目前人們的需求。
隨著深度學(xué)習(xí)在計算機視覺領(lǐng)域中的應(yīng)用,目前很多人體關(guān)鍵點檢測方法都是基于深度學(xué)習(xí)方法,并且已經(jīng)取得了良好的效果。無論是單人關(guān)鍵點檢測還是多人關(guān)鍵點檢測,深度學(xué)習(xí)方法在其中都發(fā)揮了良好的性能。
2.2.1 基于深度方法的二維單人關(guān)鍵點檢測
TOSHEV等[12]第一次將卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)應(yīng)用到人體關(guān)鍵點檢測中,并且提出了深度姿態(tài)估計DeepPose算法,首先應(yīng)用DNN[13](Deep Neural Networks)深度神經(jīng)網(wǎng)絡(luò)粗略檢測出部分人體關(guān)鍵點的位置,其他關(guān)鍵點采用DNN回歸預(yù)測其位置,在保證人體圖像的尺寸相同且計算參數(shù)不變的情況下,級聯(lián)的回歸器可以獲得更加精確的人體關(guān)鍵點的位置。DeepPose是人體關(guān)鍵點檢測從傳統(tǒng)方法過渡到深度方法的奠基石。
神經(jīng)網(wǎng)絡(luò)在提高精度的同時也會帶來一定的弊端,隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的增加,其梯度會逐漸減少。對此,WEI等[14]提出了卷積狀態(tài)機(Convolutional Pose Machine,CPM),它能夠直接從數(shù)據(jù)中學(xué)習(xí)圖像特征和空間上下文特征。首先CPM在多階段估計中確定人體關(guān)鍵點的大致位置,然后在每個階段不斷精確關(guān)鍵點的位置。CPM組合了多個卷積網(wǎng)絡(luò)在多階段的卷積網(wǎng)絡(luò)中不斷確定檢測點的結(jié)果,因此解決了隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的增加,伴隨著其梯度減少的問題。
以往的網(wǎng)絡(luò)結(jié)構(gòu)僅使用最底層的卷積特征,這可能會導(dǎo)致有效信息丟失,NEWELL等[15]提出了一種能夠利用多尺度特征識別人體圖像的網(wǎng)絡(luò)結(jié)構(gòu)疊加的沙漏網(wǎng)絡(luò)(Stacked Hourglass Net-works,SHN),該結(jié)構(gòu)使用多個沙漏網(wǎng)絡(luò)進(jìn)行級聯(lián),以提高檢測效果,充分利用了人體關(guān)鍵點之間的相關(guān)性。
LIFSHITZ等[16]使用一致投票的方式定位關(guān)鍵點位置,提出了深度共識投票(Deep Consensus Voting,DCV),在檢測人體關(guān)鍵點位置時,不用繼續(xù)依賴稀疏的關(guān)鍵點位置集,而是使用高密度的多目標(biāo)進(jìn)行投票,不僅檢測效果好,還可以計算與檢測圖像相關(guān)的聯(lián)合關(guān)鍵點的概率。
在深度學(xué)習(xí)層面,人體關(guān)鍵點檢測已經(jīng)取得了良好的泛化性能,但是無法在輕量級的環(huán)境中運行,ZHANG等[17]提出了一種快速姿態(tài)估計模型FPD(Fast Pose Distillation),這是一種輕量化的人體關(guān)鍵點檢測模型,使用了4個沙漏模型,能夠以較低的計算空間執(zhí)行。該網(wǎng)絡(luò)在降低人體關(guān)鍵點檢測的網(wǎng)絡(luò)復(fù)雜度方面取得了較好的效果。
截止到目前,基于深度方法的二維單人關(guān)鍵點檢測研究非常豐富且全面,現(xiàn)有的檢測研究多集中在提高算法的檢測精度和檢測準(zhǔn)確率方面。
2.2.2 基于深度方法的二維多人關(guān)鍵點檢測
在單人關(guān)鍵點檢測中,人數(shù)是已知的,但是對于多人關(guān)鍵點檢測來說,人數(shù)和位置都是未知的,因此在人體關(guān)鍵點檢測任務(wù)中,多人關(guān)鍵點檢測的難度更大。基于深度方法的多人關(guān)鍵點檢測主要分為2類:一類是自上而下的方法,另一類是自下而上的方法,具體分類如圖1所示。
2.2.2.1 自下而上
自下而上的原理是首先估計圖像中所有人的人體關(guān)鍵點,然后按照一定的方法把所得到的人體關(guān)鍵點的位置分配給圖像中的每個人,從而得到圖像中每個人體關(guān)鍵點的位置。
PISHCHULIN等[18]提出了DeepCut,先使用CNN選出人體部位的區(qū)域,將所選出的區(qū)域作為一個節(jié)點,把所有的區(qū)域節(jié)點合成一張圖像,然后計算節(jié)點之間的關(guān)聯(lián)性權(quán)重,將其看成ILP(Integer Linear Program)線性編程問題,這種方法通過圖論節(jié)點的聚類,有效地進(jìn)行非極大值的抑制。此外,此算法在識別被遮擋的身體部位方面取得了良好的效果。在DeepCut的基礎(chǔ)上,INSAFUTDINOV等[19]為了降低其網(wǎng)絡(luò)復(fù)雜度,提出了性能更好的殘差網(wǎng)絡(luò)DeeperCut。DeepCut和DeeperCut的方法都屬于整數(shù)線性規(guī)劃,在解決多變量最優(yōu)決策的問題上有著良好的效果,但是該方法對數(shù)據(jù)的準(zhǔn)確性要求很高且計算量大。
CAO等[20]提出了一種高效檢測多人關(guān)鍵點檢測的方法OpenPose。通過網(wǎng)絡(luò)訓(xùn)練將身體部位跟圖像相互聯(lián)系,利用全局上下文進(jìn)行編碼。該架構(gòu)通過同一順序預(yù)測過程的兩個分支聯(lián)合學(xué)習(xí)局部位置及其關(guān)聯(lián)性,實現(xiàn)了高檢測精度的同時具備實時性的多人關(guān)鍵點檢測?;贠penPose算法,OSOKIN等[21]提出了輕量化的OpenPose,在保證精度的同時,還提高了人體關(guān)鍵點檢測的檢測速度。蘇波等[22]通過改進(jìn)OpenPose,優(yōu)化了縮減預(yù)測階段的重復(fù)分支,提高了檢測精度。
基于單人關(guān)鍵點檢測,NEWELL等[23]提出了一種通用檢測分組方法,用標(biāo)簽將每個檢測與同一組中的其他檢測相關(guān)聯(lián)。將關(guān)聯(lián)嵌入方法與堆疊Hourglass網(wǎng)絡(luò)集成在一起,為每個身體關(guān)節(jié)生成和標(biāo)記熱圖,然后將具有相似標(biāo)簽的身體關(guān)節(jié)分組到個人身上,從而實現(xiàn)多人關(guān)鍵點檢測。
2.2.2.2 自上而下
自上而下的原理主要包括目標(biāo)檢測和人體關(guān)鍵點檢測兩個部分,首先利用人體檢測器檢測出圖像中的所有人體,然后對選出的每個人使用單人關(guān)鍵點檢測。因此,自上而下的方法主要側(cè)重于人體檢測器的研究,常用的人體部位檢測器有Faster R-CNN(Faster Region-Convolutional Neural Networks)[24]、Mask R-CNN(Mask Region-Convolutional Neural Networks)[25]、FPN(Feature Pyramid Networks)[26]等。
Mask R-CNN的原理是先將圖像中人體框選出來,然后分割出特征圖用于關(guān)鍵點檢測。與其他自上而下的人體關(guān)鍵點檢測方法相比,基于Mask R-CNN的方法在精度上表現(xiàn)更好,同時速度也較快,這也是它被廣泛使用的原因之一。比如,宋玲等[27]提出的SN Mask R-CNN是在Mask R-CNN的基礎(chǔ)上加入通道重組,以提升其網(wǎng)絡(luò)性能,在保留精度的同時提高了其檢測速度。
PAPANDREOU等[28]提出了一種自上向下的多人關(guān)鍵點檢測方法,首先利用Faster R-CNN估計出目標(biāo)人體在圖像中的尺寸和位置,然后根據(jù)檢測出目標(biāo)人體的關(guān)鍵點使用ResNet估計每個關(guān)鍵點的偏移量和密度熱圖,最后將偏移量作用在熱力圖上完成多人關(guān)鍵點檢測。
CHEN等[29]提出一種級聯(lián)金字塔網(wǎng)絡(luò)(Cascaded Pyramid Network,CPN),首先粗略地檢測人體關(guān)鍵點,然后利用RefineNet網(wǎng)絡(luò)檢測被遮擋的以及比較難檢測的關(guān)鍵點,這個模型能夠同時兼顧人體關(guān)鍵點的局部信息和全局信息。
在人體關(guān)鍵點檢測的發(fā)展過程中有很多公開的數(shù)據(jù)集,比如利茲體育姿勢數(shù)據(jù)集(LSP)[30],這是一種包含多種人體體育姿勢的數(shù)據(jù)集,其中分為競技、羽毛球、體操、跑酷等運動姿態(tài),一共約有2 000張圖像且?guī)в凶藙葑⒔?賓夕法尼亞大學(xué)提供的好萊塢電影中的圖像數(shù)據(jù)集(FLIC)[31],包含約5 000張圖像,其中每張圖像都被標(biāo)注了10個上半身關(guān)節(jié)點;來自馬克斯·普朗克計算機科學(xué)研究所的數(shù)據(jù)集(MPII)[32],涵蓋了410種人體動作的照片,整個數(shù)據(jù)集包含25 000張圖像,標(biāo)注了其中40 000名人體的關(guān)節(jié)點;最常用的是由微軟團(tuán)隊提供的微軟通用上下文中的物體數(shù)據(jù)集(MSCOCO)[33],其數(shù)據(jù)場景非常豐富,MSCOCO數(shù)據(jù)集是目前主流的人體關(guān)鍵點檢測數(shù)據(jù)集,它的數(shù)據(jù)量主要包括訓(xùn)練集、驗證集及測試集,一共有330 000張圖片,標(biāo)記的圖像超過200 000張。除此之外,還有比賽用的數(shù)據(jù)集,如智能算法挑戰(zhàn)賽AI Challenger,其中包含700 000個人體關(guān)鍵點標(biāo)注,300 000張圖片場景標(biāo)注和語義描述數(shù)據(jù),是國內(nèi)迄今公開的規(guī)模最大的科研數(shù)據(jù)集。表1列出了6種常用的人體關(guān)鍵點檢測的數(shù)據(jù)集,包括數(shù)據(jù)集的檢測類別、關(guān)鍵點數(shù)量及數(shù)據(jù)集包含的圖片數(shù)量。
表 1 人體關(guān)鍵點檢測數(shù)據(jù)集Tab.1 Datasets of human body key points
(1)數(shù)據(jù)集存在的問題:目前使用的數(shù)據(jù)集中大多是人體部位的常規(guī)動作,隨著二維人體關(guān)鍵點檢測的發(fā)展,這些數(shù)據(jù)集已經(jīng)不能滿足實際應(yīng)用的要求,比如跌倒檢測、醫(yī)學(xué)康復(fù)動作分析等;而且,目前的研究大多使用有監(jiān)督的訓(xùn)練模式,所使用的數(shù)據(jù)集都是經(jīng)過人力標(biāo)注的,這不但浪費人力資源,還會使模型的關(guān)鍵點檢測精度降低。因此,今后的研究中應(yīng)當(dāng)盡可能地增加數(shù)據(jù)集的種類,使人體關(guān)鍵點檢測可以應(yīng)用到更多的場景中。
(2)研究中出現(xiàn)的問題:目前,人體關(guān)鍵點檢測算法大多比較復(fù)雜,網(wǎng)絡(luò)運算量大,因此出現(xiàn)了不少關(guān)于輕量化二維人體關(guān)鍵點檢測網(wǎng)絡(luò),比如VGGNet、ResNet、GoogleNet等。已經(jīng)有很多研究者為了降低網(wǎng)絡(luò)參數(shù)的數(shù)量,將輕量化的網(wǎng)絡(luò)結(jié)構(gòu)應(yīng)用到人體關(guān)鍵點檢測中。
(3)三維人體關(guān)鍵點檢測:三維人體關(guān)鍵點需要基于二維的基礎(chǔ),就是在二維人體關(guān)鍵點結(jié)果的基礎(chǔ)上加上深度信息。深度信息的引入,使三維的人體關(guān)鍵點檢測比二維人體關(guān)鍵點檢測更加精準(zhǔn),擁有更高的研究價值。二維人體關(guān)鍵點的發(fā)展為實現(xiàn)更好的三維人體關(guān)鍵點檢測奠定了基礎(chǔ)。
二維人體關(guān)鍵點檢測作為計算機視覺的基本任務(wù),在各個領(lǐng)域已經(jīng)發(fā)揮了重要的作用。未來,二維人體關(guān)鍵點檢測在網(wǎng)絡(luò)復(fù)雜度及應(yīng)用領(lǐng)域還有很大的發(fā)展空間。本文對二維人體關(guān)鍵點檢測的發(fā)展從傳統(tǒng)方法到深度方法的應(yīng)用方面進(jìn)行了闡述,綜合分析了提升檢測精度和檢測性能的相關(guān)模型,并對二維人體關(guān)鍵點檢測的發(fā)展前景進(jìn)行了展望。