梁橋康 ,吳樾
(1.湖南大學 電氣與信息工程學院,湖南 長沙 410082;2.航天江南集團有限公司,貴州 貴陽 550009)
人體姿態估計是計算機視覺中最基本和最具有挑戰性的任務之一,旨在從圖像或者視頻序列中檢測并識別人體關鍵點的位置和類型.其在行為識別[1]、自動駕駛和行人檢測[2]等后續任務中具有廣泛的應用.
近年來,隨著深度神經網絡(Deep Neural Net?works,DNN)的不斷發展,DNN 在計算機視覺領域得到了廣泛的應用并取得了巨大的成功,人體姿態估計取得了顯著的進展.
早期的基于卷積神經網絡的(Convolutional Neu?ral Networks,CNN)方法直接從圖像中預測關節點的位置,DeepPose[3]利用深度神經網絡直接從圖像中回歸關鍵點坐標,這種方法很難獲得精確的坐標,而且網絡的收斂速度非常緩慢.Tompson 等人[4]使用馬爾可夫隨機場為每個關節點創建一個與其他關節點相關的圖模型(Graphical Model)結構,并利用熱力圖表示關節點信息,熱力圖數值的大小表示該位置是關節點的概率大小,熱力圖中最大值的坐標即為關節點的坐標.由于熱力圖可以通過卷積操作直接得到,因此,使用熱力圖表示關節點位置這一方法很大程度上促進了基于CNN 的人體姿態估計方法的發展.現有的大多數人體姿態估計方法都是基于熱力圖預測.Huang 等人[5]提出了一種由無偏坐標系統變換和無偏關鍵點格式變換組成的無偏數據處理(Unbi?ased Data Processing,UDP)系統,該系統可以很容易地與任何人體姿態估計網絡相結合,進一步提高預測精度.DARK(Distribution-Aware Coordinate Repre?sentation of Keypoints)[6]提出了一種基于泰勒展開的坐標解碼和無偏亞像素中心坐標編碼方法.
目前,多人姿態估計主要有兩種主流策略,即自上而下和自下而上兩種方法.自上而下的方法需要先檢測出人體邊界框,然后對識別到的人體進行單人姿態估計.自下而上的方法不進行人體框的檢測,而是直接檢測出所有的關鍵點,然后將它們進行分組.自上而下的方法精度更高但是會犧牲速度,而且受人體框檢測精度的影響.自下而上方法速度更快但是精度相對不高,現有的自下而上方法主要集中在如何將檢測到的屬于同一個人的關節點關聯在一起.
OpenPose[7]提出部分親和力場(Part Affinity Fields,PAFs)的概念,PAFs 存儲了肢體的位置和方向信息,結合預測的熱力圖快速地將各關節點分組到每個人.Kreiss 等人[8]提出用部分強度場(Part In?tensity Field,PIF)來表示關節點的位置和用部分關聯場(Part Association Field,PAF)來表示關節點之間的關聯,利用部分關聯場特征將屬于同一個人體的關節點關聯起來.DEKR(Disentangled Keypoint Re?gression)[9]提出了一種多分支結構的解耦關鍵點回歸方法,每個分支分別對特定關鍵點進行獨立的特征提取和回歸,實現了關鍵點之間的解耦,解耦后的特征能夠獨立地表示特定關鍵點區域.Pishchulin 等人[10]提出把所有的關節點作為節點形成一個圖結構,然后利用預測的人體框信息,將屬于同一個人的關節點歸入同一個類別.AE(Associative Embedding)[11]提出了一個端到端的單階段網絡,同時為每個關節點生成熱力圖和分類標簽,標簽值接近的關節點屬于同一個人.
CPM(Convolutional Pose Machines)[12]通過序列化的多階段網絡逐步細化關鍵點預測,利用中間監督信息可以有效地解決梯度消失的問題.Chen 等人[13]提出了一個兩階段的級聯金字塔網絡,前一階段用于預測一個粗略的姿態,后一階段在前一階段的基礎上改進預測結果.模擬人類認知的過程,即先注意能夠直接看到的關節點,然后利用已知的關節點信息推測出看不見的部分,RSN(Residual Steps Network)[14]提出了姿態調整機,能夠進一步細化初始姿態,提高姿態估計的精度.HRNet(High Resolu?tion Net)[15]以一個高分辨率的子網絡作為第一階段,之后的每個階段比前一階段多一個并行的低分辨率子網絡,在同一階段內,不同分辨率子網絡的信息被反復融合,這種保持高分辨率特征的策略能夠顯著提高人體姿態估計的精度.
由于算力和內存限制,移動設備和嵌入式平臺不適合部署大型網絡[16],因此,目前的人體姿態估計網絡難以得到廣泛應用.Osokin 等人[17]利用減少細化階段層數減少網絡參數量和使用空洞卷積提升感受野的大小等方法提出了一個輕量化的Openpose網絡,在CPU 上實現了實時的人體姿態估計.Lite-HRNet[18]提出條件通道加權,從所有通道中學習權重,實現跨通道和分辨率交換信息,與其他輕量化網絡相比,取得了更好的精度.Zhang 等人[19]構建了一個輕量化的沙漏網絡,利用快速姿態蒸餾模型學習策略,能夠更有效地訓練輕量化人體姿態估計網絡.
與以往的輕量化人體姿態估計方法不同,本文提出了一種兼顧精度和輕量化人體姿態估計網絡,在保持精度的前提下有效地減少了網絡的計算量和參數量,為移動設備、嵌入式平臺等運算能力、內存大小有限的設備提出了一種有效的輕量化人體姿態估計網絡.
增加網絡的容量(更深或更寬)能夠促使網絡提取到更加復雜、高級的特征信息,可以相對容易地提高網絡的精度.然而,網絡的性能并不會隨著網絡深度或寬度的遞增線性地增長,可能會出現性能飽和甚至下降,網絡的參數量和內存消耗量也會越來越高,其對硬件計算能力和內存的要求也增大.動態卷積[20]根據注意力程度動態地聚合多個卷積核,能夠在不增加網絡深度和寬度的條件下增加模型的復雜度.Inception[21]提出的在同一模塊中使用不同尺寸的卷積核,使得網絡能夠自主地提取不同尺寸目標的特征.Szegedy 等人[22]提出使用兩個一維卷積核替代一個二維卷積核,以此來減小網絡的參數量.ResNet(Residual Net)[23]提出殘差學習來解決網絡退化的問題,其提出了兩種不同的殘差塊,Basic 塊和Bottle?neck塊,如圖1所示.

