楊飛宇,宋展,肖振中,莫曜陽,陳宇,潘哲,張敏,張遙,錢貝貝,湯朝偉,金武
(1.中國科學(xué)院深圳先進技術(shù)研究院,廣東深圳 518055;2.奧比中光科技集團股份有限公司,廣東深圳 518063;3.南京航空航天大學(xué)能源與動力學(xué)院,南京 210016)
近年來,深度學(xué)習(xí)[1]的快速發(fā)展極大地提高了人體姿態(tài)估計算法的表現(xiàn)。在眾多的基于深度學(xué)習(xí)的算法中,基于熱圖的算法取得了最佳的表現(xiàn)[2-6]。熱圖解碼利用神經(jīng)網(wǎng)絡(luò)預(yù)測的熱圖估計人體關(guān)節(jié)點的坐標(biāo)。與圖像分類[7-9]、目標(biāo)檢測[10-12]和語義分割[13-14]等計算機視覺任務(wù)不同的是,人體姿態(tài)估計算法采用的度量指標(biāo)將預(yù)測和標(biāo)注的人體關(guān)節(jié)點進行點對點的比較,所以人體姿態(tài)估計任務(wù)對采用的熱圖解碼算法的可靠性十分敏感。另外,大多數(shù)應(yīng)用場景都要求進行實時的人體姿態(tài)估計,對熱圖解碼算法的速度也提出了嚴格的要求。因此,開發(fā)快速、精確的熱圖解碼算法,高效高精度地計算人體關(guān)節(jié)點的坐標(biāo)具有重要意義。
現(xiàn)有的熱圖解碼算法專注于消除熱圖的隨機誤差,忽略了系統(tǒng)誤差的影響。比如,標(biāo)準熱圖解碼算法取熱圖上的最大響應(yīng)點的坐標(biāo)作為關(guān)節(jié)點的坐標(biāo),該算法簡單但容易引入較大的誤差。文獻[15]通過將最大響應(yīng)點的坐標(biāo)向第二大響應(yīng)點坐標(biāo)移動1/4 的距離所得到的坐標(biāo)作為預(yù)測的人體關(guān)節(jié)點的位置。該算法利用了熱圖的兩個極值點,在某種程度上能減小隨機誤差,但效果有限。文獻[16]在此基礎(chǔ)上開展了進一步研究,通過計算熱圖的一階和二階導(dǎo)數(shù)來解高斯分布的平均值。這種算法利用整個熱圖減小隨機誤差,也達到了目前最佳的精度水平。但是由于需要高斯平滑前處理操作,該算法的速度較慢。從以上研究可以發(fā)現(xiàn),現(xiàn)有的熱圖解碼算法只處理隨機誤差,忽略了特定網(wǎng)絡(luò)帶來的系統(tǒng)誤差的影響。
為了考慮系統(tǒng)誤差的影響,本文利用神經(jīng)網(wǎng)絡(luò)在訓(xùn)練集上的誤差表現(xiàn)補償模型在推理階段的誤差。本文定義了一個最佳的誤差補償因子以描述網(wǎng)絡(luò)的誤差特性,并用于開展誤差補償。該算法可以很容易地與任意基于熱圖的神經(jīng)網(wǎng)絡(luò)集成,而無需更改模型設(shè)計。
本文主要工作包括:1)通過實驗發(fā)現(xiàn)了目前基于熱圖的算法存在顯著的系統(tǒng)誤差,而之前的熱圖解碼算法都忽略了系統(tǒng)誤差的存在;2)通過理論推導(dǎo)給出了結(jié)合神經(jīng)網(wǎng)絡(luò)和訓(xùn)練集評估和補償誤差的算法。
得益于神經(jīng)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展[1],姿態(tài)估計進入了一個快速發(fā)展的新階段。人體姿態(tài)估計通常分為單人和多人任務(wù)。單人姿態(tài)估計只檢測人體關(guān)節(jié),無需檢測關(guān)節(jié)點之間的連接關(guān)系,因此具有相對較高的精度[2-3,17-18]。多人姿態(tài)估計又分為兩類:自上而下算法[4]和自下而上算法[19-21]。自上而下的算法本質(zhì)上是將行人檢測與單人姿態(tài)估計相結(jié)合。首先通過行人檢測算法(比如YOLO(You Only Look Once)[11]和 Mask R-CNN(Mask Region-based Convolutional Neural Network)[10]等)檢測出行人的外接框,然后用每一個外接框裁剪出每一個人體實例,最后用單人姿態(tài)估計網(wǎng)絡(luò)(比如級聯(lián)金字塔網(wǎng)絡(luò)(Cascaded Pyramid Network,CPN)[4]和高分辨率網(wǎng)絡(luò)(High-Resolution Network,HRNet)[2]等)去檢測每個人體實例的骨架關(guān)節(jié)點。比如CPN[4]通過多級精細化的方法定位更精確的人體關(guān)節(jié)點位置;張小娜等[22]設(shè)計了對稱空間變換網(wǎng)絡(luò)與單人姿態(tài)估計網(wǎng)絡(luò)相連接,實現(xiàn)在遮擋情況下更精確的預(yù)測;田宇[23]提出了基于沙漏網(wǎng)絡(luò)的輕量化的自上而下的人體姿態(tài)估計網(wǎng)絡(luò),能夠?qū)崿F(xiàn)在復(fù)雜場景下相對快速的推理。兩階段過程通常比較耗時,需要同時使用行人檢測和單人姿態(tài)估計兩個神經(jīng)網(wǎng)絡(luò),但具有較高的精度。因此,目前人體姿態(tài)估計任務(wù)精度最高的算法大多是基于自上而下框架實現(xiàn)的[3]。自下而上的算法在學(xué)習(xí)關(guān)節(jié)點坐標(biāo)的同時,還要學(xué)習(xí)關(guān)節(jié)點之間的連接關(guān)系以達到區(qū)分不同實體的目的[19-21]。代表性的連接關(guān)系學(xué)習(xí)策略包括學(xué)習(xí)相鄰關(guān)節(jié)點的連接(OpenPose)[19],通過關(guān)聯(lián)嵌入分組學(xué)習(xí)人體關(guān)節(jié)(Associative Embedding)[20]和通過概率學(xué)習(xí)連接(Pose Proposal Network)[21]。
學(xué)術(shù)界對人體姿態(tài)的研究主要集中在設(shè)計不同的網(wǎng)絡(luò)架構(gòu),對熱圖解碼研究較少,然而熱圖解碼卻對最終預(yù)測的精度有顯著的影響。標(biāo)準解碼算法是目前應(yīng)用最廣泛的熱圖解碼算法,它使用高斯濾波器[24]對熱圖進行平滑后提取響應(yīng)最大點坐標(biāo)作為關(guān)節(jié)點坐標(biāo)。標(biāo)準解碼算法速度快,但對誤差極其敏感,通常精度較低。為了在一定程度上解決這一問題,Newell 等[15]提出了一種基于經(jīng)驗的Shifting 算法,它僅憑借一個點確定關(guān)節(jié)點位置不夠可靠,因此該算法將高斯平滑后熱圖的最大響應(yīng)點的坐標(biāo)向第二最大響應(yīng)點的坐標(biāo)移動1/4 的距離以定位人體關(guān)節(jié)點坐標(biāo)。該算法由熱圖的兩個極大值代替一個極大值,效果優(yōu)于標(biāo)準算法,但由于建立在標(biāo)準算法的基礎(chǔ)上,速度比標(biāo)準算法稍慢一些。Zhang等[16]提出了一種名為DARK(Distribution-Aware coordinate Representation of Keypoints)的解碼算法,該算法在高斯平滑后的熱圖上取一階導(dǎo)數(shù)和二階導(dǎo)數(shù)求解高斯分布的平均值。由于用到了整個熱圖的信息,DARK 算法[16]能夠提供更精確的預(yù)測,是目前精度最佳的熱圖解碼算法,但由于需要進行高斯平滑和求解導(dǎo)數(shù),該算法的速度較慢。以上算法都沒有考慮系統(tǒng)誤差的影響,因此不可避免地限制了算法的預(yù)測精度。
本章首先回顧熱圖編碼的過程,然后提出本文的誤差補償算法,最后給出誤差補償過程中誤差補償因子的計算方法。
熱圖編碼是將人體關(guān)節(jié)點坐標(biāo)轉(zhuǎn)換成對應(yīng)的熱圖的過程。在基于熱圖的人體姿態(tài)估計中,人體關(guān)節(jié)坐標(biāo)按比例編碼到熱圖中,可以表示為:
p與p'分別對應(yīng)彩色圖中以及熱圖中的點坐標(biāo),λ為神經(jīng)網(wǎng)絡(luò)輸出步長。最直接的編碼方式是將關(guān)節(jié)點像素設(shè)為1,所有的非關(guān)節(jié)點像素設(shè)為0(One-hot 編碼)。然而,僅用一個有效像素代表關(guān)節(jié)點容易受到誤差的干擾。相比之下,采用連續(xù)的像素分布代表關(guān)節(jié)點信息更有利于神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)。用二維高斯分布編碼人體關(guān)節(jié)坐標(biāo)已經(jīng)成為一個標(biāo)準的做法。二維高斯分布可以表示為:
其中:μ為平均值;Σ為協(xié)方差矩陣。采用二維高斯編碼過后,高斯分布的均值μ所對應(yīng)的坐標(biāo)即原來的人體關(guān)節(jié)點的坐標(biāo)。解碼的過程就是從帶有誤差的高斯分布中估計均值μ的坐標(biāo)的過程。
從熱圖編碼的過程可以看出,解碼的過程即獲得高斯分布均值的過程,標(biāo)準算法通過最大值所在位置的坐標(biāo)近似均值的位置,或者采用導(dǎo)數(shù)的方法開展更精確的估計,但是現(xiàn)有算法只能平均掉隨機誤差,無法考慮系統(tǒng)誤差的影響。本文提出通過誤差補償?shù)姆绞?,不僅可以消除隨機誤差的影響,同時充分考慮了系統(tǒng)的作用,并且通過對結(jié)果進行補償修正,能夠獲取更精確的熱圖解碼。這一節(jié)將闡述本文提出的熱圖誤差補償算法。圖1 給出了神經(jīng)網(wǎng)絡(luò)預(yù)測的熱圖中存在的誤差。針對一維的情況進行分析,所得結(jié)論同樣適用于二維的真實熱圖情況。首先,神經(jīng)網(wǎng)絡(luò)預(yù)測的熱圖可以分解為:
圖1 熱圖的信號和誤差函數(shù)Fig.1 Signal and error functions of heatmap
其中:g(x)表示高斯分布信號函數(shù);h(x)表示誤差函數(shù),同時包含了隨機誤差和系統(tǒng)誤差;f(x)表示神經(jīng)網(wǎng)絡(luò)預(yù)測的熱圖,即帶誤差的信號函數(shù)。為便于描述,將f(x)、g(x)和h(x)簡單地表示為f、g和h。
解碼的任務(wù)可以定義為:g和h均未知,f已知,求μ的估計值,下面給出了本文提出的誤差補償算法的理論推導(dǎo)。根據(jù)均值的定義,高斯信號g的均值μ可以表示為:
同樣地,選取一個較小的偏移量Δ,帶噪聲的信號f在區(qū)間[x1,x2-Δ]的均值ν(Δ)可以表示為:
對于一個收斂較好的神經(jīng)網(wǎng)絡(luò),應(yīng)該具有較高的信噪比,因此在區(qū)間[x1,x2-Δ]上誤差的積分相較于信號的積分可以忽略,即
將式(7)代入(6),可得
又由于Δ較小且信號g是均值為(x1+x2)2 的高斯分布,其主要響應(yīng)位于均值附近,所以可以認為g在[x1,x2]區(qū)間上的積分遠大于在[x2-Δ,x2]區(qū)間上的積分:
再由ν(Δ)的定義(5)可知,將Δopt代入式(5)可得待求量μ的一個估計值為:
稱Δopt為誤差補償因子。
式(12)即本文提出的誤差補償熱圖解碼方法,可以看出μ被近似為f在區(qū)間[x1,x2-Δopt]上的平均值,已知Δopt即可得到μ的估計值,下面將討論如何確定Δopt。由式(10)可以得出,由于誤差函數(shù)h的不確定性,理論上并不一定存在一個Δopt,使得δ(Δopt)=0 成立,因此需要尋找使δ(Δ)最接近于0 的Δ,即
由于μ和Δopt都是待求量,因此不能通過式(13)求解。在實際情況下,可以通過數(shù)據(jù)集確定Δopt的值,假設(shè)算法的精度為A,它可以表示為ν的函數(shù),即A(ν),在訓(xùn)練集D上評估神經(jīng)網(wǎng)絡(luò)N的精度可以表示為:
那么,在理論上A在μ處取得高精度,即
因此,Δopt可以被表示為:
對于二維真實熱力圖的情況,由于在數(shù)據(jù)編碼、網(wǎng)絡(luò)推理和熱圖解碼過程中,x和y方向都采用相同處理。因此由對稱性可知,x和y服從相同的誤差分布,可以得出:
值得注意的是,本文算法一次性補償所有誤差包括隨機誤差和系統(tǒng)誤差。此外,與以往算法不同的是,此算法無需利用高斯光滑進行預(yù)處理,因為該算法可以在任意帶有噪聲的熱力圖上開展積分運算,噪聲本身可以被計算為需要補償?shù)膶ο螅?.4 節(jié)進一步討論了高斯平滑對不同算法的影響。
當(dāng)模型在訓(xùn)練集上收斂后,通過式(16)可獲得最優(yōu)誤差補償因子Δopt。圖2 描述了確定Δopt的具體步驟:1)首先找到熱圖的最大值(圖2 中的A 點),近似作為高斯分布的中心位置。2)將積分區(qū)域擴展到6σ+3,其中σ是高斯分布的標(biāo)準差。由于高斯分布落在([-3σ,3σ])區(qū)域內(nèi)的概率為99.7%,為了進一步覆蓋整個分布,這里在兩邊再額外擴展一個像素,達到6σ+3。注意,也可以采用更大的區(qū)域,對結(jié)果沒有影響,但是會帶來額外的計算。3)將x和y軸的上限減小Δ(在圖2 中僅顯示x軸),并使用式(5)進行積分,獲得預(yù)測的關(guān)節(jié)坐標(biāo)ν(Δ),再用式(14)評估模型精度A(ν)(例如,COCO(Common Objects in COntext)上的平均精度)。4)最后再由式(16),獲得最佳模型性能的是最佳誤差補償因子Δopt,該誤差補償因子將用于模型推理。值得注意的是,x1和x2的值是由生成熱圖的σ大小決定的,更大的σ值需要更大的積分區(qū)域,即x1=-3σ,x2=3σ。
圖2 計算最優(yōu)補償因子Δopt的方法Fig.2 Calculation method of optimal compensation factor Δopt
本文采用COCO-2017 和MPII(Max Planck Institute for Informatics)兩個廣泛使用的人體姿態(tài)估計數(shù)據(jù)集進行測試,COCO 關(guān)鍵點數(shù)據(jù)集[25]具有20 萬張圖像包含超過25 萬個人像樣本,這些樣本具有豐富的人像尺度、背景環(huán)境和遮擋模式。每個人實例被標(biāo)記為17 個關(guān)節(jié)。MPII 人體姿態(tài)數(shù)據(jù)集[26]包含2 萬張圖像,其中包括4 萬多個人體樣本,每個樣本都有16 個關(guān)鍵點。平均精度(Average Precision,AP)和相對頭部的正確點百分比(Percentage of Correct Keypoints with respect to head,PCKh)指標(biāo)分別用于COCO 和MPII 數(shù)據(jù)集以評估模型性能。
為了開展充分的驗證,本文采用14 個模型進行評估,包括 HRNet(High Resolution Net)模型族(HR-W32 和HR-W48)[2]和ResNet 模型族(ResNet-50、ResNet-101 和ResNet-152)[17],模型具有具有3 種輸入分辨率(256×192,256×256 和384×288)。本文使用不同的算法對它們的熱圖進行解碼,包括標(biāo)準算法、Shifting 算法[15]、DARK 算法[16]和本文算法。值得注意的是,原始的DARK 算法[16]為了提升精度,采用了flip 的策略,但是flip 策略需要進行2 次推理,在實際應(yīng)用中為了達到較快的推理速度,通常并不會采用flip 策略,因此本文在模型評估中不使用flip 策略。
表1 列出了各個模型在COCO 和MPII 上的Δopt值,因為在這兩個數(shù)據(jù)集上具有相同的Δopt值,所以沒有分別列出。
表1 各個模型的最優(yōu)誤差補償因子Δopt值Tab.1 Optimal error compensation factor Δopt value of each model
這說明COCO 和MPII 數(shù)據(jù)具有較高的一致性。另外,對于所有模型都有Δopt>0 成立,說明系統(tǒng)誤差總是向右下角偏移,需要通過減小右下角的積分面積補償系統(tǒng)誤差帶來的偏移。本文僅從實驗結(jié)果中觀察到了系統(tǒng)誤差,并不能確定系統(tǒng)誤差的準確來源,系統(tǒng)誤差可能是由于神經(jīng)網(wǎng)絡(luò)中的不對稱操作造成的,例如非對稱pooling,非對稱padding 或stride>1 的卷積等操作,這些操作導(dǎo)致特征向右下角移動,從而引入系統(tǒng)誤差。由于這些系統(tǒng)誤差不能僅僅依靠熱圖本身的信息消除,因此標(biāo)準算法、Shifting 算法[15]和DARK 算法[16]都無法消除系統(tǒng)誤差,而本文算法利用了訓(xùn)練集和模型提供的支撐信息,可以起到消除系統(tǒng)誤差的作用。
本文在COCO 數(shù)據(jù)集上對比了各個算法。表2 列出了各個模型的精度指標(biāo),包括平均精度(AP)和平均召回(AR)。可以看出,本文算法在各個指標(biāo)上都優(yōu)于其他算法。具體來說,本文算法使HRNet-W48-256×192 模型的平均精度相比之前最佳算法提升了2.86 個百分點。算法的精度可以排列為:本文算法>DARK 算法[16]>Shifting 算法[15]>標(biāo)準算法。前3 種算法建立在標(biāo)準算法的基礎(chǔ)上,所以精度更高。DARK算法[16]通過充分利用熱圖信息,能夠比Shifting 算法[15]更好地減小隨機誤差;但DARK 算法[16]仍然存在顯著的系統(tǒng)誤差,因此精度不如本文算法。
表2 COCO驗證集上的精度(驗證過程不采用flip策略)Tab.2 Accuracy on COCO validation dataset(validation process without flip strategy)
圖3 比較了各個算法的AP 指標(biāo)??梢钥闯?,相較于對比算法,本文算法獲得了較大的精度增益。比如在輸入分辨率為256×192 時,本文算法使ResNet-50、ResNet-101 和ResNet-152 模型AP 較之前最先進的DARK 算法[16]分別獲得2.24、2.68 和2.59 個百分點的精度提升;HR-W32 和HR-W48 模型的AP 分別提高了2.73 和2.86 個百分點。圖4 給出了采用本文算法預(yù)測的人體骨架點,藍色和紅色分別表示沒有誤差補償和有誤差補償?shù)慕Y(jié)果??梢钥闯鐾ㄟ^誤差補償可以預(yù)測出更合理的關(guān)節(jié)點坐標(biāo)。從熱圖看出,采用誤差補償修正前的關(guān)節(jié)點的位置更接近于最大響應(yīng)處所對應(yīng)的坐標(biāo)位置,然而響應(yīng)往往并非一個理想的高斯分布,而是受到周圍因素,如顏色、形狀等的影響而具有不規(guī)則的形態(tài)。采用了誤差補償算法通過積分修正的關(guān)節(jié)點位置,更充分地考慮全局響應(yīng)的影響,預(yù)測結(jié)果更合理。
圖3 不同算法在COCO驗證集上的AP比較Fig.3 AP comparison of different methods on COCO validation dataset
圖4 誤差補償對預(yù)測結(jié)果的影響Fig.4 Influence of error compensation on prediction results
表3 列出了在MPII 數(shù)據(jù)集上各個模型的PCKh 值??梢宰⒁獾?,DARK 算法[16]預(yù)測的頭部關(guān)節(jié)更好,本文算法對肩關(guān)節(jié)、肘關(guān)節(jié)、腕關(guān)節(jié)、髖關(guān)節(jié)和膝關(guān)節(jié)的效果優(yōu)于其他算法。圖5 對比了不同算法的PCKh0.1(以0.1 為閾值的PCKh指標(biāo))和PCKh0.5(以0.5 為閾值的PCKh 指標(biāo))指標(biāo),同樣可以得出:本文算法>DARK 算法[16]>Shifting 算法[15]>標(biāo)準算法的精度順序排序。對于PCKh0.1指標(biāo),本文算法將HR-W32-256×256 和ResNet-152-256×256 的性能分別提高了8.42 和7.79 個百分點(圖5(a))。當(dāng)使用更寬松的PCKh0.5指標(biāo)進行評估時,精度提升了0.42 和0.47 個百分點(圖5(b))。不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、輸入分辨率、評估指標(biāo)和數(shù)據(jù)集的測試表明,本文算法均優(yōu)于現(xiàn)有的算法,驗證了本文算法的合理性和通用性。
圖5 不同算法在MPII數(shù)據(jù)集上的PCKh值比較Fig.5 PCKh comparison of different methods on MPII dataset
表3 MPII驗證集上的PCKh精度(驗證過程不采用flip策略) 單位:%Tab.3 PCKh accuracy on MPII dataset(validation process without flip strategy)unit:%
以往的算法對高斯平滑有較強的依賴,比如DARK 算法[16]需要用高斯平滑對熱圖進行預(yù)處理,以進行后續(xù)的求導(dǎo)操作,不使用高斯平滑會導(dǎo)致明顯的精度損失。相反地,本文算法對高斯平滑并沒有依賴性,因為本文使用的積分操作對非光滑的表面也適用。表4 列出了高斯平滑對DARK算法[16]和本文算法的影響??梢钥闯觯跊]有高斯平滑的情況下,DARK 算法[16]的模型性能顯著下降,因為此時DARK 算法[16]不能獲得精確的一階和二階導(dǎo)數(shù)。而本文算法在使用和不使用高斯平滑時,精度僅出現(xiàn)了小幅的波動,表明本文算法并不依賴高斯平滑進行預(yù)處理,由于使用積分代替導(dǎo)數(shù),本文算法更能抵抗噪聲的干擾。
表4 分辨率、高斯平滑和主干網(wǎng)絡(luò)對算法精度的影響Tab.4 Influence of resolution,Gaussian smoothing and backbone network on algorithm accuracy
在實際的人體姿態(tài)估計應(yīng)用中,通常要求快速地完成預(yù)測,因此算法的速度十分重要。Shifting 算法[15]、DARK 算法[16]和本文算法都是基于標(biāo)準算法實現(xiàn)的,因此有必要對比各算法所引入的計算耗時。表5 列出了各算法與標(biāo)準算法相比在Intel Core-i7 9700F CPU 上的額外運行時間??梢钥闯觯篠hifting 算法[15]速度最快,但精度低;精度較高的DARK算法[16]處理單張圖像需要3.0 ms,這是由于DARK 算法[16]需要進行全圖的高斯平滑,然后計算熱圖的一階和二階導(dǎo)數(shù),計算量較大。相比之下,本文算法處理單張圖片耗時1.4 ms,速度約為DARK 算法[16]的2 倍,顯著地縮短了計算時間。
表5 不同算法相較于標(biāo)準算法的額外運行時間單位:msTab.5 Extra running time of different methods beyond standard method unit:ms
針對當(dāng)前熱圖解碼算法沒有考慮系統(tǒng)誤差的問題,本文提出了一種基于誤差補償?shù)臒釄D解碼算法。該算法較當(dāng)前最佳的算法具有顯著的精度提升,同時由于不依賴于高斯平滑預(yù)處理,不用進行耗時的求導(dǎo)預(yù)算,本文算法的速度約為當(dāng)前最佳算法的2 倍。大量的實驗結(jié)果表明,當(dāng)前的人體姿態(tài)估計算法的系統(tǒng)誤差主要偏向于熱圖的右下角,可能的原因是神經(jīng)網(wǎng)絡(luò)中的非對稱操作。當(dāng)前并不能確定產(chǎn)生系統(tǒng)誤差的根本原因,將在以后開展相關(guān)的研究。