孔令軍,劉偉光,周耀威,裴會增,沈馨怡,趙子昂
(1.金陵科技學院 網絡與通信工程學院,江蘇 南京 211169;2.南京郵電大學 通信與信息工程學院,江蘇 南京 210003)
計算機超大規模并行計算能力的提升以及各種傳感技術的研發,極大地推動了深度學習技術在圖像識別[1]、自然語言處理、語音識別等各個領域中的發展。特別地,作為圖像識別領域的典型代表,人體關鍵點檢測的重要性日益凸顯[2]。
人體關鍵點檢測[3-4]是指基于圖像來重建人的關節和肢干,即找出人體骨骼的關鍵點并將其組合。在計算機視覺[5-6](Computer Vision,CV)領域,人體的關鍵點(通常是特殊部位或骨骼關節點)定位至今依舊是熱門的研究方向。發展到現在,人體關鍵點檢測已經催生了很多應用,在人機交互[7]、病人監護系統[8]、智能視頻監控[9-10]、虛擬現實、運動員輔助訓練、智能家居[11]、人體動畫、智能安防等領域都有著重要的意義和廣泛的應用前景,是諸多計算機視覺任務的基礎,例如動作分類、異常行為檢測以及自動駕駛等[12]。這些研究除了需要較高的精確度外,還對執行速度有要求,進一步催生了對模型精簡化的需求。除了使用常見的輕量化網絡結構的方式外,為了解決網絡對資源消耗過大的問題,本文首先提出在人體關鍵點檢測方向上應用編解碼結構(Codec)來減少網絡計算量的方法,提出了一種全新的網絡架構,稱為編解碼結構的深度可分離網絡(Codec Depth Separable Network,CSDNet)。
經實驗驗證,屬性金字塔模塊(Feature Pyramid Module,FPM) 以及多維自學習模塊 (Multidimensional Self-Learning Module,MSLM) 能夠提升關鍵點檢測的效果,前者主要通過結合特征矩陣的高低級語義特征,后者則通過使得網絡具有自學習能力增強其有用信息的表達能力,然而這種網絡通過疊加的方式需要大量的計算節點,面臨原有的神經網絡參數量大、內存占用多、計算緩慢的問題。為了解決這些問題,改進輕量化的卷積網絡被提出來,例如深度可分離卷積等;另外一方面,人體關鍵點檢測和像素級切割都是對整張圖進行預測[13]。
圖1展示了2個學習任務,其中圖1(a)、圖1(b)分別是人體關鍵點的原始輸入圖片以及峰值圖,圖1(c)、圖1(d)是像素級切割的原始輸入圖片以及預測細胞間質的切割圖,這些都是對整張圖片進行預測得到整張圖的結果,為此,本文嘗試在像素切割上尋找適用的輕量級網絡方法。

(a) 人體圖片
目前,輕量級的像素切割任務是以編解碼為主,其中編碼結構是以下采樣[14]為主,而解碼結構則以上采樣為主,最終將編解碼過程中產生的特征圖進行融合來增強模型的表達能力,而FPM正是通過對高低級語義特征進行融合的操作來提升網絡的效果。通常的主干結構往往是ResNet[15]、VggNet[16]等網絡結構,為了實時推理,本文設計了一種輕量型的主干模型,并且研究了如何在有限的計算量下提升預測效果。在主流的網絡結構中使用FPM,以豐富上下文特征,同時也帶來了大量的計算;另外,傳統的方法通常從單路徑中豐富特征映射,高層特征沒有與前一層特征相融合,而前一層特征又保留了網絡路徑中空間細節和語義信息,為了增強模型的學習能力同時增加接受域,特征重用變得極其迫切。本文部署了幾種策略實現模型中跨層特征聚合,并且使用了深度可分離卷積以降低模型的計算量。
本文設計的輕量級的網絡架構如圖2所示。

圖2 CSDNet網絡架構Fig.2 Structure of CSDNet
大小為224 pixle×224 pixle×3 pixle的RGB圖片作為網絡的輸入,然后通過綠色的普通卷積網絡進行特征提取得到112×112×22的特征矩陣,接下來使用深度可分離卷積對特征矩陣進行特征提取操作,分別得到了不同分辨率的特征矩陣,結合多維度的自學習模塊,本網絡在維度為7×7×192的特征圖上使用了多維自學習的注意力模塊使得網絡具有自學習的能力,此時實現了主干結構的特征提?。涣硗?為了增強模型對不同深度特征的利用率,網絡使用了通道合并方式進行了第二層處理以及第三層處理,如圖2中的第二排以及第三排,此模塊實現了對特征圖的編碼過程;與此同時,為了增強網絡的感受野,還使用了上采樣將編碼過程中獲得的特征圖進行解碼,解碼后通過點加操作來增強網絡對高低級語義特征的提取能力。其中N為關鍵點數+1,M為關鍵點間關系數量。
本節介紹網絡的主干結構細節,已知深度可分離卷積能夠在保證精度損失不大的情況下提升性能,本文主要工作在編解碼部分以及注意力機制部分,因此主干結構并不需要太復雜的結構。圖3(b)所示為本文設計的輕量級主干結構,其中的藍色模塊為普通卷積,綠色模塊為深度可分離卷積,黃色的為多維自學習模塊,多維自學習模塊應用到主干結構的深層上能夠顯著提升檢測的效果,因此本文在最終的特征圖上應用此自學習模塊,輕量級主干網絡結構如表1所示。

