強保華 ,翟藝杰,陳金龍*,謝 武,鄭 虹,王學文,張世豪
(1.廣西可信軟件重點實驗室(桂林電子科技大學),廣西桂林 541004;2.廣西圖像圖形與智能處理重點實驗室(桂林電子科技大學),廣西桂林 541004)
(?通信作者電子郵箱chengjl@guet.edu.cn)
隨著計算機視覺技術的發展,人體姿態估計已經成為眾多領域的研究熱點,并且得到更普遍的應用,如步態分析[1]、動作捕捉[2]、行為識別[3]和人機交互[4]等。人體骨骼關鍵點檢測是用于人體姿態估計的一類算法,近幾年,卷積神經網絡的興起,讓人體骨骼關鍵點檢測技術有了很大提升,然而,如何簡化模型、提高檢測模型的準確率和檢測速度仍是目前面臨的一個問題。
基于深度學習的人體骨骼關鍵點檢測算法,可以通過一系列深層網絡自動學習圖像數據中的隱含關系,提取出更抽象的圖像特征,具有比傳統方法更強的特征表達能力[5]。近年來眾多學者對此問題進行了研究,Lifshitz 等[6]提出基于16層的VGG(Visual Geometry Group based on 16 layers,VGG-16)網絡模型預測人體各關鍵點位置,但是準確率有待提升。Pishchulin 等[7]提出DeepCut,結合Fast R-CNN(Regions with Convolutional Neural Network features)檢測人體骨骼關鍵點,提升了準確率,但是檢測速度較慢。之后,Insafutdinov 等[8]提出DeeperCut,結合ResNet(Residual Network)進行檢測,進一步提高檢測精度和速度。2016 年,Wei 等[9]提出的CPMs(Convolutional Pose Machines)模型在人體骨骼關鍵點檢測的標準數據集MPII(Max Planck Institut Informatik)人體姿態數據集[10]和LSP(Leeds Sports Pose)數據集[11]上都取得不錯的檢測效果,具有較好的魯棒性。然而,這種方法仍然具有參數多、訓練時間長和檢測速度不理想的問題。因此,本文主要研究如何改進人體骨骼關鍵點檢測模型CPMs,以減少模型參數和訓練時間、提高檢測速度。
2016年出現的輕量級卷積神經網絡模型SqueezeNet[12]有效地解決了網絡模型參數多的問題。SqueezeNet 能達到很好的識別精度,且與其他模型相比參數更少。因此,本文結合CPMs 和SqueezeNet 的優勢,設計了一種基于CPMs 和SqueezeNet 的輕量級人體骨骼關鍵點檢測模型。本文主要工作如下:
1)針對CPMs 模型訓練時間長、檢測速度慢的問題,采用CPMs-Stage4 模型。CPMs-Stage4 通過減少兩個預測階段縮短訓練時間、提高檢測速度。但由于預測階段較少,CPMs-Stage4的檢測準確率有待提升。
2)針對CPMs-Stage4模型檢測準確率降低、模型參數多的問題,結合SqueezeNet 與CPMs-Stage4 設計SqueezeNet15-CPMs-Stage4 模型。新模型利用SqueezeNet 的網絡結構重新設計CPMs-Stage4 的第一階段,一方面,改進后的模型具有更深的網絡層數,進而增強新模型的特征提取能力,提高準確率;另一方面,利用SqueezeNet 壓縮模型權值參數,使新模型具有更少的參數和更快的檢測速度。此外,模型訓練中引入初始結構,顯著降低訓練時間。
CPMs 是2016 年由卡內基梅隆大學(Carnegie Mellon University,CMU)機器人研究所的Wei等[9]提出的使用卷積神經網絡進行單人人體骨骼關鍵點檢測的模型,具有魯棒性好、準確率高的優點。CPMs 采用一系列順序化卷積架構來表達空間和紋理信息,逐步預測使最終結果更精確[9],CPMs 框架如圖1 所示。每個Stage 均是一個預測階段,Stage1 是一個基本的卷積神經網絡,Stage>1 部分是相同的卷積結構,每個Stage 的輸出均添加一個“Loss”損失函數,最小化關鍵點的預測坐標與真實標注坐標之間的距離,“Center map”是一個高斯函數模板,把預測圖中的關鍵點顯示在各自的中心區域,最終生成包含各人體骨骼關鍵點的預測圖。
CPMs 中Stage1 對人體骨骼關鍵點進行粗略預測,從輸入圖像中直接生成關鍵點的響應圖。Stage>1 部分,將特征提取層提取的深度為128 的特征圖作為紋理信息[13],前一個Stage輸出的響應圖作為上下文空間信息,將兩者與中心約束三方面信息融合使下一個Stage 輸出的預測圖更準確[14]。每個Stage 共輸出15 個響應圖,包括14 個關鍵點和1 個背景響應圖。各個Stage 輸入的特征圖均進行多尺度處理[9],將不同尺度的特征圖和響應圖作為輸入,可以避免關鍵點之間的遠近距離對預測圖的影響過大,保證預測精度。
CPMs根據輸入圖像確定一系列縮放尺度,然后預測不同尺度下每個關鍵點的置信值,最后對不同Stage下各關鍵點所有尺度的置信值相加求和,將得分最高的置信值作為該關鍵點的最終預測結果,并將結果在圖像中可視化。
CPMs 算法的偽代碼見算法1,pds()表示預測因子[15],預測不同Stage 下人體骨骼關鍵點的位置。定義第n個人體骨骼關鍵點在圖像中的像素位置為Wn∈Z,其中Z是圖像中所有像素位置(u,v)的集合,要預測的所有N個關鍵點位置為W=(W1,W2,…,WN)。用Xz表示圖像z處的特征圖,每個預測因子pds()根據Xz預測各個關鍵點的位置,生成一個響應圖Wn=z,?z∈Z。預測因子pds()在s階段預測的第n個人體骨骼關鍵點在圖像位置z處的得分表示為hns(Wn=z)。φs()表示hs-1得到的特征圖,pds()表示前一Stage 對上下文特征的映射,融合上下文空間信息。
算法1 CPMs。

