茍先太,陶明江+,李 欣,康立燁,金煒東,3
(1.西南交通大學 電氣工程學院,四川 成都 611756;2.四川大學 原子與分子物理研究所,四川 成都 610065;3.南寧學院 中國-東盟綜合交通國際聯合實驗室,廣西 南寧 530200)
近年來,基于深度學習的人體姿態識別研究得到不斷發展,Newell A等[1]提出了一個結合中間監督過程的堆疊沙漏模型(stacked hourglass),通過連續的池化和上采樣不斷進行特征的編解碼過程以實現關鍵點的定位和分類。Hua G等[2]針對網絡中大幅度卷積導致的原始圖像分辨率降低的問題,提出將殘差注意力模塊納入堆疊沙漏網絡中實現對上采樣過程的監督,但在人體遮擋的情況下檢測比較困難。Gkioxari G等[3]借鑒于sequence-to-sequence模型的思想提出了一種鏈式的卷積神經網絡,模型分階段預測不同類別的關鍵點,充分考慮到關鍵點之間的結構化關系,缺點是前一階段的預測結果會直接影響到后續的預測效果且不能較好處理遮擋情況。針對此問題,Bulat A等[4]提出的級聯雙子網絡模型以及Yeonho等[5]提出的基于數據投影轉換的深度網絡都較好地解決了遮擋問題。除了傳統的卷積神經網絡外,生成式對抗網絡在人體姿態識別領域也得到了極大應用,Chen Y等[6]、Chou C J等[7]、吳春梅等[8]將生成式對抗網絡利用到人體姿態檢測任務中,通過構建不同的生成器和辨別器以提高模型的預測能力,為該領域的發展提供了一種新的解決思路。但是生成式對抗網絡面臨的最大問題就是收斂性問題,模型不易收斂到全局最優。文獻[9]指出,卷積處理層之間的稠密連接可以提升網絡對圖像特征的提取能力和利用程度。基于此思想,本文提出一種稠密殘差步進網絡,并采用基于二維卷積的FReLU激活函數,擴大了模型的接收域,保證較高檢測精度的條件下模型的預測速度可以達到實時效果(人體姿態估計如圖1所示)。

圖1 人體姿態估計
卷積神經網絡的本質就是一系列堆疊的卷積層和池化層,通過分析卷積操作的底層可以看到,實際上卷積操作只能夠對輸入進行線性變換。但是,在許多實際的應用場景中,需要識別或完成的任務都是十分復雜的問題,并非是線性可解的,需要采用非線性的模型來解決。激活函數大多都是非線性函數,因此在模型的構建中通過加入激活函數可以給網絡引入非線性變換,增強模型的表達能力。
在深度學習模型的構建中,常用的激活函數有:sigmod激活函數、tanh激活函數、ReLU激活函數、PReLU激活函數和softmax激活函數。通過分析上述激活函數的特性可知,雖然每一種激活函數都能給模型帶來非線性能力,有著不同的激活特性,但是都存在著同樣的問題:都是對輸入特征圖某一個特征點進行激活,而沒有考慮到當前特征點周圍的特征信息,導致模型的激活域都被固定為1×1的大小,不能很好地關注到圖像整體信息。
針對此問題,Ma N等[10]設計了一種全新的二維激活函數FReLU,該激活函數借鑒了ReLU和PReLU兩種激活函數的基本思想,但是FReLU對當前特征點的周圍信息做二維卷積操作,將卷積操作的結果與當前特征點進行判別激活,FReLU最本質的區別在于非線性激活的條件值不是固定的,而是由局部卷積的結果決定。這樣就導致在進行非線性激活的時候,模型將會有更廣的接收域。FReLU激活函數可以用式(1)和式(2)聯合表示
f(xc,i,j)=max(xc,i,j,T(xc,i,j))
(1)
(2)