圖1 殘差塊Fig.1 ResNet blocks
ResNet模塊可表示為:
式中,x為輸入特征,y是輸出特征,F(?)是ResNet 學習到的映射變換,殘差連接的主要優點是特性再利用,可以減少特性冗余.
當輸入特征大小為Hin×Win×Din,輸出特征大小為Hout×Wout×Dout,卷積核大小為S×S時,標準卷積可學習的參數量為:
Basic 塊由兩個3 × 3 卷積組成,當保持特征輸入輸出通道數D不變時,其可學習的參數量為:
Bottleneck 塊由兩個1 × 1 卷積和一個3 × 3 卷積組成,其可學習的參數量為:
由計算可知Bottleneck 模塊的參數量下降為Ba?sic模塊的.
分組卷積(Grouped Convolution,GC)是指在通道方向上對輸入特征進行分組,每組特征被相應分組的卷積核單獨卷積,之后通過拼接組合產生輸出特征.分組卷積最早由AlexNet[24]提出,由于當時硬件的運算能力和內存資源有限,在網絡訓練時,一個GPU 無法處理所有的卷積操作,所以作者將模型部署在兩個GPU 上,最后將兩個GPU 的結果融合在一起.
在分組卷積中,輸入特征和卷積核都會被分成g組,每組特征的大小為,每組卷積核的數量為,每個卷積核大小為,每組卷積核只對相應分組的特征進行卷積操作,則分組卷積可學習的參數量為:
深度可分離卷積(Depthwise Separable Convolu?tion,DSC)[26-27]是將標準卷積分解成兩部分,即深度卷積和1 × 1 卷積,每個深度卷積核只對輸入特征的一個通道進行卷積操作,卷積核的數量與特征的通道數相同,因此,深度卷積不改變特征的通道數量.1×1 卷積用于實現特征的升維或降維.與常規的卷積操作相比,深度可分離卷積的參數量和運算成本相對更低.
如圖2 所示,ResNeXt[28]提出了深度和寬度之外的下一個維度,即基數(Cardinality),增加基數可以在保持模型復雜度的情況下提高模型的性能.ResNeXt 在圖像分類方面的巨大成功促使我們將其引入人體姿態估計領域,并用其改進當前的人體姿態估計方法.