Wei 等[9]在其研究中將1-Stage 至6-Stage 對應的CPMs 在數據集上的檢測準確率做了對比,指出6-Stage 的CPMs 效果最佳。
雖然6-Stage 的CPMs 圖像提取能力更強,但是模型參數多和訓練時間長等問題影響了模型的檢測速度。而4-Stage相比6-Stage 對應的模型減少2 個預測階段,在模型參數數量和訓練時間上更有優勢,而且檢測效果較好,因此本文采用論文中4個Stage的CPMs-Stage4進行人體骨骼關鍵點檢測。
然而CPMs-Stage4 不僅在模型參數和訓練時間上提升較小,還存在檢測速度不夠快的問題。此外,由于模型中預測階段較少以及網絡層數不夠深,CPMs-Stage4的檢測準確率也有所下降。為提高準確率、減少模型參數、加快檢測速度,一種有效的方法就是增加網絡結構深度和卷積層數并且減少權值參數。
SqueezeNet 是2017 年由Iandola 等[12]提出的一個輕量型的網絡模型,該網絡模型能保證識別精度,同時將原始AlexNet 參數壓縮至原來的約1/50,使模型大小只有4.8 MB。SqueezeNet 模型的核心構件是Fire Module,Fire Module 將一個卷積層分解為一個squeeze層和一個expand層,并各自帶上ReLU 激活層,增加網絡結構的深度。squeeze 層包含的全部是1×1 的卷積核,expand 層包含1×1 和3×3 的卷積核,每一個Fire Module 的最后一層用Average Pooling 層替換全連接層,大幅減少了模型權值參數。SqueezeNet 證明了小的神經網絡也能達到很好的識別精度。
為解決CPMs-Stage4在準確率、模型參數和檢測速度上的問題,本文將SqueezeNet 的Fire Module 結構引入CPMs-Stage4的Stage1 中,用SqueezeNet 的前15 層Fire8 替換Stage1 中一個卷積池化層,并對每個Stage 新增兩個卷積層,提出SqueezeNet15-CPMs-Stage4 模型。該模型Stage2-Stage4 的網絡結構均相同,每個Stage 的輸出都作為下個Stage 的融合內容之一。在Stage1 中,輸入圖像經過Fire8 和五層卷積后提取的特征均作為后續每個Stage 的輸入之一,SqueezeNet15-CPMs-Stage4框架如圖2所示。
新模型在Stage1 中引入Fire Module 結構,同時使用4 個卷積架構,不僅增加網絡結構的深度和卷積層數,而且大量減少權值參數,從而使準確率、模型參數以及檢測速度都有很大的提升。
本文模型中Stage1的網絡結構如表1所示,Stage2~Stage4的網絡結構如表2 所示。表1 和表2 表示模型中各Stage 的網絡深度和特征圖的變化。

表1 Stage1的網絡結構Tab.1 Network structure of Stage1