激活特性分析:FReLU激活函數中(激活特性如圖2所示),在進行非線性激活時, max(.) 函數給了網絡模型是否關注空間信息的兩種選擇,當卷積的結果T(xc,i,j) 更大的時候,模型將關注到更多的空間信息而不再是單個特征點。例如:如果設計一個有m層的網絡M={F1,F2,…,Fm}, FReLU激活函數實現結構中卷積核的尺寸選為k×k, 那么就可以得到網絡第一層F1的激活域集合就是activation_set={1,1+r}(r=k-1), 在經過m層之后,模型最終輸出特征對應的激活域集合就是activation_set={1,1+r,1+2r,…1+mr}(r=k-1)。

圖2 FReLU激活特性
通過分析可以看出,采用FReLU激活函數進行模型搭建將使模型有更廣的激活域,同時增強對空間信息捕獲能力。
在深度卷積神經網絡中,隨著網絡深度的增加,所構建的模型從理論上可以取得更好的效果。但是通過實驗卻發現,深度神經網絡在訓練的過程中存在退化問題,即:網絡的深度更深但模型的表現更差。針對這個問題,基于殘差學習的殘差網絡(Residual-Net)[11]被提出。
在深度殘差網絡中,每一個殘差塊的結構如圖3所示。首先,由上一層殘差塊的處理結果作為當前塊的特征輸入x,在當前殘差塊中,輸入x的特征經過一系列的權重層得到當前層的輸出F(x), 同時通過設計的一個直連通道可以將上一層的特征輸出直接連接到當前層的輸出,經過特征的融合得到H(x), 將最后的融合特征作為下一個殘差塊的輸入。

圖3 殘差塊網絡(Residual Block)結構
根據圖3的殘差塊網絡結構,得到每個殘差層的前向計算式(3),假設每一層的損失值loss定義為均方誤差式(4),則根據求導法則可以得到loss對上一層輸入的梯度如式(5)所示。根據梯度計算式(5)可知,任意一層的輸出xL所產生的殘差可以傳遞回任意的上層。除此之外,梯度中包含線性疊加項而非直接連乘,因此可以很好地解決因模型較深導致梯度消失的問題
xL=xL-1+F(xL-1)
(3)
(4)
(5)
式(3)~式(5)中,xL表示當前層的輸出,xL-1表示前一層的特征輸出,E為當前層的輸出xL與當前層的標簽數據xlabel計算得到的殘差loss值。
作為一種與Residual-Net相比結構完全不同的全新網絡,Dense-Net[9]在作為主干網絡進行特征提取的任務上有較好的表現。網絡結構如圖4所示,可以看出Dense-Net在結構上并不復雜,但是卻能夠對模型提取的特征進行較好地利用。這種形式的網絡結構主要有兩點優勢:①通過將前面特征層的輸出直接連接到后面特征層的輸入,和Residual-Net思想一樣可以減輕梯度消失的問題;②每一層的輸出特征信息都被融合到后續的特征處理層,保證網絡中層與層之間最大程度的信息傳遞。

圖4 稠密網絡(Dense-Net)結構
因此在人體姿態估計這樣需要對圖像細節特征具有較高提取要求的任務上,采用基于稠密連接的網絡結構可以充分利用特征信息,保證網絡在提取高維特征的同時也不丟失低維細節信息。
本文提出的模型為稠密殘差步進網絡(dense residual steps network,DRSN),該模型由4個級聯的稠密殘差步進塊(dense residual steps block,DRSB)組成,模型的整體架構如圖5所示。模型以RGB圖像為輸入,首先進行一系列卷積操作層Conv1的處理,得到初始的特征圖,該部分的特征圖尺寸為64×64×64,即將圖像特征變成64通道。隨后經過第一階段的級聯網絡(每一階段都是由兩個級聯的DRSB網絡模塊組成),經過每一階段后,特征圖的尺寸分別為:第1階段末(64×64×64)、第2階段末(32×32×128)、第3階段末(16×16×256)、第4階段末(8×8×512)。考慮到人體關鍵點的回歸和分類任務不容易收斂的問題,根據圖5的模型結構,在第2階段和第4階段末分別進行一次loss值的計算,由于計算loss值時需要模型輸出對應的熱圖,而第二階段和第四階段輸出特征圖的尺寸分別為32×32×128和8×8×512,因此需要對輸出的特征進行上采樣之后再卷積操作,使其變成64×64×64形狀的輸出即為需要的預測熱圖。

