曾文獻(xiàn), 馬月, 李偉光
(河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院, 石家莊 050061)
人體骨骼關(guān)鍵點(diǎn)檢測是計(jì)算機(jī)視覺中的一個(gè)重要任務(wù),被廣泛應(yīng)用于運(yùn)動(dòng)輔助訓(xùn)練[1- 4],醫(yī)療輔助訓(xùn)練[5- 6]和行為識別[7-8]等。人體骨骼關(guān)鍵點(diǎn)檢測是從圖像或者視頻中自動(dòng)定位人體骨骼關(guān)節(jié)點(diǎn),如肩膀,腕部等。目前主流的二維的人體骨骼關(guān)鍵點(diǎn)檢測方法在性能和精確度方面都有了很大的提升,網(wǎng)絡(luò)結(jié)構(gòu)也變得更深更復(fù)雜,對運(yùn)行設(shè)備的硬件環(huán)境提出了更高的要求。為了解決二維的人體骨骼關(guān)鍵點(diǎn)檢測模型結(jié)構(gòu)復(fù)雜、參數(shù)量和計(jì)算量龐大的問題,很多研究者將輕量化方法應(yīng)用到人體骨骼關(guān)鍵點(diǎn)檢測算法中,有效降低了網(wǎng)絡(luò)參數(shù)量和計(jì)算量,使模型可以在資源有限的移動(dòng)設(shè)備和嵌入式設(shè)備中運(yùn)行,所以對深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行輕量化設(shè)計(jì)是非常有必要的。針對人體骨骼關(guān)鍵點(diǎn)檢測的研究很多,已有不少綜述文章對二維的人體骨骼關(guān)鍵點(diǎn)檢測進(jìn)行總結(jié),但缺少對輕量化二維的人體骨骼關(guān)鍵點(diǎn)檢測算法研究的總結(jié)歸納。
為此,針對近幾年有關(guān)輕量級網(wǎng)絡(luò)的二維的人體骨骼關(guān)鍵點(diǎn)檢測相關(guān)工作進(jìn)行了分類對比,首先介紹了目前常用的人體骨骼關(guān)鍵點(diǎn)檢測中常用的數(shù)據(jù)集、二維的人體骨骼關(guān)鍵點(diǎn)檢測方法、輕量化網(wǎng)絡(luò)結(jié)構(gòu),然后從二維骨骼關(guān)鍵點(diǎn)檢測輕量化的手段進(jìn)行深入分析,對比了輕量化方法在現(xiàn)有數(shù)據(jù)集上的效果,最后對當(dāng)前研究進(jìn)行了總結(jié)和展望。
二維人體骨骼關(guān)鍵點(diǎn)檢測為人體行為檢測和識別研究提供基礎(chǔ)信息,其檢測結(jié)果的準(zhǔn)確率直接影響后續(xù)的應(yīng)用。二維人體骨骼關(guān)鍵點(diǎn)檢測主要可分為單人骨骼關(guān)鍵點(diǎn)檢測和多人骨骼關(guān)鍵點(diǎn)檢測。
神經(jīng)網(wǎng)絡(luò)的發(fā)展為二維人體骨骼關(guān)鍵點(diǎn)檢測效果帶來顯著提升,同時(shí)出現(xiàn)了許多針對特定場景和任務(wù)的人體骨骼關(guān)鍵點(diǎn)檢測數(shù)據(jù)集。數(shù)據(jù)集的規(guī)模對于訓(xùn)練神經(jīng)網(wǎng)絡(luò)來說非常重要,數(shù)據(jù)集太小的話就會(huì)造成過擬合。主要介紹規(guī)模較大且在人體骨骼關(guān)鍵點(diǎn)檢測研究中常用的數(shù)據(jù)集,如表1所示。
表1 常用人體骨骼關(guān)鍵點(diǎn)數(shù)據(jù)集
人體姿勢估計(jì)已經(jīng)研究了很多年,由于人類的姿勢各不相同,很難為這項(xiàng)任務(wù)建立一個(gè)通用的數(shù)據(jù)集。為了逐步解決估計(jì)問題,數(shù)據(jù)集的數(shù)量和復(fù)雜性都在增加。早期的數(shù)據(jù)集[9]包含有相對簡單背景的圖像。隨著深度學(xué)習(xí)的發(fā)展,這些數(shù)據(jù)集顯然不能滿足深度學(xué)習(xí)的訓(xùn)練條件,隨后出現(xiàn)了基于深度學(xué)習(xí)的方法常用的數(shù)據(jù)集包括LSP[10]、FLIC[11]、MPII[12]、MSCOCO[13]、AI Challenger[14]和PoseTrack[15],它們包含更多更復(fù)雜場景的圖像。LSP和FLIC數(shù)據(jù)集相對較小,只包含特定類別的活動(dòng)。LSP數(shù)據(jù)集中的圖像來自體育場景。FLIC數(shù)據(jù)集是從好萊塢電影中收集的。最新的數(shù)據(jù)集,如MSCOCO和AI Challenger,在規(guī)模和類別數(shù)量上都比較大。
二維單人骨骼關(guān)鍵點(diǎn)檢測是對圖像或視頻中的給定的單人進(jìn)行關(guān)鍵點(diǎn)檢測,然后將關(guān)鍵點(diǎn)進(jìn)行連接,形成人體骨骼。單人骨骼關(guān)鍵點(diǎn)檢測方法大致可分為:①基于坐標(biāo)回歸的方法是通過一個(gè)端到端的網(wǎng)絡(luò)框架學(xué)習(xí)從輸入圖像到人體骨骼關(guān)鍵點(diǎn)的信息;②基于熱力圖檢測方法是先獲得人體關(guān)鍵點(diǎn)的熱力圖,然后通過熱力圖推斷關(guān)鍵點(diǎn)的位置。基于熱力圖的檢測方法可用于復(fù)雜的場景的檢測,具有較好的魯棒性。如表2所示,梳理了二維的單人骨骼關(guān)鍵點(diǎn)檢測算法對比。
表2 二維單人骨骼關(guān)鍵點(diǎn)檢測算法對比
1.2.1 基于坐標(biāo)回歸的方法
許多基于坐標(biāo)回歸的方法直接獲得人體骨骼關(guān)鍵點(diǎn),其框架圖1所示。Toshev等[21]最先將深度學(xué)習(xí)應(yīng)用到人體關(guān)鍵點(diǎn)檢測,提出了可直接預(yù)測關(guān)鍵點(diǎn)坐標(biāo)的級聯(lián)回歸器,并通過一系列回歸方法檢測出不可見和被遮擋的人體骨骼關(guān)鍵點(diǎn),它的提出奠定了基于坐標(biāo)回歸方法的基礎(chǔ),也將人體關(guān)鍵點(diǎn)檢測從傳統(tǒng)方法轉(zhuǎn)向使用卷積神經(jīng)網(wǎng)絡(luò)。隨后,Carreira等[22]提出了一種迭代誤差反饋網(wǎng)絡(luò)(iterative error feedback,IEF),它是一個(gè)自我修正的模型,通過反饋誤差預(yù)測,逐步改進(jìn)預(yù)測的關(guān)鍵點(diǎn)位置。Sun等[23]提出了基于ResNet-50的結(jié)構(gòu)感知回歸方法,該方法沒有采用關(guān)鍵點(diǎn)信息,而是利用身體結(jié)構(gòu)信息來設(shè)計(jì)骨骼姿態(tài)信息,骨骼之間的相互作用通過一個(gè)損失函數(shù)進(jìn)行編碼。這種方法也可以推廣到三維的人體關(guān)鍵點(diǎn)檢測。對于基于坐標(biāo)回歸的方法來說獲取一個(gè)具有豐富骨骼關(guān)鍵點(diǎn)信息的特征是非常重要的,可以提高骨骼關(guān)鍵點(diǎn)的預(yù)測能力。于是多任務(wù)學(xué)習(xí)方法被應(yīng)用感到人體骨骼關(guān)鍵點(diǎn)檢測。Li等[16]采用異質(zhì)多任務(wù)框架來處理完整圖像中的骨骼關(guān)鍵點(diǎn)預(yù)測任務(wù)。Fan等[17]提出了一個(gè)雙源深度卷積神經(jīng)網(wǎng)絡(luò),包含兩個(gè)任務(wù),一個(gè)是聯(lián)合檢測來確定補(bǔ)丁是否包含骨骼關(guān)鍵點(diǎn),另一個(gè)任務(wù)是找到骨骼關(guān)鍵點(diǎn)的確切位置。 每個(gè)任務(wù)都對應(yīng)一個(gè)損失函數(shù),兩個(gè)任務(wù)的結(jié)合可以優(yōu)化結(jié)果。Luvizon等[18]學(xué)習(xí)了一個(gè)多任務(wù)網(wǎng)絡(luò)來聯(lián)合處理視頻序列中的二維、三維骨骼關(guān)鍵點(diǎn)檢測和動(dòng)作識別。
圖1 基于坐標(biāo)回歸的框架
1.2.2 基于熱力圖的檢測方法
目前基于單人關(guān)鍵點(diǎn)檢測大多采用基于熱力圖的檢測方法,其框架如圖2所示。該方法是通過檢測K個(gè)骨骼關(guān)鍵點(diǎn)的熱力圖,每個(gè)關(guān)鍵點(diǎn)熱力圖中的像素值Li(x,y)表示關(guān)鍵點(diǎn)位于(x,y)的概率。骨骼關(guān)鍵點(diǎn)的真實(shí)熱力圖是由二維高斯模型[24]以真實(shí)關(guān)鍵點(diǎn)所在位置為中心產(chǎn)生的, 通過最小化預(yù)測熱力圖和真實(shí)熱力圖之間的差異來訓(xùn)練骨骼關(guān)鍵點(diǎn)檢測網(wǎng)絡(luò)。基于熱力圖的檢測方法可以保留更多的空間位置信息,提供更豐富的監(jiān)督信息。Tompson等[19]將基于CNN的身體部位檢測器與基于部位的空間模型結(jié)合起來,形成一個(gè)統(tǒng)一的二維人體骨骼關(guān)鍵點(diǎn)檢測學(xué)習(xí)框架。Lifshitz等[25]將圖像離散為以骨骼關(guān)鍵點(diǎn)為中心的對數(shù)極坐標(biāo)區(qū),并采用VGG網(wǎng)絡(luò)來預(yù)測每個(gè)成對骨骼關(guān)鍵點(diǎn)的類別置信度。根據(jù)相對置信度的分?jǐn)?shù),每個(gè)關(guān)鍵點(diǎn)的最終熱力圖可以通過反卷積網(wǎng)絡(luò)生成。由于熱力圖表示比坐標(biāo)表示更穩(wěn)健,最近的研究大多是基于熱力圖表示。
圖2 基于熱力圖的框架
采用多階段細(xì)化迭代的方式來設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu),可以有效提高網(wǎng)絡(luò)預(yù)測的準(zhǔn)確性。Wei等[26]提出了一個(gè)多階段預(yù)測架構(gòu)(convolutional pose machines,CPM)。CPM模型由多個(gè)Stage組成,經(jīng)過多次優(yōu)化,對關(guān)鍵點(diǎn)位置的預(yù)測越來越準(zhǔn)確。CPM通過使用增大感受野的方式獲得關(guān)鍵點(diǎn)之間的復(fù)雜度關(guān)聯(lián)性,來解決關(guān)鍵點(diǎn)遮擋的問題。同樣為了解決關(guān)鍵點(diǎn)遮擋的問題,Newell等[27]提出了級聯(lián)沙漏網(wǎng)絡(luò)模型(stacked hourglass module,SHG),該模型由多個(gè)Residual Module(殘差模塊)組成,每個(gè)Residual Module有兩個(gè)通路:卷積路和短接路。Stacked Hourglass Network(堆疊沙漏網(wǎng)絡(luò))由四階Residual Module組成,它捕獲和整合所有尺度的信息,輸入圖像先經(jīng)過從高分辨率下采樣到低分辨率提取特征,然后再上采樣從低分辨率到高分辨率進(jìn)行特征融合,最后基于融合后的特征圖輸出關(guān)節(jié)點(diǎn)的熱力圖。Stacked Hourglass Network有效利用了不同層次的特征圖包含不同級別的特征信息,實(shí)現(xiàn)對不同尺度的特征圖像信息捕獲和整合,解決了信息丟失問題。人體骨骼關(guān)鍵點(diǎn)的大小也給檢測帶來了一定的難度,Yang等[28]設(shè)計(jì)了一個(gè)多分支金字塔殘差模塊(pyramid residual module,PRM)來代替SHG的殘差模塊,以此增強(qiáng)了深度卷積神經(jīng)網(wǎng)絡(luò)尺度的不變性。PRM在多分支網(wǎng)絡(luò)中采用不同采樣率進(jìn)行下采樣獲得不同尺寸的特征圖,再通過上采樣恢復(fù)到原來的分辨率。Zhang等[20]通過對標(biāo)準(zhǔn)坐標(biāo)解碼方法局限性的分析不僅提出了可感知的分布編碼方法,同時(shí)生成了無偏模型訓(xùn)練的精確熱力圖分布,改進(jìn)了標(biāo)準(zhǔn)坐標(biāo)的編碼過程。
由于輸入圖像中的人數(shù)不確定、關(guān)鍵點(diǎn)分組情況不確定,基于多人的關(guān)鍵點(diǎn)檢測與單人的相比更加困難。根據(jù)多人骨骼關(guān)鍵點(diǎn)檢測方法的相關(guān)研究大致將多人骨骼關(guān)鍵點(diǎn)檢測分成兩類:自頂向下(Top-Down)和自底向上(Bottom-Up)。Top-Down方法首先要利用目標(biāo)檢測算法檢測出圖像中所有人的位置,再使用單人的骨骼關(guān)鍵點(diǎn)檢測方法提取出每個(gè)人的骨骼關(guān)鍵點(diǎn)。這種方法精度高但是檢測實(shí)時(shí)性差,因?yàn)閳D像中的人數(shù)會(huì)直接影響檢測速度。Bottom-Up方法先檢測圖像中人體的所有關(guān)鍵點(diǎn),然后再對不同人體的關(guān)鍵點(diǎn)進(jìn)行分組,得到最優(yōu)分組。該方法的精度不高,關(guān)鍵點(diǎn)特征提取難度大,不能很好的解決遮擋問題,但是檢測速度快、實(shí)時(shí)性好。如表3所示,梳理了二維的多人骨骼關(guān)鍵點(diǎn)檢測算法對比。
表3 二維多人骨骼關(guān)鍵點(diǎn)檢測算法對比
1.3.1 Top-Down方法
自上而下的骨骼關(guān)鍵點(diǎn)檢測方法的兩個(gè)最重要的組成部分是人體區(qū)域候選檢測器和單人姿勢估計(jì)器。人體檢測器用于獲得人體邊界框,主要采用Fast-RCNN(fast regions with convolutional neural network)[31]、Faster-RCNN(faster regions with convolutional neural network)[32]、特征金字塔網(wǎng)絡(luò)(feature pyramid network,F(xiàn)PN)[33]和Mask R-CNN(mask regions with convolutional neural network)[34-35]。Papandreou等[36]提出了一個(gè)兩階段的架構(gòu),利用Faster R-CNN作為人體檢測器,為候選人體創(chuàng)建邊界框和一個(gè)關(guān)鍵點(diǎn)估計(jì)器,通過使用一種熱力圖-偏移聚合的形式預(yù)測關(guān)鍵點(diǎn)的位置。針對多人骨骼關(guān)鍵點(diǎn)檢測中常會(huì)出現(xiàn)的問題,如關(guān)鍵點(diǎn)被遮擋或重疊等,Chen等[37]提出了一個(gè)級聯(lián)金字塔網(wǎng)絡(luò)(cascaded pyramid network, CPN),從局部和全局特征中獲取更多信息。網(wǎng)絡(luò)包含兩個(gè)部分:GlobalNet用來檢測簡單的關(guān)鍵點(diǎn),如眼睛、手臂等容易檢測的關(guān)鍵點(diǎn);RefineNet通過整合多個(gè)感受野特征和GlobalNet獲得的特征,將相同大小的特征圖串聯(lián)起來,用于檢測難以識別的人體骨骼關(guān)鍵點(diǎn)。Golda等[38]通過探索優(yōu)化擁擠場景下的人體骨骼關(guān)鍵點(diǎn)檢測方法,提出了OccNet,該網(wǎng)絡(luò)包含兩個(gè)分支網(wǎng)絡(luò),以ResNet作為骨干網(wǎng)絡(luò)。其中,遮擋網(wǎng)絡(luò)(OccNet)為每個(gè)關(guān)鍵點(diǎn)位置生成兩組熱力圖,可見關(guān)鍵點(diǎn)熱力圖和遮擋關(guān)鍵點(diǎn)熱力圖。遮擋網(wǎng)絡(luò)交叉分支(OccNetCB)在經(jīng)過一次轉(zhuǎn)置卷積后分成連個(gè)分支,這兩個(gè)分支可共享提取的信息。由于多人骨骼關(guān)鍵點(diǎn)檢測網(wǎng)絡(luò)模型普遍比較復(fù)雜,Xiao等[39]提出了一個(gè)簡單又高效的網(wǎng)絡(luò)Simple Baseline架構(gòu),在ResNet[40]結(jié)構(gòu)上進(jìn)行改進(jìn),去掉ResNet網(wǎng)絡(luò)后面的全連接層,加入3個(gè)反卷積層和一個(gè)1×1的卷積層,將低分辨率的特征圖還原輸入分辨率,以生成人體骨骼關(guān)鍵點(diǎn)熱圖。
目前大多數(shù)人體骨骼關(guān)鍵點(diǎn)檢測算法是將高分辨率特征降采樣到低分辨率,然后從低分辨率特征圖恢復(fù)到高分辨率,這個(gè)過程中會(huì)丟失高分辨率的特征信息,影響檢測結(jié)果。為了在整個(gè)網(wǎng)絡(luò)上保持高分辨率特征信息,Sun等[41]提出了一種具有多尺度特征融合的高分辨率網(wǎng)絡(luò)(high-resolution networks, HRNet),HRNet采用并行網(wǎng)絡(luò)結(jié)構(gòu),在保持高分辨率的同時(shí),逐步將不同分辨率的特征網(wǎng)絡(luò)并行連接,并在多分辨率子網(wǎng)之間進(jìn)行信息交換,以獲得更多的高分辨率信息來保證關(guān)鍵點(diǎn)位置的準(zhǔn)確性。為了提高骨骼關(guān)鍵點(diǎn)定位的準(zhǔn)確性,Wang等[29]提出了一個(gè)基于圖和模型的兩階段框架,稱為GraphPCNN。它包括一個(gè)定位子網(wǎng)以獲得粗略的關(guān)鍵點(diǎn)位置,以及一個(gè)圖形姿勢細(xì)化模塊以獲得細(xì)化的關(guān)鍵點(diǎn)定位表示。Cai等[42]提出了一個(gè)新的網(wǎng)絡(luò)結(jié)構(gòu)-RSN(residual step network),RSN通過有效的內(nèi)部特征融合策略學(xué)習(xí)精致的局部表征,有效保留了豐富的低層空間信息。此外還提出了一種高效的注意力機(jī)制-PRM(pose refine machine),PRM在輸出特征的局部和全局表征之間平衡,進(jìn)一步獲得關(guān)鍵點(diǎn)位置。這種方法的檢測精準(zhǔn)度很好,但由于檢測性能受檢測任務(wù)中人體數(shù)量的影響,運(yùn)算速度較慢,不適合用于實(shí)時(shí)檢測。
1.3.2 Bottom-Up方法
自底向上的方法主要包含兩個(gè)步驟,包括關(guān)鍵點(diǎn)檢測和和候選關(guān)鍵點(diǎn)分組。該方法先檢測圖像中的所有關(guān)鍵點(diǎn),然后將檢測出來的候選關(guān)鍵點(diǎn)通過聚類的方式進(jìn)行最優(yōu)分組。由于Bottom-Up的方法受圖像中人數(shù)增加的影響較小,檢測速度不會(huì)隨著人數(shù)增加而變慢,適合用于實(shí)時(shí)檢測的場景。Pishchulin[43]將多人骨骼關(guān)鍵點(diǎn)檢測問題轉(zhuǎn)換為一個(gè)整數(shù)線性規(guī)劃的問題,該方法采用Fast-RCNN進(jìn)行人體部位檢測,組成候選關(guān)節(jié)點(diǎn)密度圖,然后將每個(gè)部位標(biāo)記到其對應(yīng)部位類別,最后用整數(shù)線性規(guī)劃將這些部位組裝成完整的骨架。由于Deepcut網(wǎng)絡(luò)計(jì)算復(fù)雜度非常大,隨后Insafutdinov[44]提出了Deepercut,為了解決Deepcut復(fù)雜度高的問題,通過使用ResNet更強(qiáng)大的身體部位檢測器和更好的增量優(yōu)化策略以及圖像條件下的成對條件對身體部位進(jìn)行分組,從而提高了檢測性能和速度。
基于多階段的卷積神經(jīng)網(wǎng)絡(luò)的方法,通過利用前一階段的結(jié)果不斷細(xì)化檢測結(jié)果,進(jìn)而提高骨骼關(guān)鍵點(diǎn)的檢測精度。Cao等[45]提出了OpenPose網(wǎng)絡(luò),在CPM的基礎(chǔ)上引入部位親合場(part affinity fields,PAFs),其中PAFs是一個(gè)矢量場,用于編碼四肢的位置和方向信息,以便將獲取的人體關(guān)鍵點(diǎn)進(jìn)行連接,得到不同的人體姿態(tài)。OpenPose在很大程度上提高了人體骨骼關(guān)鍵點(diǎn)檢測的速度。Zhu等[46]基于OpenPose框架通過添加冗余邊緣來增加 PAF 中關(guān)節(jié)之間的連接來改進(jìn) OpenPose 結(jié)構(gòu),并獲得比基線方法更好的性能。盡管基于 OpenPose 的方法在高分辨率圖像上取得了令人印象深刻的結(jié)果,但它們在處理低分辨率圖像和遮擋的情況下表現(xiàn)不佳。與 OpenPose 類似,Kreiss等[30]設(shè)計(jì)了一個(gè) PifPaf 網(wǎng)絡(luò)來預(yù)測部位強(qiáng)度場 (part intensity fields,PIF) 和部位關(guān)聯(lián)場 (part affinity fields,PAF) 來表示身體關(guān)節(jié)位置和身體關(guān)節(jié)關(guān)聯(lián)。由于細(xì)粒度的 PAF 和拉普拉斯損失的利用,它在低分辨率圖像上運(yùn)行良好。Rizwan等[47]提出了一種利用編碼掩碼和關(guān)鍵點(diǎn)檢測進(jìn)行二維人體骨骼關(guān)鍵點(diǎn)檢測的神經(jīng)網(wǎng)絡(luò)。該網(wǎng)絡(luò)由連兩個(gè)個(gè)階段組成,第一階段用于預(yù)測人的掩碼,第二階段包含兩個(gè)分支,一個(gè)分支用于檢測關(guān)鍵點(diǎn)的位置,另一個(gè)分支用于學(xué)習(xí)關(guān)鍵點(diǎn)之間的關(guān)系。在人體骨骼關(guān)鍵點(diǎn)檢測階段,利用掩碼信息和相互連接關(guān)系檢測人體骨骼關(guān)鍵點(diǎn)的位置熱力圖,并以此來獲得最終的關(guān)鍵點(diǎn)位置。Bottom-Up方法處理速快,一些實(shí)時(shí)場景的應(yīng)用均采用這種方法。
隨著深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展,研究者們提出了許多優(yōu)秀的深度神經(jīng)網(wǎng)絡(luò),如VGGNet、ResNet、GoogleNet等。
Landola等[48]研究了SqueezeNet,該網(wǎng)絡(luò)采用非傳統(tǒng)的模塊化卷積(fire module),它由兩部分組,如圖3[48]所示,Squeeze層采用1×1卷積核,對上一層的特征圖進(jìn)行卷積,減少特征圖的通道數(shù),以達(dá)到減少運(yùn)算量的目的。expand層采用1×1和3×3的卷積核,然后將結(jié)果進(jìn)行級聯(lián),與VGG[49]的思想差不多。SqueezeNet與AlexNet[50]相比,參數(shù)量少50倍。
squeez為壓縮層;expand為擴(kuò)展層;ReLU為激活函數(shù)
Howard等[51]提出了MobileNetV1為輕量化網(wǎng)絡(luò)的設(shè)計(jì)提供了新的思路,將標(biāo)準(zhǔn)卷積分兩步進(jìn)行,首先進(jìn)行深度卷積,然后進(jìn)行點(diǎn)卷積,結(jié)構(gòu)如圖4所示。MobileNetV1的計(jì)算量與GoogleNet[52]網(wǎng)絡(luò)模型的運(yùn)算量相比要少一個(gè)數(shù)量級。MobileNetV2[53]在MobileNetV1的基礎(chǔ)上進(jìn)行了改進(jìn),該網(wǎng)絡(luò)引入線性瓶頸反殘差結(jié)構(gòu)(inverted residual with linear bottlenecks),并將點(diǎn)卷積后面的ReLU函數(shù)替換成線性函數(shù)。線性瓶頸反殘差結(jié)構(gòu)與殘差結(jié)構(gòu)不同,首先對輸入進(jìn)行升維,然后利用深度可分離卷代替標(biāo)準(zhǔn)的3×3卷積,再利用1×1的卷積降低維度,并使用線性激活函,避免對低維特征信息造成大量損失。隨后,Howard等[54]提出了MobileNetV3,在ImageNet分類上,其精度比MobileNetV2提高了6%。MobileNetV3的主要?jiǎng)?chuàng)新點(diǎn)是:①用NAS[55]通過優(yōu)化每個(gè)網(wǎng)絡(luò)塊來搜索全局網(wǎng)絡(luò)結(jié)構(gòu),NetAdapt[56]執(zhí)行局部搜索;②引入輕量級的通道注意力機(jī)制[57]和h-swish(x)激活函數(shù);③將網(wǎng)絡(luò)結(jié)構(gòu)中最后一個(gè)平均池化層前移并且去掉了最后一個(gè)卷積層。
BN為批量歸一化;ReLU為激活函數(shù)
ShuffleNetV1[58]主要采用了組卷積和通道 shuffle兩種方法,用來減少模型使用參數(shù)量。其中通道shuffle通過對特征圖的通道進(jìn)行重新排序構(gòu)成新的特征圖,解決了組卷積信息流通不暢的問題。如圖5[58]所示,通道shuffle操作有兩種結(jié)構(gòu),圖5(a)為基礎(chǔ)殘差結(jié)構(gòu),中間包含一個(gè)3×3的深度卷積進(jìn)行特征提取。圖5(b)為特征圖不變的ShuffleNet unit,利用1×1分組卷積替換基礎(chǔ)殘差結(jié)構(gòu)中1×1的卷積層,并在第一個(gè)卷積層后面添加了通道shuffle。圖5(c)為特征圖減半的ShuffleNet unit在shortcut中添加了3×3平均池化,減小了特征圖的分辨率,所以又將最后的Add操作替換成concat,用來彌補(bǔ)分辨率降低帶來的信息損失,增加了輸出維度且產(chǎn)生很大的計(jì)算量。由于ShuffleNetV1使用了大量的1×1的分組卷積,增加了內(nèi)存訪問成本。ShuffleNetV2[59]在V1的基礎(chǔ)上進(jìn)行了改進(jìn),首先引入通道分離(channel split)操作,然后借鑒了DenseNet的思想,將元素級add操作替換成concat,保證前后的channel數(shù)相同,最后再進(jìn)行通道shuffle操作。ShuffleNetV2在ImageNet數(shù)據(jù)集上的分類精度與ShuffleNetV1相比提高了1.2%。
Add為特征圖相加操作
Chollet[60]提出了Xception,可以看成是Google Inception的進(jìn)化版,如圖6[60]所示。它借鑒了深度可分離卷積,來改進(jìn)Inception。先進(jìn)行標(biāo)準(zhǔn)卷積操作,對1×1卷積后的每一個(gè)通道進(jìn)行3×3的卷積操作,再分別通過3×3卷積以進(jìn)行特征提取。它和深度可分離卷積很相似,但是它的兩段卷積過程是相反的,而且后面帶了一個(gè)ReLU非線性激活函數(shù),這樣做提高了網(wǎng)絡(luò)的效率。
圖6 Xception模塊[60]
為了減少網(wǎng)絡(luò)計(jì)算量,GhostNet網(wǎng)絡(luò)將傳統(tǒng)的卷積分成兩步進(jìn)行[61],首先使用少量的卷積核生成一部分特征圖,然后通過廉價(jià)的線性操作進(jìn)一步生成新特征圖,最后將兩組特征圖拼接到一起。 GhostNet包含兩種瓶頸結(jié)構(gòu),如圖7[61]所示。圖7(a)為stride=1瓶頸結(jié)構(gòu),用于特征提??;圖7(b)為stride=2的瓶頸結(jié)構(gòu),用于減少通道數(shù)量。這兩種瓶頸結(jié)構(gòu)通過堆疊兩個(gè)Ghost Module形成。在ImageNet分類實(shí)驗(yàn)中,GhostNet達(dá)到了94%的精準(zhǔn)度,超過MobileNetV3。
BN為批量歸一化;ReLU為激活函數(shù);Add為特征圖相加操作
對基于深度可分離卷積的主流輕量化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的創(chuàng)新點(diǎn)和優(yōu)劣勢進(jìn)行分析和對比:①SqueezeNet。創(chuàng)新點(diǎn)為提出Fire Module來壓縮網(wǎng)絡(luò)模型,主要包括1×1的卷積核替換3×3的卷積核,參數(shù)減少為原來的1/9;采用1×1的卷積核進(jìn)行降維,減少輸入通道數(shù);池化層往后放,提高準(zhǔn)確率。缺點(diǎn)是喪失了網(wǎng)絡(luò)的并行能力,實(shí)時(shí)性不好。②MobileNetV1。創(chuàng)新點(diǎn)為引入深度可分離卷積進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)輕量化設(shè)計(jì),缺點(diǎn)是網(wǎng)絡(luò)結(jié)構(gòu)單一,且過量使用激活函數(shù)導(dǎo)致神經(jīng)元易失活。③MobileNetV2。創(chuàng)新點(diǎn)引入線性瓶頸反殘差結(jié)構(gòu)。缺點(diǎn)是引入了額外的成本與延時(shí)。④MobileNetV3。創(chuàng)新點(diǎn)是使用了互補(bǔ)搜索技術(shù)和引入SE模塊、h-swish(x)激活函數(shù)。⑤ShuffleNetV1。創(chuàng)新點(diǎn)為提出通道shuffle。缺點(diǎn)是過多使用組卷積操作。⑥ShuffleNetV2。創(chuàng)新點(diǎn)為引入通道分離。缺點(diǎn)是運(yùn)行速度可以進(jìn)一步提升。⑦Xception。創(chuàng)新點(diǎn)為使用改進(jìn)的深度可分離卷積替換Inception V3中的卷積模塊,有效提高了網(wǎng)絡(luò)。缺點(diǎn)是訓(xùn)練時(shí)迭代速度比較慢。⑧GhostNet。創(chuàng)新點(diǎn)為使用更低的成本獲得更多的特征映射,可以用于優(yōu)化深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。缺點(diǎn)是相對其他輕量化網(wǎng)絡(luò)來說,不能有效降低參數(shù)量。表4為輕量化網(wǎng)絡(luò)方法對比。
表4 輕量化網(wǎng)絡(luò)方法對比
近年來,隨著輕量化網(wǎng)絡(luò)的發(fā)展,基于二維人體骨骼關(guān)鍵點(diǎn)檢測的輕量化方法被廣泛研究,通過分析輕量化二維人體骨骼關(guān)鍵點(diǎn)檢測方法的輕量化方式,目前的輕量化二維人體骨骼關(guān)鍵點(diǎn)檢測研究方法分成五類:輕量化特征提取網(wǎng)絡(luò)、深度可分離卷積、Dense連接機(jī)制和輕量化瓶頸結(jié)構(gòu)。
目前在人體骨骼關(guān)鍵點(diǎn)檢測算法中,其特征提取網(wǎng)絡(luò)大多采用網(wǎng)絡(luò)模型參數(shù)量比較大,如VGG網(wǎng)絡(luò)、ResNet網(wǎng)絡(luò)。這些網(wǎng)絡(luò)可以有效的提取特征信息,但隨著網(wǎng)絡(luò)的加深,網(wǎng)絡(luò)模型越來越大。為了設(shè)計(jì)輕量級的網(wǎng)絡(luò),為了降低網(wǎng)絡(luò)的參數(shù)量和計(jì)算量,可以選擇輕量化網(wǎng)絡(luò)作為特征提取網(wǎng)骨干網(wǎng)絡(luò),如MobileNets、SuffleNets、GhostNet等,可以有效降低網(wǎng)絡(luò)模型參數(shù)量和計(jì)算量。
OpenPose作為Bottom-Up方法中典型的模型,其檢測速度不會(huì)受圖像中人數(shù)的影響,在多人骨骼關(guān)鍵的檢測中被廣泛應(yīng)用。但由于OpenPose的特征提取網(wǎng)絡(luò)為VGG19,使模型的參數(shù)進(jìn)一步增加,所以很多研究者們針對OpenPose模型進(jìn)行改進(jìn)。 Daniil Osokin對OpenPose進(jìn)行了輕量化改進(jìn)[62],首先,將OpenPose的兩個(gè)分支合并成一個(gè)分支,然后將特征提取網(wǎng)絡(luò)VGG19替換成MobileNetV1,同時(shí)還將網(wǎng)絡(luò)中的7×7卷積替換成3個(gè)連續(xù)的1×1、3×3、3×3的卷積核結(jié)構(gòu),其中最后一個(gè)3×3的卷積為空洞卷積,為了防止梯度消失的問題,還加入了一個(gè)跳躍連接,如圖8所示。朱洪堃等[63]提出了一種輕量化實(shí)時(shí)人體姿勢檢測模型,其輕量化方法同樣是替換掉VGG19,選擇ResNet-18作為特征提取網(wǎng)絡(luò),為了增強(qiáng)特征提取網(wǎng)絡(luò)的非線性擬合能力,在殘差塊中添加了二階項(xiàng)和一個(gè)較小的偏置。王雨生等[64]通過將OpenPose原有的特征提取網(wǎng)絡(luò)分別替換成ResNet34和ResNet50進(jìn)行實(shí)驗(yàn),根據(jù)實(shí)驗(yàn)結(jié)果最終選擇采用ResNet50作為特征提取網(wǎng)絡(luò)。Schirmer等[65]利用MobileNet-V2替換VGG19中的12個(gè)卷積模塊,提出了一種實(shí)時(shí)人體骨骼關(guān)鍵點(diǎn)檢測模型。蘇超等[66]通過對比普通卷積和深度可分離卷積的參數(shù)量和實(shí)驗(yàn)驗(yàn)證,采用MobileNet作為特征提取網(wǎng)絡(luò),其平均識別準(zhǔn)確度達(dá)到了99.62%。
圖8 替換7×7的空洞卷積塊
胡江顥等[67]提出一種應(yīng)用于手機(jī)上的是人體骨骼關(guān)鍵點(diǎn)檢測算法(light-weight network for real-time pose estimation,LWPE),算法采取MobileNetV2作為特征提取主干網(wǎng)絡(luò),有效減少了模型參數(shù)和運(yùn)算量。Zhu等[68]提出了一種基于人體骨骼關(guān)鍵點(diǎn)檢測的輕量級交叉融合的神經(jīng)網(wǎng)絡(luò)。網(wǎng)絡(luò)由骨干模塊和交叉信息融合模塊組成。骨干模塊使用最新的輕量級網(wǎng)絡(luò)GhostNet進(jìn)行特征提取,有效降低計(jì)算成本和參數(shù)。信息交叉模塊將得到的特征信息分解為兩個(gè)分支:關(guān)鍵點(diǎn)檢測和關(guān)節(jié)連接,消除干擾信息,然后通過交叉信息融合共享足夠的信息提高特征提取能力。Zhang等[69]提出了一種專門針對人體骨骼關(guān)鍵點(diǎn)檢測有效的網(wǎng)絡(luò)模型。該模型包括兩部分:有效的骨干和有效的頭部。為了縮小分類和姿態(tài)估計(jì)任務(wù)之間的差距,骨干網(wǎng)絡(luò)使用NAS方法自動(dòng)定制骨干網(wǎng)絡(luò),有效降低了計(jì)算成本。有效的頭部網(wǎng)絡(luò)包括細(xì)長的轉(zhuǎn)置卷積核空心信息矯正模塊,用來優(yōu)化模型的準(zhǔn)確率。Chen等[70]對最新的OpenPose進(jìn)行改進(jìn),提出了輕量級神經(jīng)網(wǎng)絡(luò)ThermalPose。ThermalPose采用11個(gè)輕量級卷積層組成的骨干網(wǎng)絡(luò)作為特征提取網(wǎng)絡(luò),如表5[70]所示,除第一層使用標(biāo)準(zhǔn)卷積外,其他層均使用S-Conv,其中S-Conv是深度可分離卷積。在通道空間卷積中使用了一個(gè)大小為2的零填充。在每次卷積之后,都會(huì)應(yīng)用批量歸一化和矯正線性單元。S-Conv-2、S-Conv-7和S-Conv-11的輸出被串聯(lián)起來,生成一組特征圖。ThermalPose通過使用depthwise S-Conv在犧牲精度的情況下大大減小了模型尺寸和復(fù)雜度。
表5 特征提取網(wǎng)絡(luò)架構(gòu)[70]
深度可分離卷積作為MobileNet的核心,被廣泛用于基于網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)的輕量化中。由于深度可分離卷積與標(biāo)準(zhǔn)卷積相比,參數(shù)量將減少1/9左右。利用深度可分離卷積替換標(biāo)準(zhǔn)卷積,Gao等[71]在Stacked Hourglass的基礎(chǔ)上進(jìn)行了改進(jìn),提出了一個(gè)輕量化的網(wǎng)絡(luò)模型。首先利用深度可分離卷積替換其中一部分標(biāo)準(zhǔn)卷積,然后在金字塔殘差模塊中加入了通道分離模塊和通道混合模塊,用來加強(qiáng)特征融合,改變特征圖的通道維數(shù)。這項(xiàng)工作有效降低了網(wǎng)絡(luò)的訓(xùn)練參數(shù)和計(jì)算量,參數(shù)量減少了50%。輕量化金字塔殘差模塊可表示為
(1)
(2)
式中:im為第m層的輸入;?表示級聯(lián);wm為第m層的濾波器;L(im;wm)為特征金字塔;g為濾波器;c為個(gè)數(shù);C為金字塔多尺度的個(gè)數(shù);fc為第c個(gè)金字塔特征變換;wf為濾波器f;wg為過濾器g;f0為首個(gè)金字塔特征變換;wf0m為首個(gè)金字塔特征變換中的第m個(gè)濾波器。
段俊臣等[72]對 OpenPose網(wǎng)絡(luò)模型進(jìn)行了改進(jìn),利用深度可分離卷積替換部位親和網(wǎng)絡(luò)中的標(biāo)準(zhǔn)卷積,同時(shí)為了加速收斂在每個(gè)深度可分離卷積與點(diǎn)卷積之后均加入了一個(gè)ReLU函數(shù)。肖文福等[73]同樣是利用深度可分離卷積的代替標(biāo)準(zhǔn)卷積的方式來減少參數(shù)量。該方法主要是對PAF模塊和Heatmap模塊內(nèi)部結(jié)構(gòu)進(jìn)行改進(jìn),將卷積塊中的3×3標(biāo)準(zhǔn)卷積替換成深度可分離卷積,改進(jìn)后的模塊內(nèi)部結(jié)構(gòu),如圖9[73]所示。
Cm為卷積模塊;con為卷積層
Li等[74]提出了一個(gè)輕量級HRNet模型,模型以HRNet作為主干網(wǎng)絡(luò),但是由于HRNet利用多個(gè)分辨率分支,整個(gè)過程特征圖始終保持高分辨率,這使得HRNet網(wǎng)絡(luò)過于復(fù)雜,無法部署在移動(dòng)設(shè)備上。于是受MobileNet的啟發(fā),利用深度可隔離網(wǎng)絡(luò)代替HRNet中的標(biāo)準(zhǔn)卷積,同時(shí)采用了空洞卷積來提高特征提取能力。該模型的體系結(jié)構(gòu)比原始的HRNet中的參數(shù)和計(jì)算量都要少,而且仍然保持著出色的表示能力。蔡敏敏等[75]提出了一種對運(yùn)動(dòng)視頻提取特定運(yùn)動(dòng)幀的方法,采用HRNet作為骨干網(wǎng)絡(luò),但該模型過大、無法滿足實(shí)際運(yùn)用需求,于是對HRNet進(jìn)行了輕量化處理,首先將3×3的標(biāo)準(zhǔn)卷積替換成深度可分離卷積,然后減少了HRNet并行的子網(wǎng)數(shù)量。
Dense連接機(jī)制[76]包括:①為了提高各層之間的信息交流,Dense模塊中的每一層都與前幾層進(jìn)行連接;②把網(wǎng)絡(luò)的每一層設(shè)計(jì)的很窄,減小卷積的輸出通道數(shù)。DenseNet連接機(jī)制提高了網(wǎng)絡(luò)參數(shù)的共享性,其參數(shù)量和計(jì)算量約為ResNet的1/2。ResNet殘差網(wǎng)絡(luò)加上跳躍連接,其非線性映射關(guān)系可表示為:Xl=Hl(Xl-1)+Xl-1,其中,下標(biāo)l表示層,Xl表示l層的輸出,Hl表示一個(gè)非線性變換。DenseNet改善了不同層之間的信息交流問題,將所有輸入連接到輸出層,非映射關(guān)系表示為:Xl=Hl([X0,X1,X2,…,Xl-1])。DenseNet不僅提高了特征利用率,使不同層次的特征進(jìn)行融合,還可以避免梯度消失的問題,降低了網(wǎng)絡(luò)成本。
汪檢兵等[77]提出了OpenPose-slim模型。該模型在OpenPose網(wǎng)絡(luò)模型的基礎(chǔ)上將并行結(jié)構(gòu)改成串行結(jié)構(gòu),并將其中的卷積模塊替換成具有Dense連接及時(shí)的卷積模塊。Yang等[78]提出了密集連接殘差模塊(densely connected residual module, DCRM),并將其引入HRNet骨干部分,有效減少網(wǎng)絡(luò)中的參數(shù)量。DCRM在原始密集層上增加了一個(gè)1×1的卷積層和3×3的卷積短連接,有效減少了網(wǎng)絡(luò)參數(shù)量。每個(gè)DCRM由一個(gè)以上的密集層組成,如圖10[78]所示,每個(gè)密集層之間都有一個(gè)密集連接,每個(gè)層都把前面的所有特征圖作為輸入。渠涵冰等[79]提出了一個(gè)輕量級高分辨率骨骼關(guān)鍵點(diǎn)檢測模型。在HRNet的基礎(chǔ)上,引入改進(jìn)后DenseNet卷積網(wǎng)絡(luò),替換主干網(wǎng)絡(luò)中使用的殘差模塊。針對DenseNet卷積結(jié)構(gòu)的改進(jìn)是首先在3×3的卷積前添加一個(gè)1×1的卷積,然后在每個(gè)dense單元中添加一個(gè)3×3 的卷積。改進(jìn)后的網(wǎng)絡(luò)參數(shù)比HRNet減少了63.8%。
BN為批量歸一化;ReLU為激活函數(shù)
瓶頸結(jié)構(gòu)(Bottleneck)是一種特殊的殘差結(jié)構(gòu),是ResNet的核心內(nèi)容之一。瓶頸結(jié)構(gòu)能夠降低大卷積層的計(jì)算量,即在計(jì)算比較大的卷積層之前,先用一個(gè)1×1卷積來壓縮大卷積層輸入特征圖的通道數(shù)目,以減少計(jì)算量。在大卷積完成計(jì)算之后,根據(jù)實(shí)際需,有時(shí)候會(huì)再次使用一個(gè)1×1卷積來將大卷積層輸出特征圖的通道數(shù)目復(fù)原。圖11(a)為普通的殘差結(jié)構(gòu),圖11(b)為一般的瓶頸結(jié)構(gòu),依次是小通道的1×1卷積層、一個(gè)較大的卷積層、大通道數(shù)的1×1卷積層,在增加網(wǎng)絡(luò)層數(shù)的同時(shí)特征提取能力也會(huì)得到提升。
ReLU為激活函數(shù)
對HRNet網(wǎng)絡(luò)模型的輕量化大都利用輕量化瓶頸結(jié)構(gòu)替換原高分辨率網(wǎng)絡(luò)中的基礎(chǔ)模塊,以達(dá)到網(wǎng)絡(luò)輕量化的目的。羅夢詩等[80]將注意力特征融合模塊(attentional feature fusion,AFF)與GhostNet的瓶頸結(jié)構(gòu)相結(jié)合,提出了線性變換注意力特征融合的Gaff模塊,Gaff模塊包括Gaffblock模塊和Gaffneck模塊,利用AFF模塊替換瓶頸結(jié)構(gòu)中結(jié)果相加部分。將HRNet網(wǎng)絡(luò)中的瓶頸模塊和基礎(chǔ)模塊替換成Gaff模塊,Gaff模塊有效降低了網(wǎng)絡(luò)的參數(shù)量和網(wǎng)絡(luò)模型的復(fù)雜度。Zhang等[81]和孫琪翔等[82]利用改進(jìn)的Ghost瓶頸結(jié)構(gòu)替換HRNet中的基礎(chǔ)模塊,從而降低網(wǎng)絡(luò)模型參數(shù)量。Yu等[83]提出了一個(gè)人體骨骼關(guān)鍵點(diǎn)檢測的有效高分辨率網(wǎng)絡(luò)LiteHRNet。首先對HRNet進(jìn)行了改進(jìn),將Shuffle Block與HRNet進(jìn)行了簡單融合,采用Shuffle Block替換HRNet中的第二個(gè)3×3的卷積,并替換網(wǎng)絡(luò)中所有的殘差模塊,提出了一個(gè)Naive Lite-HRNet模型。然后,因?yàn)镹aive Lite-HRNet中存在大量的1×1卷積操作成為計(jì)算瓶頸,于是引入了一個(gè)輕量級的單元-有條件的通道加權(quán)(conditional channel weighting),用來替換shuffle block中的1×1點(diǎn)卷積,信道加權(quán)的復(fù)雜度與信道數(shù)成線性關(guān)系,并且低于1×1逐點(diǎn)卷積的時(shí)間復(fù)雜度,此網(wǎng)絡(luò)模型命名為Lite-HRNet。
注意力機(jī)制目前被廣泛應(yīng)用于圖像分類,目標(biāo)識別和自然語言處理等方面,后來注意力機(jī)制被引入人體骨骼關(guān)鍵點(diǎn)檢測[84]。注意力機(jī)制在人體骨骼關(guān)鍵點(diǎn)檢測中取得了不錯(cuò)的效果,但計(jì)算成本高。Hu等[85]通對注意力機(jī)制近一步改進(jìn),提出了SENet(squeeze-and-excitation)。SENet通過對特征通道間依賴關(guān)系進(jìn)行建模,對每個(gè)通道的重要性進(jìn)行預(yù)測,按照通道的重要程度提升重要的特征通道抑制不重要的通道特征[86]。Ren等[87]提出了一種快速輕巧的人體骨骼關(guān)鍵點(diǎn)檢測方法,在保持精準(zhǔn)性的前期下并花費(fèi)較小的成本。該方法包括兩部分:用于人體姿態(tài)估計(jì)的快速輕量級網(wǎng)絡(luò)(fast lightweight pose network,F(xiàn)LPN)和用于降低計(jì)算量的新型輕量級模塊。輕量級模塊引入了結(jié)構(gòu)相似性度量(structural similarity measurement,SSIM)和注意力機(jī)制,其中SSIM方法來精煉適當(dāng)?shù)墓逃刑卣鲌D比例,以減少模塊的尺寸并保持 高精度。郭欣等[88]為了在嵌入式平臺(tái)通過提取人體骨骼關(guān)鍵點(diǎn)對跌倒行為進(jìn)行實(shí)時(shí)檢測,設(shè)計(jì)了一個(gè)帶有注意力機(jī)制的輕量級基本模塊,用來搭建特征提取網(wǎng)絡(luò)?;灸K包含了深度可分離卷積、線性瓶頸逆殘差結(jié)構(gòu)和注意力機(jī)制。強(qiáng)保華等[89]提出了一種基于CPMs和SqueezeNet的單人人體骨骼關(guān)鍵點(diǎn)檢測模型,首先,由于CPMs模型訓(xùn)練時(shí)間長、檢測速度慢,CPMS-Stage4減少了兩個(gè)Stage以縮短訓(xùn)練時(shí)間、提高檢測速度,這樣做帶來的問題就是檢測的準(zhǔn)確率降低。然后,針對CPMS-Stage4存在的問題,提出了SqueezeNet15-CPMs-Stage4模型。該模型將SqueezeNet的前15層Fire8替換Stage1中一個(gè)卷積池化層,同時(shí)在每個(gè)Stage中添加了兩個(gè)卷積層。Stage1中的Fire8和五層卷積提取的特征作為后面每個(gè)Stage的輸入。改進(jìn)后模型雖然增加了網(wǎng)絡(luò)的深度,但是大大縮減了訓(xùn)練時(shí)間,提高了檢測速度。
堆疊沙漏網(wǎng)絡(luò)常作為人體骨骼關(guān)鍵點(diǎn)檢測網(wǎng)絡(luò)的骨干網(wǎng)絡(luò),但是由于沙漏堆疊網(wǎng)絡(luò)存在參數(shù)量大和需要較高的計(jì)算能力。因此,Seung-Taek等[90]提出了人體骨骼關(guān)鍵點(diǎn)檢測的輕量化堆疊沙漏網(wǎng)絡(luò),該網(wǎng)絡(luò)在編碼器的前端使用了額外的堆棧間跳躍連接,通過在下一個(gè)堆棧中反映編碼器提取的相對較低級別的特征。該網(wǎng)絡(luò)結(jié)構(gòu)加入了跳躍連接,用來提高網(wǎng)絡(luò)的性能,同時(shí)保持網(wǎng)絡(luò)中的參數(shù)量。另外,提出了一個(gè)用于增大卷積感受野的殘差模塊Multidilated Light殘差塊,通過使用擴(kuò)張卷積增大感受野,Multidilated Light殘差塊結(jié)構(gòu)如圖12[90]所示。受ResNet和SqueezeNet啟發(fā),Zhao等[91]提出了一種多分支HybridBlock,設(shè)計(jì)了一個(gè)精簡版沙漏模塊,目的是用更少的參數(shù)量生成豐富的特征信息,減少參數(shù)量。HybridBlock使用不同擴(kuò)張率的卷積構(gòu)建多條上下文路徑,其結(jié)構(gòu)如圖13[91]所示,其中Squeez卷積層使用1×1的卷積核,來減少特征圖中的通道數(shù),expand卷積層使用1×1和3×3的卷積核,以及經(jīng)過1×1卷積的短連接,用來匹配輸出維度。
D為擴(kuò)張率;->表示通道數(shù)變化
K為卷積核數(shù)量
根據(jù)SimpleBaseline的設(shè)計(jì)理念,提出了一個(gè)輕量級人體骨骼關(guān)鍵點(diǎn)檢測網(wǎng)絡(luò)(lightweight pose network,LPN)[92],將下采樣中的標(biāo)準(zhǔn)卷積替換成輕量級Bottleneck block,上采樣中使用一組轉(zhuǎn)置卷積和一個(gè)1×1的卷積層替換每個(gè)轉(zhuǎn)置卷積。最終實(shí)驗(yàn)和SimpleBaseline相比,在模型參數(shù)大大減少的情況下性能只下降了一點(diǎn)點(diǎn)。Simple Baseline在人體骨骼關(guān)鍵點(diǎn)檢測中取得了出色的性能,但是網(wǎng)絡(luò)具有大量參數(shù)和計(jì)算。為了減少計(jì)算成本,Zhong等[93]提出了一種低計(jì)算成本的深度監(jiān)督金字塔網(wǎng)絡(luò)(deep supervision pyramid network,DSPNet)。該網(wǎng)絡(luò)使用輕量級上采樣單元(lightweight up-sampling unit,LUSU)代替Simple Baseline中的轉(zhuǎn)置卷積,LUSU單元集成了可分離轉(zhuǎn)置卷積、channel-wise attention和輕量級自注意力機(jī)制,有效降低了參數(shù)量。Zhang等[94]利用深度可分離卷積和注意力機(jī)制設(shè)計(jì)了一個(gè)輕量級瓶頸塊,并在此基礎(chǔ)上提出了一個(gè)單階段的輕量化網(wǎng)絡(luò)。其網(wǎng)絡(luò)結(jié)構(gòu)與SimpleBaseline相似,都是以ResNet為主干,不同的是下采樣時(shí)使用輕量化瓶頸結(jié)構(gòu)替換主干中的標(biāo)準(zhǔn)瓶頸結(jié)構(gòu)。同時(shí)為了減少參數(shù)的冗余,將反卷積層替換成一組反卷積層和1×1卷積層的組合。
Guan[95]提出了一種針對資源受限的2D人體姿態(tài)估計(jì)算法Pose-ShuffleNet。將OpenPose的特征提取骨干網(wǎng)絡(luò)VGG19替換成由ShuffleNet block組成的多級架構(gòu),且分支網(wǎng)絡(luò)中的7×7卷積可替換成ShuffleNet block,Pose-ShuffleNet網(wǎng)絡(luò)架構(gòu)如圖14[95]所示,其中的B模塊可以是標(biāo)準(zhǔn)卷積模塊也可以替換成ShuffleNet block。
圖14 Pose-ShuffleNet網(wǎng)絡(luò)結(jié)構(gòu)[95]
精確評估人體骨骼關(guān)鍵點(diǎn)檢測的性能是比較困難的,因?yàn)橛泻芏嗵卣骱鸵蛩匦枰紤],所以二維的人體骨骼關(guān)鍵點(diǎn)檢測的評價(jià)指標(biāo)有很多,下面介紹了常用的人體姿態(tài)估計(jì)的評價(jià)指標(biāo)。
(1)正確部位的百分比(percentage of correct parts,PCP):最早用于二維的人體骨骼關(guān)鍵點(diǎn)檢測的評價(jià)指標(biāo)是PCP,用來反映肢體定位的精準(zhǔn)度[96]。如果肢體的兩端與真實(shí)值的端點(diǎn)在某一閾值內(nèi),表示肢體預(yù)測正確。但PCP并沒有廣泛應(yīng)用到后續(xù)的研究當(dāng)中,主要是因?yàn)樗鼤?huì)對短肢體進(jìn)行懲罰。
(2)正確關(guān)鍵點(diǎn)的百分比(percentage of correct keypoints,PCK):PCK被廣泛應(yīng)用于關(guān)鍵點(diǎn)檢測,通過衡量預(yù)測關(guān)鍵點(diǎn)的位置和真實(shí)關(guān)鍵點(diǎn)位置之間的距離來確定檢測的關(guān)鍵點(diǎn)的準(zhǔn)確性[97]。如果距離在閾值范圍內(nèi),則表示檢測到的關(guān)鍵點(diǎn)的位置正確。PCK值越高,模型性能越好。MPII數(shù)據(jù)集中以頭部長度作為歸一化參考,即PCKh,可表示為
(3)
式(3)中:i為關(guān)鍵點(diǎn)編號;di為當(dāng)前檢測第i個(gè)關(guān)鍵點(diǎn)與真實(shí)值中第i個(gè)關(guān)鍵點(diǎn)之間的歐式距離;kLhead為當(dāng)前人的頭部直徑作為尺度因子,其中,k為關(guān)鍵點(diǎn)個(gè)數(shù),Lhead為頭部直徑;δ為克羅內(nèi)克函數(shù);vi為第i個(gè)關(guān)鍵點(diǎn)的可見性。
(3)目標(biāo)關(guān)鍵點(diǎn)相似度(object keypoint similarity,OKS):OKS[98]用于衡量預(yù)測關(guān)節(jié)點(diǎn)與真實(shí)關(guān)節(jié)點(diǎn)的相似度,在目標(biāo)關(guān)節(jié)點(diǎn)檢測中的作用于IOU非常相似,所以O(shè)KS越高,說明預(yù)測的關(guān)節(jié)點(diǎn)與真實(shí)關(guān)節(jié)點(diǎn)之間的重疊度更高。
(4)
式(4)中:p為人體檢測框編號;dpi為測試是檢測關(guān)鍵點(diǎn)位置與數(shù)據(jù)標(biāo)書關(guān)鍵點(diǎn)位置的歐式距離;Sp為人體尺度因子;σi為控制各關(guān)鍵點(diǎn)響應(yīng)衰減程度的超參數(shù);vpi為第p個(gè)人的第i個(gè)關(guān)鍵點(diǎn)的狀態(tài);OKSp為第p個(gè)人的關(guān)鍵點(diǎn)的相似度。
(4)平均準(zhǔn)確度(average precision,AP):AP是基于計(jì)算預(yù)測關(guān)節(jié)點(diǎn)和真實(shí)關(guān)節(jié)點(diǎn)之間的相似度OKS進(jìn)行評估[44],AP的計(jì)算公式為
(5)
式(5)中:T為給定的閾值。
(5)平均精度均值(mean average precision,mAP):mAP[44]是常用的檢測指標(biāo),對所有關(guān)節(jié)點(diǎn)的AP求均值,獲得最終的mAP,其計(jì)算公式為
mAP=mean{AP@s(0.50∶0.05∶0.95)}
(6)
式(6)中:mean為計(jì)算平均數(shù);s為OKS閾值,在給定的s下,AP為每一關(guān)節(jié)點(diǎn)在整個(gè)測試數(shù)據(jù)集上檢測結(jié)果的平均準(zhǔn)確率。
GFLOPs(frame rate, number of weights and giga floating-point operations per second):GFLOPS計(jì)算性能指標(biāo)[99]對人體骨骼關(guān)鍵點(diǎn)檢測也非常重要。幀率表示輸入數(shù)據(jù)的處理速度,一般用每秒幀數(shù)(FPS)或每幅圖像秒數(shù)(s/image)表示。權(quán)重?cái)?shù)和GFLOPs顯示網(wǎng)絡(luò)的效率,主要與網(wǎng)絡(luò)設(shè)計(jì)和具體使用的GPU/CPU有關(guān)。
針對以上輕量化網(wǎng)絡(luò)的人體骨骼關(guān)鍵點(diǎn)檢測方法,在MPII和MSCOCO上,分別以PCK和AP為評價(jià)標(biāo)準(zhǔn)的對比實(shí)驗(yàn)進(jìn)行了總結(jié)。結(jié)合表2、表3和表6的實(shí)驗(yàn)數(shù)據(jù)可知,雖然輕量化網(wǎng)絡(luò)的人體骨骼關(guān)鍵點(diǎn)檢測算法的精準(zhǔn)度與經(jīng)典人體姿態(tài)估計(jì)算法的普遍較低,但輕量化檢測網(wǎng)絡(luò)在MPII和COCO數(shù)據(jù)集上的檢測精度分別達(dá)到了93.4%和77.7%,且模型參數(shù)量和計(jì)算復(fù)雜度比較小,取得了較好的實(shí)驗(yàn)效果,更適部署到嵌入式設(shè)備和移動(dòng)設(shè)備上,進(jìn)行實(shí)時(shí)檢測。
表6 實(shí)驗(yàn)結(jié)果對比
隨著移動(dòng)設(shè)備和嵌入式設(shè)備的廣泛應(yīng)用,關(guān)于輕量化二維的人體骨骼關(guān)鍵點(diǎn)檢測的研究受到越來越多研究者的關(guān)注,且在許多領(lǐng)域進(jìn)行了廣泛研究?;诮陙黻P(guān)于輕量化骨骼關(guān)鍵點(diǎn)檢測的研究,首先介紹了人體骨骼關(guān)鍵點(diǎn)檢測中常用數(shù)據(jù)集、檢測方法和輕量級網(wǎng)絡(luò)模型,然后根據(jù)輕量化神經(jīng)網(wǎng)絡(luò)的方式對檢測方法進(jìn)行了分類和性能對比。最后對當(dāng)前的研究存在的問題和發(fā)展趨勢進(jìn)行了闡述。
(1)數(shù)據(jù)集存在問題:目前關(guān)于人體骨骼關(guān)鍵點(diǎn)檢測研究中常用的數(shù)據(jù)集包括:MPII、COCO、FLIC 和AI Challenge等,這些數(shù)據(jù)集中的人體動(dòng)作主要是一些常規(guī)動(dòng)作,但是隨著人體骨骼關(guān)鍵點(diǎn)檢測的廣泛應(yīng)用,這些數(shù)據(jù)集已經(jīng)無法滿足特定的實(shí)際應(yīng)用場景,比如物流行為檢測,跌倒檢測和安防檢測等。還有目前關(guān)于人體骨骼關(guān)鍵點(diǎn)檢測的方法大多采用有監(jiān)督的學(xué)習(xí)方式,這就要求訓(xùn)練數(shù)據(jù)集包含大量標(biāo)注信息,這不僅費(fèi)人力物力還會(huì)存在一定的局限性,降低模型的檢測精度。所以未來研究者可以對數(shù)據(jù)種類進(jìn)行擴(kuò)充,以適應(yīng)更多特定應(yīng)用場景,還可以采用半監(jiān)督或無監(jiān)督的訓(xùn)練方法,采用少量帶標(biāo)簽數(shù)據(jù)甚至無標(biāo)簽數(shù)據(jù)進(jìn)行訓(xùn)練。
(2)算法檢測存在問題:人體骨骼關(guān)鍵點(diǎn)檢測效果會(huì)受到拍攝角度、光照變化和遮擋情況等的影響,檢測結(jié)果會(huì)出現(xiàn)漏檢、錯(cuò)檢和誤檢的問題,降低關(guān)鍵點(diǎn)的檢測準(zhǔn)確度。其次,目前已有不少關(guān)于輕量化人體骨骼關(guān)鍵點(diǎn)檢測的研究,但大都采用人工設(shè)計(jì)的輕量化網(wǎng)絡(luò),大多只注重降低網(wǎng)絡(luò)的參數(shù)量和檢測實(shí)時(shí)性,沒有對網(wǎng)絡(luò)進(jìn)行進(jìn)一步優(yōu)化。關(guān)于輕量化網(wǎng)絡(luò)的設(shè)計(jì)不僅依賴設(shè)計(jì)者的經(jīng)驗(yàn)還依賴于資源條件。因此充分利用全局和局部信息,同時(shí)加入人體結(jié)構(gòu)約束,以獲得先驗(yàn)知識。同時(shí),排除人體因素的干擾,利用自動(dòng)機(jī)器學(xué)習(xí)技術(shù)學(xué)習(xí)并訓(xùn)練出一個(gè)最優(yōu)的輕量化網(wǎng)絡(luò)將會(huì)是未來的研究方向。