表2 Stage2~Stage4的網絡結構Tab.2 Network structure of Stage2-Stage4
為了評價算法性能,本文使用MPII人體姿態數據集、LSP數據集和擴展的LSP(LSP extended,LSPet)[16]三個基準數據集進行評估,這三個數據集都是來自于真實的人類日常活動的圖像。本文使用關鍵點正確估計的比例(Percentage of Correct Keypoints,PCK)來評估所有算法的準確率,2.2 節中對PCK 有詳細定義,使用單張圖像檢測時間反映檢測速度,單張圖像檢測時間越短,檢測速度越快。本文從兩個方面來驗證本文模型算法的性能:第一方面實驗展示了在兩個不同數據集上訓練的SqueezeNet15-CPMs-Stage4 與CPMs、CPMs-Stage4 的對比,驗證SqueezeNet15-CPMs-Stage4 模型在提高準確率和加快檢測速度方面的有效性;第二方面實驗則展示了在擴展的LSP 上訓練的SqueezeNet15-CPMs-Stage4 與目前主流模型算法性能的對比。
MPII 人體姿態數據集是目前評價人體姿態估計的一種最先進的基準數據集。該數據集大約包括25 000 張圖片,其中包含40 000 多個帶有人體關節注釋的人,每個人的各個關節點的位置坐標和可見性都被標注了。將MPII 人體姿態數據集中25 000 個人作為訓練樣本,3 000 個人作為驗證樣本,檢測范圍為全身的14個人體骨骼關鍵點。
LSP 數據集包含2 000 張照片,擴展的LSP 數據集包含10 000張圖片,LSP和擴展的LSP數據集中每幅圖片都標注了14個關鍵點的具體位置。從LSP 和擴展的LSP 數據集中隨機抽取11 000張圖片作為訓練樣本,剩余1 000張圖片作為驗證樣本。從數據集中隨機選取的數據集樣本示例如圖3所示。

圖3 三個數據集中部分樣本示例Fig.3 Some samples from three datasets
本文采用Caffe 深度學習框架作為項目的支持框架,實驗中硬件環境采用的CPU 是20 核的Intel Xeon E5-2698v4,內存為50 GB,GPU 是NIVDIA Tesla P100;軟件環境中使用LINUX 64 Ubuntu14.04 的操作系統,使用Python 2.7 作為編程語言,使用Pycharm 2017.1.2作為開發工具。
為驗證本文模型在人體骨骼關鍵點檢測中的泛化能力[17]和在準確率和檢測速度方面的有效性,本文設置了兩組實驗,分別在MPII 人體姿態訓練樣本和擴展的LSP 訓練樣本上進行模型訓練。
第一組實驗是在MPII 訓練樣本上訓練的新模型,與Wei等[9]在MPII上訓練的CPMs、CPMs-Stage4作對比;第二組實驗是在擴展的LSP訓練樣本上訓練的新模型,與Wei等[9]在擴展的LSP 上訓練的CPMs、CPMs-Stage4 作對比。兩組實驗均在擴展的LSP驗證集上進行模型驗證。
本文使用目前通用的準確率評估指標PCK 作為模型評估的度量標準。PCK定義為模型檢測的關鍵點與正確標注關鍵點之間的歸一化距離,小于某一設定閾值的一定比例p,又稱為PCK@p評估方法[14],常用的PCK 評估有PCK@0.5、PCK@0.2。本文選用PCK@0.2 作為本文模型在擴展的LSP驗證集上的準確率評估標準。
根據PCK@0.2的評估標準,若模型檢測的關鍵點與正確標注關鍵點之間的像素坐標距離小于人體軀干長度的一定比例0.2 時,表示對該關鍵點檢測正確[14]。記人體骨骼關鍵點檢測正確的個數為RD,總檢測的人體骨骼關鍵點個數為AD,則檢測準確率的表達式如式(1)所示:

CPMs的順序框架提供了一種訓練深層網絡的方法,通過在每個Stage 的輸出位置定義一個“Loss”函數,最小化每一個人體骨骼關鍵點的預測響應圖與它的真實標注圖之間的距離,從而引導網絡模型達到一個預期的檢測效果[15]。SqueezeNet15-CPMs-Stage4 中每個Stage 都會輸出第n個人體骨骼關鍵點的預測響應圖,而第n個人體骨骼關鍵點的真實標注圖被記作(Wn=z),通過在每個人體骨骼關鍵點n的真實坐標位置放置一個高斯響應,來構造真實標注響應圖,定義式(2)為各Stage最小化輸出中的代價函數:

其中:n遍歷每一個人體骨骼關鍵點;z表示圖像位置。取所有Stage代價函數gs的總和G為最終代價函數,用式(3)表示:

采用帶動量的隨機梯度下降法聯合訓練所有網絡。為了在所有后續階段共享圖像特征,本文網絡模型在Stage>1階段共享相應的卷積層權重(如圖2所示)。
模型訓練時,由于剛開始的模型還不能學習到很好的特征,檢測效果與真實標注點相差較大,導致損失函數值變化較大,容易引起梯度分散。如果可以在原來模型的基礎上繼續訓練,不僅可以減少模型的訓練時間,而且可以提高準確率。因此,本文在模型訓練時引入SqueezeNet 的預訓練模型初始化網絡,使用微調的方法[18]在SqueezeNet 權重的基礎上訓練模型,以達到提高準確率、縮短訓練時間的目的,然后在擴展的LSP 驗證集上進行驗證,本文網絡模型的訓練方法如表3所示,各參數的設置值來自深度學習的訓練經驗。

