方 芹,繆寧杰,張如宏,劉曉澤,王佳敏,羅文東,周 霖
(1.國網(wǎng)浙江省電力有限公司雙創(chuàng)中心,浙江 杭州 310051)(2.國網(wǎng)浙江省電力有限公司杭州供電公司,浙江 杭州 310009)(3.浙江光珀智能科技有限公司,浙江 杭州 311100)(4.杭州致成電子科技有限公司,浙江 杭州 310051)(5.北京大道合創(chuàng)科技有限責(zé)任公司,北京 100085)
二維人體姿態(tài)估計是計算機(jī)視覺中一個基礎(chǔ)且具有挑戰(zhàn)性的問題,目的是對圖像中的人進(jìn)行關(guān)節(jié)點(diǎn)(如手腕、手肘等)的檢測定位。其應(yīng)用領(lǐng)域非常廣,可應(yīng)用于動作識別、動作檢測、人體跟蹤、虛擬現(xiàn)實和自動駕駛等[1-5]。隨著近幾年卷積神經(jīng)網(wǎng)絡(luò)的快速發(fā)展,許多計算機(jī)視覺任務(wù)(如圖像分割、物體檢測等)因此受益,性能得到飛速提升。人體姿態(tài)識別也從中獲益,目前主流的姿態(tài)識別網(wǎng)絡(luò)分為兩大類:自下而上和自頂向下的方法[6]。
自下而上的方法,首先直接預(yù)測每個關(guān)節(jié)點(diǎn),然后把關(guān)節(jié)點(diǎn)組裝成人。Pishchulin等[7]將區(qū)分圖像中不同人的問題轉(zhuǎn)換為整數(shù)線性規(guī)劃(integer linear program)問題,并將部分檢測候選劃分為人員聚類,然后將聚類結(jié)果與標(biāo)記的身體部分相結(jié)合,得到最終的預(yù)測結(jié)果。Insafutdinov等[8]使用了更深層次的ResNet[9]來改善區(qū)分圖像中不同人的問題轉(zhuǎn)換為整數(shù)線性規(guī)劃問題的性能。Cao等[10]將關(guān)節(jié)點(diǎn)之間的關(guān)系映射到了部分親和場,并將檢測到的關(guān)鍵點(diǎn)組裝成不同人的姿態(tài)。Newell等[11]增加了網(wǎng)絡(luò)的輸出,同時得到每個人的分?jǐn)?shù)圖和對應(yīng)的像素級嵌入,然后將關(guān)鍵點(diǎn)分組到不同的人,以獲得多人的姿態(tài)估計。
自頂向下的方法,將檢測關(guān)節(jié)點(diǎn)分為兩步,首先從圖像中定位和裁剪所有的人,然后對每個單獨(dú)的人進(jìn)行姿態(tài)估計。Papandreou等[12]同時預(yù)測關(guān)節(jié)熱圖和標(biāo)簽熱圖對預(yù)測熱圖的偏移量,將兩者相加得到最終的預(yù)測熱圖。He等[13]首先預(yù)測人類包圍盒,然后根據(jù)相應(yīng)的人類包圍盒的特征映射來預(yù)測人類關(guān)節(jié)點(diǎn)。Tompson等[14]提出了級聯(lián)網(wǎng)絡(luò),通過由粗到細(xì)的方式來預(yù)測關(guān)節(jié)點(diǎn)位置。Carreira等[15]提出了迭代誤差反饋,通過多階段的訓(xùn)練來細(xì)化每個階段的預(yù)測結(jié)果。Xiao 等[16]使用3個反卷積模塊,逐步生成高分辨的預(yù)測熱圖。由于首先要找到圖中人的位置才能對其進(jìn)行關(guān)節(jié)點(diǎn)預(yù)測,因此使用一個好的檢測網(wǎng)絡(luò)對于姿態(tài)識別任務(wù)是十分重要的。
很多學(xué)者傾向于使用復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)來處理這些情況,這在提高精度的同時也加大了計算量和運(yùn)行內(nèi)存,更重要的是,復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)加大了讀者對算法理解和分析的難度?;谏鲜龇治?,本文將通道注意力機(jī)制融入到編碼網(wǎng)絡(luò)中,通過一維卷積來實現(xiàn)無降維通道之間的信息交互,提高了網(wǎng)絡(luò)對重要特征的提取能力。
本文提出的人體姿態(tài)識別網(wǎng)絡(luò)如圖1所示,輸入一張圖片,網(wǎng)絡(luò)檢測出關(guān)節(jié)點(diǎn)所在的像素位置。該網(wǎng)絡(luò)由簡單的編解碼結(jié)構(gòu)組成,為了使編碼層提取的特征更具代表性,本文在編碼層中加入了注意力卷積模塊。在得到深層次的特征圖后,使用多個反卷積恢復(fù)特征圖的分辨率,最終預(yù)測出關(guān)節(jié)點(diǎn)所在的位置。
圖1 網(wǎng)絡(luò)框架
由于人體姿態(tài)估計是一個難度大、高度非線性的任務(wù),利用淺層網(wǎng)絡(luò)直接預(yù)測出關(guān)節(jié)點(diǎn)的位置是不現(xiàn)實的,因此為了能夠提取更具有代表性的深度特征,且易于網(wǎng)絡(luò)的訓(xùn)練與搭建,本文采用預(yù)訓(xùn)練好的ResNet[9]系列(ResNet50/101/152)作為編碼器的主干網(wǎng)絡(luò)。受ECA-Net[17]的啟發(fā),本文在每個ResNet塊之后嵌入注意力卷積模塊來實現(xiàn)通道之間信息的交互,進(jìn)而提升編碼器對重要特征提取的能力,其結(jié)構(gòu)如圖2所示。
圖2 融入注意力卷積模塊的ResNet50殘差塊示意圖
注意力卷積模塊的詳細(xì)結(jié)構(gòu)如圖1所示,假定X∈C×H×W,為網(wǎng)絡(luò)的輸入變量,其中C為特征通道數(shù),H和W為特征圖的高和寬。首先通過3個卷積層得到正方形卷積核的邊長F,本文假定輸入輸出的維度是一樣的,但在實際操作中會根據(jù)情況降低特征圖的分辨率。緊接著,對F在特征圖維度進(jìn)行全局平均池化得到向量f:
f=avg(F)
(1)
式中:f∈C×H×W。為了節(jié)省計算資源,采用了分組卷積,先把特征圖分成不同的組,然后再對每個組分別進(jìn)行卷積,在不增加模型復(fù)雜度的情況下大大降低了運(yùn)算成本。文獻(xiàn)[17]通過實驗證明自適應(yīng)確定的卷積核大小通常要優(yōu)于固定的卷積核大小,因此在分組卷積中本文采用自適應(yīng)計算得到核的大小。本文使用sigmoid函數(shù)把f歸一化到0和1之間,其值可以表征不同通道的重要性程度。
att=sigmoid(conv(f))
(2)
式中:att為通道注意力權(quán)重。
接著把前面得到的特征圖F和通道注意力權(quán)重att按通道相乘,得到注意力感知的特征圖out:
out=F?att
(3)
最后把輸入端X和注意力感知的特征圖out相加得到該模塊的輸出結(jié)果。
在解碼端,本文使用了3個簡單的反卷積模塊來得到最終的預(yù)測結(jié)果,其中卷積核大小為4×4,卷積核個數(shù)為256。注意,本文設(shè)計的網(wǎng)絡(luò)并沒有使用與UNet[18]類似的跳躍連接,因為這會加大模型的計算量。本文的目標(biāo)是設(shè)計一個結(jié)構(gòu)簡單并且有效的人體姿態(tài)估計網(wǎng)絡(luò),加入一些額外的方法雖然會提升預(yù)測精度,但這會與本文的目的背道而馳。
如圖1所示,假設(shè)輸入解碼層的特征mid∈C′×H′×W′,經(jīng)過多個反卷積層后得到預(yù)測熱圖output,output∈num_joints×Hin/4×Win/4,其中num_joints為實驗數(shù)據(jù)集中人的關(guān)節(jié)點(diǎn)數(shù),Hin和Win分別為輸入圖片input的寬和高,為了減小計算量,網(wǎng)絡(luò)最終預(yù)測得到的熱圖大小為輸入圖片的1/4,例如在COCO數(shù)據(jù)集上,本文設(shè)置的輸入大小為(256,256),最終輸出的熱圖尺寸即為(64,64)。最后,在解碼器的輸出端把預(yù)測到的關(guān)節(jié)點(diǎn)按比例放到原圖中,即得到帶有關(guān)鍵點(diǎn)標(biāo)記的圖片。
本文使用Pytorch 1.3.7深度學(xué)習(xí)框架,編碼模塊使用基于ImageNet[19]預(yù)訓(xùn)練的ResNet網(wǎng)絡(luò)進(jìn)行初始化。訓(xùn)練使用ADAM優(yōu)化器,基礎(chǔ)學(xué)習(xí)率為0.01,并分別在90和120個訓(xùn)練周期時降低學(xué)習(xí)率,一共訓(xùn)練140個周期,批量大小為32。
與大部分姿態(tài)估計網(wǎng)絡(luò)[11,16]相同,本文使用通用均方差損失來監(jiān)督網(wǎng)絡(luò),將預(yù)測生成的熱圖和標(biāo)簽熱圖進(jìn)行比較。為了提高預(yù)測精度,在把熱圖轉(zhuǎn)換回圖像原始坐標(biāo)之前,將最終的預(yù)測坐標(biāo)取熱圖上響應(yīng)最高的點(diǎn)往響應(yīng)第二高的點(diǎn)偏移1/4處的坐標(biāo)。
MPⅡ[20]數(shù)據(jù)集中包括人類活動的不同姿態(tài)圖像,以及一系列具有挑戰(zhàn)性的、有遮擋的姿勢。MPⅡ數(shù)據(jù)集大約由25 000張圖片組成,包含了大約40 000個人的姿態(tài)標(biāo)簽(其中28 000用于訓(xùn)練,11 000用于測試),每個人體標(biāo)注16個關(guān)節(jié)點(diǎn)。由于官方并沒有提供測試圖片的姿態(tài)標(biāo)簽,所以本文將訓(xùn)練數(shù)據(jù)中的一部分用來訓(xùn)練網(wǎng)絡(luò),將沒有參與訓(xùn)練的圖片作為測試集,并報告了在該測試集上的實驗結(jié)果。
COCO[21]數(shù)據(jù)集要求在不受控制的條件下定位多人的關(guān)節(jié)點(diǎn)。COCO數(shù)據(jù)集包含大約200 000張圖像,250 000個帶有17個關(guān)鍵點(diǎn)的人。該數(shù)據(jù)集被分為57 000張訓(xùn)練集、5 000張驗證集和20 000張測試集。網(wǎng)絡(luò)在訓(xùn)練集上進(jìn)行訓(xùn)練,本文報告了在驗證集上的實驗結(jié)果。
由于MPⅡ和COCO數(shù)據(jù)集輸入圖片中包含多個人,直接對所有人進(jìn)行姿勢識別是困難的,因此首先根據(jù)標(biāo)簽數(shù)據(jù)把每個人單獨(dú)裁剪出來,然后輸入網(wǎng)絡(luò)進(jìn)行姿態(tài)識別。本文使用了與文獻(xiàn)[16]相同的數(shù)據(jù)增強(qiáng)措施,對于一張圖片,首先根據(jù)標(biāo)簽數(shù)據(jù)把整個人裁剪出來,然后將其調(diào)整到256×256大小(默認(rèn)分辨率),接著對該圖片進(jìn)行隨機(jī)旋轉(zhuǎn)(-30°~30°)和縮放(0.75~1.25)得到最終網(wǎng)絡(luò)的輸入數(shù)據(jù)。
MPⅡ使用的評價指標(biāo)是關(guān)節(jié)點(diǎn)正確估計的比例PCK[22](percentage of correct keypoints),該指標(biāo)表示標(biāo)簽歸一化距離內(nèi)的預(yù)測百分比,也就是預(yù)測關(guān)節(jié)點(diǎn)與標(biāo)簽關(guān)節(jié)點(diǎn)的距離小于閾值的百分比,閾值是頭部大小的1/2,因此該指標(biāo)也稱為PCKh@0.5,其值越接近1越好。
COCO數(shù)據(jù)集采用的度量指標(biāo)是關(guān)鍵點(diǎn)相似度OKS(object keypoint similarity ),與目標(biāo)檢測中的交并比IOU(intersection over union)類似,OKS表示標(biāo)注關(guān)節(jié)點(diǎn)和預(yù)測關(guān)節(jié)點(diǎn)的重合程度,其值越接近1越好。
(4)
式中:i為關(guān)節(jié)點(diǎn)序號;di為標(biāo)注關(guān)節(jié)點(diǎn)和預(yù)測關(guān)節(jié)點(diǎn)的歐氏距離;vi為關(guān)節(jié)點(diǎn)可見性;s為這個人所占的面積大小;ki為第i個關(guān)節(jié)點(diǎn)的歸一化因子,這個因子是通過對數(shù)據(jù)集進(jìn)行標(biāo)準(zhǔn)差計算得到的,反映出當(dāng)前骨骼點(diǎn)對整體的影響程度。后續(xù)實驗報告了平均的精確度AP0.5(指IOU的值取0.5),AP0.75(指IOU的值取0.75),AP(平均精度,使用積分的方式來計算PR曲線與坐標(biāo)軸圍成的面積),APM(指IOU的值取中間值),APL(指IOU的值取較大)。
首先在MPⅡ數(shù)據(jù)集上對本文提出的網(wǎng)絡(luò)進(jìn)行了驗證,實驗結(jié)果見表1。由表可知本文的算法精度最精確,在手肘、手腕、膝蓋、腳踝等關(guān)節(jié)處分別比文獻(xiàn)[16]提高1.25%、2.7%、2.2%和2.67%,平均提高了1.37%。注意,表1中平均值并不是把前面幾列值平均計算得到的,還需要把頸部、頭頂?shù)念A(yù)測結(jié)果加上才是最終的平均值,由于文獻(xiàn)[7]、[14]、[16]都沒有列出頸部和頭頂?shù)念A(yù)測結(jié)果,為了方便與它們進(jìn)行比較,所以本文也采取一樣的方式,僅列出部分重要關(guān)節(jié)處的指標(biāo)。除了定量分析,本文同樣進(jìn)行了定性分析,預(yù)測結(jié)果可視化。圖3第一行是網(wǎng)絡(luò)預(yù)測的不同關(guān)節(jié)的熱圖,第二行是標(biāo)簽熱圖,圖4展示了把所有關(guān)節(jié)點(diǎn)熱圖回歸到原圖上的結(jié)果,由圖可知,本文提出的網(wǎng)絡(luò)能夠很好地預(yù)測出人的關(guān)節(jié)點(diǎn)。
圖3 MPⅡ預(yù)測熱圖可視化
圖4 MPⅡ?qū)嶒灲Y(jié)果可視化
表1 MPⅡ數(shù)據(jù)集上不同方法的比較(PCKh@0.5) %
與大多數(shù)視覺任務(wù)一樣,更深層次的網(wǎng)絡(luò)具有更好的性能。在表2中,加大了殘差網(wǎng)絡(luò)的深度,實驗結(jié)果表明,更深層次的網(wǎng)絡(luò)能夠有效地提升預(yù)測精度,這也說明了姿態(tài)識別是一個高度非線性的任務(wù),使用淺層網(wǎng)絡(luò)無法對關(guān)節(jié)進(jìn)行有效的預(yù)測。
表2 MPⅡ數(shù)據(jù)集上不同深度網(wǎng)絡(luò)的預(yù)測精度(PCKh@0.5) %
表3報告了在COCO數(shù)據(jù)集上實驗的結(jié)果,本文使用ResNet50和ResNet101作為骨干網(wǎng)絡(luò)。由表可知,使用ECA模塊能夠?qū)崿F(xiàn)保持和原始網(wǎng)絡(luò)幾乎相同的模型復(fù)雜度以及單張圖片的推理速度(即FLOPs、#.Param.和Speed),并且明顯提高了網(wǎng)絡(luò)的預(yù)測性能。例如在使用ResNet101作為骨干網(wǎng)絡(luò)的情況下,使用ECA模塊的AP0.5增加了3.3%,雖然使用CBA模塊AP0.5也增加了3.3%,但是FLOPs、#.Param.和Speed 3個指標(biāo)要明顯高于使用ECA模塊,尤其是Speed,使用ECA模塊單張圖片的推理速度僅需要4.70 ms,而使用CBA模塊單張圖片的推理速度卻需要14.80 ms。總的來說,由于在編碼層中加入了注意力機(jī)制,在保證網(wǎng)絡(luò)不會丟失任何信息的情況下,使得網(wǎng)絡(luò)可以提取更具代表性的全局特征,因此能夠在重建后預(yù)測到更精確的關(guān)節(jié)點(diǎn),從圖5的可視化結(jié)果可以直觀地看到預(yù)測的關(guān)鍵點(diǎn)十分準(zhǔn)確。
表3 COCO數(shù)據(jù)集上不同網(wǎng)絡(luò)的比較
圖5 COCO實驗結(jié)果可視化
本文提出了一個有效的人體姿態(tài)估計網(wǎng)絡(luò),該網(wǎng)絡(luò)僅由編碼器、解碼器兩部分組成,其中編碼器采用ResNet結(jié)構(gòu)作為主干網(wǎng)絡(luò),解碼器由3個反卷積模塊構(gòu)成。為了使編碼層提取的全局特征更具代表性,本文在編碼層融入了通道注意力結(jié)構(gòu)。該結(jié)構(gòu)通過全局平均池化和分組卷積得到特征圖每個通道的注意力系數(shù),然后將注意力系數(shù)和特征圖相乘得到注意力感知的特征圖,該操作在降低模型復(fù)雜度的同時使得提取到的特征更具有區(qū)分性和代表性。實驗結(jié)果表明,本文提出的方法大大減少了網(wǎng)絡(luò)模型參數(shù)量,降低了運(yùn)算復(fù)雜度,并且能夠有效識別出人體的關(guān)節(jié)點(diǎn)。