盛洋,王健慶
(浙江中醫(yī)藥大學(xué) 醫(yī)學(xué)技術(shù)與信息工程學(xué)院,浙江 杭州 310053)
伴隨著計算機(jī)視覺技術(shù)及其相關(guān)硬件設(shè)施的高速發(fā)展,人體姿態(tài)識別技術(shù)已經(jīng)逐步應(yīng)用于社會的各個領(lǐng)域之中,并且發(fā)揮著重要的、巨大的經(jīng)濟(jì)價值和社會價值。以計算機(jī)視覺技術(shù)為基礎(chǔ)的傳統(tǒng)的人體姿態(tài)識別技術(shù)之所以需要大量經(jīng)驗(yàn)豐富的研究人員,是因?yàn)閭鹘y(tǒng)方法工作量大,協(xié)調(diào)性差且精準(zhǔn)度低。因此,構(gòu)建一種響應(yīng)程度高、精準(zhǔn)度高且簡單化的人體姿態(tài)識別系統(tǒng)尤為重要。
計算機(jī)視覺技術(shù)又被稱為機(jī)器視覺技術(shù)(Machine Vision Technology, MVT),是以計算機(jī)為載體,通過對人類的視覺功能進(jìn)行模擬提取圖像、視頻中的數(shù)據(jù)信息,再經(jīng)過數(shù)據(jù)化處理后實(shí)現(xiàn)檢測、控制等功能。該技術(shù)已經(jīng)被應(yīng)用于視頻監(jiān)控、人工智能交互、圖像處理等諸多科技領(lǐng)域,并且作為科學(xué)技術(shù)領(lǐng)域的一個重要的交叉學(xué)科不斷蓬勃發(fā)展。
圖像分類、目標(biāo)檢測、圖像語義與分割識別以及圖像的目標(biāo)跟蹤分析這四大類是目前計算機(jī)視覺領(lǐng)域內(nèi)的四個重點(diǎn)研究發(fā)展方向。
雖然計算機(jī)視覺中的一個基礎(chǔ)問題是人體姿態(tài)識別,但是這個問題目前可以具體地劃分為四個不同的方面,分別是單人姿態(tài)估計(Single-Person Skeleton Estimation)、多人姿態(tài)估計(Multi-person Pose Estimation)、人體姿態(tài)跟蹤(Video Pose Tracking)、3D人體姿態(tài)估計(3D Skeleton Estimation)。
其中單人姿態(tài)識別和多人姿態(tài)估計是為了獲取圖像中人體關(guān)鍵點(diǎn)的二維坐標(biāo),人體姿態(tài)跟蹤針對視頻數(shù)據(jù),3D人體姿態(tài)估計是用來估計人體在圖像或視頻的三維坐標(biāo)。本文主要對單人姿態(tài)估計進(jìn)行研究。
傳統(tǒng)方式和基于深度學(xué)習(xí)的方式是目前主流的人體姿態(tài)識別算法。
傳統(tǒng)的識別方法是一種根據(jù)圖形結(jié)構(gòu)和可變形構(gòu)件模型設(shè)計二維人體部件探測器,通過圖形模型建立各個構(gòu)件之間的連通性,并且在人體運(yùn)動學(xué)的約束條件下,通過優(yōu)化圖形結(jié)構(gòu)模型來估計人體的姿態(tài)。在這種傳統(tǒng)方法的理論基礎(chǔ)上,通常只能通過圖像與身體位置曲線或關(guān)節(jié)曲線之間的非線性映射模型來實(shí)現(xiàn)人體姿勢的識別估計。
基于深度學(xué)習(xí)的人體姿態(tài)估計方法主要是利用卷積神經(jīng)網(wǎng)絡(luò)(CNN)算法來定量提取圖像中的人體姿態(tài)特征。與傳統(tǒng)的人工設(shè)計特征方法相比,CNN不僅需要具有足夠豐富且完整的語義信息特征,此外,還需要能夠獲得具有不同姿勢感覺場的每個人類節(jié)點(diǎn)特征的特征向量,并通過完整上下文語義類描述每個節(jié)點(diǎn)的特征,擺脫了對構(gòu)件模型結(jié)構(gòu)設(shè)計的依賴,進(jìn)而直接使用坐標(biāo)回歸和特征向量模型來全面充分地反映當(dāng)前人類對姿態(tài)的感知,從而將姿態(tài)信息直接應(yīng)用到各種特定且具體場景的開發(fā)實(shí)踐中。
Openpose算法是利用神經(jīng)網(wǎng)絡(luò)算法中自下而上的思想,首先,利用算法檢測提取出圖像場景中幾乎所有相關(guān)的人體關(guān)鍵點(diǎn)數(shù)據(jù),然后利用聚類算法對屬于同一人體場景的所有關(guān)鍵點(diǎn)信息進(jìn)行聚類,并將其添加到相應(yīng)場景的圖像中,如圖1所示。