圖2 兩種ResNeXt模塊Fig.2 ResNeXt blocks
ResNeXt模塊可表示為:
式中,x為輸入特征,y是輸出特征,Ti是ResNeXt 第i個分支學習到的映射變換,g是基數,即分組數.
ResNeXt 模塊由兩個1×1 卷積和一個3×3 分組卷積組成,其可學習的參數量為:
由式(3)、式(7)可得:
在神經網絡中,不同像素大小的特征分別蘊含著不同層次的信息.
檢測任務的目標是準確地檢測目標在圖像中的空間位置.一般來說,高像素特征蘊含豐富的空間位置信息,其位置敏感性更強,有利于檢測任務.
分類任務的目標是對圖片中的目標進行分類.實驗表明,隨著卷積神經網絡層數的不斷增加,輸出特征具有的語義信息逐漸增強,其位置不變性更強,有助于分類任務[29].人體姿態估計既包含定位關節點位置的檢測任務,又包含分類不同關節點的分類任務,因此,人體姿態估計任務的性質決定了網絡既要具有分類任務的位置不變性,又要具有檢測任務的位置敏感性.
HRNet 采用多分支結構,在網絡中高像素特征分支與低像素特征分支并行排列,不同分辨率特征的相互融合提高了神經網絡的位置敏感性和位置不變性.一方面這使得其在目標檢測、語義分割和人體姿態估計等方面展示出了卓越的能力.另一方面也產生了參數量巨大、難以訓練和內存消耗大等問題.
本文聚焦于在HRNet的基礎上設計一個輕量化的人體姿態估計網絡.首先利用Bottleneck 模塊替換掉HRNet 中大量使用的Basic 模塊,然后利用ResNeXt 替換Bottleneck 模塊進一步減少網絡的參數.為了向HRNet 和ResNeXt 致敬,將本章提出的方法命名為X-HRNet.
X-HRNet 網絡結構如圖3 所示,X-HRNet 與HRNet 具有相同的網絡構架,總共有四個階段,每個階段分別有1、2、3、4 個不同分辨率的分支.預處理階段使用兩個步長為2 的3×3 卷積將輸入圖片的分辨率降低為1/4,通道數由3增加為64.第一階段利用4 個Bottleneck 模塊進行特征提取.從第二階段開始使用ResNeXt 模塊替換原始HRNet 網絡中大量使用的Basic 模塊進行特征提取,各分支的分辨率分別為1/4、1/8、1/16、1/32,通道數分別為48、96、192、384.為了避免分辨率下降造成特征圖信息丟失,每個新增的低分辨率分支通道數增加一倍.第四階段的末尾,將四個分支的特征上采樣到相同的分辨率,然后使用元素加得到最終的輸出,最終的輸出為17 個關節點的熱力圖.網絡的具體結構如表1 所示.其中,(3 ×3,s=2) × 2 表示兩個步長為2 的3 × 3 卷積,(3 ×3,GC)表示3×3分組卷積.

表1 X-HRNet的結構Tab.1 Architecture of X-HRNet

