孔令軍,劉偉光,周耀威,裴會增,沈馨怡,趙子昂
(1.金陵科技學(xué)院 網(wǎng)絡(luò)與通信工程學(xué)院,江蘇 南京 211169;2.南京郵電大學(xué) 通信與信息工程學(xué)院,江蘇 南京 210003)
計(jì)算機(jī)超大規(guī)模并行計(jì)算能力的提升以及各種傳感技術(shù)的研發(fā),極大地推動了深度學(xué)習(xí)技術(shù)在圖像識別[1]、自然語言處理、語音識別等各個領(lǐng)域中的發(fā)展。特別地,作為圖像識別領(lǐng)域的典型代表,人體關(guān)鍵點(diǎn)檢測的重要性日益凸顯[2]。
人體關(guān)鍵點(diǎn)檢測[3-4]是指基于圖像來重建人的關(guān)節(jié)和肢干,即找出人體骨骼的關(guān)鍵點(diǎn)并將其組合。在計(jì)算機(jī)視覺[5-6](Computer Vision,CV)領(lǐng)域,人體的關(guān)鍵點(diǎn)(通常是特殊部位或骨骼關(guān)節(jié)點(diǎn))定位至今依舊是熱門的研究方向。發(fā)展到現(xiàn)在,人體關(guān)鍵點(diǎn)檢測已經(jīng)催生了很多應(yīng)用,在人機(jī)交互[7]、病人監(jiān)護(hù)系統(tǒng)[8]、智能視頻監(jiān)控[9-10]、虛擬現(xiàn)實(shí)、運(yùn)動員輔助訓(xùn)練、智能家居[11]、人體動畫、智能安防等領(lǐng)域都有著重要的意義和廣泛的應(yīng)用前景,是諸多計(jì)算機(jī)視覺任務(wù)的基礎(chǔ),例如動作分類、異常行為檢測以及自動駕駛等[12]。這些研究除了需要較高的精確度外,還對執(zhí)行速度有要求,進(jìn)一步催生了對模型精簡化的需求。除了使用常見的輕量化網(wǎng)絡(luò)結(jié)構(gòu)的方式外,為了解決網(wǎng)絡(luò)對資源消耗過大的問題,本文首先提出在人體關(guān)鍵點(diǎn)檢測方向上應(yīng)用編解碼結(jié)構(gòu)(Codec)來減少網(wǎng)絡(luò)計(jì)算量的方法,提出了一種全新的網(wǎng)絡(luò)架構(gòu),稱為編解碼結(jié)構(gòu)的深度可分離網(wǎng)絡(luò)(Codec Depth Separable Network,CSDNet)。
經(jīng)實(shí)驗(yàn)驗(yàn)證,屬性金字塔模塊(Feature Pyramid Module,F(xiàn)PM) 以及多維自學(xué)習(xí)模塊 (Multidimensional Self-Learning Module,MSLM) 能夠提升關(guān)鍵點(diǎn)檢測的效果,前者主要通過結(jié)合特征矩陣的高低級語義特征,后者則通過使得網(wǎng)絡(luò)具有自學(xué)習(xí)能力增強(qiáng)其有用信息的表達(dá)能力,然而這種網(wǎng)絡(luò)通過疊加的方式需要大量的計(jì)算節(jié)點(diǎn),面臨原有的神經(jīng)網(wǎng)絡(luò)參數(shù)量大、內(nèi)存占用多、計(jì)算緩慢的問題。為了解決這些問題,改進(jìn)輕量化的卷積網(wǎng)絡(luò)被提出來,例如深度可分離卷積等;另外一方面,人體關(guān)鍵點(diǎn)檢測和像素級切割都是對整張圖進(jìn)行預(yù)測[13]。
圖1展示了2個學(xué)習(xí)任務(wù),其中圖1(a)、圖1(b)分別是人體關(guān)鍵點(diǎn)的原始輸入圖片以及峰值圖,圖1(c)、圖1(d)是像素級切割的原始輸入圖片以及預(yù)測細(xì)胞間質(zhì)的切割圖,這些都是對整張圖片進(jìn)行預(yù)測得到整張圖的結(jié)果,為此,本文嘗試在像素切割上尋找適用的輕量級網(wǎng)絡(luò)方法。
(a) 人體圖片
目前,輕量級的像素切割任務(wù)是以編解碼為主,其中編碼結(jié)構(gòu)是以下采樣[14]為主,而解碼結(jié)構(gòu)則以上采樣為主,最終將編解碼過程中產(chǎn)生的特征圖進(jìn)行融合來增強(qiáng)模型的表達(dá)能力,而FPM正是通過對高低級語義特征進(jìn)行融合的操作來提升網(wǎng)絡(luò)的效果。通常的主干結(jié)構(gòu)往往是ResNet[15]、VggNet[16]等網(wǎng)絡(luò)結(jié)構(gòu),為了實(shí)時推理,本文設(shè)計(jì)了一種輕量型的主干模型,并且研究了如何在有限的計(jì)算量下提升預(yù)測效果。在主流的網(wǎng)絡(luò)結(jié)構(gòu)中使用FPM,以豐富上下文特征,同時也帶來了大量的計(jì)算;另外,傳統(tǒng)的方法通常從單路徑中豐富特征映射,高層特征沒有與前一層特征相融合,而前一層特征又保留了網(wǎng)絡(luò)路徑中空間細(xì)節(jié)和語義信息,為了增強(qiáng)模型的學(xué)習(xí)能力同時增加接受域,特征重用變得極其迫切。本文部署了幾種策略實(shí)現(xiàn)模型中跨層特征聚合,并且使用了深度可分離卷積以降低模型的計(jì)算量。
本文設(shè)計(jì)的輕量級的網(wǎng)絡(luò)架構(gòu)如圖2所示。
圖2 CSDNet網(wǎng)絡(luò)架構(gòu)Fig.2 Structure of CSDNet
大小為224 pixle×224 pixle×3 pixle的RGB圖片作為網(wǎng)絡(luò)的輸入,然后通過綠色的普通卷積網(wǎng)絡(luò)進(jìn)行特征提取得到112×112×22的特征矩陣,接下來使用深度可分離卷積對特征矩陣進(jìn)行特征提取操作,分別得到了不同分辨率的特征矩陣,結(jié)合多維度的自學(xué)習(xí)模塊,本網(wǎng)絡(luò)在維度為7×7×192的特征圖上使用了多維自學(xué)習(xí)的注意力模塊使得網(wǎng)絡(luò)具有自學(xué)習(xí)的能力,此時實(shí)現(xiàn)了主干結(jié)構(gòu)的特征提取;另外,為了增強(qiáng)模型對不同深度特征的利用率,網(wǎng)絡(luò)使用了通道合并方式進(jìn)行了第二層處理以及第三層處理,如圖2中的第二排以及第三排,此模塊實(shí)現(xiàn)了對特征圖的編碼過程;與此同時,為了增強(qiáng)網(wǎng)絡(luò)的感受野,還使用了上采樣將編碼過程中獲得的特征圖進(jìn)行解碼,解碼后通過點(diǎn)加操作來增強(qiáng)網(wǎng)絡(luò)對高低級語義特征的提取能力。其中N為關(guān)鍵點(diǎn)數(shù)+1,M為關(guān)鍵點(diǎn)間關(guān)系數(shù)量。
本節(jié)介紹網(wǎng)絡(luò)的主干結(jié)構(gòu)細(xì)節(jié),已知深度可分離卷積能夠在保證精度損失不大的情況下提升性能,本文主要工作在編解碼部分以及注意力機(jī)制部分,因此主干結(jié)構(gòu)并不需要太復(fù)雜的結(jié)構(gòu)。圖3(b)所示為本文設(shè)計(jì)的輕量級主干結(jié)構(gòu),其中的藍(lán)色模塊為普通卷積,綠色模塊為深度可分離卷積,黃色的為多維自學(xué)習(xí)模塊,多維自學(xué)習(xí)模塊應(yīng)用到主干結(jié)構(gòu)的深層上能夠顯著提升檢測的效果,因此本文在最終的特征圖上應(yīng)用此自學(xué)習(xí)模塊,輕量級主干網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。
圖3 融合深度可分離卷積的輕量級主干結(jié)構(gòu)Fig.3 Lightweight backbone structure fused with depth-separated convolution
表1 輕量級主干網(wǎng)絡(luò)
由表1可以看出,本文設(shè)計(jì)的輕量級網(wǎng)絡(luò)第一層使用的普通卷積為了降低計(jì)算量將通道層設(shè)計(jì)為22,中間使用了深度可分離卷積作為特征提取模塊,雖然每個模塊還有重復(fù)次數(shù)設(shè)置,但受益于深度可分離卷積的高性能,此過程并沒有顯著增加計(jì)算量。網(wǎng)絡(luò)使用了多維自學(xué)習(xí)模塊,用通道以及空間為基本單位進(jìn)行調(diào)整特征矩陣中的權(quán)重來增強(qiáng)有用信息的表達(dá)能力,最終使用上采樣以及卷積輸出最終的預(yù)測熱點(diǎn)圖,為了證明此模塊的高效性以及多維自學(xué)習(xí)的注意力模塊的有效性,本文將在實(shí)驗(yàn)部分進(jìn)行對比。
金字塔模型是被設(shè)計(jì)提取不同的高低級語義特征,另外一方面,單獨(dú)使用金字塔模型會造成信息丟失的問題。為了解決這個問題,本文嘗試使用一個類似編解碼形式的網(wǎng)絡(luò)來增強(qiáng)對這些特征的利用率,如圖4所示。該結(jié)構(gòu)被廣泛應(yīng)用到各種目標(biāo)檢測或分類等任務(wù)中,但這種網(wǎng)絡(luò)缺點(diǎn)比較明顯,網(wǎng)絡(luò)的層次特征都是分辨率比較低的,如果想使用高分辨率的特征圖,特征提取的不全面,繼而圖5被提出,利用上采樣來解決這個問題,使得高分辨率的特征也能夠出現(xiàn)在深層特征上,但缺點(diǎn)依舊明顯,淺層特征容易被浪費(fèi),最終圖6被提出來,這是一種能夠重用低層特征的結(jié)構(gòu),類似于編解碼形式。
圖4 單向的編解碼金子塔結(jié)構(gòu)Fig.4 Unidirectional codec pyramid structure
圖5 雙向的編解碼金字塔特征結(jié)構(gòu)Fig.5 Bidirectional codec pyramid feature structure
圖6 雙向的編解碼金字塔特征重用結(jié)構(gòu)Fig.6 Bidirectional codec pyramid feature reuse structure
在本文所設(shè)計(jì)的編碼結(jié)構(gòu)中直接對高低級別的語義特征進(jìn)行融合,所用的編碼器首先從3個模塊的底部融合高層特征,其次對高層次特征進(jìn)行下采樣或者上采樣來保持融合特征具有相同的空間分辨率,最后將高層次特征與低層次特征相加得到最終的預(yù)測,在解碼器中僅使用了少量的卷積以及相加操作來盡量避免增加計(jì)算量。
本文使用輕量級的結(jié)構(gòu)作為網(wǎng)絡(luò)主干對圖片進(jìn)行編碼,提出的基于特征聚合網(wǎng)絡(luò)包含3部分:輕量級的主干網(wǎng)絡(luò)、特征編碼聚合網(wǎng)絡(luò)以及特征解碼聚合網(wǎng)絡(luò)[17]。一方面,深度可分離卷積已經(jīng)證明了能夠極大降低計(jì)算量;另一方面,特征編碼聚合網(wǎng)絡(luò)可以看作是一個由粗到精的預(yù)測過程;同時,特征解碼聚合網(wǎng)絡(luò)通過聚合“粗”和“細(xì)”的部分在相應(yīng)階段之間的特征表示,將相同尺寸的層組合在一起傳遞感受野,在這3個模塊之后采用一個卷積以及上采樣操作組成輕微譯碼器,將每一級的輸出進(jìn)行合并,得到“粗”到“細(xì)”的預(yù)測結(jié)果,最終設(shè)計(jì)的網(wǎng)絡(luò)架構(gòu)如圖2所示。
本文提出的基于特征聚合的輕量級網(wǎng)絡(luò)結(jié)構(gòu)第一次被用于人體關(guān)鍵點(diǎn)檢測的主干特征網(wǎng)絡(luò)中,為了證明其有效性,本文將使用相同的COCO人體關(guān)鍵點(diǎn)檢測數(shù)據(jù)集[18]進(jìn)行訓(xùn)練,訓(xùn)練過程中使用相同的訓(xùn)練策略以及訓(xùn)練參數(shù)。由于本文設(shè)計(jì)的輕量級的網(wǎng)絡(luò)結(jié)構(gòu)具有更小的網(wǎng)絡(luò)參數(shù),因此訓(xùn)練過程中選擇了更大的Batch_size來加速訓(xùn)練收斂的時間。
訓(xùn)練過程中使用分辨率為368 pixel×368 pixel的圖片作為輸入進(jìn)行訓(xùn)練。訓(xùn)練MSLM模塊時,為了解決MSLM模塊對網(wǎng)絡(luò)結(jié)構(gòu)的影響,首先訓(xùn)練了一個不包含MSLM模塊的網(wǎng)絡(luò),然后將網(wǎng)絡(luò)中的權(quán)重固化后,再將MSLM添加到網(wǎng)絡(luò)中進(jìn)行訓(xùn)練,第二次訓(xùn)練僅僅只訓(xùn)練MSLM模塊。
進(jìn)行對比實(shí)驗(yàn)以及分析。首先介紹了該實(shí)驗(yàn)的條件,然后與現(xiàn)有的人體關(guān)鍵點(diǎn)檢測模型進(jìn)行了比較,并在COCO測試數(shù)據(jù)集上進(jìn)行了精度以及速度分析,測試過程中使用原始圖片的分辨率作為網(wǎng)絡(luò)輸入進(jìn)行測試。
本文實(shí)驗(yàn)使用了Tensorflow深度學(xué)習(xí)框架、實(shí)驗(yàn)中使用到的數(shù)據(jù)集是MS COCO。訓(xùn)練以及測試過程中使用的硬件設(shè)備如表2所示。
表2 硬件平臺
訓(xùn)練過程中,顯存與內(nèi)存需要進(jìn)行大量的數(shù)據(jù)交換,如果內(nèi)存容量太低,會出現(xiàn)使用交換空間導(dǎo)致數(shù)據(jù)處理速度慢,因此需要盡量使內(nèi)存大于顯存容量。
實(shí)驗(yàn)指標(biāo)使用了平均精度(Average Precision,AP)來評比人體關(guān)鍵點(diǎn)檢測精度。本文主要從以下幾個方面設(shè)計(jì)實(shí)驗(yàn):
(1) 為了證明輕量級主干結(jié)構(gòu)的高效性,與不同的輕量級主干結(jié)構(gòu)或非輕量級的主干結(jié)構(gòu)進(jìn)行對比實(shí)驗(yàn);
(2) 為了證明基于編解碼對輕量級主干網(wǎng)絡(luò)的性能提升明顯,與不同的網(wǎng)絡(luò)作為主干結(jié)構(gòu)以及編解碼結(jié)構(gòu)(Codec)進(jìn)行對比實(shí)驗(yàn);
(3) 為了證明MSLM模塊的效果,著重對比添加以及不添加此模塊的效果;
(4) 在CSDNet網(wǎng)絡(luò)中進(jìn)行消融實(shí)驗(yàn)。
僅使用本文所設(shè)計(jì)的輕量級與現(xiàn)有的開源網(wǎng)絡(luò)進(jìn)行實(shí)驗(yàn),如表3所示以及表所對應(yīng)的指標(biāo)性能圖7,其中FPS(每秒幀數(shù))=1 / 平均每張耗時(秒)。
表3 輕量級主干網(wǎng)絡(luò)與開源網(wǎng)絡(luò)實(shí)驗(yàn)對比
由表3可以得到以下結(jié)論:
(1) 對比使用了深度可分離卷積作為卷積基本模塊的網(wǎng)絡(luò)結(jié)構(gòu)MobileNet和輕量級主干網(wǎng)絡(luò)以及沒有使用的網(wǎng)絡(luò)結(jié)構(gòu)ResNet和VggNet可知,使用CSDNet結(jié)構(gòu)帶來了性能上的提升,但精度也有一定的損失;
(2) 將表中AP最好的網(wǎng)絡(luò)VggNet與MobileNet和輕量級主干網(wǎng)絡(luò)進(jìn)行對比,MobileNet性能相比VggNet提升了52%,而AP指標(biāo)相比下降了5%;輕量級主干網(wǎng)絡(luò)的性能和正確率分別提升了284%以及降低了30%;
(3) 輕量級主干結(jié)構(gòu)的性能最好,目前實(shí)驗(yàn)表明了如果能解決AP指標(biāo)低的問題,將具有非常大的前景。
圖7 本文所提出的輕量級主干網(wǎng)絡(luò)與現(xiàn)有的 網(wǎng)絡(luò)性能指標(biāo)對比Fig.7 Comparison of the performance indicators of the proposed lightweight backbone network and existing networks
當(dāng)使用不同的主干網(wǎng)絡(luò)作為主要提取網(wǎng)絡(luò)時,實(shí)驗(yàn)對比及結(jié)果如表4和圖7所示。
表4 使用編解碼結(jié)構(gòu)的實(shí)驗(yàn)對比
圖8 使用編解碼結(jié)構(gòu)(Codec)前后的性能AP對比結(jié)果Fig.8 AP comparison of performance before and after using Codec
由表4和圖7可以看出:
(1) 添加編解碼結(jié)構(gòu)(Codec)后,對所有不同的主干結(jié)構(gòu)都有促進(jìn)作用,證明了基于特征融合的Codec能夠有效的促進(jìn)性能;
(2) 對比輕量級主干結(jié)構(gòu)以及其他的開源網(wǎng)絡(luò),能夠發(fā)現(xiàn),使用輕量級的主干結(jié)構(gòu)提升最為明顯,而且平均每張耗時最低。
表5和圖9展示了在使用了Codec的情況下,并且使用MSLM模塊的對比結(jié)果,其中訓(xùn)練基礎(chǔ)是使用訓(xùn)練好的不包含MSLM模塊的網(wǎng)絡(luò)權(quán)重初始化并固化,僅僅訓(xùn)練MSLM內(nèi)的權(quán)重,這樣能夠更直觀的展示MSLM的作用。
表5 使用MSLM的實(shí)驗(yàn)對比
圖9 對比使用MSLM的性能與AP對比結(jié)果Fig.9 Comparison of the performance and AP when using MSLM
總的來說,表5實(shí)驗(yàn)證明了本文提出的輕量級的主干網(wǎng)絡(luò)搭配編解碼結(jié)構(gòu)(Codec)以及MSLM模塊相比使用其他模塊作為主干結(jié)構(gòu)提升更加明顯,并且本身由于編解碼結(jié)構(gòu)(Codec)具有類似金字塔模塊的特征融合效果,因此效果更好,而性能也更優(yōu),雖然AP降低了1%,但是FPS相比于其他網(wǎng)絡(luò)都有顯著提升。
本文還做了一組消融實(shí)驗(yàn)來探究網(wǎng)絡(luò)中各個子模塊帶來的性能提升,實(shí)驗(yàn)對比和結(jié)果如表6和圖10所示 。
表6 CSDNet網(wǎng)絡(luò)的各個子模塊對比實(shí)驗(yàn)
圖10 Codec,MSLM的消融實(shí)驗(yàn)對比Fig.10 Comparison of Codec and MSLM ablation experiments
由表6和圖10可以看出:(1) 主干結(jié)構(gòu)使用了本文所設(shè)計(jì)的輕量級網(wǎng)絡(luò)作為主干結(jié)構(gòu),單獨(dú)使用Codec在性能上以及正確率上相對輕量級主干結(jié)構(gòu)分別降低了40%以及提升了37%;單獨(dú)使用MSLM在性能以及正確率上分別降低了12%以及提升了4%;一起使用2個模塊相比原始的網(wǎng)絡(luò),F(xiàn)PS降低了54%,但是正確率提升了40%;
(2) 一起使用2個模塊相比原始的ResNet,VggNet,MobileNet,F(xiàn)PS分別提升了125%,108%,36%,正確率分別提高了0.6%,-0.7%,5.2%;
(3) 和同樣加入了Codec和MSLM的ResNet,VggNet,MobileNet相比正確率大致相同,但是性能分別提升了170%,140%,72%,證明了本文所設(shè)計(jì)的輕量級網(wǎng)絡(luò)的有效性。
本文使用深度可分離卷積作為人體關(guān)鍵點(diǎn)檢測網(wǎng)絡(luò)的基本模塊,并融合了多維自學(xué)習(xí)模塊,首次提出使用編解碼的形式設(shè)計(jì)人體關(guān)鍵點(diǎn)檢測網(wǎng)絡(luò)。在COCO數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,相較于傳統(tǒng)網(wǎng)絡(luò)(如ResNet、VggNet和MobileNet),深度可分離卷積模塊顯著提升了網(wǎng)絡(luò)性能,但AP指標(biāo)有明顯下降;通過結(jié)合編解碼結(jié)構(gòu)和多維自學(xué)習(xí)模塊,F(xiàn)PS相比于其他網(wǎng)絡(luò)仍有顯著提升且AP指標(biāo)僅下降約1%,證明了本文所設(shè)計(jì)輕量級網(wǎng)絡(luò)的有效性。