閆忠心,白 琳,李陶深
(廣西大學(xué) 計算機(jī)與電子信息學(xué)院,南寧 530004)
人體姿態(tài)估計(Human Pose Estimation,HPE)作為計算機(jī)視覺領(lǐng)域的基礎(chǔ)任務(wù)之一,被廣泛應(yīng)用于人體行為識別、人與物體交互活動識別、人機(jī)交互等.人體姿勢估計的目的在于給定一張RGB圖像識別和定位出所有的人體各個關(guān)鍵點(diǎn)(比如手腕、肘、頭部等).Deeppose[1]模型第一次使用卷積神經(jīng)網(wǎng)絡(luò)對關(guān)鍵點(diǎn)位置直接進(jìn)行回歸預(yù)測,相比于傳統(tǒng)基于圖結(jié)構(gòu)模型[2-4](Pictorial Structure Module,PSM)的人體姿勢估計算法展現(xiàn)出巨大的優(yōu)越性,自此以深度卷積神經(jīng)網(wǎng)路為代表的人體姿勢估計算法(例如Stack Hourglass[5]、OpenPose[6]、SimpleBaseline[7]、HRNet[8]等)成為主流.然而上述最先進(jìn)的人體姿勢估計算法為了追求更高的準(zhǔn)確率,往往模型參數(shù)和浮點(diǎn)數(shù)計算量龐大,對于資源受限的邊緣移動設(shè)備來說很難實(shí)際部署.為了降低模型計算成本,在網(wǎng)絡(luò)結(jié)構(gòu)上以MobileNet[9]、ShuffleNet[10]為代表的輕量化網(wǎng)絡(luò)結(jié)構(gòu)大幅度降低了模型參數(shù)和計算量.Bulat等人[11]通過二值化網(wǎng)絡(luò)的方式轉(zhuǎn)化模型結(jié)構(gòu),大幅度壓縮了模型參數(shù)和部署成本,但是模型準(zhǔn)確率較差.FPD[12]模型通過離線知識蒸餾的方式來訓(xùn)練學(xué)生網(wǎng)絡(luò),然而訓(xùn)練教師網(wǎng)絡(luò)的過程成本較高,并且如何選擇一個合適的教師網(wǎng)絡(luò)也是一個難題.Mirzadeh[13]等人的研究表明,當(dāng)教師模型和學(xué)生模型性能差異過大時,離線蒸餾得到的學(xué)生模型效果并不一定好.
為了保持人體姿態(tài)估計網(wǎng)絡(luò)較高檢測精度的同時大幅度降低模型參數(shù)和浮點(diǎn)數(shù)計算量,本文提出了SKDPose模型,模型結(jié)構(gòu)如圖1所示.首先對于特征編碼器模塊(Encoder),設(shè)計了協(xié)同注意力移動倒置瓶頸模塊(CAMBConv)得到改進(jìn)后的EfficientNet[14]特征編碼器,用于提取多層次語義特征;接著,設(shè)計了輕量化跨尺度雙向融合模塊(BFL-FPN)用于融合編碼器的不同層次的語義信息;最后,把融合后的多層次信息劃分為3個獨(dú)立的分支,每個分支使用獨(dú)立的解碼器進(jìn)行人體關(guān)鍵預(yù)測,最深層次的解碼器作為教師模型其余解碼器作為學(xué)生模型完成知識的自我蒸餾;此外,針對解碼器模塊的普通轉(zhuǎn)置卷積參數(shù)量過大的缺點(diǎn),設(shè)計了深度可分離轉(zhuǎn)置卷積大幅度降低了解碼器模塊的參數(shù)量.在COCO和MPII數(shù)據(jù)集上實(shí)驗(yàn)結(jié)果表明,SKDPose模型在保持高準(zhǔn)確率的同時大幅度降低了模型參數(shù)和計算量.
圖1 基于自我知識蒸餾和卷積壓縮的輕量化人體姿態(tài)估計網(wǎng)絡(luò)Fig.1 Lightweight human pose estimation network based on self-knowledge distillation and convolution compression
本文的主要貢獻(xiàn)如下:
1)根據(jù)文獻(xiàn)可考,本文是第一個把自我知識蒸餾用于輕量化人體姿態(tài)估計算法研究.
2)針對特征編碼器的MBConv模塊缺乏空間注意力的缺陷,設(shè)計了協(xié)同注意力移動倒置瓶頸模塊(CAMBConv),提高了編碼器的特征提取能力.
3)提出了輕量化上采樣解碼器模塊(DSTC),相比于原始的上采樣解碼器,DSTC模塊大幅度降低了解碼器的參數(shù)量.
4)提出了輕量化跨尺度雙向融合模塊(BFL-FPN),可以作為即插即用的模塊應(yīng)用于任何輕量化骨干網(wǎng)路的多尺度特征融合.
傳統(tǒng)的人體姿態(tài)估計主要基于圖結(jié)構(gòu)表示人體各個關(guān)鍵點(diǎn)之間的關(guān)系,但是圖結(jié)構(gòu)依賴于手工設(shè)計的人體姿態(tài)特征比如方向梯度直方圖[15](Histogram of Oriented Gradient,HOG),這直接導(dǎo)致了圖結(jié)構(gòu)模型的泛化性很差,很難達(dá)到商用的地步.隨著深度學(xué)習(xí)的快速發(fā)展,2014年Toshev等人首次提出基于卷積神經(jīng)網(wǎng)絡(luò)的DeepPose模型直接回歸人體關(guān)鍵點(diǎn)坐標(biāo),性能超越了經(jīng)典的圖結(jié)構(gòu)方法,之后主流的人體姿勢估計模型均采用神經(jīng)網(wǎng)絡(luò)架構(gòu).根據(jù)預(yù)測人體關(guān)鍵點(diǎn)坐標(biāo)的方式可以分為兩大類,直接坐標(biāo)回歸和熱力圖(Heatmap),直接坐標(biāo)回歸方法通過深度神經(jīng)網(wǎng)絡(luò)回歸出關(guān)鍵點(diǎn)的坐標(biāo)位置,熱力圖是通過預(yù)測一個近似高斯分布的概率圖間接得到關(guān)鍵點(diǎn)的位置坐標(biāo).根據(jù)人體關(guān)鍵點(diǎn)檢測網(wǎng)絡(luò)的架構(gòu)來分,可以分為兩大類,分別是自頂向下(Top-Down)和自底向上(Bottom-Up).自頂向下的方法通常采用先進(jìn)的人體目標(biāo)檢測器,例如Faster R-CNN[16]、Yolo[17]等從目標(biāo)圖像中檢測出單個人,然后從原始圖像中裁剪出單個邊界框送入到單人姿態(tài)估計網(wǎng)絡(luò)中進(jìn)行人體關(guān)鍵點(diǎn)估計,常見的自頂向下的方法有SimpleBaseline、HRNet等.相反,自底向上的方法不需要使用人體目標(biāo)檢測器,而是直接從RGB圖像中推斷出所有的關(guān)鍵點(diǎn)信息,然后對每個關(guān)鍵點(diǎn)進(jìn)行分類和分組到不同的人體實(shí)例中,常見的自底向上的算法有OpenPose、Higherhrnet[18].Top-Down算法是人體關(guān)鍵點(diǎn)檢測中精度最高的架構(gòu),缺點(diǎn)是檢測速度慢,Bottom-Up算法的優(yōu)點(diǎn)是推理速度快,缺點(diǎn)是精度相較于Top-Down差一些.
上述最先進(jìn)的人體姿態(tài)估計算法為了追求更高的預(yù)測性能,通常設(shè)計更深、更寬的卷積神經(jīng)網(wǎng)絡(luò).雖然這些網(wǎng)絡(luò)性能優(yōu)越,但是帶來的問題是參數(shù)量和浮點(diǎn)運(yùn)算過于龐大,導(dǎo)致模型部署時占用的內(nèi)存更多,模型推理時間更長,因此對于資源受限的邊緣設(shè)備比如手機(jī)、嵌入式系統(tǒng)等,上述網(wǎng)絡(luò)模型很難實(shí)際部署.
受到卷積壓縮和自我知識蒸餾的啟發(fā),本文設(shè)計一種基于卷積壓縮和知識自我蒸餾的輕量化人體姿態(tài)估計網(wǎng)絡(luò),同時兼顧了模型的準(zhǔn)確性和模型復(fù)雜度.具體來說,通過設(shè)計高效且輕量的CAMBConv和DSTC模塊,大幅度降低編碼器和解碼器參數(shù)和計算量;設(shè)計輕量化跨尺度雙向融合模塊用于融合解碼器的不同層次語義特征;提出基于多分支架構(gòu)的自我知識蒸餾方法,提升模型的性能.
表1 標(biāo)準(zhǔn)卷積和深度可分離卷積Table 1 Standard covolution and depthwise separable convolution
知識蒸餾作為一種常見的模型壓縮技巧,2015年由Hinton教授等人[21]第1次正式定義了知識蒸餾(Knowledge Distillation,KD)并且提出了對應(yīng)的蒸餾監(jiān)督訓(xùn)練方法.簡單而言,知識蒸餾第1步是訓(xùn)練一個網(wǎng)絡(luò)規(guī)模龐大、性能優(yōu)越的教師網(wǎng)絡(luò)(Teacher Network);第2步,利用強(qiáng)大的教師網(wǎng)絡(luò)和真實(shí)標(biāo)簽同時作為模型監(jiān)督信號,完成從教師網(wǎng)絡(luò)到學(xué)生網(wǎng)絡(luò)(Student Network)的暗知識(Dark Knowledge,DK)轉(zhuǎn)移,使得學(xué)生網(wǎng)絡(luò)表現(xiàn)性能接近教師網(wǎng)絡(luò).為了實(shí)現(xiàn)人體關(guān)鍵點(diǎn)檢測模型的壓縮,FPD模型第一次把知識蒸餾應(yīng)用在了人體關(guān)鍵點(diǎn)檢測模型上,該模型借鑒Hinton教授提出的離線知識蒸餾(0ff Line Knowledge Distillation,OLKD)設(shè)計思想,首先訓(xùn)練了一個8層堆疊沙漏(8-Stack Hourglass)為教師網(wǎng)絡(luò),然后利用訓(xùn)練好的教師模型通過知識轉(zhuǎn)移的方式訓(xùn)練4層堆疊沙漏(4-Stack Hourglass),使得學(xué)生模型的人體姿態(tài)估計性能接近教師模型性能,但是學(xué)生模型的參數(shù)量和GFLOPs遠(yuǎn)低于教師模型,因此學(xué)生模型充分考慮了模型的效率問題.但是FPD模型缺點(diǎn)很明顯,這是一個兩階段實(shí)現(xiàn)DK轉(zhuǎn)移的過程,即第1個階段單獨(dú)訓(xùn)練龐大的教師網(wǎng)絡(luò),在第2個階段利用教師網(wǎng)絡(luò)輔助訓(xùn)練學(xué)生網(wǎng)絡(luò),因此模型總體訓(xùn)練成本為教師網(wǎng)絡(luò)訓(xùn)練成本加上學(xué)生網(wǎng)絡(luò)訓(xùn)練成本.Mirzade等人的研究表明,OLKD的知識轉(zhuǎn)移過程中并不是越強(qiáng)大的教師網(wǎng)絡(luò)一定能教出更優(yōu)秀的學(xué)生網(wǎng)絡(luò),當(dāng)教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的性能差異過大時候,基于OLKD訓(xùn)練的學(xué)生模型的性能并不好.Zhang[22]等人提出自我知識蒸餾(Self-Knowledge Distillation,SKD),與傳統(tǒng)的OLKD不同的是,在模型訓(xùn)練階段SKD把淺層次的網(wǎng)絡(luò)作為學(xué)生,深層次網(wǎng)絡(luò)作為教師,在單一網(wǎng)絡(luò)內(nèi)部完成知識從教師到學(xué)生的轉(zhuǎn)遞,在模型部署階段只保留單個教師或?qū)W生模型,SKD方法在訓(xùn)練時間和準(zhǔn)確率上都優(yōu)于OLKD方法.如圖1所示,為了解決FPD存在的問題,受到SKD設(shè)計思想的啟發(fā),本文設(shè)計了多分支的解碼器結(jié)構(gòu).具體來說,對于輕量化跨尺度雙向融合后的3個特征,使用3個獨(dú)立的上采樣解碼器模塊進(jìn)行特征解碼,其中分支1、2、3同時接受真實(shí)熱力圖(GroundTrues HeatMap,GTHM)的監(jiān)督,除此之外分支1、2在訓(xùn)練階段需要接受教師網(wǎng)絡(luò)分支3輸出特征圖的監(jiān)督.
本文提出SKDPose模型如圖1所示,其設(shè)計思路是:采用輕量化的編碼器提取多層次語義特征,用多個獨(dú)立的輕量化解碼器對不同層次特征圖進(jìn)行解碼,之后通過多尺度特征融合和知識蒸餾提高解碼效率.
SKDPose模型的處理流程包含4個階段.第1階段使用輕量化特征編碼器提取人體圖像的多層次語義特征;第2階段使用輕量化跨尺度特征融合模塊對第1階段的多層次語義特征進(jìn)行雙向融合;第3個階段對第2個階段融合后的特征使用3個獨(dú)立分支的解碼器結(jié)構(gòu)對不同層次語義特征進(jìn)行解碼,每個解碼器都可以獨(dú)立進(jìn)行人體關(guān)鍵點(diǎn)預(yù)測;第4個階段每個分支解碼器輸出結(jié)果同時接受GTHM的監(jiān)督,除此之外分支1、2解碼器還要接受分支3的輸出特征監(jiān)督.
模型整體可以被拆分為4個模塊:
1)輕量化特征編碼器:圖1中Encoder模塊是基于EfficientNet改進(jìn)的多層次特征提取編碼器,用于提取不同分辨率語義特征.
2)輕量化上采樣解碼器:為了降低解碼器模塊的參數(shù)量和浮點(diǎn)數(shù)計算量,設(shè)計了基于深度可分離轉(zhuǎn)置卷積和協(xié)同注意力機(jī)制的輕量化上采樣解碼器(DSTC).
3)輕量化跨尺度雙向融合:人體關(guān)鍵點(diǎn)檢測屬于位置敏感型的密集預(yù)測任務(wù),不同層次語義特征對于位置預(yù)測均有作用,針對人體關(guān)鍵點(diǎn)檢測本文設(shè)計了高效且輕量的特征融合模塊(BFL-FPN).
4)知識自我蒸餾:3個獨(dú)立的解碼器,其中分支3作為教師網(wǎng)絡(luò)分支1和分支2作為學(xué)生網(wǎng)絡(luò),在SKDPose模型內(nèi)部完成知識的傳遞.
EfficientNet的主要組成模塊MBConv中就使用了SE[23]模塊來加強(qiáng)通道注意力特征的提取,SE模塊存在的問題是只關(guān)注了局部的通道級別的注意力,缺乏全局依賴捕捉和空間位置注意力的獲取.本文通過對MBConv引入?yún)f(xié)同注意力機(jī)制得到協(xié)同移動倒置瓶頸卷積模塊(Coordinate Attention Mobile Inverted Bottleneck Convolution,CAMBConv),協(xié)同注意力移動倒置瓶頸卷積模塊如圖2所示.CAMBConv模塊旨在增強(qiáng)輕量級網(wǎng)絡(luò)的特征學(xué)習(xí)能力,輸入可以是任何中間層特征X=[x1,x2,x3,…,xc]∈RC×H×W,協(xié)同注意力模塊首先對輸入特征的寬和高兩個方向維度使用平均池化,結(jié)果分別是X-Avg、Y-Avg,產(chǎn)生兩個具備方向特征感知的注意力權(quán)重.然后對X-Avg,Y-Avg進(jìn)行Concat操作,之后使用1×1卷積和BatchNorm進(jìn)行通道級特征壓縮,最后利用Split和1×1卷積分別進(jìn)行X,Y維度特征分割和特征通道提升,類似殘差跳躍模塊,使用X,Y兩個方向的注意力權(quán)重乘以原始的特征輸出得到最終的協(xié)同注意力特征Y=[y1,y2,y3,…,yc]∈RC×H×W.通過協(xié)同注意力機(jī)制解決了原始MBConv模塊缺乏空間注意力和長范圍依賴的問題.協(xié)同注意力(Coordinate Attention,CA)見圖2的Attention模塊所示.
圖2 協(xié)同注意力移動倒置瓶頸模塊Fig.2 Coordinate attention MBConv model
改進(jìn)后的EfficientNet模型結(jié)構(gòu)如表2所示.其中Stage表示階段;CAMBConv1,k3×3的1表示CAMBConv的PW卷積通道擴(kuò)充比例,3×3表示DW卷積核大小;Resolution表示輸入特征圖分辨率;Channels表示輸出特征圖通道數(shù);Layers表示當(dāng)前模塊重復(fù)次數(shù).
表2 改進(jìn)EfficientNet網(wǎng)絡(luò)結(jié)構(gòu)Table 2 Improved EfficientNet network structure
表3 實(shí)驗(yàn)軟硬件環(huán)境Table 3 Experimental software and hardware environment
表3 標(biāo)準(zhǔn)轉(zhuǎn)置卷積和深度可分離轉(zhuǎn)置卷積Table 3 Standard transpose covolution and depthwise separable transpose convolution
(1)
(2)
式(1)和式(2)分別為使用深度可分離轉(zhuǎn)置卷積后DSTC模塊參數(shù)量和浮點(diǎn)數(shù)計算量的壓縮比例,其中符號代表的含義和表3相同,DSTC模塊轉(zhuǎn)置卷積核K大小為4,并且特征圖的輸出通道數(shù)Co遠(yuǎn)大于K,且Ci是Co的兩倍,因此公式1和2的最終約等于1/16,DSTC模塊相比于標(biāo)準(zhǔn)轉(zhuǎn)置卷積來說,在參數(shù)量和FLOPs減少了94%.
本文的解碼器的DSTC模塊把標(biāo)準(zhǔn)轉(zhuǎn)置卷積分成了3步,首先利用深度轉(zhuǎn)置卷積對原始特征的每一個通道進(jìn)行單獨(dú)卷積運(yùn)算,其次利用1×1點(diǎn)卷積融合每個通道的輸出結(jié)果,在這個過程中可能丟失了部分空間維度和通道維度特征,為了解決這個問題.本文最后在1×1點(diǎn)卷積之后加入了協(xié)同注意力模塊,在空間維度、通道維度和長距離范圍依賴上增強(qiáng)DSTC的特征解碼能力.SimpleBaseLine中上采樣模塊輸出通道數(shù)維持在256,為了進(jìn)一步對上采樣模塊進(jìn)行壓縮,本文對上采樣通道數(shù)也進(jìn)行了壓縮.
現(xiàn)有的人體姿態(tài)估計網(wǎng)絡(luò)通常采用串行高分辨率和低分辨率網(wǎng)絡(luò)實(shí)現(xiàn)特征提取,比如Stack Hourglass,但是缺乏不同層級分辨率特征圖的融合.FPN(Feature Pyramid Networks)[24]網(wǎng)絡(luò)作為一種有效的特征融合網(wǎng)絡(luò),主要解決了在目標(biāo)檢測過程中的目標(biāo)多尺度問題,顯著的提升了小目標(biāo)檢測的性能.
受到FPN的啟發(fā),針對人體關(guān)鍵點(diǎn)檢測模型來說,本文提出輕量化跨尺度雙向融合模塊(Bidirectional Fusion Lightweight FPN,BFL-FPN),BFL-FPN模塊見圖3所示.整體思路是首先進(jìn)行高級語義特征向低級語義特征進(jìn)行融合,然后從低級語義特征向高級語義特征進(jìn)行融合.具體來說對于本文的三分支解碼器,編碼器的中間3層特征圖CAMBConv_1、CAMBConv_2、CAMBConv_3分別尺寸為,Feature1=C1×32×32,Feature2=C2×16×16,Feature3=C3×8×8.首先進(jìn)行高層次語義信息向低層次語義信息進(jìn)行流動,利用PW卷積,統(tǒng)一調(diào)整3個特征圖通道數(shù)為256,然后分別對Feature3上采樣后相加到Feature2,Feature2上采樣之后相加到Feature1中.其次使用DWA_1模塊分別對自上往下融合結(jié)果進(jìn)行特征通道壓縮.最后低層次語義信息向高層次語義信息進(jìn)行流動,對Branch1,Branch2使用DWA_2模塊進(jìn)行降采樣后分別添加到Branch2和Branch3,這樣就完成了自底向上的語義特征信息流動,其中DWA_1、DWA_2分別表示DWC模塊步長為1、2,DWA模塊的結(jié)構(gòu)首先使用深度可分離卷積DWC、然后使用CA注意力機(jī)制最后使用點(diǎn)卷積PWC,其中中間層使用批標(biāo)準(zhǔn)化.整個BFL-FPN模塊參數(shù)量只有原始雙向融合FPN網(wǎng)絡(luò)的十分之一,同時BFL-FPN保持較高的特征融合性能.
(3)
圖3 輕量化跨尺度雙向融合Fig.3 Bidirectional fusion lightweight FPN
(4)
式(3)和式(4)分別為使用深度可分離卷積后浮點(diǎn)數(shù)計算量和參數(shù)量的壓縮比例,式中符號代表的含義和表1相同,BFL-FPN的卷積模塊的輸入輸出特征圖尺寸一樣,本文卷積核K大小為3,并且特征圖的輸出通道數(shù)Co遠(yuǎn)大于K,因此公式(3)、(4)最終約等于1/9,BFL-FPN模塊相比于標(biāo)準(zhǔn)卷積來說,參數(shù)量和FLOPs減少了8/9.
知識蒸餾作為一種有效的模型壓縮方式,傳統(tǒng)的離線蒸餾是一個兩階段的訓(xùn)練方法,先訓(xùn)練一個龐大的教師網(wǎng)絡(luò).受到Zhang等人的啟發(fā),本文把SKD思想用于輕量化人體姿勢估計網(wǎng)絡(luò),在編碼器進(jìn)行下采樣的CAMBConv_1、CAMBConv_2、CAMBConv_3產(chǎn)生的特征經(jīng)過BFL-FPN融合之后的特征圖Branch1=C1×32×32,Branch2=C2×16×16和Branch3=C3×8×8.Branch1、Branch2和Branch3分別使用1、2、3個輕量化反卷積解碼器(DSTC)對特征圖進(jìn)行解碼,其中每個DSTC模塊的可分離轉(zhuǎn)置卷積的卷積核大小和卷積步長分別為4和2.第1個分支的DSTC模塊輸出通道數(shù)為64;第2個分支的DSTC模塊的輸出通道數(shù)分別是128和64;第3個分支的DSTC模塊的輸出通道數(shù)分別是256、128、64.3個分支解碼后的特征圖使用3個獨(dú)立的熱力圖回歸模塊進(jìn)行獨(dú)立預(yù)測.實(shí)際測試階段選擇3個解碼器中準(zhǔn)確度最高的解碼器作為最終的預(yù)測結(jié)果,其余解碼器模塊從網(wǎng)絡(luò)結(jié)構(gòu)中刪去.對于每個人體關(guān)鍵點(diǎn)k∈{1,2,…,K}使用高斯熱力圖表示人體關(guān)鍵點(diǎn)位置,熱力圖使用的高斯函數(shù)如式(5)所示,式(5)中所有參數(shù)遵循主流模型(例如Simplebaseline模型)的標(biāo)準(zhǔn)配置:
(5)
(6)
訓(xùn)練階段深層次解碼器3作為教師模型輸出,解碼器1和2作為學(xué)生模型,使用KL(Kullback-Leibler)離散度作為自我知識蒸餾的損失函數(shù).對教師模型和學(xué)生模型輸出熱力圖的每個像素都執(zhí)行KL離散度計算,最終自我知識蒸餾的損失函數(shù)公式(7)所示:
(7)
式(7)中W,H分別代表解碼器預(yù)測熱力圖的長、寬,本文在MPII數(shù)據(jù)集設(shè)置W和H均為64,COCO數(shù)據(jù)集設(shè)置W為64,H為48.K表示單張RGB圖像中人體關(guān)鍵點(diǎn)個數(shù),T表示學(xué)生模型個數(shù),本文T為2.本文的自我蒸餾SKD模型的總損失如公式(8)所示:
Losstotal=Lossmse+αLossSKD
(8)
式(8)中α是平衡兩種損失的超參數(shù),本文設(shè)置α大小為100,Lossmse是每個解碼器和真實(shí)熱力圖之間的均方差MSE損失,LossSKD是學(xué)生模型和教師模型之間的KL離散度蒸餾損失.
為了驗(yàn)證本文模型的有效性,在COCO[25]和MPII[26]兩個數(shù)據(jù)集上進(jìn)行了對比試驗(yàn)和消融實(shí)驗(yàn),實(shí)驗(yàn)的軟硬件環(huán)境如表3所示.
本文的算法模型使用開源深度學(xué)習(xí)開發(fā)框架PyTorch實(shí)現(xiàn),在兩張Tesla V100圖形處理器(Graphics Processing Unit,GPU)上訓(xùn)練,單張顯卡顯存為16G,訓(xùn)練階段采用Adam優(yōu)化器,每一批次數(shù)據(jù)大小為32,初始優(yōu)化器學(xué)習(xí)率為0.001,迭代到110、170時學(xué)習(xí)率衰減為原來的1/10,迭代訓(xùn)練200個epoch.
MPII數(shù)據(jù)集定義了人體16個關(guān)鍵點(diǎn)的位置,從真實(shí)人類活動中采集25000張人體圖片,包含了超過40000個人體標(biāo)簽.其中29000個人體實(shí)例用作訓(xùn)練樣本,2900個人體實(shí)例用于驗(yàn)證樣本.COCO數(shù)據(jù)集有超過200000張圖片,包含了2500000個人體實(shí)例,每個人體實(shí)例標(biāo)注了17個人體關(guān)鍵點(diǎn),人體姿態(tài)估計模型在COCO Train2017數(shù)據(jù)集上進(jìn)行訓(xùn)練,使用COCO val2017數(shù)據(jù)集用于驗(yàn)證模型性能.訓(xùn)練階段從輸入圖像中裁剪出人體目標(biāo)框,并且按照檢測框長寬比4∶3進(jìn)行縮放,MPII數(shù)據(jù)集中把裁剪后的人體目標(biāo)框統(tǒng)一縮放到256×256尺寸,COCO數(shù)據(jù)集中把裁剪后的人體框統(tǒng)一縮放到256×192尺寸.每個人體實(shí)例圖片都進(jìn)行數(shù)據(jù)增強(qiáng),首先對人體實(shí)例進(jìn)行[-30°,30°]角度隨機(jī)旋轉(zhuǎn)、[0.7,1.3]范圍隨機(jī)縮放和以及水平翻轉(zhuǎn).
對于MPII數(shù)據(jù)集,本文采用通用的正確關(guān)鍵點(diǎn)的百分比(Percentage of Correct Keypoints,PCK)作為評價指標(biāo),模型預(yù)測的人體關(guān)鍵點(diǎn)的坐標(biāo)和真實(shí)坐標(biāo)像素距離之差小于alr則認(rèn)為預(yù)測正確,其中α閾值為0.5,lr參考的是人體目標(biāo)檢測頭部框?qū)蔷€的長度,本文采用標(biāo)準(zhǔn)的PCKH@0.5作為評價性能指標(biāo).對于COCO數(shù)據(jù)集,本文采用基于目標(biāo)關(guān)鍵點(diǎn)相似度(Object Keypoint Similarity,OKS)的平均精度(Average Precision,AP)和平均召回率(Average Recall,AR)作為模型性能評價指標(biāo).
在測試階段,對于COCO數(shù)據(jù)集,采用標(biāo)準(zhǔn)的兩階段測試方法,先使用人體目標(biāo)檢測器檢測人體框,然后對單個人進(jìn)行人體關(guān)鍵點(diǎn)檢測.對于MPII數(shù)據(jù)集,本文采用標(biāo)準(zhǔn)的測試方法,首先進(jìn)行水平翻轉(zhuǎn)圖形,原始圖像的預(yù)測熱力圖和翻轉(zhuǎn)后的圖像對應(yīng)預(yù)測的熱力圖進(jìn)行平均作為最終的熱力圖.對于人體關(guān)鍵點(diǎn)熱力圖的估計,本文采用熱力圖數(shù)值最大位置向次大數(shù)值位置偏移四分之一作為最終的預(yù)測位置.
3.3.1 MPII數(shù)據(jù)集實(shí)驗(yàn)結(jié)果
表4顯示了在MPII數(shù)據(jù)集上,本文的SKDPose模型和最先進(jìn)的人體關(guān)鍵點(diǎn)檢測模型以及經(jīng)典的輕量化人體關(guān)鍵點(diǎn)檢測模型對比結(jié)果.從結(jié)果中可以明顯看出,SKDPose模型在模型性能、模型參數(shù)量和浮點(diǎn)數(shù)計算量中取得了極具競爭力的效果.相比于大型網(wǎng)絡(luò)SimpleBaseline-50來說,在模型參數(shù)和FLOPs分別減少了88%和95%,但是準(zhǔn)確率只降低了0.7%.與最先進(jìn)的HRNet-32相比,模型參數(shù)和FLOPs上分別減少了85%和93%,但是模型的準(zhǔn)確率只降低了2.7%.SimpleBaseline和HRNet重點(diǎn)追求模型的準(zhǔn)確性,在網(wǎng)絡(luò)結(jié)構(gòu)上沒有引入輕量化模型壓縮技術(shù),SKDPose模型在編碼器和解碼器等模塊借鑒了移動端網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計,同時兼顧模型準(zhǔn)確率和模型復(fù)雜度.SKDPose和輕量化人體姿勢估計模型FLPN-50[27]相比,PCKH@0.5模型精度指標(biāo)上相同,但是SKDPose在模型參數(shù)和FLOPs進(jìn)一步降低了58%和40%.SKDPose和MobileNetV2、MobileNetV3、ShuffleNetv2、FPD*[12]等模型相比,SKDPose模型以4.2M的模型參數(shù)量和0.66G的浮點(diǎn)數(shù)運(yùn)算量,在模型準(zhǔn)確率PCKH@0.5指標(biāo)上達(dá)到了87.8,以更低的模型參數(shù)量和浮點(diǎn)數(shù)運(yùn)算量完成了更高模型準(zhǔn)確率.相比于MobileNetV2、MobileNetV3、ShuffleNetv2、FPD*模型在PCKH@0.5性能指標(biāo)上分別提升了1.9、3、4.4和0.2個點(diǎn).上述輕量化模型相比于SKDPose模型缺乏編碼器的多尺度特征融合,僅使用高級語義特征,忽略低級語義特征對密集預(yù)測任務(wù)的重要性.圖4顯示了SKDPose和其余輕量化人體姿勢估計模型在模型準(zhǔn)確率和模型參數(shù)量的直觀對比.FPD*模型為離線蒸餾人體關(guān)鍵點(diǎn)檢測模型,雖然FPD*模型參數(shù)比SKDPose模型少,但是FPD*模型的訓(xùn)練成本極高,SKDPose模型屬于自我知識蒸餾,在單一模型內(nèi)部進(jìn)行知識的傳遞,因此SKDPose模型在模型性能和模型訓(xùn)練成本上整體是優(yōu)于FPD*.
表4 在MPII驗(yàn)證集上的模型定量比較Table 4 Quantitative comparison of models on MPII validation set
圖4 MPII驗(yàn)證集上模型參數(shù)量和準(zhǔn)確率對比Fig.4 Model complexity and accuracy comparison on the MPII validation set
整體來說,在網(wǎng)絡(luò)結(jié)構(gòu)上SKDPose模型充分借鑒了移動端小型網(wǎng)絡(luò)的設(shè)計思想,根據(jù)公式(1)~公式(4),通過在編碼器的多尺度特征融合模塊引入深度可分離卷積,解碼器模塊采用了深度可分離轉(zhuǎn)置卷積,從而大幅度降低了SKDPose模型的參數(shù)量和浮點(diǎn)數(shù)計算量.為了彌補(bǔ)由于上述模型壓縮帶來的性能下降,SKDPose模型在編碼器和解碼器模塊都引入了協(xié)同注意力機(jī)制,增強(qiáng)了輕量化模型特征表達(dá)能力.在模型訓(xùn)練方法上,SKDPose利用了自蒸餾的思想,在單一網(wǎng)絡(luò)內(nèi)部完成知識的蒸餾傳遞,在幾乎不增加模型訓(xùn)練成本和部署成本的前提下,避免了模型過擬合,提高了模型的泛化能力,實(shí)現(xiàn)了輕量化模型性能的提升.根據(jù)實(shí)驗(yàn)數(shù)據(jù)和可視化效果來看,SKDPose在模型復(fù)雜度和模型準(zhǔn)確率上具備極大的優(yōu)勢,在資源受限的邊緣設(shè)備上應(yīng)用前景廣闊.
3.3.2 COCO數(shù)據(jù)集實(shí)驗(yàn)結(jié)果
表5顯示在COCO數(shù)據(jù)集上,SKDPose在不使用ImageNet圖像分類的預(yù)訓(xùn)練權(quán)重的情況下和最先進(jìn)的人體姿態(tài)估計網(wǎng)絡(luò)以及輕量化人體姿態(tài)估計網(wǎng)絡(luò)的性能對比結(jié)果.從對比結(jié)果可以看出,SKDPose模型在模型性能、模型參數(shù)量和浮點(diǎn)數(shù)計算量中取得了極具競爭力的效果.對于輸入圖像分辨率為256×192,在無ImageNet預(yù)訓(xùn)練權(quán)重的情況下,SKDPose以0.41GFLOPs極低的計算量和4.2M較少的參數(shù)量,平均精度達(dá)到69.8.SKDPose相比于大型網(wǎng)絡(luò)SimpleBaseline-50來說,在模型參數(shù)和FLOPs分別減少了88%和95.4%,但是模型準(zhǔn)確率只降低了0.8%.相比于經(jīng)典的堆疊沙漏網(wǎng)絡(luò),在參數(shù)和浮點(diǎn)數(shù)上分別減少了83%和97%,但是模型準(zhǔn)確率提升了2.9個點(diǎn).相比于CPN[28]網(wǎng)絡(luò),SKDPose模型的參數(shù)和浮點(diǎn)數(shù)分別減少了85%和91%,但是模型精度提升了1.2個點(diǎn).圖5顯示了SKDPose模型和其余輕量化模型在準(zhǔn)確率和GFLOPs上的直觀對比結(jié)果.從圖中可以看出,SKDPose模型相比于MobileNetV2、ShuffleNetV2、DY-MobileNetV2和FLPN-50模型,在浮點(diǎn)數(shù)運(yùn)算量上分別下降了72%、67%、58%、62%,在模型準(zhǔn)確率上分別上升了5.2、9.9、1.6、-1.5個點(diǎn).SKDPose沒有在ImageNet上進(jìn)行預(yù)訓(xùn)練,因此相比于使用預(yù)訓(xùn)練權(quán)重的FLPN-50性能上略有降低.圖6顯示了SKDPose模型在MSCOCO數(shù)據(jù)集上的可視化效果圖,從圖中可以看到SKDPose模型對單人或者多人多物有遮擋的情況都可以有效檢測出人體姿態(tài).
表5 在COCO驗(yàn)證集上的模型定量比較Table 5 Quantitative comparison of models on COCO validation set
圖5 COCO驗(yàn)證集上模型浮點(diǎn)數(shù)計算量和準(zhǔn)確率對比Fig.5 Model GFLOPs and accuracy comparison on the COCO validation set
圖6 本文SKDPose模型在COCO數(shù)據(jù)集可視化結(jié)果Fig.6 Visualization results based on our SKDPose model for MSCOCO validation set
3.3.3 消融實(shí)驗(yàn)
為了驗(yàn)證SKDPose模型各個模塊的有效性,在MPII公開數(shù)據(jù)集上進(jìn)行了一系列消融實(shí)驗(yàn),具體實(shí)驗(yàn)結(jié)果見表6.其中PCKH@0.5代表模型的預(yù)測性能,參數(shù)量和GFLOPs反映了模型的部署和浮點(diǎn)數(shù)計算成本.具體來說,在控制其余實(shí)驗(yàn)配置相同的前提下,表6中SKDPose_0是未改進(jìn)的EfficientNet編碼器模塊和普通三層轉(zhuǎn)置卷積,相比于SimpleBaseline-50高通道上采樣模塊來說,本文對上采樣通道數(shù)進(jìn)行進(jìn)一步壓縮;SKDPose_1使用了改進(jìn)后的EfficientNet編碼器;SKDPose_2相比于SKDPose_1使用了DSTC模塊替換了普通轉(zhuǎn)置卷積,大幅度降低了解碼器模塊的模型參數(shù),驗(yàn)證了DSTC模塊的有效性;SKDPose_3驗(yàn)證了輕量化跨尺度雙向融合模塊的有效性;SKDPose相比于SKDPose_3使用了知識自我蒸餾模塊,驗(yàn)證了自我知識蒸餾方法的有效性.表7~表11是對表6的更詳細(xì)的消融實(shí)驗(yàn)和結(jié)果分析,其中消融實(shí)驗(yàn)中wo表示不包含此模塊,w表示包含此模塊.
表6 MPII驗(yàn)證集上模型組件消融實(shí)驗(yàn)Table 6 Ablation experiments of model components on the MPII validation set
表7 編碼器CAMBConv模塊消融實(shí)驗(yàn)Table 7 Encoder CAMBConv module ablation experiment
表7顯示了針對MBConv改進(jìn)后的CAMBConv模塊的消融實(shí)驗(yàn),在參數(shù)量和浮點(diǎn)數(shù)量基本保持不變的情況下,顯著提升了模型性能0.4個點(diǎn),CAMBConv的注意力模塊可以捕獲通道、空間和遠(yuǎn)距離范圍依賴的注意力特征,加強(qiáng)了編碼器模塊的特征提取能力.
表8顯示了輕量化上采樣DSTC模塊的有效性,根據(jù)公式(1)和公式(2),輕量化上采用模塊采用了深度可分離轉(zhuǎn)置卷積,相比于原始的上采樣模塊,本文上采樣模塊在模型參數(shù)上減少了94%,在浮點(diǎn)數(shù)計算量上減少了95%,但是模型準(zhǔn)確率只降低了0.3個點(diǎn),證明了深度可分離轉(zhuǎn)置卷積相比于原始的轉(zhuǎn)置卷積在模型壓縮上的有效性,對于資源受限的邊緣設(shè)備來說,上采樣模塊在部署成本上更具優(yōu)勢.
表8 輕量化上采樣模塊消融實(shí)驗(yàn)Table 8 Lightweight upsampling module ablation experiment
表9顯示了跨尺度雙向融合模塊的消融實(shí)驗(yàn),其中解碼器1、解碼器2和解碼器3分別代表了3個分支解碼器在PCKH@0.5指標(biāo)上的預(yù)測性能.BFL-FPN模塊參數(shù)量和浮點(diǎn)數(shù)運(yùn)算量分別為0.3M和0.05GFLOPs,因?yàn)锽FL-FPN模塊對于特征特提取主要采用了深度可分離卷積,根據(jù)公式(3)和(4),深度可分離卷積相比于普通的卷積參數(shù)量和浮點(diǎn)數(shù)計算量減少了8/9,因此BFL-FPN以極低的復(fù)雜度大幅度提升了3個解碼器的性能.使用BFL-FPN后3個原始解碼器性能分別提升了22.8、1.8和0.4個點(diǎn),不同層解碼器性能都有提升,主要原因是編碼器的不同尺度的語義特征圖對人體關(guān)鍵點(diǎn)估計都起到一定作用,淺層特征的空間信息豐富,但是語義信息不足;深層特征則與之相反,跨尺度雙向融合可以提升不同分支解碼器性能.
表9 跨尺度雙向融合模塊消融實(shí)驗(yàn)Table 9 Cross-scale bidirectional fusion module ablation experiment
表10顯示了自我知識蒸餾方案的消融實(shí)驗(yàn),SKD模塊在基本不增加模型參數(shù)和浮點(diǎn)數(shù)計算量的情況下,提升了模型性能0.5個點(diǎn).主要原因在于模型的訓(xùn)練階段,通過深層教師分支監(jiān)督淺層學(xué)生網(wǎng)絡(luò)分支,弱化真實(shí)標(biāo)簽對淺層網(wǎng)絡(luò)的影響,避免了在訓(xùn)練階段學(xué)生模型過度信任真實(shí)標(biāo)簽導(dǎo)致模型過擬合.學(xué)生分支網(wǎng)絡(luò)可以從教師分支中獲取更多的“暗知識”,從而提升了學(xué)生模型的泛化能力.FPD模型在不同模型之間進(jìn)行知識傳遞,FPD模型訓(xùn)練時間至少是本文自蒸餾模型訓(xùn)練時間的兩倍以上.本文自我知識蒸餾訓(xùn)練階段增加兩個少量參數(shù)的分支,在單一網(wǎng)絡(luò)內(nèi)部實(shí)現(xiàn)知識傳遞,在最終部署階段從3個分支中只保留準(zhǔn)確率最高的分支,因此本文模型在部署階段不增加任何參數(shù)和浮點(diǎn)數(shù)計算量.
表10 自我知識蒸餾消融實(shí)驗(yàn)Table 10 Self-distillation knowledge ablation experiment
為了進(jìn)一步證明基于KL離散度的蒸餾函數(shù)相比于FPD模型的MSE蒸餾函數(shù)的有效性,表11顯示了不同蒸餾損失函數(shù)對模型性能的影響.實(shí)驗(yàn)結(jié)果表明相比于FPD模型的MSE蒸餾損失函數(shù),基于KL離散度的蒸餾損失函數(shù)在不增加模型參數(shù)前提下,模型性能增加了0.4個點(diǎn).MSE損失函數(shù)更適合于回歸任務(wù),而人體關(guān)鍵點(diǎn)熱力圖是符合高斯分布的概率分布圖,KL離散度基于相對熵來衡量兩個概率分布之間的差異,因此更能衡量教師模型和學(xué)生模型輸出之間的差異性.表12顯示了公式(8)損失函數(shù)中用于平衡MSE損失和SKD損失的參數(shù)α的消融實(shí)驗(yàn),從結(jié)果中可以看出當(dāng)權(quán)重α≤60或α≥115時,自我知識蒸餾對性能提升0.3個點(diǎn),這表明教師監(jiān)督信號確實(shí)提升了學(xué)生模型的泛化能力,避免學(xué)生模型過度信任真實(shí)標(biāo)簽的監(jiān)督信號.觀察最終實(shí)驗(yàn)結(jié)果,經(jīng)過實(shí)驗(yàn)驗(yàn)證,阿爾法α設(shè)置為100為最優(yōu)設(shè)置,這表明SKD損失在基本不增加模型復(fù)雜度的前提下實(shí)現(xiàn)“暗知識”的轉(zhuǎn)移,提升了模型的泛化能力.
表11 不同的蒸餾損失函數(shù)比較Table 11 Comparison of different distillation loss functions
表12 損失函數(shù)參數(shù)消融實(shí)驗(yàn)Table 12 Ablation about weights of loss functions
本文提出了一種基于模型壓縮和知識自我蒸餾的輕量化人體姿態(tài)估計檢測算法,旨在解決現(xiàn)有的大型人體關(guān)鍵點(diǎn)檢測模型難以在資源受限的設(shè)備上部署問題.通過在MBConv模塊引入?yún)f(xié)同注意力機(jī)制,增強(qiáng)了解碼器在通道、空間和全局范圍的注意力特征,在編碼器之后引入BFL-FPN結(jié)構(gòu),實(shí)現(xiàn)了多層次特征雙向融合,顯著提升了網(wǎng)絡(luò)精度.同時設(shè)計了輕量化的上采樣模塊DSTC,使得解碼器在模型參數(shù)上大幅度降低.最后利用自我知識蒸餾使得淺層次解碼器學(xué)習(xí)深層次解碼器輸出特征,提升各層次解碼器的性能.在COCO和MPII數(shù)據(jù)集上實(shí)驗(yàn)表明,本文的方法與最先進(jìn)的大型人體關(guān)鍵檢測網(wǎng)絡(luò)的精度基本相似,但是本文的模型參數(shù)量和計算成本極低,對于計算能力受限的邊緣設(shè)備,本文的模型具備極大的應(yīng)用前景.希望本文的方法能夠在人體關(guān)鍵點(diǎn)檢測領(lǐng)域激發(fā)更多的靈感,未來,將研究通過引入Transformer架構(gòu),進(jìn)一步提升輕量化人體姿態(tài)估計模型的性能.