摘要:依賴於「大數據」技術與高性能處理器的蓬勃發展,深度學習以其強大的魯棒性和有效性成為了計算機視覺、自然語言處理等人工智慧分支領域中佔據主導地位的研究方法。人體關鍵點檢測是計算機視覺中一個極具挑戰性的研究。可用於:動作識別,異常行為檢測,安防等。本文旨在提出一種基於深度學習的模型,解決人體關鍵點檢測任務中存在的諸多問題,提升檢測效果。該任務目前主要存在人體關鍵點尺度差異性問題。本文引入目標檢測領域中流行的特徵金字塔網絡(Feature pyramidnetwork),通過在多尺度的特徵圖上提取特徵並將高層語義特徵與底層圖像特徵融合的方式解決此問題。本文在改進後設置了對比實驗以驗證假設。最終提出了一個新模型——特徵金字塔注意力沙漏模型,其在MPII和LSP人體關鍵點檢測數據集上取得了目前最好的檢測效果。
關鍵詞:人體關鍵點檢測;特徵金字塔網絡;注意力模型
1 課題背景與研究意義
1.1 課題背景
21世紀是大數據的時代,雲計算的出現、行動裝置的普及,使得人們在舉手投足間就會產生大量的數據。這些數據的形式多種多樣,可以是微信中的語音信息,可以是微博中的文字信息,也可以是淘寶上的訂單信息。這些數據體量巨大但是結構複雜,如何高效的利用這些數據成為擺在研究人員面前的一個重要問題。與此同時,以CPU、GPU為代表的高性能處理器的迅猛發展也為高效利用這些數據提供了充足的動力。
人體關鍵點檢測是計算機視覺中一個具有重要意義的任務,2014年以前,研究者解決該任務的方法主要是使用SIFT,HOG等特徵算子提取特徵,結合圖結構模型來檢測關節點位置。隨著深度學習與計算機視覺諸多任務結合併取得顯著成果,研究者開始嘗試將其與人體關鍵點檢測任務結合。深度學習可以通過訓練得到複雜的映射關係,從而提取更複雜的高階特徵代替SIFT,HOG等人工特徵。深度學習具有更強的魯棒性和表達能力,在物體識別,目標檢測領域所取得的成果已經印證了這些優點。所以深度學習恰恰可以解決上述兩個缺點。本文將分析基於深度學習的人體關鍵點檢測算法的發展,並對其進行改進。
1.2 人體關鍵點檢測簡介及意義
人體關鍵點檢測也稱人體姿態估計。如圖1-1所示,人體姿態估計的任務是要在給定的圖片中定位人體的身體關鍵部件,例如頭部,頸部,肩部,手部等。在不同數據集上,需要檢測的具體部位不同。例如,本文中使用的MPII數據集上定義的關鍵點共有16個。它是更高級別計算機視覺任務的基礎。其應用場景主要有:
(1)人類行為識別:人類行為識別是指在給定的圖片或者圖片序列中識別出人體的動作意圖。如圖1-2所示,給定一張圖片要求計算機識別出圖中人類的動作,上面一行得到的結果為走路,下面一行得到的結果為打高爾夫。人類行為識別是計算機視覺領域一個極其重要的研究方向。其被廣泛的應用於監控,娛樂,人機互動,圖像和視頻搜索等領域。
(2)人機互動:人機互動是指設計一種計算機和用戶進行信息傳遞的接口程序。人機互動處於計算機科學,行為科學,設計,媒體研究的交叉點。一個常見的例子是:研究人員可以通過給計算機安裝攝像頭的方式使其可以獲取人類用戶的圖像信息,再通過對圖像信息的識別使得計算機理解用戶的意圖,從而達到交互的目的。
(3)服裝解析:服裝解析是指在一張圖像中解析出人體上不同的服裝,如圖1-3所示。解析服裝的視覺算法具有各種各樣的潛在應用價值,更好的理解圖像,人物服飾識別,或基於內容的圖像檢索等。但是,由於人體姿態的複雜性,解析服飾的任務並不容易。
2 基於特徵金字塔網絡的改進方法
針對上一章提出的關於人體關鍵點檢測中尺度差異性的問題,本章通過將特徵金字塔網絡(Feature pyramid network, FPN)融合到堆疊沙漏模型解決這一問題。特徵金字塔網絡在不同尺寸的特徵圖上提取特徵,然後又將不同尺寸的特徵圖進行融合,可以提取到多尺度的特徵,從而解決之前提到的尺度差異性問題。本章首先詳細描述尺度差異性問題,並分析其原因。然後,給出具體模型設計細節和實驗結果。
2.1 人體關鍵點尺度差異性問題
人體關鍵點檢測任務中一個突出的問題就是由於視角不同和人體姿態的複雜而引起的關鍵點尺度差異性問題。具體如圖2-1所示。
這兩張圖片均出自於LSP數據集,但是由於視角和人體姿態的不同,造成了人體關鍵點的尺度差異,即使已經對圖片進行裁剪和縮放處理,使得人體區域大致位於圖像中心,並且人體的尺寸近似。但是依然可以觀察到,圖2-1 (a)中人體頭部的尺寸遠大於腳部的尺寸,圖2-1 (b)中人體頭部的尺寸遠小於腳部的尺寸。這對於檢測人體關鍵點的模型來說是一個挑戰,如果模型不能學習到這些尺度差異性下的高緯度一般性就無法準確的定位關節點。這個問題不僅會影響CNN深層的語義信息,而且也會影響CNN淺層的圖像特徵。
2.2 基礎模型——堆疊沙漏模型的分析
本文在1.2節中提到,受ResNet殘差學習思想的啟發,Newell等人與2016年提出了堆疊沙漏模型(Stacked Hourglass)。堆疊沙漏模型的目標是在推理階段儘量在所有尺寸的特徵圖上捕獲信息。首先通過若干個池化層和卷積層執行下採樣,並通過反卷積進行上採樣處理。然後將這兩個過程中相同尺寸相同的特徵圖相加,就像ResNet中所做的相加一樣。重複這種「先下後上」處理來建立「堆疊沙漏」網絡,並在每個「沙漏」後進行中間監督訓練。
該模型在當年取得了最好的效果,並且其結構清晰,階段式的網絡結構具有很好的可擴展性。其基礎模塊沙漏模塊具有高度對稱性,結構清晰易於修改。2016年後許多模型均是在其基礎上進行修改的結果。所以本文選取堆疊沙漏網絡為基礎網絡,在其基礎上進行改進。該模型將貫穿本文的始終,下面詳細介紹其網絡結構和訓練方法。
其網絡結構如圖1-11所示,圖中的每個沙漏形狀即代表一個沙漏模塊。一個沙漏模塊的網絡結構如圖2-2所示,其中每一個方塊代表了一個殘差模塊,方塊的大小表示輸入特徵圖的尺寸,殘差模塊網絡結構如圖2-3 (a)所示。
沙漏模塊具有對稱性,首先是自底向上過程進行若干次卷積和最大值池化操作得到最小尺寸的特徵圖。在每次最大值池化操作後網絡產生一個包含若干卷積的分支,用於下一階段的特徵圖融合。該分支的輸入是最大值池化操作之前的特徵圖。得到最小尺寸圖後,網絡開始進行第二階段的自頂向下過程,即上採樣和特徵融合過程。上採樣使用反卷積操作,將上採樣後的特徵圖與網絡分支上同尺寸的特徵圖進行元素級的相加,得到融合的特徵圖。殘差模塊使1ⅹ1和3ⅹ3步長為1的卷積層,不改變輸入特徵圖的尺寸。輸出特徵緯度和卷積核大小如圖2-3 (a)所示,圖中虛線代表跳層連接。
圖2-3 (b)表示的是中間監督過程,圖中虛線是跳層連接,沙漏圖形代表一個沙漏模塊,圖中藍色的方塊代表生成的HeatMap,用其與ground truth計算範數損失。使用1ⅹ1的卷積將HeatMap重新變為與特徵與相同的通道數並且相加輸入到下一個沙漏模塊。
在作者的實現中,輸入圖片被裁剪和縮放成256ⅹ256的解析度。圖片首先進入一個步長為2卷積核大小為7的卷積層,隨後連接一個殘差模塊和一個最大值池化層將特徵圖解析度降到64ⅹ64。隨後連接若干個沙漏模塊,每個沙漏模塊進行中間監督訓練。所有沙漏模塊內部最小特徵圖尺寸為4ⅹ4,所有殘差模塊生成的特徵圖通道數均為256。
(責編:尹崢、燕帥)