陳昱昆,汪正祥,于蓮芝
(上海理工大學 光電信息與計算機工程學院,上海 200093)
近年來,由于注意力機制的發(fā)展和深度視覺表征的迅速崛起,視覺理解,如物體檢測和場景識別[1-4]等任務已經有了顯著的發(fā)展.人體姿態(tài)估計[5,6]是許多計算機視覺應用中的重要組成部分,常常應用在視頻監(jiān)控和體育視頻分析等領域.隨著深度卷積神經網絡的發(fā)展,人體姿態(tài)估計已經取得了很大突破,但是由于人體遮擋,圖片背景復雜以及人體在圖片中尺度的不同等因素,仍然是一個具有挑戰(zhàn)性的項目.在視頻圖像人體姿態(tài)估計中,運動物體可能會導致圖像模糊,對姿態(tài)估計造成較大的困難,同時由于常用神經網絡結構比較復雜以及參數(shù)較多,導致模型速度一般較慢,因此在視頻圖像中,對人體姿態(tài)估計提出了更高的要求.
單人姿態(tài)估計已被廣泛研究.傳統(tǒng)方法包括使用梯度方向直方圖和可變形零件模型等,這類方法比較依賴于手工定義特征,表達能力有限,很難擴展到復雜的場景.關于人體姿態(tài)估計的研究近年開始從經典方法轉向卷積神經網絡.Toshev等人[7],使用卷積神經網絡直接回歸人體關鍵點的坐標,Newell等人[4],將回歸坐標變成由坐標生成的關鍵點熱力圖為標簽,并依據(jù)深度神經網絡采用“下采樣上采樣”的架構,中間使用跳過層連接,該架構簡稱為沙漏網絡.這種結構通過下采樣對不同特征進行融合和提取,通過上采樣與低維特征進行融合,得到原圖大小的預測熱力圖.這種結構高分辨率表征主要是由低分辨率表征通過上采樣得到的高分辨率表征,其本身雖然擁有很好的語義表達能力,但是上采樣本身并不能完整地彌補空間分辨率的損失.
與單人姿態(tài)估計相比,多人姿態(tài)估計需要解析場景中所有人的全身姿勢,由于多人之間的遮擋,不同關鍵點和人之間的相互作用使其成為更具有挑戰(zhàn)性的任務.多人姿勢估計方法可以分為兩類:分別簡稱“自上而下”和“自下而上”.“自上而下”的方法[6-10]主要將人體關鍵點分為兩個階段,首先使用性能良好的人物檢測器對圖像中的人物進行檢測,然后對檢測出的每個人進行姿態(tài)估計,這樣做的目的將多人姿態(tài)估計轉化為單人姿態(tài)估計,這類方法非常依賴于人體探測器的性能.CPN[10]介紹了COCO[11]2017年的人體關鍵點挑戰(zhàn)賽勝利者的方法,采用改進的金字塔網絡FPN[12]作為人體檢測器,同時人體關鍵點檢測分為兩個階段,GlobalNet[10]是使用金字塔網絡識別簡單的點,RefineNet[10]采用難點挖掘方法(OHEM)識別困難的關鍵點并只返還困難點的梯度,進而訓練識別困難的關鍵點.但這種方法,更容易檢測形狀小的行人,同時recall比較高,但是由于經過行人檢測化多人關鍵點檢測為單人關鍵點檢測,兩個深度學習模型速率一般較慢.“自下而上”的方法首先預測圖像中所有身體關節(jié),然后利用矢量圖或者聚類的方法將這些點進行分類,構成不同人的完整姿態(tài).Openpose[13]是基于“自下而上”方法由卡內基梅隆大學開源的人體關鍵點檢測項目,首先找到圖像中的所有人的關鍵點,然后再對這些點進行匹配連接,使得同一個人的點進行相連,獲得最終的姿態(tài)估計結果.這種方法由于只經過一個深度學習模型,時效性比較強,但沒有使用行人檢測器,而是依賴于語義信息和關鍵點之間的關系,對關節(jié)關系進行建??赡懿⒉荒敲纯煽?,準確率比較低,有時無法區(qū)分該點屬于哪個人,所以本文采用“自上而下”方法,并選用輕量級網絡作為骨架網絡,在保證準確率的同時提高模型時效性.
上述多人姿態(tài)估計,主要是針對單幅圖像處理,而在應用場景往往是以視頻的形式呈現(xiàn).運動物體導致圖像模糊以及姿態(tài)估計器比較耗時,這對視頻檢測提出了更高的要求.視頻具有連貫性,視頻的幀間信息具有相似性和時序性,如果可以不通過姿態(tài)估計器而是通過幀間信息推理出預測幀關鍵點信息,那在視頻中的檢測速度會有較大幅度的提高.最新的一項工作,3DMaskR-CNN[14],在對每幀關鍵點檢測的同時,也會通過3D卷積利用時序信息產生姿態(tài)軌跡流進行關鍵點預測,但是3D卷積融合幀間信息的同時,也帶來了較大的計算量.
本文提出了一種在視頻中進行人體關鍵點檢測的方法,方法分為兩部分,第一部分是對單幀圖片進行人體關鍵點檢測,對于上采樣不能彌補空間分辨率損失以及常用檢測模型速度較慢的情況,采用雙路卷積神經網絡,一路采用金字塔網絡結構保持語義表達能力,并選輕量級模塊Inverted residuals模塊作為網絡基礎模塊,提高模型運行速率,另一路保持空間分辨率以減少由于分辨率變化導致的損失.第二部分,利用時間序列關系建立關鍵點輕量級跟蹤模型,旨在利用視頻中幀間信息進行視頻人體關鍵點推理.實驗結果表明,本文的檢測模型對比Girdhar et al[15]、Xiu et al[16]的mAP分別提高16.1%和11%,對于圖片單人檢測速度分別提升60%和50%,對于跟蹤模塊MOT分別有16%和7.6%提升.本文對比最新的Xiao B et al[9]檢測模型的mAP,單人檢測速度以及MOT分別有1.3%,20%以及2.8%的提高.因此,本文的方法不僅可以增加在視頻中行為姿態(tài)檢測速率,同時還有效的提高了準確率.
本文采用基于SSD[17]的物體檢測算法.為了減少參數(shù)并提高速率,采用高性能輕量級網絡MobilenetV2[18]取代SSD[17]中的VGG16[19]作為骨架網絡,并采用激活函數(shù)ReLu6如公式(1)取代ReLu,提取主要的非線性特征.
f(x)=min(6,max(,0,x))
(1)
x是激活函數(shù)的輸入,f(x)是該函數(shù)的輸出.ReLu6是根據(jù)ReLu進行改進,將ReLu的最大范圍控制在6以下,它常常使用在移動端設備中,主要是為了在移動端設備float16低精度的情況下,也會有很好的數(shù)值分辨率,如果對ReLu的激活范圍不加限制,輸出范圍0到正無窮,如果激活值非常大,則輸出分布會在一個很大的范圍,此時在移動端設備中低精度的float16會無法很好地精確描述如此大范圍的數(shù)值,從而帶來精度損失.
為了訓練物體探測器,在訓練過程中僅使用COCO[11]數(shù)據(jù)集中的所有80個類別,選擇所有類別是人類檢測框作為本文多人人體關鍵點檢測任務的輸入.
作為一種基于神經網絡的人體關鍵點檢測算法,Xiao B et al[9]在2018年PoseTrack[20]多人姿態(tài)估計挑戰(zhàn)賽中取得了挑戰(zhàn)賽的第二名的好成績.該方法主要是以ResNet[21]為主干網絡,并根據(jù)網絡輸出的低分辨率特征層采用少量的轉置卷積層來生成高分辨率特征層,最后構成了人體姿態(tài)估計中常見的沙漏結構.姿態(tài)估計的輸入是行人檢測的結果,并將檢測出的行人送入到人體關鍵點檢測網絡中,旨在檢測K個關鍵點的位置,現(xiàn)階段效果比較好的方法都是將回歸出K個關鍵點的坐標轉變?yōu)楣烙婯個關鍵點的heatmap,詳見公式(2),輸出關鍵點的heatmap的channel數(shù)為K,即每一個heatmap表示第K個關鍵點位置的置信度.
(2)
Xiao B et al[9]采用的主干網絡是ResNet[21],ResNet[21]是常用的圖像特征提取的骨干網絡之一,它采用shotcut方式緩解了深層網絡中出現(xiàn)的梯度彌散和梯度爆炸的情況,它也常常用于姿態(tài)估計,比如在文獻[15,16]中.ResNet[21]因為其結構的復雜性和模塊的多樣性通常會導致更多的計算,這樣會導致計算速度變慢.
MobilenetV2[18]是一種新的基于移動端可以提高多項任務和標準測試的最新水平的神經網絡.該架構通過基于Inverted residuals結構,類似于ResNet[21]的Residual block,采用深度卷積和點卷積代替普通卷積來提取特征,有效降低了模型參數(shù)和計算復雜度,同時實驗結果得到相似的精度.這種配置方法在理論上可以減少卷積層的時間復雜度和空間復雜度.一個標準卷積層輸入為Dk×Dk×M的特征圖F,并得到一個Df×Df×N的輸出特征圖G,其中Df表示輸入特征圖的寬和高,M是輸入的通道數(shù)(輸入的深度)G為輸出特征圖的寬和高,N是輸出的通道數(shù)(輸出的深度).標準卷積層計算量為Dk×Dk×M×N×Df×Df,深度可分離卷積的計算量為:Dk×Dk×M×Df×Df,點卷積計算量:M×N×Df×Df,則深度可分離卷積的計算量為Dk×Dk×M×Df×Df+M×N×Df×Df. 通過將普通卷積分為濾波和組合的過程得到對計算量的縮減,縮減比例詳見公式(3),對計算速度有較大幅度提升.
(3)
MobileNetV1使用深度可分離卷積作為網絡基本模塊,但在實用中會出現(xiàn)特征退化和梯度消失,MobilenetV2[18]主要學習了ResNet[21]的思想并基于深度可分離卷積采用shotcut模式,防止梯度消失,同時采用一個1×1卷積核提升通道數(shù),以防止特征退化,在低緯度空間,線性映射會保存特征,而非線性映射會破壞特征,所以使用linear激活函數(shù)代替ReLu激活函數(shù)來增加信息保留,具體結構見圖1.因此根據(jù)以上優(yōu)點,本文選取MobilenetV2[18]作為backbone.
圖1 ResNet結構單元與MobileNetv2結構單元對比圖Fig.1 Comparison between ResNet structural unit and MobileNetv2 structural unit
Xiao B et al[9]主要是高分辨率特征圖下采樣至低分辨率,再從低分辨率特征圖采用轉置卷積層來生成高分辨率的思路,但是在這類網絡中,高分辨表征主要是低分辨率表征通過上采樣得到的高分辨率表征,其本身雖然擁有很好的語義表達能力,但是上采樣本身并不能完整地彌補空間分辨率的損失.所以,最終輸出的人體姿態(tài)估計高分辨率表征所具有的空間敏感度并不高,空間敏感度很大程度上受限于語義表達力強的表征所對應的分辨率.所以本文希望在整個網絡過程中始終保持高分辨率表征,同時增加高分辨率和低分辨率之間進行信息交換和融合,從而希望可以得到足夠的豐富語義信息.
圖2 人體關鍵點檢測網絡結構圖Fig.2 Network structure diagram of Human keypointdetection
本文采用了兩路分支,第一路分支主要以MobilenetV2[18]為主干網絡,下采樣32倍.同時構建金字塔網絡,選用下采樣8倍特征圖大小為基準,將下采樣2倍,4倍特征圖進行3×3卷積變成下采樣為8倍特征圖,同時通過轉置卷積對特征圖進行上采樣為8倍特征圖,然后將各個部分的特征圖進行拼接融合作為第二路分支的輸入.之后第二路經過卷積處理后和第一路的特征圖進行拼接融合,最后添加1×1卷積核用來生成所有k個身體關鍵點的預測熱力圖{H1…Hk}.具體結構見圖2,‘Ds’表示下采樣,‘Us’表示上采樣.
(4)
與文獻[21]中相同,采用均方誤差(MSE)作為損失函數(shù),詳見公式(4),f(Xij)為預測熱力圖的概率值,Yij為熱力圖的標簽值,圖像在第k個關鍵點周圍生成高斯分布作為熱力圖標簽,與網絡預測的熱力圖概率圖進行比較,測試時選擇在熱力圖上概率最大點的坐標作為該關鍵點的坐標值.
本文提出一個新穎的使用幀間信息進行人體關鍵點跟蹤方法(如圖3所示),基于先前幀的關鍵點的位置信息和關聯(lián)信息使用卷積神經網絡的方法建立信道連接,最后對預測幀的關鍵點信息進行推理.
圖3 人體關鍵點跟蹤網絡結構圖Fig.3 Network structure diagram of Human keypointtracking
步驟1.本文使用人體檢測器對圖像進行行人檢測,從而得到每張圖中行人的位置.
步驟2.將用2.2介紹的模型作為人體關鍵點檢測模型,并將步驟1得到的行人提取出來,作為人體關鍵點模型的輸入.
并根據(jù)時序坐標從預測幀中摳出局部圖片,并對局部圖片的關鍵點生成該點熱力圖,并與待測圖片的相同范圍內建立時序信道,作為跟蹤模型的輸入.為了增大局部感受野的范圍,將時序信道的范圍擴大1.3倍.
(5)
(6)
(7)
(8)
步驟4.網絡模型是基于MobilenetV2[18]的Inverted residuals結構的6層卷積網絡.第一層通過Inverted residuals獲得8個特征映射通道,然后通過每兩個Inverted residuals,將得到的特征圖通道擴大原來的兩倍,經過6個Inverted residuals,特征通道擴大為第一層特征層的32倍,之后經過一個1×1的卷積進行維度降維,獲得具有1個通道的預測熱力圖,表1為關鍵點幀間推理網絡結構參數(shù),采用l2損失對預測幀進行比較.圖3提供了設計中跟蹤器網絡的示意圖.
由于在人體關鍵點檢測中發(fā)現(xiàn)分辨率大小的改變在增加感受野的同時,也會帶來精度方面的損失,而且在跟蹤關鍵點時,對于關鍵點來說,主要在意的是關鍵點周圍的信息,而不是全局信息,所以本文中關鍵點跟蹤網絡主要是分辨率保持一致.這樣既保持周圍信息的同時,減少由于分辨圖大小不同帶來benchmark的差異.
表1 關鍵點幀間推理網絡結構Table 1 Key point inter frame reasoning network structure
步驟5.根據(jù)步驟3可以得到一個關鍵點預測,如果想要知道其它關鍵點的預測,根據(jù)步驟3重新建立時序信道,并采用步驟4跟蹤模型跟蹤關鍵點.
由于人體關鍵點檢測需要較高的模型復雜度才可以得到精確的結果,通常需要很高的計算量并需要花費較多的時間,建立跟蹤模型旨在利用已知的每幀信息和幀間信息對預測幀進行信息推理,減少單張圖片中人體關鍵點檢測所要花費的時間.本文實驗根據(jù)前3幀關鍵點的熱力圖和預測幀進行融合,建立時序信道作為網絡的輸入,同時采用6層MobilenetV2[18]的Inverted residuals以及1個點卷積作為本文的網絡骨架,在精度保持的同時減少計算量.在PoseTrack數(shù)據(jù)集[20]中,本文為每個行人建立了12個關鍵點跟蹤器,并在測試集中進行驗證,實現(xiàn)良好的效率,這將在第下一章中進行分析.
本文采用的是PoseTrack數(shù)據(jù)集[20],該數(shù)據(jù)集是用于大規(guī)模多人姿勢估計和跟蹤野外視頻的基準.它共包含550個視頻,共66,374個幀,分別包含292個訓練集,50個驗證集和208個測試集.訓練集中視頻的中間30幀密集地標有人體關鍵點.對于驗證和測試視頻,除了中間30幀之外,每四幀也被注釋用于評估遠程關節(jié)跟蹤.總的來說,數(shù)據(jù)集包含23,000個標記幀和153,615個姿勢.
數(shù)據(jù)集旨在評估三種不同任務的方法.任務1使用平均精度(mAP)度量來評估單幀姿態(tài)估計,如文獻[22]中所做的那樣.任務2還評估視頻中姿勢估計.任務3使用多對象跟蹤度量(MOT)如文獻[23]評估跟蹤.mAP的計算方法如文獻[2]所示,MOT如文獻[24]中所述.本文使用PoseTrack數(shù)據(jù)集[20]評估系統(tǒng)計算論文中提供的所有結果.
實驗服務器操作系統(tǒng)為Ubuntu 16.04 Server,配置有AMD 銳龍 2700 3.2 GHz CPU,和12G顯存的華碩GTX1080ti顯卡.行人檢測、人體關鍵點檢測以及人體關鍵點跟蹤都是使用了開源的深度學習框架tensorflow.
由于人體關鍵點檢測的輸入是行人檢測的輸出,本文需要從得到的圖像中裁剪并調整為固定分辨率,默認分辨率為256:192.為了獲得更大的人體關鍵點感受野,將行人檢測的邊界框延長15%(兩側為7.5%)來獲得行人的位置.數(shù)據(jù)增強包括旋轉(±40度),調整比例(±30%)和翻轉等.本文的MobileNetV2[18]主干網絡通過在COCO[11]數(shù)據(jù)集進行了預訓練,訓練分為140個epoch,起始學習率為e-3,學習率在90個epoch的時候下降到e-4,在120個epoch下降到e-5.用PoseTrack數(shù)據(jù)集[20]訓練檢測模型時,先用COCO數(shù)據(jù)集的訓練結果作為預訓練模型再進行finetune,訓練總計分為20個epoch,開始學習率為e-3,在10個epoch下降到e-4,在15個epoch下降到e-5.同時,Mini-batch大小為64,使用Adam優(yōu)化器.
訓練跟蹤模型時,本文主要建立了12個關鍵點的跟蹤模型,分別為左肩,右肩,左肘,右肘,左手腕,右手腕,左髖,右髖,左膝,右膝,左腳踝和右腳踝.對PoseTrack數(shù)據(jù)集[20]時序幀進行切分,根據(jù)每四張圖片時序幀中前三已知幀的關鍵點的位置來切分第四幀的坐標.在訓練時,本文增加了與關鍵點模型相同的數(shù)據(jù)增強,例如旋轉(±40度),比例(±30%)和翻轉.總共有100個epoch,基礎學習率為e-3,它在50個epoch下降到e-4,在80個epoch下降到e-5.本文的模型損失函數(shù)是L2loss.
輕量級雙路卷積神經網絡的人體關鍵點檢測方法和時間序列幀間推理網絡的人體關鍵點跟蹤方法,為說明模型的有效性,本文對于人體關鍵點檢測從mAP和運行時間上進行評估.
圖4和圖5報告了姿態(tài)估計的結果(任務2).本文的人體關鍵點檢測網絡除了腳踝關鍵點,其他關鍵點的mAP相對其它的方法有較大的改善,在驗證集中,本文方法分別比Girdhar et al[15],Xiu et al[16]的mAP提高了11.2和4.8,約21.1%和7.2%.對比Xiao B et al[9]的mAP提高了0.4.在測試集,本文方法比Xiu et al[16]的mAP提高了6.8,約11%.對比Xiao B et al[9]的mAP提高了0.9,依據(jù)圖4和圖5可知:在測試集和驗證集中,本文的算法對于大多數(shù)關鍵點都會有較大幅度的提升,對于踝關節(jié)關鍵點會有略微下降,主要是由于左右踝關節(jié)相似度比較高導致學習難度系數(shù)比較高.
表2 不同算法單人圖像時間對比Table 2 Time comparison of single person with different algorithms
表2報告了對于單人圖像姿態(tài)估計的運行時間.本文的模型相對于其他方法有了較大幅度的提高,對Gridhar[15]和Xiu[16]平均分別減少0.12s和0.10s,前向速度分別提升60%和50%,對于Xiao B[9]算法平均減少了0.05s,前向速度提升25%.總的來說,本文算法相比其它最近的工作有了較大的改進.
在驗證集中,本文的模型在MOTO相比Gridhar[15],Xiu[16]分別提高3.7和4.8,約7.1%和9.5%,對比Xiao B[9]的MOTO提高了1.5,約2.8%.在測試集中,本文的模型在MOTO相比Xiu[16]提高4.4,約7.6%,對比Xiao B[9]的MOTO提高了1.7,約2.8%.總的來說,本文的模型總體上優(yōu)于其它方法,如圖6和圖7所示.
表3 不同網絡骨架在PoseTrack測試集性能比較Table 3 Performance comparison of different network backbone in PoseTrack Test
表3報告了常用骨架下跟蹤模型的性能.本實驗主要是使用常用的人體關鍵點檢測骨架ResNet[21]的Residual block、輕量級網絡MobileNetv1的深度卷積+點卷積模塊,簡稱Depth-wise Separable Convolution,和本文選擇使用的6層Inverted residuals模塊進行對比,由實驗結果來看,選擇同樣層數(shù)的結構,ResNet[21]由于由于本身參數(shù)較多,跟蹤一個關鍵點的時間大約是0.02s,大約是本文使用的Inverted residuals的1.2倍,與之同時,它的MOTO也是最高的與本文算法的MOTO基本持平.得出結論本文提出的骨架比ResNet[21]在精度基本持平的同時運行時間更短.同時,本文選擇了同樣是輕量級網絡MobileNetv1 Depth-wise Separable Convolution模塊進行比較,速度提升大約6.25%,實驗看出這套組合比Inverted residuals模塊時間更快,提升了0.001s,但是精度相比來說下降14.9%,由于Depth-wise Separable Convolution 是Inverted residuals的基礎模塊,計算量和參數(shù)都比較小,但是由于結構較為簡單并沒有很好的融合高維特征,精度并沒有達到Inverted residuals相同水平.總的來說Inverted residuals相比Depth-wise Separable精度和時間結合更有效.通過實驗結果表明本文提出的算法在性能指標上都取得了比主流算法要好的結果.
本文主要探究了針對視頻中姿態(tài)估計缺少高分辨率表征和時效性的特點,提出了基于傳統(tǒng)的神經網絡姿態(tài)估計“下采樣上采樣”模型,提出了一種輕量級雙路金字塔卷積神經網絡來提高姿態(tài)估計的高分辨率表征,并利用幀間信息推理網絡,并選用輕量級模塊預測關鍵點信息來提高時效性.本文方法主要在PoseTrack數(shù)據(jù)集[20]上進行訓練和驗證.精度和速度上相比最近Gridhar[15],Xiu[16],Xiao B et al[9]較大提高,證明本文的思路方法真實有效.
本文幀間信息推理實驗主要采用了Depth-wise Separable Convolution、Residual block、Inverted residuals模塊,但是對于如何更好的利用時序信息還有提高的空間.與此同時,本文發(fā)現(xiàn)采用前三幀的信息預測效果較好,但如何利用更少的前幀信息預測關鍵點信息也是以后工作重點提高的地方.同時由于本文采用的是每次預測局部單個關鍵點信息,在后繼研究中,將探索利用圖片全局信息,增加幀與幀之間不同關鍵點的相互作用.進一步優(yōu)化網絡模型并提高在視頻中的檢測性能.