圖3 X-HRNet模型的結構Fig.3 The structure of X-HRNet
網絡的訓練使用了NVIDIA RTX 2080Ti GPU,操作系統為Ubuntu 18.04 LTS,使用的深度學習框架為Pytorch,代碼框架基于MMpose[30].訓練過程中使用了隨機縮放、水平翻轉、隨機剪裁等常用數據增強方法.使用DARK[6]作為坐標編解碼方法.輸入圖片固定為384 × 288,使用Adam 作為網絡優化器,總訓練輪數為210輪,初始學習率為5e-4,在第170輪時,學習率下降為5e-5,在第200 輪時,學習率下降為1e-5.最小批次大小為14.數據集為COCO[31],COCO數據集是目前最主流的二維人體姿態估計數據集之一,它包含20萬張以上的圖像和25萬個帶有關鍵點注釋的人體實例.
高斯熱力圖已被廣泛應用于關鍵點坐標的編碼和解碼.關節點P={p1,p2,...,pk:pi=(ai,bi)},其高斯熱力圖可表示為:
式中,Gi為第i個關節點的熱力圖,ai、bi分別是關節點pi的橫坐標和縱坐標,λ是控制高斯熱力圖大小的常數.
在網絡訓練期間使用的損失函數為:
在網絡預測過程中,利用公式(11)將高斯熱力圖解碼為關節點的坐標.
1)基于對象關節點相似度(Object Keypoint Similarity,OKS)的平均精度(Average Precision,AP)
本文使用COCO 數據集人體姿態估計任務標準的評價指標,即基于OKS 的AP,評估了不同閾值和不同對象大小下的平均精度:AP、AP50、AP75、APM、APL和平均召回率AR.
式中,di是預測關鍵點位置與真實值之間的歐式距離,s是目標尺度因子,ki是與關節點相關的衰減常數,vi是關鍵點是否可見的標識符,當關節點標注時,δ=1,當關節點未標注時,δ=0.
2)浮點運算次數(Floating-point of Operations,FLOPs)
浮點運算次數主要用來衡量算法復雜度.卷積操作的計算量為:
式中,Din是輸入特征的通道數,S為卷積核的大小,Hout、Wout、Dout分別為輸出特征的高、寬和通道數.
表2 展示了本文所提出的方法與其他方法在COCO 驗證集上的表現.結果顯示,X-HRNet-W48-G12(表示ResNeXt 模塊的基數為12)達到了77.8%的精度,顯著優于其他輕量化網絡.與FastNet-W48相比,獲得了3.3%的精度增長,參數量下降了4.4M,計算量減少了7.4GFLOPs(Giga Floating-point of Op?erations).與Lite-HRNet-30 和Lite-HRNet-18 相比,精度分別增長了7.4%和10.2%.相比MobileNet V2和ShufflfleNet V2,精度分別增加了10.5%和14.2%.

表2 與現有算法在COCO驗證集上的性能比較Tab.2 Performance comparison with the existing algorithms on the COCO validation set
X-HRNet-W48-G1 的精度為78.2%,參數量為41.4M,計算量為5.6GFLOPs.相比HRNet,精度上升了1.9%,參數量下降了22.2M,計算量下降了27.3GFLOPs.相比HRNet-W48+DARK,精度上升了1.0%,參數量下降了22.2M,計算量下降了27.4GFLOPs.與MSPN 相比,X-HRNet-W48-G1 的精度取得了1.3%增長,參數量下降了78.6M,計算量下降39.23GFLOPs.與4×RSN-50 相比,雖然精度由79.2%下降到了78.2%,但是參數量下降了70.4M,計算量下降了27.43GFLOPs.
與大模型相比,X-HRNet 以更低的參數量和計算量取得了可以媲美的精度.
表3 展示了X-HRNet 和其他方法在COCO testdev 測試集上的表現.X-HRNet-W48-G12 取得了74.7%的精度,相比FastNet-W48 精度增加了0.9%.相比Lite-HRNet-30 精度值提高了5.0%.與Mo?bileNet V2 相比,精度值增加了7.9%,和ShuffleNet-V2 相比,精度值提高了11.8%.X-HRNet 在COCO test-dev 測試集上取得了比其他輕量化網絡更高的精度值.