圖5 模型整體結構
DRSB網絡模塊的結構如圖6所示,針對每一個DRSB模塊而言,都將輸入特征進行通道分割,然后依次輸入不同的通道處理。首先DRSB將當前階段的輸入特征分割成4個部分fi(i=1,2,3,4), 然后每個fi分別經過一個卷積核尺寸為3×3的卷積操作,DRSB在當前通道i進行卷積操作之前,都需要將前面i-1個通道的上層卷積結果和當前通道的上層卷積結果進行特征相加的融合,這樣的網絡結構基本思想來源于稠密網絡(Dense-Net)[9]。通過將同級卷積的特征進行內聯,實現神經元之間的稠密連接,可以豐富模型對空間信息和語義的提取能力,捕獲到利于關鍵點定位和分類的圖像特征。

圖6 DRSB結構
雖然DRSB和Dense-Net的網絡結構都是采用密集連接,兩者的最主要的區別在于:Dense-Net中,主要將特征圖進行通道維度的拼接,當密集連接程度非常大的時候,會造成后階段的特征圖通道維度災難;而在DRSB的結構設計中,出于對模型復雜程度和預測速度的考慮,采用的是特征像素點對應位置相加的方式,這樣既可以充分利用不同通道的圖像特征又有效地避免了由于通道拼接帶來的維度問題。根據圖6可以得到單個DRSB的表達式如式(6)所示
(6)

激活函數的傳統作用是給模型引入非線性變換,使得模型能夠擬合更加復雜的問題。在本文的模型構建中,選用更加適合于圖像處理的FReLU激活函數(見式(1)、式(2)),在引入非線性的同時能夠增廣模型的接收域集合。在實際的代碼中,FReLU激活函數的實現方式如圖7所示。

圖7 FReLU激活函數實現結構
圖7(a)中為FReLU激活函數的原始實現結構,針對當前層的卷積處理結果fin, 首先對其進行卷積核尺寸為3×3大小的卷積操作,卷積處理的結果為fout, 最后根據max(fin,fout) 方法實現選擇激活,fin和fout所有維度的尺寸都保持一致。圖7(a)中的FReLU實現結構能夠完全表達出該激活函數的設計思想,但是需要考慮一個問題:如果需要構建的基礎網絡深度為n,每一個卷積操作之后都進行激活操作,那么模型需要保存額外的n個卷積操作帶來的參數量,這樣的模型參數量將會十分巨大。在本文的FReLU實現結構中,采用圖7(b)的實現方式,已有相關研究結果表明,降低模型的參數量除了將大卷積核分解成多個小卷積核之外還可以將空間卷積分解為不對稱卷積,即將n×n的卷積操作分解為兩個級聯的1×n和n×1卷積。當輸入輸出的通道數目一定的前提下,通過非對稱分解可以將計算量減少33%。因此,在網絡深度較深的時候,采用優化后的FReLU實現結構能夠大大降低模型的參數,加快模型的預測速度。
2.3.1 寬接收域定義
在卷積神經網絡中,將卷積核能處理的寬度定義為該卷積操作的接收域,卷積操作通常是級聯的形式,因此可以將每一層卷積的接收域的計算總結為式(7)
(7)
其中,lk代表第k層卷積的接收域;fk代表第k層卷積核的尺寸;si代表第i層卷積的步長。在本文的模型構建中,卷積核的尺寸都選擇3×3的大小,步長設置為1,因此式(7)可以簡化為式(8)
lk=lk-1+2
(8)
本文提出的寬接收域定義為:針對每一次網絡模塊化處理,假設輸入特征的接收域為 {m}, 在通過該次處理之后,接收域不再是單個固定值m,而是 {m,m+2,m+4,…,m+2n} (n與模型的深度有關,由式(8)計算得到),接收域集合中的接收域值選擇更多,讓模型能夠在把握大接收域帶來的全局信息的同時也能夠充分利用小接收域提供的細節特征。采用不同接收域對于模型的預測效果的提升如圖8所示。