表3 SqueezeNet15-CPMs-Stage4訓練方法Tab.3 Training method of SqueezeNet15-CPMs-Stage4
將第一組實驗在擴展的LSP 驗證集上進行驗證對比,結果如表4所示。
從表4 可以看出,本文提出的模型不僅準確率最高,而且訓練時間最少、單張圖像檢測時間最短,也即檢測速度最快。CPMs-Stage4 雖然比CPMs 的訓練時間要少得多,但是其準確率也低于CPMs,其主要原因在于CPMs-Stage4 采用的是4 個Stage 的卷積架構,相比CPMs 少了2 個卷積架構,因此在提取特征方面要比CPMs稍差一些。

表4 MPII數據集上訓練的模型的驗證結果對比Tab.4 Comparison of validation results of models trained on MPII dataset
將第二組實驗在擴展的LSP 驗證集上進行驗證對比,結果如表5 所示,其中:帶“*”表示在模型訓練過程中將MPII 訓練樣本加入到LSP和擴展的LSP訓練樣本中。
從表5可以看出,本文提出的模型準確率與CPMs相匹敵達到90.4%,且訓練時間和單張圖像檢測時間最佳,其主要原因在于,與另外兩個模型相比,本文模型在增加網絡層數和卷積層數的基礎上壓縮模型權值參數,因此具有較高的準確率、更少的模型參數和更快的檢測速度。與CPMs 相比,本文模型在訓練時間上減少86.68%,在單張圖像檢測時間上減少44.27%。

表5 擴展LSP數據集上訓練的模型的驗證結果對比Tab.5 Comparison of validation results of models trained on extend LSP dataset
在相同的實驗環境下進行的第一組實驗和第二組實驗的實驗數據對比顯示,在同等配置下,本文提出的模型訓練時間更少,運行速度更快、更穩定,對資源的消耗更少。
本文模型可以檢測全身范圍內的14 個骨骼關鍵點,包括頭部、頸部、左肩、右肩、左肘、右肘、左腕、右腕、左髖、右髖、左膝、右膝、左腳踝、右腳踝。隨機從驗證集中挑選一張圖像和部分關鍵點被遮擋的圖像進行檢測,兩幅圖像中14 個關鍵點的檢測詳情如圖4所示,圖中的“Full Pose”為真實關鍵點標注圖,“bkg”為SqueezeNet15-CPMs-Stage4 模型檢測的關鍵點標注圖。從圖4 中兩幅圖像各自的檢測結果可以看出,無論圖中關鍵點有無遮擋,各關鍵點的檢測結果接近真實標注關鍵點。

圖4 SqueezeNet15-CPMs-Stage4關鍵點檢測結果Fig.4 Key point detection results of SqueezeNet15-CPMs-Stage4
將在擴展的LSP 訓練集上訓練好的本文模型(SqueezeNet15-CPMs-Stage4*)從訓練時間、單張圖像檢測時間和準確率三方面與改進VGG-16[6]、DeepCut[7]、DeeperCut[8]和CPMs[9]等人體骨骼關鍵點檢測模型作對比,結果如表6所示。
從表6 可以看出,本文模型在單張圖像檢測時間上,相較改進VGG-16 模型減少79.24%,相較DeeperCut 模型減少36.83%。與上述主流的人體骨骼關鍵點檢測模型相比,本文模型的檢測準確率不僅與CPMs 公開的準確率相匹敵,且具有最快的訓練時間和檢測速度,明顯優于其他幾種參照模型。

表6 本文模型與參照模型的對比Tab.6 Comparison between proposed model and reference models
本文提出了一種基于CPMs 和SqueezeNet 的單人人體骨骼關鍵點檢測模型,該模型在訓練時間和檢測速度方面均優于主流參照模型。CPMs是一種魯棒性好、準確率高的人體骨骼關鍵點檢測模型,SqueezeNet 是一種識別精度高,模型參數小于0.5 MB的輕量級卷積神經網絡模型。實驗結果表明,準確率較高的人體骨骼關鍵點檢測模型與識別精度高的輕量級網絡模型相結合設計新模型的方法是有效的,改進后的模型,不僅具有較高的準確率,而且大大縮短了模型訓練時間、提高了檢測速度。后期將繼續研究如何改進本文模型,使模型參數更少,以及如何將其他人體骨骼關鍵點檢測經典模型與識別精度高的模型相結合,設計新的網絡模型。