圖3 融合深度可分離卷積的輕量級主干結構Fig.3 Lightweight backbone structure fused with depth-separated convolution

表1 輕量級主干網絡
由表1可以看出,本文設計的輕量級網絡第一層使用的普通卷積為了降低計算量將通道層設計為22,中間使用了深度可分離卷積作為特征提取模塊,雖然每個模塊還有重復次數設置,但受益于深度可分離卷積的高性能,此過程并沒有顯著增加計算量。網絡使用了多維自學習模塊,用通道以及空間為基本單位進行調整特征矩陣中的權重來增強有用信息的表達能力,最終使用上采樣以及卷積輸出最終的預測熱點圖,為了證明此模塊的高效性以及多維自學習的注意力模塊的有效性,本文將在實驗部分進行對比。
金字塔模型是被設計提取不同的高低級語義特征,另外一方面,單獨使用金字塔模型會造成信息丟失的問題。為了解決這個問題,本文嘗試使用一個類似編解碼形式的網絡來增強對這些特征的利用率,如圖4所示。該結構被廣泛應用到各種目標檢測或分類等任務中,但這種網絡缺點比較明顯,網絡的層次特征都是分辨率比較低的,如果想使用高分辨率的特征圖,特征提取的不全面,繼而圖5被提出,利用上采樣來解決這個問題,使得高分辨率的特征也能夠出現在深層特征上,但缺點依舊明顯,淺層特征容易被浪費,最終圖6被提出來,這是一種能夠重用低層特征的結構,類似于編解碼形式。

圖4 單向的編解碼金子塔結構Fig.4 Unidirectional codec pyramid structure

圖5 雙向的編解碼金字塔特征結構Fig.5 Bidirectional codec pyramid feature structure

圖6 雙向的編解碼金字塔特征重用結構Fig.6 Bidirectional codec pyramid feature reuse structure
在本文所設計的編碼結構中直接對高低級別的語義特征進行融合,所用的編碼器首先從3個模塊的底部融合高層特征,其次對高層次特征進行下采樣或者上采樣來保持融合特征具有相同的空間分辨率,最后將高層次特征與低層次特征相加得到最終的預測,在解碼器中僅使用了少量的卷積以及相加操作來盡量避免增加計算量。
本文使用輕量級的結構作為網絡主干對圖片進行編碼,提出的基于特征聚合網絡包含3部分:輕量級的主干網絡、特征編碼聚合網絡以及特征解碼聚合網絡[17]。一方面,深度可分離卷積已經證明了能夠極大降低計算量;另一方面,特征編碼聚合網絡可以看作是一個由粗到精的預測過程;同時,特征解碼聚合網絡通過聚合“粗”和“細”的部分在相應階段之間的特征表示,將相同尺寸的層組合在一起傳遞感受野,在這3個模塊之后采用一個卷積以及上采樣操作組成輕微譯碼器,將每一級的輸出進行合并,得到“粗”到“細”的預測結果,最終設計的網絡架構如圖2所示。
本文提出的基于特征聚合的輕量級網絡結構第一次被用于人體關鍵點檢測的主干特征網絡中,為了證明其有效性,本文將使用相同的COCO人體關鍵點檢測數據集[18]進行訓練,訓練過程中使用相同的訓練策略以及訓練參數。由于本文設計的輕量級的網絡結構具有更小的網絡參數,因此訓練過程中選擇了更大的Batch_size來加速訓練收斂的時間。
訓練過程中使用分辨率為368 pixel×368 pixel的圖片作為輸入進行訓練。訓練MSLM模塊時,為了解決MSLM模塊對網絡結構的影響,首先訓練了一個不包含MSLM模塊的網絡,然后將網絡中的權重固化后,再將MSLM添加到網絡中進行訓練,第二次訓練僅僅只訓練MSLM模塊。
進行對比實驗以及分析。首先介紹了該實驗的條件,然后與現有的人體關鍵點檢測模型進行了比較,并在COCO測試數據集上進行了精度以及速度分析,測試過程中使用原始圖片的分辨率作為網絡輸入進行測試。
本文實驗使用了Tensorflow深度學習框架、實驗中使用到的數據集是MS COCO。訓練以及測試過程中使用的硬件設備如表2所示。