表3 與現有算法在COCO test-dev上的性能比較Tab.3 Performance comparison with the existing algorithms on the COCO test-dev set
X-HRNet-W48-G1 取得了75.0%的精度,相比Simple Baseline、CPN 和CFN,精度值分別提高了1.3%、2.9%、2.4%.雖然X-HRNet 在精度上與其他大模型相比存在差距,但是X-HRNet 的優點是參數量和計算量很低.
由實驗結果可知,X-HRNet在保持精度的同時,有效地降低了網絡的參數量和計算量,更好地實現了精度和網絡計算量之間的平衡.
3.5.1 基數的消融實驗
為了研究不同基數對人體姿態估計精度的影響,本節在COCO 數據集上進行消融實驗.所有網絡都從隨機初始化狀態開始訓練,輸入圖片固定為384 × 288.
消融實驗的結果如表4 和圖4 所示,X-HRNet-W48-G12與X-HRNet-W48-G1相比,精度只下降了0.4%,參數量下降了26.1 M.當基數繼續增加到24和48 時,關節點定位精度分別比X-HRNet-W48-G1 下降了0.9% 和2.0%,參數量分別下降了27.3M 和27.9M.

圖4 消融實驗結果Fig.4 Results of ablation experiments
值得注意的是,精度最低的網絡X-HRNet-W48-G48 取得了76.2%的精度,僅比HRNet-W48 低0.1%,參數量減少了50.1 M.
消融實驗1 的結果表明,增加基數可以有效地降低網絡的參數量,但是精度也會降低.對于基數的選擇,需要結合實際情況合理平衡精度和參數量的關系.
3.5.2 解耦關節點特征表示
基于熱力圖的姿態估計方法通常會為每個關節點預測一個熱力圖,熱力圖上最大值處即為對應關節點的坐標.理想情況下,不同的熱力圖只會關注于特定的區域.在自下而上的方法中,為了讓每個通道更加專注于一個關節點而不受其他關節點的干擾,Geng 等人[9]提出解耦各關節點之間的特征表示,利用多分支結構回歸關節點坐標.該方法可以表示為:
式中,是第i個關節點的預測熱力圖.Bi為分支i的輸入特征,Ui(?)為第i個分支學習到的映射.
在COCO 數據中,共標注了17個關節點,由于通道數必須能整除基數,為了保持相近的參數量,本節的消融實驗將最高分辨率分支的通道數設為51,基數設為17,得到X-HRNet-W51-G17.
由表4 和圖4 可知,與X-HRNet-W48-G12 相比,X-HRNet-W51-G17 的精度下降了0.5%,參數量上升了1.2M.與X-HRNet-W48-G24 相比,精度下降了0.1%,參數量增加了1.4M.

表4 消融實驗結果Tab.4 Results of ablation experiments
消融實驗2 的結果表明,雖然多分支結構可以使每個分支專注于一個關節點,但是,人體姿態是一個整體的結構,不同關節點之間存在著相互依賴的關系,為了能夠利用不同關節點之間相互依賴的信息,保持多個分支之間的信息融合更加有利于提高自上而下人體姿態估計方法的精度.X-HRNet 在COCO 驗證集上取得了較好的效果,部分結果如圖5所示.

圖5 在COCO驗證集上的部分結果Fig.5 Some results on the COCO validation set
由于嵌入式平臺計算能力和內存限制,常用的基于神經網絡的人體姿態估計算法難以部署在嵌入式平臺上.為了滿足實際應用中對神經網絡輕量化的要求,本文在HRNet 的基礎上,利用ResNeXt 替換原模型中的Basic 模塊,利用深度可分離卷積對網絡進行改進,在保證精度的前提下,達到減少網絡的參數量和計算量的目的,提出了一種改進的輕量化人體姿態估計算法.實驗表明,相比其他輕量化人體姿態估計網絡,本文提出的方法在COCO 數據集上取得了更高的精度,是一種有效平衡了精度和網絡復雜度的方法.