圖8 不同接收域模型的預測對比
圖8(a)所示的是當模型采用單通道網絡結構時,此時模型最終輸出圖像特征的接收域只有一種,當接收域比較小時,針對右肩這個關鍵點的定位和分類會出現很大的問題(因為模型無法得到更多的空間信息和語義信息)。圖8(b)所示的是當采用本文提出的寬接收域模型時,模型在最終階段的輸出特征的接收域是一個集合,里面包含多種接收域選擇。較小的接收域能夠為模型提供豐富的空間信息使得關鍵點的定位更加精確;較大的接收域為模型提供更寬的視野,包含的語義信息也就更多,關鍵點的分類也就更準確。因此通過為模型增寬接收域可以有效提升模型對于人體關鍵點的定位和分類。
2.3.2 接收域對比分析
針對圖6中的DRSB模型結構,可以看出該網絡塊中的所有卷積核尺寸都為3×3,網絡的有效深度為4,假設每個塊的輸入的特征in的接收域集合都規定為{1}。當模型采用非多通道非遞進式(即:一個4層的單卷積通道結構)的網絡結構設計時,經過4層的卷積操作,最后的網絡塊輸出特征out的接收域集合為{1,9}(由式(8)計算得到,接收域為1的in直連到out接收域還是為1,經過一層3×3的卷積之后接收域變成3,再經過一層之后變成5,因此經過4層之后變成9),只有兩種接收域尺寸。
當采用圖6中的DRSB網絡塊結構時,假設有效深度是4層,但是由于采用了多通道遞進式進行處理,網絡塊輸出out的接收域集合就大不相同。第1通道中,在經過一層卷積操作后,接收域為{3};在第2通道中,共包含兩個卷積層,接收域為{5};依次類推,第3通道的接收域為{7};第4通道的接收域為{9}。因此網絡塊out的接收域集合為 {1,3,5,7,9}。
同樣針對圖6中的DRSB模型結構,當采用FReLU激活函數后,對應的接收域集合會發生變化。對于第1通道原始的接收域集合為{3},對卷積輸出特征進行FReLU非線性激活,激活時神經元可以選擇當前的特征點是否關注空間信息(即:對當前原始特征點和經過圖7(b)卷積處理后的對應特征點進行選擇)。如果選擇關注空間信息,則對應的接收域變成5,反之,接收域還是3,最終的接收域集合變為{3,5};以此類推,第2通道接收域集合為{5,7};第3通道接收域集合為{7,9};第4通道接收域集合為{9,11}。
對非多通道非遞進式的結構、DRSB非FReLU激活函數的結構以及DRSB和FReLU激活函數的結構進行接收域集合對比分析,分析的結果見表1。通過對比分析可以看出,采用DRSB和FReLU相結合的網絡結構可以增加模型的接收域集合,這對于提升模型效果是有利的。

表1 接收域對比
為了驗證模型的檢測性能,將對MPII人體姿態檢測標準數據集進行實驗和結果分析。該數據集總共包含25 000張圖片以及40 000張人類動作的圖像,其中用于模型測試和驗證的圖像共計2958張。本文中的實驗環境詳細信息見表2。

表2 實驗環境配置
為了實現后面的4個階段每個階段的輸出特征都是固定的形狀,因此需要對輸入的圖像進行尺寸的裁剪和縮放,使得輸入圖像固定為256×256像素大小。根據鏈式求導法則(正向傳播簡單公式如式(9)所示),當對參數w進行求導的時候,若輸入的X全是正數時,反向傳播回來的梯度再乘上X以后不會改變方向,這就意味著權重更新在下一次迭代中要么同時增大要么同時減小。為了防止這種現象,需要對輸入數據做歸一化和均值化處理,最終的輸入圖像對應的BGR均值為[0.406,0.456,0.485],方差為[0.225,0.224,0.229]。模型的訓練選擇基于cuda加速的GPU進行,可以加速訓練過程,訓練的最大迭代次數為300輪次,選擇的優化器為Adam優化器,其中動量momentum設置為0.9,基礎的學習率設置為5e-4