表2 硬件平臺
訓練過程中,顯存與內存需要進行大量的數據交換,如果內存容量太低,會出現使用交換空間導致數據處理速度慢,因此需要盡量使內存大于顯存容量。
實驗指標使用了平均精度(Average Precision,AP)來評比人體關鍵點檢測精度。本文主要從以下幾個方面設計實驗:
(1) 為了證明輕量級主干結構的高效性,與不同的輕量級主干結構或非輕量級的主干結構進行對比實驗;
(2) 為了證明基于編解碼對輕量級主干網絡的性能提升明顯,與不同的網絡作為主干結構以及編解碼結構(Codec)進行對比實驗;
(3) 為了證明MSLM模塊的效果,著重對比添加以及不添加此模塊的效果;
(4) 在CSDNet網絡中進行消融實驗。
僅使用本文所設計的輕量級與現有的開源網絡進行實驗,如表3所示以及表所對應的指標性能圖7,其中FPS(每秒幀數)=1 / 平均每張耗時(秒)。

表3 輕量級主干網絡與開源網絡實驗對比
由表3可以得到以下結論:
(1) 對比使用了深度可分離卷積作為卷積基本模塊的網絡結構MobileNet和輕量級主干網絡以及沒有使用的網絡結構ResNet和VggNet可知,使用CSDNet結構帶來了性能上的提升,但精度也有一定的損失;
(2) 將表中AP最好的網絡VggNet與MobileNet和輕量級主干網絡進行對比,MobileNet性能相比VggNet提升了52%,而AP指標相比下降了5%;輕量級主干網絡的性能和正確率分別提升了284%以及降低了30%;
(3) 輕量級主干結構的性能最好,目前實驗表明了如果能解決AP指標低的問題,將具有非常大的前景。

圖7 本文所提出的輕量級主干網絡與現有的 網絡性能指標對比Fig.7 Comparison of the performance indicators of the proposed lightweight backbone network and existing networks
當使用不同的主干網絡作為主要提取網絡時,實驗對比及結果如表4和圖7所示。

表4 使用編解碼結構的實驗對比

圖8 使用編解碼結構(Codec)前后的性能AP對比結果Fig.8 AP comparison of performance before and after using Codec
由表4和圖7可以看出:
(1) 添加編解碼結構(Codec)后,對所有不同的主干結構都有促進作用,證明了基于特征融合的Codec能夠有效的促進性能;
(2) 對比輕量級主干結構以及其他的開源網絡,能夠發現,使用輕量級的主干結構提升最為明顯,而且平均每張耗時最低。
表5和圖9展示了在使用了Codec的情況下,并且使用MSLM模塊的對比結果,其中訓練基礎是使用訓練好的不包含MSLM模塊的網絡權重初始化并固化,僅僅訓練MSLM內的權重,這樣能夠更直觀的展示MSLM的作用。

表5 使用MSLM的實驗對比

圖9 對比使用MSLM的性能與AP對比結果Fig.9 Comparison of the performance and AP when using MSLM
總的來說,表5實驗證明了本文提出的輕量級的主干網絡搭配編解碼結構(Codec)以及MSLM模塊相比使用其他模塊作為主干結構提升更加明顯,并且本身由于編解碼結構(Codec)具有類似金字塔模塊的特征融合效果,因此效果更好,而性能也更優,雖然AP降低了1%,但是FPS相比于其他網絡都有顯著提升。
本文還做了一組消融實驗來探究網絡中各個子模塊帶來的性能提升,實驗對比和結果如表6和圖10所示 。

表6 CSDNet網絡的各個子模塊對比實驗

圖10 Codec,MSLM的消融實驗對比Fig.10 Comparison of Codec and MSLM ablation experiments
由表6和圖10可以看出:(1) 主干結構使用了本文所設計的輕量級網絡作為主干結構,單獨使用Codec在性能上以及正確率上相對輕量級主干結構分別降低了40%以及提升了37%;單獨使用MSLM在性能以及正確率上分別降低了12%以及提升了4%;一起使用2個模塊相比原始的網絡,FPS降低了54%,但是正確率提升了40%;
(2) 一起使用2個模塊相比原始的ResNet,VggNet,MobileNet,FPS分別提升了125%,108%,36%,正確率分別提高了0.6%,-0.7%,5.2%;
(3) 和同樣加入了Codec和MSLM的ResNet,VggNet,MobileNet相比正確率大致相同,但是性能分別提升了170%,140%,72%,證明了本文所設計的輕量級網絡的有效性。
本文使用深度可分離卷積作為人體關鍵點檢測網絡的基本模塊,并融合了多維自學習模塊,首次提出使用編解碼的形式設計人體關鍵點檢測網絡。在COCO數據集上的實驗結果表明,相較于傳統網絡(如ResNet、VggNet和MobileNet),深度可分離卷積模塊顯著提升了網絡性能,但AP指標有明顯下降;通過結合編解碼結構和多維自學習模塊,FPS相比于其他網絡仍有顯著提升且AP指標僅下降約1%,證明了本文所設計輕量級網絡的有效性。