羅文劼,倪 鵬,張 涵,田學東
河北大學 網(wǎng)絡空間安全與計算機學院,河北 保定 071002
人體解析任務需要對圖像中每個像素進行精確的分類,識別出人體語義部位。目前人體解析已經(jīng)應用在很多領域,例如人體重識[1]、人體行為分析[2]、自動化推薦[3]、姿態(tài)估計[4]等。與傳統(tǒng)的語義分割任務相比,人體解析是一種更加精細化的分割任務,它與姿態(tài)估計任務不同,在姿態(tài)估計任務中需要定位人體的關節(jié)點,而人體解析任務需要定位人體的各個部位。人體解析目前面臨的主要困難有人體多變的姿態(tài)、奇異的服裝和復雜的場景等。早期存在的方法包括結(jié)構圖模型[4]和概率圖模型[5-8]。這些方法雖然有很大的進步,但需要手動地設計特征提取器,處理過程相對復雜。同時還存在識別區(qū)域不連續(xù)、過度識別、錯誤識別等問題,影響識別精度。
卷積神經(jīng)網(wǎng)絡具有強大的特征學習能力,能夠有效地進行端到端的學習。最近基于卷積神經(jīng)網(wǎng)的方法在人體解析任務中獲得了很大的成功,如文獻[9-13],這些方法直接對原始圖像進行卷積操作并輸出解析結(jié)果。但在持續(xù)的池化操作與不斷卷積過程中,特征圖分辨率下降與低維特征的不足,導致圖像局部細節(jié)無法準確識別。在姿態(tài)估計任務中hourglass 網(wǎng)絡[14]采用編碼解碼網(wǎng)絡結(jié)構,通過上下采樣,能夠?qū)W習更加細節(jié)的特征信息,保留更加原始的特征信息。與其類似的還有特征金字塔模型[15]能夠自底向上、自上而下地學習不同尺度特征。在語義分割領域空洞卷積被廣泛使用,通過向卷積核嵌入值為零的參數(shù)來增大感受野,使其能夠?qū)W習更大尺度的特征信息。
基于編碼解碼網(wǎng)絡與空洞卷積的優(yōu)點,本文提出一種雙路網(wǎng)絡MTCnet,該網(wǎng)絡由三個子網(wǎng)組成,分別是兩個特征提取子網(wǎng)和一個融合改進子網(wǎng)。其中一個特征提取子網(wǎng)使用hourglass網(wǎng)絡,另一個子網(wǎng)使用空洞卷積網(wǎng)絡,同時設計了融合改進子網(wǎng),其目的是將兩種類型網(wǎng)絡提取的人體語義特征信息進行融合學習,并輸出整合后的結(jié)果。MTCnet通過首尾相連的級聯(lián)方式進行多階段的學習,每個階段學習的結(jié)果會作為下一個階段的輸入,多階段的優(yōu)化學習結(jié)果,最終達到最優(yōu)的輸出結(jié)果。本文堆疊六個MTCnet其整體結(jié)構如圖1所示。中間監(jiān)督的訓練方法在文獻[16]和文獻[14]已經(jīng)得到了很好的應用,該方法能夠有效訓練多階段的網(wǎng)絡模型,在每個階段應用分類器并結(jié)合損失函數(shù)進行學習,可以提升模型的整體表現(xiàn),本文使用這種方法對網(wǎng)絡進行訓練。本文主要工作如下:提出一種可以進行多模塊堆疊多階段預測的人體解析網(wǎng)絡MTCnet。在MTCnet 中加入了一種空洞卷積網(wǎng)絡,并與編碼解碼網(wǎng)絡相結(jié)合進行人體語義特征提取。訓練階段應用中間監(jiān)督方法去訓練網(wǎng)絡模型。
圖1 本文方法的整體結(jié)構圖
從AlexNet[17]在ImageNet圖像分類比賽大放異彩開始,卷積神經(jīng)網(wǎng)絡迅猛發(fā)展。在訓練Alexnet 網(wǎng)絡時引入dropout 方法[18]能夠防止數(shù)據(jù)過擬合,而后VGG[19]網(wǎng)絡增加了網(wǎng)絡的深度,GooleNet[20]不僅深度更深同時也拓展了網(wǎng)絡的寬度,同時使用批量正則化[21]加快收斂。ResNet[22]解決了網(wǎng)絡達到一定深度后,效果下降問題。DenseNet[23]擁有更密集的連接,更好地關注網(wǎng)絡前后多層的特征,減輕了梯度消失問題。
在人體解析方面非卷積神經(jīng)網(wǎng)絡的方法有,文獻[2,5,7]基于條件隨機場的方法進行人體解析,這些方法雖然取得了一些成功,但依然存在多變的人體形態(tài)、奇異的人體著裝帶來的識別錯誤問題。Chen 等人[8]將SVM與CRF 結(jié)合,先執(zhí)行人體姿態(tài)估計,然后執(zhí)行人體解析。文獻[4]使用一種與或圖結(jié)構的框架用人體姿態(tài)估計結(jié)果去指導人體解析,這種與或圖結(jié)構能夠處理一些由于人體姿勢、著裝等原因造成的較大的人體外觀變化。此后基于卷積神經(jīng)網(wǎng)絡的方法具有更高的精確度,能夠應對更復雜的場景。文獻[13]提出將人體解析作為一種活動模板回歸問題,并使用超像素平滑方法去改進解析結(jié)果。Liang 等人[10]基于卷積神經(jīng)網(wǎng)絡的方法提出多尺度上下文模型整合多尺度人體部位特征與語義邊界特征進行人體解析。Liu 等人[24]將卷積網(wǎng)絡與聚類算法相結(jié)合提出了一種卷積神經(jīng)網(wǎng)絡KNN 非參數(shù)模型。文獻[25]將人體解析與姿態(tài)估計任務一起進行操作,并設計了一種轉(zhuǎn)換解析結(jié)果去輔助姿態(tài)估計的網(wǎng)絡。文獻[9]引入了更有挑戰(zhàn)的更多樣性的人體解析數(shù)據(jù)集Look Into Person(LIP)彌補了大數(shù)據(jù)集的缺失。
在其他領域Wei 等人[16]提出多階段預測逐步提升結(jié)果的卷積姿態(tài)機,這種方法在實際應用中具有非常好的魯棒性。文獻[26]使用空洞卷積和一種全連接的CRF 的方法進行語義分割。文獻[27]使用雙分支網(wǎng)絡進行姿態(tài)估計,該方法能夠提取不同的特征進行相互輔助。目前人體解析比較好的方法是將人體解析與其他任務相結(jié)合,相互進行輔助操作如文獻[25,28],如果在只有人體語義部位標注信息的情況下,將無法進行訓練。本文提出的方法可直接進行人體解析操作而不需要其他任務的輔助,減少了網(wǎng)絡的訓練時間,避免了額外的開銷。接下來的部分將會詳解介紹本文設計的網(wǎng)絡模型。
MTCnet 網(wǎng)絡的結(jié)構如圖2。模型的輸入為一張h×w×3 的圖像,在這里h是圖像的高度,w是圖像的寬度,3為通道數(shù)。其目標是輸出人體解析結(jié)果P={pij},其中pij代表第i個像素為第j類。MTCnet 首尾相連可堆疊多個,每個MTCnet相當于一個學習階段,每個階段都會進行分類學習。MTCnet 由三部分組成,一個是編碼解碼網(wǎng)絡用于提取多尺度融合的特征,一個是空洞網(wǎng)絡用于提取更加關注整體的上下文特征,最后是一個融合調(diào)節(jié)網(wǎng)絡用于融合調(diào)節(jié)兩個特征。為了更加關注低維特征,在使用多個MTCnet 時會將每個預測的結(jié)果以及之前輸入的特征相結(jié)合作為下一個階段的輸入。下面將具體介紹各個部分細節(jié)。
圖2 MTCnet結(jié)構圖
編碼解碼網(wǎng)絡使用hourglass網(wǎng)絡,這里做了一些改變,將編碼階段與解碼階段對應的特征相連接而不是之前的直接相加,下采樣和上采樣各進行三次,其結(jié)構如圖3所示。每次下采樣之前會分成上下兩路,上路用于保存當前尺度信息,下路進行下一步的下采樣操作。每次上采樣后會和對應尺度的上路特征圖相連接。為了保證上下兩路特征擁有不同的權重,在每次相連接前對上下兩路進行一次1×1 的卷積操作。每次下采樣之前和上采樣之后都會進行卷積操作,這里的卷積操作使用兩層ResNet網(wǎng)絡來實現(xiàn),下采樣使用平均池化,上采樣使用雙線性插值的方法。其整體表達式為:
其中,ht是第t階段被提取的特征,Gt為第t階段網(wǎng)絡的函數(shù)表達式,It-1為上一個階段輸出特征,為其需要學習的參數(shù)。
圖3 編碼解碼網(wǎng)絡結(jié)構
空洞卷積在語義分割網(wǎng)絡DeepLab 中得到了很好的應用,空洞卷積在不增加學習參數(shù)的情況下可以擴大卷積核,使其能夠增大感受野,學習更大尺度的上下文信息??斩淳W(wǎng)絡以ResNet 網(wǎng)絡模型為基礎,增加了一條空洞卷積分支,結(jié)構如圖4所示。其表達式為:
圖4 空洞網(wǎng)絡基礎層結(jié)構圖
其中,zn和zn+1代表每層的輸入特征和輸出特征,p(zn)為恒等映射,q(zn+1)代表普通卷積操作,k(zn)代表擴張率為2的空洞卷積操作。c()代表連接操作??斩淳W(wǎng)絡一共有七層,每層的通道數(shù)量相同,特征尺寸大小相同。空洞網(wǎng)絡的表達式為:
其中,Jt是第t階段被提取的特征,At()為第t階段網(wǎng)絡的函數(shù)表達式,It-1為上一個階段輸出特征。
融合調(diào)節(jié)網(wǎng)絡結(jié)構如圖5 所示。在得到編碼解碼網(wǎng)絡和空洞網(wǎng)絡輸出的特征后,融合調(diào)節(jié)網(wǎng)絡將提取的兩種特征相連接,進行調(diào)節(jié)融合,并輸出每個階段調(diào)整后的結(jié)果,融合調(diào)節(jié)網(wǎng)絡使用普通的ResNet網(wǎng)絡,擁有三層,其表達式為:
其中,pt為第t階段輸出的總體特征,ht和Jt分別為第t階段編碼解碼網(wǎng)絡特征和空洞網(wǎng)絡提取的特征,為其學習到的參數(shù)。得到輸出pt后,然后使用分類器去預測語義部位概率圖,這里使用1×1的卷積去實現(xiàn)這個分類器。
圖5 融合調(diào)節(jié)網(wǎng)絡結(jié)構圖
在訓練網(wǎng)絡時,每個階段應用像素級別的分類損失函數(shù)即多分類交叉熵損失函數(shù),其表達式為:
其中,Lt為第t階段的交叉熵損失,分別為第i張圖片預測結(jié)果和真實標注結(jié)果。
在每個中間階段,為了更加關注低維特征,保留圖像局部細節(jié),將上一個階段的輸入特征與輸出特征相結(jié)合作為下一個階段的輸入特征。
LIP數(shù)據(jù)集一共包含50 462張圖像。其中30 462張用于訓練的圖片,10 000 張用于測試,10 000 張用于驗證。包括背景在內(nèi)一共有20種用于人體解析的標注信息。該數(shù)據(jù)集從真實場景收集,具有非常高的人體遮擋,多變的外表,尺度不一的分辨率,還有不同的視角和多樣姿態(tài)等。本文使用LIP數(shù)據(jù)集進行對比實驗,來驗證本文方法的有效性。
在訓練階段,輸入網(wǎng)絡的圖像被調(diào)整為相同的大小,這里使用256×256 的圖像大小,同時在-10°到10°之間隨機旋轉(zhuǎn)圖片,在0.8 到1.5 比率之間隨機進行縮放,在-10 px到10 px之間隨機裁剪平移。
本文使用Pytoch 實現(xiàn)MTCnet 網(wǎng)絡,操作系統(tǒng)為Linux,顯卡為Nvidia GTX1080ti。使用標準差為0.001的高斯分布初始化網(wǎng)絡參數(shù)。使用RMSProp算法進行參數(shù)優(yōu)化。初始化學習率為0.000 5。在LIP 數(shù)據(jù)集迭代200 次訓練MTCnet 模型。輸入MTCnet 網(wǎng)絡的特征圖分辨率均為64×64,通道數(shù)為256。在測試階段移除損失函數(shù),在進入網(wǎng)絡之前圖片會被調(diào)整到256×256大小,輸出的結(jié)果會被還原到原始的尺寸。
在LIP 數(shù)據(jù)集上分別計算平均交并比mIoU、像素精度PA、均像素精度MPA 三種人體解析評價指標。在LIP 驗證集的結(jié)果如表1。從表中可以看到MTCnet 相比較于其他模型mIoU達到41.8%,PA達到82.9%,MPA達到了52.1%。比較DeepLab模型PA提高了0.2個百分點,MPA提高了0.5個百分點,mIoU提高了0.2個百分點。
表1 在LIP驗證集下不同方法的結(jié)果 %
圖6展示了不同方法可視化后的解析結(jié)果,SegNet解析結(jié)果出現(xiàn)大范圍的解析區(qū)域不連續(xù),并且識別錯誤與未能識別問題嚴重。SegNet采用編碼解碼的結(jié)構,解碼器將低分辨率特征圖還原為高分辨特征圖,這樣還原出來的特征圖很難保留局部細節(jié)信息。而FCN-8s對整體輪廓有較好的識別效果,但解析結(jié)果相對粗糙,其通過多次pooling,雖然間接增大了接受域,但導致特征圖分辨率下降,特征信息保留不足。DeepLab 方法采用ASPP池化能夠進行多尺度學習,但從解析結(jié)果看,依舊存在解析區(qū)域不連續(xù)、細節(jié)處理不足等問題。從圖6中可以看出本文方法與其他方法相比能有效改善解析區(qū)域不連續(xù)問題,擁有更好的細節(jié)處理能力,解析結(jié)果更接近標注圖像。圖7 展示了不同方法隨epoch 增加時mIoU 的變化情況,從中可以看出本文方法比其他方法收斂更快,精確度更高,并隨著epoch次數(shù)的增加其結(jié)果相對平穩(wěn)。
圖6 不同方法解析結(jié)果可視化
圖7 不同方法mIoU變化情況
在實驗中,MTCnet 堆疊不同數(shù)量的模塊結(jié)果會不同,其結(jié)果如表2。實驗中分別使用2、4、6階段,隨著模塊數(shù)量的增加,結(jié)果也得到提升。在使用2 階段時,mIoU為33.4%,PA為80.3%,MPA 42.2%,在使用4階段時mIoU 為37.7%,PA 為81.6%,MPA 為48.1%,相比較使用2 階段各個結(jié)果都得到提升,尤其mIoU 與MPA 提升特別明顯,分別達到了4.3 個百分點和5.9 個百分點,當使用6 階段時其mIoU 達到41.8%,PA 到達82.9%,MPA達到52.1%。
表2 在LIP驗證集下對比實驗結(jié)果%
此外,由于堆疊數(shù)量的增加會造成額外時間和顯存的開銷,當模塊堆疊超過6 個時,其結(jié)果并沒有得到明顯提升。綜合考慮其最佳結(jié)果為堆疊6個模塊。
為了比較雙路網(wǎng)絡與單路網(wǎng)絡的性能,在實驗中只使用hourglass網(wǎng)絡進行訓練與驗證,其結(jié)果展示在表2,從中可以看到在堆疊2、4、6個不同數(shù)量的模塊時,其結(jié)果均不及使用雙路網(wǎng)絡,說明雙路網(wǎng)絡特征提取能力優(yōu)于單路網(wǎng)絡。
對MTCnet 的解析結(jié)果進行可視化如圖8 所示,第一列為輸入圖像,第二列為圖像真實標注,第三列為4階段預測結(jié)果,第四列為6階段預測結(jié)果。可以看到在不同階段MTCnet 的輸出結(jié)果存在差異,與真實標注圖像對比可以發(fā)現(xiàn)隨著階段數(shù)增加解析結(jié)果得到了改善。
圖8 可視化人體解析結(jié)果
本文提出一種多階段雙路人體解析網(wǎng)絡,該網(wǎng)絡將編碼解碼網(wǎng)絡與空洞卷積網(wǎng)絡相結(jié)合,使用雙路特征提取結(jié)構,能夠融合學習多尺度特征信息,相比單一的特征提取網(wǎng)絡,能夠提取更加豐富的特征信息。不同于一般的方法,本文方法需要進行多階段學習,通過不斷優(yōu)化輸出結(jié)果最終達到最優(yōu)的人體解析結(jié)果,其擁有更高的精準性。通過實驗也驗證了本文方法在特征提取能力和精確性方面擁有更好的效果。