(9)
根據人體姿態估計任務的特性,需要模型回歸得到人體關鍵點的坐標數據并分類出各個關鍵點,在本文的模型設計中,需要用到兩類損失函數,分別用于記錄關鍵點坐標定位損失和分類損失。分類損失函數定義為多分類交叉熵損失函數,函數定義如式(10)所示
(10)
其中,Yi是一個one-hot編碼的向量,Yi中的每個元素yij只存在兩個可能值(當第i個樣本屬于類別j時,yij=1; 反之,yij=0),pij表示的是模型對于輸入Xi所預測的屬于類別j的概率。
針對關鍵點回歸誤差采用的是均方誤差損失函數來刻畫,該損失函數定義如式(11)所示
(11)

經過模型訓練,得到最終的損失曲線如圖9所示。根據圖中所示的loss值趨勢可以知道,模型最終的loss仍然是一個相對較大的值,這是因為在本文的模型中,采用了多階段計算loss值,并且將不同類別的損失值進行加權求和,因此整體上loss偏大,但是模型整體上趨于收斂。

圖9 模型訓練loss值趨勢
本文提出的基于寬接收域的人體姿態檢測模型在MPII標準測試數據集上進行模型驗證,該數據集代表了姿態估計任務中最具挑戰性的基準數據集,因為數據集中包含了多個人體不同活動下的各種姿態變化情況。
針對人體姿態估計常用的評價指標是關鍵點正確估計的比例(percentage of correct keypoints,PCK),主要是計算檢測的關鍵點與其對應真值之間的歸一化距離小于設定閾值的比例,這個閾值通常也被表示為r(容忍度)。在本文中因為采用的MPII數據集是以頭部長度作為歸一化參考,即評價指標稱為PCKh。
在表3中,測試了不同容忍度下,模型對于不同人體關鍵點的定位準確率(用PCKh百分比表示),從測試結果中可以看出,當容忍度r=0.5時,人體各類關鍵點的平均準確率可以達到90.07%,能夠達到較高的檢測準確率,其中人體頭部、肩部的檢測準確率更是高于96%。

表3 MPII數據集不同容忍度下的PCKh/%
為了驗證本文方法的有效性,和同樣采用MPII數據集作為評測數據集的其它文獻[7,12,13]做對比分析,圖10中顯示了在MPII數據集上,不同的方法在不同容忍度的條件下對于人體關鍵點的檢測平均PCKh曲線。通過PCKh曲線可以看出,本文提出的方法在容忍度介于0.1~0.4之間測得的平均準確率均高于其它方法,驗證了模型的有效性。

圖10 MPII數據集上不同容忍度下平均PCKh曲線
人體姿態估計通常被應用于人機交互、影視制作等領域,因此對模型的檢測速度有較高地要求,本文所提出的檢測方法在模型體量上有較大地優勢。主要源于兩個方面:①在模型的稠密連接處,采用的是通道相加而非是通道的拼接,這樣可以解決拼接帶來的維度災難問題,減小模型的參數量;②對于激活函數的選取,采用的是適合于圖像處理的FReLU激活函數,在引入非線性的同時增加模型的接收域集合,這樣可以在網絡結構較淺(網絡結構淺預測速度更快)的同時使得模型能夠關注到更多的全局信息。對MPII數據集的測試集進行檢測速度驗證,本文所提出的模型在NVIDIA GeForce RTX 2080Ti GPU上測得的檢測幀率達到38 FPS,測試效果如圖11所示,可以廣泛應用于實時的任務。

圖11 MPII數據集上姿態檢測效果
本文提出了一種基于寬接收域的實時人體姿態檢測網絡,該網絡可以推斷出各種活動狀態下的人體姿態。通過在模型中采用步進式的結構設計和基于二維卷積的FReLU激活函數,可以有效地增加模型的接收域集合,提升模型對全局信息的掌握能力,關鍵點分類更加準確。同時,在基礎模型塊內部采用基于特征點相加的稠密連接,可以有效提升模型的空間信息提取能力又不受通道維度災難的影響。通過在人體姿態檢測標準數據集MPII上進行檢測,在容忍度為0.5時,模型的準確率(PCKh)可以達到90.07%,并且檢測速度達到實時效果。