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