圖1 自下而上算法原理圖
首先對每一張圖像進(jìn)行圖像預(yù)處理,并通過VGGNet模型實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測,然后采用Openpose算法獲取人體關(guān)鍵點(diǎn)位置和置信度,最后根據(jù)PAF和二分圖匹配算法進(jìn)行關(guān)節(jié)拼接,實(shí)現(xiàn)了人體姿態(tài)識別系統(tǒng)。算法流程如圖2所示。

圖2 算法實(shí)現(xiàn)總流程圖
圖片的清晰度、明亮度等因素可能會影響到人體姿態(tài)識別的準(zhǔn)確度,導(dǎo)致無法獲取人體關(guān)鍵點(diǎn),判斷圖像中的人體姿態(tài)。因此需要對輸入的圖片進(jìn)行數(shù)據(jù)預(yù)處理。本文采用的數(shù)據(jù)預(yù)處理技術(shù)是雙線性插值。本文中圖像的預(yù)處理實(shí)現(xiàn)可以通過Python語言將雙線性插值的計算公式代碼化,獲得指定大小的圖片尺寸(550×600)。
2.3.1 關(guān)節(jié)點(diǎn)熱力圖
關(guān)節(jié)點(diǎn)熱力圖測量是為了測量圖像系統(tǒng)中位于某個特定位置上的每個關(guān)節(jié)點(diǎn)之間的相對置信度。如圖3所示,對于圖像系統(tǒng)中存在的任意一個人像系統(tǒng)來說,某一種類型圖像的任何關(guān)節(jié)點(diǎn)都存在這樣的一個峰值,但只有一個峰值;對不止一個人來說,有多個峰值。


圖3 關(guān)節(jié)點(diǎn)熱力圖
2.3.2 關(guān)節(jié)點(diǎn)親和區(qū)域
關(guān)節(jié)點(diǎn)親和區(qū)域通常可以理解為兩個或相鄰兩個關(guān)節(jié)點(diǎn)之間聯(lián)系的親密程度。如圖4所示,由一系列的單位向量所共同組成的區(qū)域是關(guān)節(jié)點(diǎn)親和區(qū)域。

圖4 關(guān)節(jié)點(diǎn)親和區(qū)域示意圖
2.3.3 卷積神經(jīng)網(wǎng)絡(luò)
VGGNet網(wǎng)絡(luò)模型是在2014年被研發(fā)設(shè)計出的一種深度卷積神經(jīng)網(wǎng)絡(luò)。為了能夠獲得另一種更好的特征信息和提取和存儲信息能力,它探索了卷積神經(jīng)網(wǎng)絡(luò)的深度和其性能之間的關(guān)系,成功地構(gòu)造成了16~19層深的卷積神經(jīng)網(wǎng)絡(luò)。本文采用VGGNet-19模型進(jìn)行圖像特征提取,并且用符號F表示圖像特征,如圖5所示。

圖5 神經(jīng)網(wǎng)絡(luò)的VGGNet-19模型網(wǎng)絡(luò)結(jié)構(gòu)
如圖6所示,關(guān)節(jié)點(diǎn)檢測分支一共輸出19個特征圖,分別代表18個人體關(guān)鍵點(diǎn)特征圖和背景圖。將從特征圖中提取的人體關(guān)節(jié)點(diǎn)根據(jù)算法對應(yīng)的連接邊緣作為人體肢體,形成圖像中人體的骨骼圖。關(guān)節(jié)點(diǎn)上的親和區(qū)域分支輸出38個特征圖,代表聯(lián)系著親和場區(qū)域分支(Part Affinity Fileds, PAF),即關(guān)節(jié)點(diǎn)與相鄰的關(guān)節(jié)點(diǎn)之間的聯(lián)系。

圖6 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)預(yù)測圖
本文采用MS COCO 2017數(shù)據(jù)集進(jìn)行模型訓(xùn)練,該數(shù)據(jù)集身體部位有17個,Openpose算法中添加了一個頸部這個部位。因此提取出的數(shù)據(jù)是被分成18組的,分別代表18個關(guān)節(jié),每組涵蓋了當(dāng)前圖像中人體關(guān)鍵點(diǎn)的坐標(biāo)位置和置信度。如圖7所示是MS COCO中的人體關(guān)鍵點(diǎn)。并提取出當(dāng)前關(guān)節(jié)的位置和所對應(yīng)的置信度。如表1所示是通過Openpose算法得到單人的關(guān)鍵點(diǎn)位置和置信度。

圖7 MS COCO中的人體關(guān)鍵點(diǎn)利用關(guān)節(jié)點(diǎn)檢測分支中的18個特征圖提取人體關(guān)鍵點(diǎn),

