茍先太,陶明江+,李 欣,康立燁,金煒東,3
(1.西南交通大學 電氣工程學院,四川 成都 611756;2.四川大學 原子與分子物理研究所,四川 成都 610065;3.南寧學院 中國-東盟綜合交通國際聯(lián)合實驗室,廣西 南寧 530200)
近年來,基于深度學習的人體姿態(tài)識別研究得到不斷發(fā)展,Newell A等[1]提出了一個結(jié)合中間監(jiān)督過程的堆疊沙漏模型(stacked hourglass),通過連續(xù)的池化和上采樣不斷進行特征的編解碼過程以實現(xiàn)關(guān)鍵點的定位和分類。Hua G等[2]針對網(wǎng)絡中大幅度卷積導致的原始圖像分辨率降低的問題,提出將殘差注意力模塊納入堆疊沙漏網(wǎng)絡中實現(xiàn)對上采樣過程的監(jiān)督,但在人體遮擋的情況下檢測比較困難。Gkioxari G等[3]借鑒于sequence-to-sequence模型的思想提出了一種鏈式的卷積神經(jīng)網(wǎng)絡,模型分階段預測不同類別的關(guān)鍵點,充分考慮到關(guān)鍵點之間的結(jié)構(gòu)化關(guān)系,缺點是前一階段的預測結(jié)果會直接影響到后續(xù)的預測效果且不能較好處理遮擋情況。針對此問題,Bulat A等[4]提出的級聯(lián)雙子網(wǎng)絡模型以及Yeonho等[5]提出的基于數(shù)據(jù)投影轉(zhuǎn)換的深度網(wǎng)絡都較好地解決了遮擋問題。除了傳統(tǒng)的卷積神經(jīng)網(wǎng)絡外,生成式對抗網(wǎng)絡在人體姿態(tài)識別領域也得到了極大應用,Chen Y等[6]、Chou C J等[7]、吳春梅等[8]將生成式對抗網(wǎng)絡利用到人體姿態(tài)檢測任務中,通過構(gòu)建不同的生成器和辨別器以提高模型的預測能力,為該領域的發(fā)展提供了一種新的解決思路。但是生成式對抗網(wǎng)絡面臨的最大問題就是收斂性問題,模型不易收斂到全局最優(yōu)。文獻[9]指出,卷積處理層之間的稠密連接可以提升網(wǎng)絡對圖像特征的提取能力和利用程度?;诖怂枷?,本文提出一種稠密殘差步進網(wǎng)絡,并采用基于二維卷積的FReLU激活函數(shù),擴大了模型的接收域,保證較高檢測精度的條件下模型的預測速度可以達到實時效果(人體姿態(tài)估計如圖1所示)。
圖1 人體姿態(tài)估計
卷積神經(jīng)網(wǎng)絡的本質(zhì)就是一系列堆疊的卷積層和池化層,通過分析卷積操作的底層可以看到,實際上卷積操作只能夠?qū)斎脒M行線性變換。但是,在許多實際的應用場景中,需要識別或完成的任務都是十分復雜的問題,并非是線性可解的,需要采用非線性的模型來解決。激活函數(shù)大多都是非線性函數(shù),因此在模型的構(gòu)建中通過加入激活函數(shù)可以給網(wǎng)絡引入非線性變換,增強模型的表達能力。
在深度學習模型的構(gòu)建中,常用的激活函數(shù)有:sigmod激活函數(shù)、tanh激活函數(shù)、ReLU激活函數(shù)、PReLU激活函數(shù)和softmax激活函數(shù)。通過分析上述激活函數(shù)的特性可知,雖然每一種激活函數(shù)都能給模型帶來非線性能力,有著不同的激活特性,但是都存在著同樣的問題:都是對輸入特征圖某一個特征點進行激活,而沒有考慮到當前特征點周圍的特征信息,導致模型的激活域都被固定為1×1的大小,不能很好地關(guān)注到圖像整體信息。
針對此問題,Ma N等[10]設計了一種全新的二維激活函數(shù)FReLU,該激活函數(shù)借鑒了ReLU和PReLU兩種激活函數(shù)的基本思想,但是FReLU對當前特征點的周圍信息做二維卷積操作,將卷積操作的結(jié)果與當前特征點進行判別激活,F(xiàn)ReLU最本質(zhì)的區(qū)別在于非線性激活的條件值不是固定的,而是由局部卷積的結(jié)果決定。這樣就導致在進行非線性激活的時候,模型將會有更廣的接收域。FReLU激活函數(shù)可以用式(1)和式(2)聯(lián)合表示
f(xc,i,j)=max(xc,i,j,T(xc,i,j))
(1)
(2)
激活特性分析:FReLU激活函數(shù)中(激活特性如圖2所示),在進行非線性激活時, max(.) 函數(shù)給了網(wǎng)絡模型是否關(guān)注空間信息的兩種選擇,當卷積的結(jié)果T(xc,i,j) 更大的時候,模型將關(guān)注到更多的空間信息而不再是單個特征點。例如:如果設計一個有m層的網(wǎng)絡M={F1,F2,…,Fm}, FReLU激活函數(shù)實現(xiàn)結(jié)構(gòu)中卷積核的尺寸選為k×k, 那么就可以得到網(wǎng)絡第一層F1的激活域集合就是activation_set={1,1+r}(r=k-1), 在經(jīng)過m層之后,模型最終輸出特征對應的激活域集合就是activation_set={1,1+r,1+2r,…1+mr}(r=k-1)。
圖2 FReLU激活特性
通過分析可以看出,采用FReLU激活函數(shù)進行模型搭建將使模型有更廣的激活域,同時增強對空間信息捕獲能力。
在深度卷積神經(jīng)網(wǎng)絡中,隨著網(wǎng)絡深度的增加,所構(gòu)建的模型從理論上可以取得更好的效果。但是通過實驗卻發(fā)現(xiàn),深度神經(jīng)網(wǎng)絡在訓練的過程中存在退化問題,即:網(wǎng)絡的深度更深但模型的表現(xiàn)更差。針對這個問題,基于殘差學習的殘差網(wǎng)絡(Residual-Net)[11]被提出。
在深度殘差網(wǎng)絡中,每一個殘差塊的結(jié)構(gòu)如圖3所示。首先,由上一層殘差塊的處理結(jié)果作為當前塊的特征輸入x,在當前殘差塊中,輸入x的特征經(jīng)過一系列的權(quán)重層得到當前層的輸出F(x), 同時通過設計的一個直連通道可以將上一層的特征輸出直接連接到當前層的輸出,經(jīng)過特征的融合得到H(x), 將最后的融合特征作為下一個殘差塊的輸入。
圖3 殘差塊網(wǎng)絡(Residual Block)結(jié)構(gòu)
根據(jù)圖3的殘差塊網(wǎng)絡結(jié)構(gòu),得到每個殘差層的前向計算式(3),假設每一層的損失值loss定義為均方誤差式(4),則根據(jù)求導法則可以得到loss對上一層輸入的梯度如式(5)所示。根據(jù)梯度計算式(5)可知,任意一層的輸出xL所產(chǎn)生的殘差可以傳遞回任意的上層。除此之外,梯度中包含線性疊加項而非直接連乘,因此可以很好地解決因模型較深導致梯度消失的問題
xL=xL-1+F(xL-1)
(3)
(4)
(5)
式(3)~式(5)中,xL表示當前層的輸出,xL-1表示前一層的特征輸出,E為當前層的輸出xL與當前層的標簽數(shù)據(jù)xlabel計算得到的殘差loss值。
作為一種與Residual-Net相比結(jié)構(gòu)完全不同的全新網(wǎng)絡,Dense-Net[9]在作為主干網(wǎng)絡進行特征提取的任務上有較好的表現(xiàn)。網(wǎng)絡結(jié)構(gòu)如圖4所示,可以看出Dense-Net在結(jié)構(gòu)上并不復雜,但是卻能夠?qū)δP吞崛〉奶卣鬟M行較好地利用。這種形式的網(wǎng)絡結(jié)構(gòu)主要有兩點優(yōu)勢:①通過將前面特征層的輸出直接連接到后面特征層的輸入,和Residual-Net思想一樣可以減輕梯度消失的問題;②每一層的輸出特征信息都被融合到后續(xù)的特征處理層,保證網(wǎng)絡中層與層之間最大程度的信息傳遞。
圖4 稠密網(wǎng)絡(Dense-Net)結(jié)構(gòu)
因此在人體姿態(tài)估計這樣需要對圖像細節(jié)特征具有較高提取要求的任務上,采用基于稠密連接的網(wǎng)絡結(jié)構(gòu)可以充分利用特征信息,保證網(wǎng)絡在提取高維特征的同時也不丟失低維細節(jié)信息。
本文提出的模型為稠密殘差步進網(wǎng)絡(dense residual steps network,DRSN),該模型由4個級聯(lián)的稠密殘差步進塊(dense residual steps block,DRSB)組成,模型的整體架構(gòu)如圖5所示。模型以RGB圖像為輸入,首先進行一系列卷積操作層Conv1的處理,得到初始的特征圖,該部分的特征圖尺寸為64×64×64,即將圖像特征變成64通道。隨后經(jīng)過第一階段的級聯(lián)網(wǎng)絡(每一階段都是由兩個級聯(lián)的DRSB網(wǎng)絡模塊組成),經(jīng)過每一階段后,特征圖的尺寸分別為:第1階段末(64×64×64)、第2階段末(32×32×128)、第3階段末(16×16×256)、第4階段末(8×8×512)??紤]到人體關(guān)鍵點的回歸和分類任務不容易收斂的問題,根據(jù)圖5的模型結(jié)構(gòu),在第2階段和第4階段末分別進行一次loss值的計算,由于計算loss值時需要模型輸出對應的熱圖,而第二階段和第四階段輸出特征圖的尺寸分別為32×32×128和8×8×512,因此需要對輸出的特征進行上采樣之后再卷積操作,使其變成64×64×64形狀的輸出即為需要的預測熱圖。
圖5 模型整體結(jié)構(gòu)
DRSB網(wǎng)絡模塊的結(jié)構(gòu)如圖6所示,針對每一個DRSB模塊而言,都將輸入特征進行通道分割,然后依次輸入不同的通道處理。首先DRSB將當前階段的輸入特征分割成4個部分fi(i=1,2,3,4), 然后每個fi分別經(jīng)過一個卷積核尺寸為3×3的卷積操作,DRSB在當前通道i進行卷積操作之前,都需要將前面i-1個通道的上層卷積結(jié)果和當前通道的上層卷積結(jié)果進行特征相加的融合,這樣的網(wǎng)絡結(jié)構(gòu)基本思想來源于稠密網(wǎng)絡(Dense-Net)[9]。通過將同級卷積的特征進行內(nèi)聯(lián),實現(xiàn)神經(jīng)元之間的稠密連接,可以豐富模型對空間信息和語義的提取能力,捕獲到利于關(guān)鍵點定位和分類的圖像特征。
圖6 DRSB結(jié)構(gòu)
雖然DRSB和Dense-Net的網(wǎng)絡結(jié)構(gòu)都是采用密集連接,兩者的最主要的區(qū)別在于:Dense-Net中,主要將特征圖進行通道維度的拼接,當密集連接程度非常大的時候,會造成后階段的特征圖通道維度災難;而在DRSB的結(jié)構(gòu)設計中,出于對模型復雜程度和預測速度的考慮,采用的是特征像素點對應位置相加的方式,這樣既可以充分利用不同通道的圖像特征又有效地避免了由于通道拼接帶來的維度問題。根據(jù)圖6可以得到單個DRSB的表達式如式(6)所示
(6)
激活函數(shù)的傳統(tǒng)作用是給模型引入非線性變換,使得模型能夠擬合更加復雜的問題。在本文的模型構(gòu)建中,選用更加適合于圖像處理的FReLU激活函數(shù)(見式(1)、式(2)),在引入非線性的同時能夠增廣模型的接收域集合。在實際的代碼中,F(xiàn)ReLU激活函數(shù)的實現(xiàn)方式如圖7所示。
圖7 FReLU激活函數(shù)實現(xiàn)結(jié)構(gòu)
圖7(a)中為FReLU激活函數(shù)的原始實現(xiàn)結(jié)構(gòu),針對當前層的卷積處理結(jié)果fin, 首先對其進行卷積核尺寸為3×3大小的卷積操作,卷積處理的結(jié)果為fout, 最后根據(jù)max(fin,fout) 方法實現(xiàn)選擇激活,fin和fout所有維度的尺寸都保持一致。圖7(a)中的FReLU實現(xiàn)結(jié)構(gòu)能夠完全表達出該激活函數(shù)的設計思想,但是需要考慮一個問題:如果需要構(gòu)建的基礎網(wǎng)絡深度為n,每一個卷積操作之后都進行激活操作,那么模型需要保存額外的n個卷積操作帶來的參數(shù)量,這樣的模型參數(shù)量將會十分巨大。在本文的FReLU實現(xiàn)結(jié)構(gòu)中,采用圖7(b)的實現(xiàn)方式,已有相關(guān)研究結(jié)果表明,降低模型的參數(shù)量除了將大卷積核分解成多個小卷積核之外還可以將空間卷積分解為不對稱卷積,即將n×n的卷積操作分解為兩個級聯(lián)的1×n和n×1卷積。當輸入輸出的通道數(shù)目一定的前提下,通過非對稱分解可以將計算量減少33%。因此,在網(wǎng)絡深度較深的時候,采用優(yōu)化后的FReLU實現(xiàn)結(jié)構(gòu)能夠大大降低模型的參數(shù),加快模型的預測速度。
2.3.1 寬接收域定義
在卷積神經(jīng)網(wǎng)絡中,將卷積核能處理的寬度定義為該卷積操作的接收域,卷積操作通常是級聯(lián)的形式,因此可以將每一層卷積的接收域的計算總結(jié)為式(7)
(7)
其中,lk代表第k層卷積的接收域;fk代表第k層卷積核的尺寸;si代表第i層卷積的步長。在本文的模型構(gòu)建中,卷積核的尺寸都選擇3×3的大小,步長設置為1,因此式(7)可以簡化為式(8)
lk=lk-1+2
(8)
本文提出的寬接收域定義為:針對每一次網(wǎng)絡模塊化處理,假設輸入特征的接收域為 {m}, 在通過該次處理之后,接收域不再是單個固定值m,而是 {m,m+2,m+4,…,m+2n} (n與模型的深度有關(guān),由式(8)計算得到),接收域集合中的接收域值選擇更多,讓模型能夠在把握大接收域帶來的全局信息的同時也能夠充分利用小接收域提供的細節(jié)特征。采用不同接收域?qū)τ谀P偷念A測效果的提升如圖8所示。
圖8 不同接收域模型的預測對比
圖8(a)所示的是當模型采用單通道網(wǎng)絡結(jié)構(gòu)時,此時模型最終輸出圖像特征的接收域只有一種,當接收域比較小時,針對右肩這個關(guān)鍵點的定位和分類會出現(xiàn)很大的問題(因為模型無法得到更多的空間信息和語義信息)。圖8(b)所示的是當采用本文提出的寬接收域模型時,模型在最終階段的輸出特征的接收域是一個集合,里面包含多種接收域選擇。較小的接收域能夠為模型提供豐富的空間信息使得關(guān)鍵點的定位更加精確;較大的接收域為模型提供更寬的視野,包含的語義信息也就更多,關(guān)鍵點的分類也就更準確。因此通過為模型增寬接收域可以有效提升模型對于人體關(guān)鍵點的定位和分類。
2.3.2 接收域?qū)Ρ确治?/p>
針對圖6中的DRSB模型結(jié)構(gòu),可以看出該網(wǎng)絡塊中的所有卷積核尺寸都為3×3,網(wǎng)絡的有效深度為4,假設每個塊的輸入的特征in的接收域集合都規(guī)定為{1}。當模型采用非多通道非遞進式(即:一個4層的單卷積通道結(jié)構(gòu))的網(wǎng)絡結(jié)構(gòu)設計時,經(jīng)過4層的卷積操作,最后的網(wǎng)絡塊輸出特征out的接收域集合為{1,9}(由式(8)計算得到,接收域為1的in直連到out接收域還是為1,經(jīng)過一層3×3的卷積之后接收域變成3,再經(jīng)過一層之后變成5,因此經(jīng)過4層之后變成9),只有兩種接收域尺寸。
當采用圖6中的DRSB網(wǎng)絡塊結(jié)構(gòu)時,假設有效深度是4層,但是由于采用了多通道遞進式進行處理,網(wǎng)絡塊輸出out的接收域集合就大不相同。第1通道中,在經(jīng)過一層卷積操作后,接收域為{3};在第2通道中,共包含兩個卷積層,接收域為{5};依次類推,第3通道的接收域為{7};第4通道的接收域為{9}。因此網(wǎng)絡塊out的接收域集合為 {1,3,5,7,9}。
同樣針對圖6中的DRSB模型結(jié)構(gòu),當采用FReLU激活函數(shù)后,對應的接收域集合會發(fā)生變化。對于第1通道原始的接收域集合為{3},對卷積輸出特征進行FReLU非線性激活,激活時神經(jīng)元可以選擇當前的特征點是否關(guān)注空間信息(即:對當前原始特征點和經(jīng)過圖7(b)卷積處理后的對應特征點進行選擇)。如果選擇關(guān)注空間信息,則對應的接收域變成5,反之,接收域還是3,最終的接收域集合變?yōu)閧3,5};以此類推,第2通道接收域集合為{5,7};第3通道接收域集合為{7,9};第4通道接收域集合為{9,11}。
對非多通道非遞進式的結(jié)構(gòu)、DRSB非FReLU激活函數(shù)的結(jié)構(gòu)以及DRSB和FReLU激活函數(shù)的結(jié)構(gòu)進行接收域集合對比分析,分析的結(jié)果見表1。通過對比分析可以看出,采用DRSB和FReLU相結(jié)合的網(wǎng)絡結(jié)構(gòu)可以增加模型的接收域集合,這對于提升模型效果是有利的。
表1 接收域?qū)Ρ?/p>
為了驗證模型的檢測性能,將對MPII人體姿態(tài)檢測標準數(shù)據(jù)集進行實驗和結(jié)果分析。該數(shù)據(jù)集總共包含25 000張圖片以及40 000張人類動作的圖像,其中用于模型測試和驗證的圖像共計2958張。本文中的實驗環(huán)境詳細信息見表2。
表2 實驗環(huán)境配置
為了實現(xiàn)后面的4個階段每個階段的輸出特征都是固定的形狀,因此需要對輸入的圖像進行尺寸的裁剪和縮放,使得輸入圖像固定為256×256像素大小。根據(jù)鏈式求導法則(正向傳播簡單公式如式(9)所示),當對參數(shù)w進行求導的時候,若輸入的X全是正數(shù)時,反向傳播回來的梯度再乘上X以后不會改變方向,這就意味著權(quán)重更新在下一次迭代中要么同時增大要么同時減小。為了防止這種現(xiàn)象,需要對輸入數(shù)據(jù)做歸一化和均值化處理,最終的輸入圖像對應的BGR均值為[0.406,0.456,0.485],方差為[0.225,0.224,0.229]。模型的訓練選擇基于cuda加速的GPU進行,可以加速訓練過程,訓練的最大迭代次數(shù)為300輪次,選擇的優(yōu)化器為Adam優(yōu)化器,其中動量momentum設置為0.9,基礎的學習率設置為5e-4
(9)
根據(jù)人體姿態(tài)估計任務的特性,需要模型回歸得到人體關(guān)鍵點的坐標數(shù)據(jù)并分類出各個關(guān)鍵點,在本文的模型設計中,需要用到兩類損失函數(shù),分別用于記錄關(guān)鍵點坐標定位損失和分類損失。分類損失函數(shù)定義為多分類交叉熵損失函數(shù),函數(shù)定義如式(10)所示
(10)
其中,Yi是一個one-hot編碼的向量,Yi中的每個元素yij只存在兩個可能值(當?shù)趇個樣本屬于類別j時,yij=1; 反之,yij=0),pij表示的是模型對于輸入Xi所預測的屬于類別j的概率。
針對關(guān)鍵點回歸誤差采用的是均方誤差損失函數(shù)來刻畫,該損失函數(shù)定義如式(11)所示
(11)
經(jīng)過模型訓練,得到最終的損失曲線如圖9所示。根據(jù)圖中所示的loss值趨勢可以知道,模型最終的loss仍然是一個相對較大的值,這是因為在本文的模型中,采用了多階段計算loss值,并且將不同類別的損失值進行加權(quán)求和,因此整體上loss偏大,但是模型整體上趨于收斂。
圖9 模型訓練loss值趨勢
本文提出的基于寬接收域的人體姿態(tài)檢測模型在MPII標準測試數(shù)據(jù)集上進行模型驗證,該數(shù)據(jù)集代表了姿態(tài)估計任務中最具挑戰(zhàn)性的基準數(shù)據(jù)集,因為數(shù)據(jù)集中包含了多個人體不同活動下的各種姿態(tài)變化情況。
針對人體姿態(tài)估計常用的評價指標是關(guān)鍵點正確估計的比例(percentage of correct keypoints,PCK),主要是計算檢測的關(guān)鍵點與其對應真值之間的歸一化距離小于設定閾值的比例,這個閾值通常也被表示為r(容忍度)。在本文中因為采用的MPII數(shù)據(jù)集是以頭部長度作為歸一化參考,即評價指標稱為PCKh。
在表3中,測試了不同容忍度下,模型對于不同人體關(guān)鍵點的定位準確率(用PCKh百分比表示),從測試結(jié)果中可以看出,當容忍度r=0.5時,人體各類關(guān)鍵點的平均準確率可以達到90.07%,能夠達到較高的檢測準確率,其中人體頭部、肩部的檢測準確率更是高于96%。
表3 MPII數(shù)據(jù)集不同容忍度下的PCKh/%
為了驗證本文方法的有效性,和同樣采用MPII數(shù)據(jù)集作為評測數(shù)據(jù)集的其它文獻[7,12,13]做對比分析,圖10中顯示了在MPII數(shù)據(jù)集上,不同的方法在不同容忍度的條件下對于人體關(guān)鍵點的檢測平均PCKh曲線。通過PCKh曲線可以看出,本文提出的方法在容忍度介于0.1~0.4之間測得的平均準確率均高于其它方法,驗證了模型的有效性。
圖10 MPII數(shù)據(jù)集上不同容忍度下平均PCKh曲線
人體姿態(tài)估計通常被應用于人機交互、影視制作等領域,因此對模型的檢測速度有較高地要求,本文所提出的檢測方法在模型體量上有較大地優(yōu)勢。主要源于兩個方面:①在模型的稠密連接處,采用的是通道相加而非是通道的拼接,這樣可以解決拼接帶來的維度災難問題,減小模型的參數(shù)量;②對于激活函數(shù)的選取,采用的是適合于圖像處理的FReLU激活函數(shù),在引入非線性的同時增加模型的接收域集合,這樣可以在網(wǎng)絡結(jié)構(gòu)較淺(網(wǎng)絡結(jié)構(gòu)淺預測速度更快)的同時使得模型能夠關(guān)注到更多的全局信息。對MPII數(shù)據(jù)集的測試集進行檢測速度驗證,本文所提出的模型在NVIDIA GeForce RTX 2080Ti GPU上測得的檢測幀率達到38 FPS,測試效果如圖11所示,可以廣泛應用于實時的任務。
圖11 MPII數(shù)據(jù)集上姿態(tài)檢測效果
本文提出了一種基于寬接收域的實時人體姿態(tài)檢測網(wǎng)絡,該網(wǎng)絡可以推斷出各種活動狀態(tài)下的人體姿態(tài)。通過在模型中采用步進式的結(jié)構(gòu)設計和基于二維卷積的FReLU激活函數(shù),可以有效地增加模型的接收域集合,提升模型對全局信息的掌握能力,關(guān)鍵點分類更加準確。同時,在基礎模型塊內(nèi)部采用基于特征點相加的稠密連接,可以有效提升模型的空間信息提取能力又不受通道維度災難的影響。通過在人體姿態(tài)檢測標準數(shù)據(jù)集MPII上進行檢測,在容忍度為0.5時,模型的準確率(PCKh)可以達到90.07%,并且檢測速度達到實時效果。