李博涵,許 敏,王 凱,孫 翔,譚守標
(安徽大學 電子信息工程學院, 合肥 230000)
語義分割是目前計算機視覺領域一個非常關鍵的問題.從宏觀上來講,語義分割解決的問題是根據(jù)某種規(guī)則將圖片的每一個像素點分配與其相對應的類別標簽,所以語義分割可以被看作是像素級別的分類任務[1].語義分割能在很多具有挑戰(zhàn)性的視覺任務中應用,比如:遙感測繪、自動駕駛、人機交互、醫(yī)療圖像分割[2]等等.
在傳統(tǒng)語義分割算法中,有閾值分割法、區(qū)域分割法、邊緣分割法、基因編解分割法、小波變換分割法等等[3].傳統(tǒng)語義分割算法對特征的描述能力有限,在場景復雜的情況下難以有良好的表現(xiàn).
自從Alex在2012年的ImageNet比賽上使用卷積神經(jīng)網(wǎng)絡取得了驚人的效果之后,卷積神經(jīng)網(wǎng)絡進入了快速發(fā)展的時期,尤其是在計算機視覺領域,卷積神經(jīng)網(wǎng)絡替代了大部分的傳統(tǒng)機器學習算法.由于其強大的特征學習能力,目前卷積神經(jīng)網(wǎng)絡對于圖片的分類技術已經(jīng)非常成熟,但是將其運用到語義分割中卻是計算機視覺領域一項非常具有挑戰(zhàn)性的任務.2015年,Long等人[4]提出了一種全連接卷積神經(jīng)網(wǎng)絡(Fully Convolutional Network,F(xiàn)CN),該網(wǎng)絡將全連接層用對應尺度的卷積層去替代,然后通過上采樣的方式把特征圖恢復成原始輸入圖片的大小.該算法首次以端到端的形式進行圖像分割,并且在自然場景下取得了較好的效果.由于FCN算法的提出,類FCN算法也被相繼提出.Badrinarayanan等人提出了編解碼網(wǎng)絡SegNet,該網(wǎng)絡由兩部分組成,原始圖片由編碼網(wǎng)絡提取深層語義信息,再由解碼網(wǎng)絡恢復到輸入圖片的分辨率,并輸出相應的分割結果[5].SegNet提出的編碼-解碼思想是目前語義分割領域中最熱門的設計思路之一.Ronneberger 等人提出了一種全新的特征融合方法,即在維度上進行拼接,先對原圖進行多次卷積下采樣,再將底層特征圖上采樣與次底層特征圖進行維度拼接,重復多次后恢復到原始輸入圖像大小,由于該網(wǎng)絡結構在形狀上酷似大寫的字母U,作者命名為Unet[6].Zhao H等人提出的金字塔場景解析網(wǎng)絡,利用不同層次的上下文信息,把全局特征與局部特征加入到預測中,增強了網(wǎng)絡的表現(xiàn)力,在多個數(shù)據(jù)集上驗證了算法的有效性[7].
人體解析作為語義分割的一個子問題,其忽略背景信息,只對目標人體進行精細分割,如圖1上半部分所示,而語義分割則會對圖片中的所有目標進行解析,如圖1下半部分所示[8].
圖1 人體解析與語義分割Fig.1 Human parsing and semantic segmentation
人體解析對于給定一張包含人的圖片,將人按照身體部位以及服飾衣著分割開來,包含的類別一般有人的臉、頭發(fā)、外套、褲子、背包、帽子等等[9].人體解析在諸多領域中都有應用,如智能安防、行人重識別、虛擬穿搭等等.因此,人體解析由于其潛在的廣泛應用,受到了越來越多的關注[10].Gong等人提出了一種自監(jiān)督結構的敏感學習方法用于人體解析,在不需要額外監(jiān)督的前提下,將人體姿勢結構加入到了解析結果中[11].Liang等人提出了一種局部到全局再到局部的框架,從底層提取語義信息,將交叉層的語義信息、全局語義信息、局部超像素語義信息進行融合,取得了state-of-the-art的效果[12].Ruan T等人提出了一種多任務學習來進行人體解析,通過增加邊緣檢測網(wǎng)絡輔助優(yōu)化模型表現(xiàn)[13].
人體解析數(shù)據(jù)集的特點是輸入分辨率較低以及類別多且錯綜復雜.本文提出的結合編解碼網(wǎng)絡的人體解析模型如圖2所示.輸入圖片(a)首先會經(jīng)過編碼網(wǎng)絡即卷積神經(jīng)網(wǎng)絡(b)得到初步的特征圖,針對輸入分辨率低的問題,本文在卷積神經(jīng)網(wǎng)絡下采樣階段選擇了合適的下采樣倍數(shù)以確保在上采樣時能夠保留足夠的語義信息.初步特征圖尺度單一且無法體現(xiàn)各像素、各通道間的權重性.于是本文將初步特征圖經(jīng)過上下文提取網(wǎng)絡(c)后得到多尺度的特征圖,再將該特征圖經(jīng)過雙注意力模塊(d)給像素和通道賦予權重,最終上采樣輸出得到預測結果.
圖2 人體解析模型網(wǎng)絡結構Fig.2 Network structure of human parsing model
在深度學習領域,尤其是在計算機視覺領域,卷積神經(jīng)網(wǎng)絡有著無可替代的重要地位.卷積神經(jīng)網(wǎng)絡是一種端到端的前饋神經(jīng)網(wǎng)絡,由卷積層、池化層以及全連接層構成.近年來,更多的學者采取用1*1的卷積層去代替全連接層,這樣會帶來兩個好處,一個是不會改變圖像的空間結構,第二點是由于全連接層的輸入尺寸是固定的,導致全連接層的參數(shù)個數(shù)由圖像的大小而定,這顯然違背了端到端訓練的思想,而卷積層的輸出尺寸是任意的,是因為卷積核的參數(shù)個數(shù)與輸入圖像的信息無關.
1998年,LeCun首次提出卷積神經(jīng)網(wǎng)絡,即LeNet-5網(wǎng)絡.LeNet-5的設計主要用于手寫數(shù)字識別,且大大促進了手寫數(shù)字識別的商業(yè)化使用.然而在這幾十年間里,卷積神經(jīng)網(wǎng)絡由于技術限制等因素,發(fā)展較為緩慢.2014年,牛津大學視覺幾何組提出了VggNet,其創(chuàng)新性的采用多個小卷積核來代替大卷積核,如一個5*5的卷積核,可以被兩個3*3的卷積核所替代,一個7*7的卷積核可以被三個3*3的卷積核替代,成功構建了16和19層的神經(jīng)網(wǎng)絡.之所以采取小卷積核,是因為在減少參數(shù)量的同時,還增加了層與層之間的非線性變換,使得神經(jīng)網(wǎng)絡對特征的學習更強.同年,Google提出Inception-v1網(wǎng)絡,即GoogLeNet網(wǎng)絡,其主要解決了網(wǎng)絡的無限堆疊導致的過擬合以及計算量增加的問題.但是這些操作從根本上,都沒有解決網(wǎng)絡加深導致梯度彌散的情況,直到2015年何愷明提出的殘差網(wǎng)絡Resnet,其主要思想就是在網(wǎng)絡中增加了直連通道,Resnet在ILSVRC2015比賽上奪得冠軍,且參數(shù)量遠小于VggNet.
此前的網(wǎng)絡結構是將輸入做一個非線性變換,而直連通道的思想則是將當前網(wǎng)絡塊輸出的結果和之前網(wǎng)絡塊的結果直接進行數(shù)值上相加的一個操作,允許保留之前網(wǎng)絡塊的一定比例的輸出[14],如式(1)所示:
Xi=Fi(Xi-1)+Xi-1
(1)
其中,Xi表示第i層的輸出,F(xiàn)表示非線性變換.殘差結構的思想解決了傳統(tǒng)卷積神經(jīng)網(wǎng)絡在信息傳遞的時候導致的信息丟失、梯度消失和梯度爆炸等情況,以至于很深的網(wǎng)絡無法訓練.
Gao[15]等人提出的Densenet的思路和Resnet一致,都是如何復用特征以達到梯度不彌散,其主要區(qū)別在于Densenet建立的連接不只與前一層,而是前面所有層和后面層的連接以及Resnet是將前面層與后面層進行逐像素數(shù)值上的相加,而Densenet采取的是通道的合并,如式(2)所示:
Xi=Fi([X0,X1,…,Xi-1])
(2)
其中,第i層輸入Xi為之前所有層的特征拼接,即[X0,X1,…,Xi-1],F(xiàn)i定義為3個連續(xù)的函數(shù),即Batchnormalization、Relu以及3*3的卷積.如此巧妙的設計使得Densenet在計算量更少的前提下比Resnet擁有更好的效果.
圖3 卷積神經(jīng)網(wǎng)絡提取特征Fig.3 Feature extraction by convolution neural network
本文的特征提取網(wǎng)絡采用的是修改后的Densenet-121,結構如圖3所示.由于人體數(shù)據(jù)集,分辨率相對來說較小,多次下采樣會導致特征圖更加小,損失過多的空間細節(jié),于是本文取消了第3個和第4個Dense Block后的池化層,因此,特征圖的分辨率為輸入圖片的1/8.為了達到端到端的效果,本文取消了網(wǎng)絡的全連接部分.
由于卷積神經(jīng)網(wǎng)絡提取的特征是單一尺度,無法很好的表達上下文信息,而人體數(shù)據(jù)集各類別信息緊密連接,所以針對該情況,特征圖需要同時包含全局特征和局部特征才能夠在上采樣恢復時,在邊緣處更加平滑,更接近真實值.本文借鑒金字塔池化模塊[7]來提取上下文信息,并且針對人體解析數(shù)據(jù)的特殊性,選擇合適的池化方式,使其更符合情形,達到特征增強的目的,如圖4所示.
圖4 上下文提取網(wǎng)絡Fig.4 Context extraction network
對于卷積神經(jīng)網(wǎng)絡提取的特征圖,經(jīng)過平均池化層后得到B*C*1*1,B*C*2*2,B*C*3*3,B*C*6*6這樣四種尺度的特征圖(C代表通道數(shù),與輸入特征圖的通道數(shù)一致).這四種尺度的特征圖會經(jīng)過1*1的卷積,將其通道數(shù)降至原來的1/4,再上采樣至池化之前的寬高,最后與原特征圖進行通道合并.
注意力模塊可以理解為用一個參數(shù)很小的網(wǎng)絡來修正我們的特征圖.本文在上采樣階段引入雙注意力模塊[16],來整合上下文網(wǎng)絡提取的高維特征圖.其中該注意力模塊分為空間注意力模塊和通道注意力模塊,如圖5所示.由于人體數(shù)據(jù)
圖5 雙注意力模塊Fig.5 Dual-attention model
對于特征提取網(wǎng)絡輸出的高維度特征圖,經(jīng)過金字塔上下文提取模塊后,維度進一步提升.而卷積操作只是在一個局部的空間進行操作,無法有效提取通道間的關系[18].因此本文將一個通道的特征編碼成一個向量,將每個通道賦予一個權重,信息豐富的通道賦予高權重增強信息表達,信息匱乏的通道賦予低權重.通道注意力模型如圖5下半部分所示.對于特征圖a′∈RC*H*W經(jīng)過通道壓縮得到query′∈RC*N,其中N=H*W.同樣,a′經(jīng)過通道壓縮并轉置得到key′∈RN*C.query′與key′的矩陣相乘便得到通道與通道之間的相似度map′∈RC*C.該相似度經(jīng)過softmax生成權重與value圖相乘得到權值,與原特征圖相加便得到了通道注意力模型的輸出.最后注意力模塊分別輸出空間注意力的結果、通道注意力的結果以及兩個注意力進行元素求和后的結果.三個分支的輸出分別進行卷積、上采樣后與真實標簽圖進行損失函數(shù)的計算,其公式如式(3)所示:
(3)
本文實驗數(shù)據(jù)集用的是Look Into Person(LIP)公開數(shù)據(jù)集.LIP數(shù)據(jù)集是目前為止,數(shù)量最大的單人人體解析數(shù)據(jù)集,一共包含50462張圖片,20個類別(包括背景類).其中訓練集共有30462張圖片,驗證集和測試集分別為10000張圖片.由于LIP數(shù)據(jù)集規(guī)模龐大,且人體姿勢幅度大,衣飾、背景復雜,所以LIP數(shù)據(jù)集是人體解析任務中最有挑戰(zhàn)性的數(shù)據(jù)集.
本文將從三個指標去評價本文模型的表現(xiàn),即像素精度(PA)、均像素精度(MPA)、均交并比(MIOU).以下公式中k表示類別,p表示像素.
1)像素精度(PA):計算識別正確的像素占所有像素的比例,如式(4)所示:
(4)
2) 均像素精度(MPA):對于每一個類,計算其中識別正確的像素占該類所有像素的比例,最后求所有類的平均,如式(5)所示:
(5)
3)均交并比(MIOU):對于每一個類,計算每個類的交并比(IOU),最后求每個類的平均.均交并比能夠預測像素集和真實像素集之間的比例.均交并比是語義分割領域使用最廣泛的一個評價指標[8],如式(6)所示:
(6)
本實驗的軟件平臺為Ubuntu16.04,硬件平臺為NVIDIA RTX2080Ti顯卡、i7-7700k處理器以及16G內存.網(wǎng)絡訓練采用的是Pytorch1.3框架,本文的特征提取網(wǎng)絡使用ImageNet的預訓練模型進行參數(shù)初始化,在訓練和測試的時候,網(wǎng)絡的輸入縮放到256*256的寬高,Batchsize設定為14,共訓練70個epoch,其中每隔10個epoch學習率衰減至原來的十分之一,圖片經(jīng)過卷積神經(jīng)網(wǎng)絡后的初步特征圖大小為1024*32*32.由于人體數(shù)據(jù)集背景類占比最多,數(shù)據(jù)較稀疏,所以本文選擇Adam優(yōu)化器,其中初始學習率采用默認值0.001,為了加速收斂,本文的損失函數(shù)采用交叉熵損失.
本文在LIP數(shù)據(jù)集上與Segnet、Unet、Deeplabv3+網(wǎng)絡進行對比,為了保證計算結果的可對比性,這三種網(wǎng)絡在訓練時候的數(shù)據(jù)預處理、損失函數(shù)、優(yōu)化器、學習率都與本文方法保持一致.測試階段分別計算其PA,MPA,MIOU三種評價指標,實驗結果如表1所示.
表1 不同方法在LIP數(shù)據(jù)集的結果Table 1 Results of different methods in LIP dataset
從表1中可以看到,本文的方法與其他三種方法有著顯著的提升.像素精度、均像素精度與均交并比都是最優(yōu)的.其中,Deeplabv3+是近年來編解碼網(wǎng)絡中精度最高的網(wǎng)絡之一,本文方法與Deeplabv3+(Resnet101)相比,在像素精度上提升了0.54%,均像素精度上提升了1.98%,均交并比上提升了1.93%.因為均交并比最能夠反映預測圖與真實圖的對比情況,所以均交并比是語義分割領域最為常用和關鍵的指標.本文較Deeplabv3+在MIOU上有1.93%的提升,說明了本文方法在人體解析問題上的有效性.為了更直觀的看到各個網(wǎng)絡的對比,本文將網(wǎng)絡的輸出進行可視化,如圖6所示.
圖6 不同方法的可視化效果Fig.6 Visual effects of different methods
從第一組圖中可以看到,Unet在左手處的分割不連續(xù),Segnet則是出現(xiàn)了大范圍的誤識別且左手處分割混亂,而Deeplabv3+則是將部分右手區(qū)域分割成了左手.從第二組圖中可以看到,Unet網(wǎng)絡易將部分外套類別識別成上衣且左右鞋子分割混亂,Segnet網(wǎng)絡雖然沒有大面積的出現(xiàn)外套識別成上衣的情況,但是在頭部的邊緣分割處不夠細膩且弄反了左右鞋子,而Deeplabv3+則是在整個頭部區(qū)域都分割地十分粗糙.可以看出,本文方法在正確分類的同時,在邊緣分割處也更為細膩.
表2 本文模塊在LIP數(shù)據(jù)集的對比結果Table 2 Comparison results of this module in LIP dataset
為了探究改變下采樣倍數(shù)、上下文提取高維特征網(wǎng)絡以及注意力解碼高維特征網(wǎng)絡的有效性,本文在LIP數(shù)據(jù)集上進行對比實驗,結果如表2所示,其中B代表本文的基礎特征提取網(wǎng)絡Densenet-121,其中32s代表從原圖中下采樣32倍再恢復至原圖,16s代表從原圖中下采樣16倍再恢復至原圖,8s代表從原圖中下采樣8倍再恢復至原圖,P代表使用金字塔上下文提取網(wǎng)絡提取高維度特征,A代表用雙注意力模塊去解碼高維度特征.從表2中,可以看出,對于人體解析問題,采用256*256的輸入分辨率,8、16、32倍下采樣的效果是逐步遞減的.本文在8倍下采樣的基礎上增 加了金字塔池化和雙注意力網(wǎng)絡這樣的解碼網(wǎng)絡后,在像素精度上能夠提升0.55%,均像素精度能夠提升1.25%,均交并比能夠提升1.64%.
表3 各方法的IOU值Table 3 IOU value of each method
為了更加仔細地比較各個網(wǎng)絡在每個類別上的表現(xiàn),本文以MIOU指標為例,展示各個網(wǎng)絡在每個類別的IOU,如表3所示.從表中可以看出,Segnet、Unet對于連衣裙、圍巾類別識別效果較差, Deeplabv3+整體表現(xiàn)較好,但是在圍巾類識別同樣不理想.本文在基準網(wǎng)絡上增加了解碼網(wǎng)絡,最直觀的提升在于左右手臂、左右腳以及左右鞋子類別上.實驗表明,本文方法能夠很好的將各類別之間的相關信息進行提取,高效地融合全局以及局部的特征.
本文提出了一種結合編解碼網(wǎng)絡的人體解析方法,圖片經(jīng)過編碼網(wǎng)絡,即修改后的Densenet-121網(wǎng)絡后輸出特征圖,然后用上下文金字塔加上雙注意力模塊的組合進行解碼輸出預測圖.對比實驗驗證了取消編碼網(wǎng)絡的兩個下采樣模塊和解碼網(wǎng)絡的有效性,并且在目前最大的人體解析數(shù)據(jù)集上進行了測試,均優(yōu)于目前主流的編解碼網(wǎng)絡.