表1 Openpose算法得到單人的關(guān)鍵點(diǎn)位置和置信度
其中,人體關(guān)鍵點(diǎn)距離原點(diǎn)的水平像素距離用表示,人體關(guān)鍵點(diǎn)距離原點(diǎn)的垂直像素距離用表示。
將每個關(guān)鍵點(diǎn)都作為支撐一個樹干的一個支點(diǎn),相鄰四個關(guān)鍵點(diǎn)之間的一個連接線就作為一個樹干,而整個人的骨架就是一棵樹。
在匹配的整個計算過程中,每次匹配只需要考慮到兩個節(jié)點(diǎn)相鄰位置的關(guān)鍵點(diǎn)之間的連接,然后將每個匹配問題分解成為一組二分圖匹配的子問題,并由此可以完全獨(dú)立地去確定另外一個相鄰的樹骨架節(jié)點(diǎn)之間的連接關(guān)系的匹配(每次僅僅只考慮一個肢體的連接),最后就可以把整個人都連起來了。
以下是具體的算法步驟:人體的各個關(guān)鍵點(diǎn)之間存在許多種可能的連接,我們可以通過積分賦予每一個可能存在的連接一個分?jǐn)?shù),即PAF得分:

其中,兩個為為兩個人體關(guān)鍵點(diǎn),并且方向單位化。為兩個人體關(guān)鍵點(diǎn)連線上的點(diǎn),如圖8所示。

圖8 親和場二維向量圖
對二分圖可能的連接進(jìn)行加權(quán),計算出可能的最大匹配結(jié)果:

其中為E為二分圖優(yōu)化之后肢體的權(quán)重,應(yīng)取其中總權(quán)重之和最大的作為結(jié)果;為Z為所有骨點(diǎn)連接集合的的子集。約束條件為:

該條件表示一段肢體最多只存在一條連接邊。
在我們理解了如何快速計算求出人體中兩個或兩個以上人體關(guān)鍵點(diǎn)組合匹配的最小權(quán)值原理之后,可對二分圖算法進(jìn)行簡化。簡單來說,就是將原問題看作由若干個二分圖最大權(quán)匹配問題組成,進(jìn)而求解后將每條樹邊所對應(yīng)的匹配集合合并在一起,即可得到人體骨架,如圖9所示。


圖9 二分圖算法優(yōu)化原理圖
本文中在使用的MS COCO 2017數(shù)據(jù)集中對訓(xùn)練集和測試集取樣,總和為5 630組,劃分比例為訓(xùn)練集:測試集=4:1,得到訓(xùn)練集4 504組,測試集1 126組測試。最終在訓(xùn)練集上得到混淆矩陣如表2所示。

表2 混淆矩陣
在測試集上得到如圖10所示的人體姿態(tài)識別結(jié)果圖。

圖10 測試集示意圖
根據(jù)混淆矩陣和指標(biāo)公式可以得到準(zhǔn)確率為96.31%,靈敏度為97.75%,特效度為84.16%。由此可得出該人體姿態(tài)識別模型對大部分的人體姿態(tài)辨識度較高,對小部分的人體姿態(tài)無法識別出來。具體分析得出有以下幾點(diǎn)原因:
(1)MS COCO 2017數(shù)據(jù)集中的數(shù)據(jù)是隨機(jī)取樣的,可能存在樣本種類的分布不均衡問題,使模型訓(xùn)練結(jié)果存在偶然性和不確定性。
(2)存在一些特殊的訓(xùn)練樣本,使模型無法起到提取人體關(guān)鍵點(diǎn)的功能或缺少部分人體關(guān)鍵點(diǎn)是關(guān)節(jié)拼接混亂,如圖11所示。

圖11 錯誤識別示意圖
本文所研究的靜態(tài)圖像人體姿態(tài)的識別系統(tǒng)是采用Openpose算法實(shí)現(xiàn)的,并通過使用PyQt5語言實(shí)現(xiàn)了GUI界面的展示,本文測試場景選在某小區(qū)內(nèi),檢測出小區(qū)居住人員活動時的人體姿態(tài)。系統(tǒng)界面和實(shí)測結(jié)果如圖12所示。

圖12 人體姿態(tài)識別成品展示圖
本文在基于計算機(jī)視覺的人體姿態(tài)識別研究上,通過VGGNet模型實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測,然后利用Openpose算法獲取人體關(guān)鍵點(diǎn)的位置,最后根據(jù)PAF和二分圖算法實(shí)現(xiàn)了人體姿態(tài)識別系統(tǒng)。
在最終系統(tǒng)的實(shí)施中,本文實(shí)現(xiàn)的系統(tǒng)完成度較高,后續(xù)工作中可繼續(xù)優(yōu)化圖片預(yù)處理技術(shù),增加人體姿態(tài)分類算法,并進(jìn)行相應(yīng)數(shù)據(jù)訓(xùn)練,從而提高算法效率,并能得到更好的應(yīng)用效果。