朱 鋒,劉其朋
(青島大學(xué)復(fù)雜性科學(xué)研究所,山東 青島 266071)
圖像語義分割是一種視覺場景理解任務(wù),目的是為輸入圖像中的每個(gè)像素點(diǎn)分配類別標(biāo)簽,從而對圖像中的物體進(jìn)行語義層面上的劃分,如某一區(qū)域的像素點(diǎn)屬于車輛、行人、樹木等。語義分割被廣泛應(yīng)用于自動(dòng)駕駛、醫(yī)學(xué)圖像分析等領(lǐng)域[1-2]。圖1展示了語義分割的示例。
圖1 語義分割示例[3]
目前比較流行的語義分割方式大多是以全卷積神經(jīng)網(wǎng)絡(luò)(Fully Convolutional Network, FCN)為基礎(chǔ)構(gòu)造的[4]。FCN的特點(diǎn)是將普通卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)中的全連接層替換為卷積層,從而可以接受任意尺寸的輸入圖像,然后利用轉(zhuǎn)置卷積操作對特征圖進(jìn)行上采樣,得到與原圖大小相同的語義分割圖像?;贔CN的語義分割會(huì)隨著網(wǎng)絡(luò)層次的深入逐漸丟失原圖中的空間結(jié)構(gòu)信息而變?yōu)楠?dú)立的單點(diǎn)像素分類預(yù)測,需要額外添加全局結(jié)構(gòu)約束才能獲得較好的分割效果。比較常用的方式是通過條件隨機(jī)場(CRF)[5]或者馬爾可夫隨機(jī)場(MRF)[6]等捕捉遠(yuǎn)程像素點(diǎn)之間的依賴關(guān)系。
近年來隨著生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)[7]的提出和廣泛應(yīng)用,對抗式的訓(xùn)練模式為語義分割提供了新的解決方案。Luc等人首次將GAN框架引入語義分割任務(wù)中[8]。該框架包括一個(gè)分割網(wǎng)絡(luò)和一個(gè)判別網(wǎng)絡(luò),前者用于完成語義分割任務(wù),后者可以從全局層面評判語義分割的效果,從而為分割過程添加了像素點(diǎn)之間的依賴關(guān)系約束。
相比于物體識別和目標(biāo)檢測問題,語義分割要求的標(biāo)簽是像素級別的,因此人工標(biāo)定訓(xùn)練數(shù)據(jù)集工作量很大。為了緩解這一問題,半監(jiān)督訓(xùn)練方式逐漸引起了人們的關(guān)注。所謂的半監(jiān)督,是指只有部分訓(xùn)練數(shù)據(jù)帶有標(biāo)簽。文獻(xiàn)[9]基于GAN框架設(shè)計(jì)了生成偽標(biāo)簽的半監(jiān)督訓(xùn)練方法,使用完全無標(biāo)簽的訓(xùn)練數(shù)據(jù)改善了語義分割效果。文獻(xiàn)[9]的分割網(wǎng)絡(luò)中采用了空洞卷積,可以在不經(jīng)過池化操作、不損失特征信息的情況下,擴(kuò)大卷積核的感受野,卷積后輸出特征圖包含較大范圍的豐富信息。但是在實(shí)際操作中空洞卷積可能會(huì)導(dǎo)致語義分割的柵格化問題,如圖2所示。
圖2 空洞卷積導(dǎo)致的語義分割柵格化問題
柵格化問題的可能原因是空洞卷積中卷積核插入太多零元素,導(dǎo)致卷積操作結(jié)果取值不連貫。在文獻(xiàn)[9]的基礎(chǔ)上,國內(nèi)已有一些改進(jìn)工作。例如,劉貝貝等人[10]采用了一種編碼器—解碼器分割網(wǎng)絡(luò),可以有效地融合淺層語義信息,優(yōu)化目標(biāo)分割細(xì)節(jié)。張桂梅等人[11]提出了一種學(xué)習(xí)率自適應(yīng)調(diào)節(jié)的基于GAN的語義分割方法,提高了語義分割的精度。潘國峰[12]進(jìn)一步提出了學(xué)習(xí)率和域自適應(yīng)的生成對抗網(wǎng)絡(luò),并用于城市交通場景的分割,分割精度得到提升。本文在文獻(xiàn)[9]的工作基礎(chǔ)上加入了PSPNet(Pyramid Scene Parsing Network)[13],構(gòu)造新的語義分割網(wǎng)絡(luò),利用其中的金字塔池化模塊更好地聚合不同尺度上的空間結(jié)構(gòu)信息,減輕了空洞卷積柵格化的問題。在PASCAL VOC 2012數(shù)據(jù)集[14]上通過全監(jiān)督訓(xùn)練證明了改進(jìn)網(wǎng)絡(luò)語義分割效果的提升。同時(shí),判別網(wǎng)絡(luò)能夠檢測真實(shí)標(biāo)簽與分割圖的空間結(jié)構(gòu)層面的不一致,給出分割結(jié)果中的高可信度區(qū)域,并將其作為偽標(biāo)簽應(yīng)用到半監(jiān)督訓(xùn)練中。與文獻(xiàn)[9]中的方法相比,本文提出的改進(jìn)方法在全監(jiān)督和半監(jiān)督條件下的分割性能都得到了提升。
本文提出的語義分割模型整體框架如圖3所示。模型參照GAN的框架包含兩部分結(jié)構(gòu):分割網(wǎng)絡(luò)和判別網(wǎng)絡(luò)。分割網(wǎng)絡(luò)輸入H×W×3維度的訓(xùn)練圖像,輸出H×W×C維度的分類概率圖,C表示需要分割的類別數(shù)目。具體地,分類概率圖中(i,j,k)位置上的值表示的是原輸入圖像中(i,j)位置上的像素點(diǎn)屬于類別k的概率。判別網(wǎng)絡(luò)中輸入的是來自分割網(wǎng)絡(luò)的分類概率圖或者是與輸入的訓(xùn)練圖像對應(yīng)的經(jīng)過one-hot編碼的真實(shí)標(biāo)簽。不同于傳統(tǒng)GAN中判別網(wǎng)絡(luò)輸出單一的分類概率值,用于語義分割的判別網(wǎng)絡(luò)輸出的是經(jīng)過上采樣得到的H×W×1的置信圖,其中每一個(gè)位置(i,j)對應(yīng)的值為該像素的分類來自真實(shí)標(biāo)簽的概率。在全監(jiān)督訓(xùn)練過程中,分割網(wǎng)絡(luò)優(yōu)化的損失函數(shù)包括兩項(xiàng):分割結(jié)果與真實(shí)標(biāo)簽的交叉熵Lce,以及判別網(wǎng)絡(luò)的判別結(jié)果Ladv;在半監(jiān)督訓(xùn)練過程中,對于未標(biāo)記數(shù)據(jù),將判別網(wǎng)絡(luò)對應(yīng)的高信任度區(qū)域作為偽標(biāo)簽,替換全監(jiān)督訓(xùn)練中的真實(shí)標(biāo)簽,相應(yīng)地用分割結(jié)果與偽標(biāo)簽的交叉熵Lsemi替換全監(jiān)督訓(xùn)練中的交叉熵Lce,再加上判別網(wǎng)絡(luò)的判別結(jié)果Ladv,共同構(gòu)成半監(jiān)督條件下分割網(wǎng)絡(luò)的損失函數(shù)。判別網(wǎng)絡(luò)的訓(xùn)練則比較簡單,只需要使用標(biāo)記數(shù)據(jù)集基于二分類交叉熵?fù)p失函數(shù)LD進(jìn)行全監(jiān)督訓(xùn)練。
圖3 基于GAN的語義分割模型框架圖
本文將PSPNet作為GAN中分割網(wǎng)絡(luò)的基礎(chǔ)框架。文獻(xiàn)[13]中的研究表明,PSPNet中的金字塔池化可以有效保留卷積操作過程中的空間結(jié)構(gòu)信息。本文采用這種結(jié)構(gòu)以期進(jìn)一步提升基于GAN的語義分割效果。另外,考慮到語義分割是一種高密度分類預(yù)測任務(wù),即原圖中每個(gè)像素點(diǎn)都需要進(jìn)行分類,訓(xùn)練過程中對顯卡內(nèi)存要求很高,一般很難進(jìn)行大批量訓(xùn)練,影響了訓(xùn)練速度。借鑒文獻(xiàn)[15]中的解決方案,本文PSPNet中的批量標(biāo)準(zhǔn)化和非線性激活函數(shù)替換為InPlace-ABN(In-Place Activated Batch Normalization)模塊。文獻(xiàn)[15]研究表明,這種替換可以在稍微增加計(jì)算量的情況下減少大約50%的內(nèi)存占用。
PSPNet的結(jié)構(gòu)圖如圖4所示。輸入圖像經(jīng)過多個(gè)卷積層(CNN)處理(包括3個(gè)卷積層、一個(gè)最大池化層和4個(gè)殘差網(wǎng)絡(luò)模塊,并且在第三、四殘差網(wǎng)絡(luò)中使用空洞卷積,擴(kuò)大卷積核的感受野),得到大小為原圖1/8的特征圖,再通過金字塔池化模塊將輸入的特征圖分別進(jìn)行4次池化操作,分別劃分為1、4、9、和36個(gè)子區(qū)域,再對這些子區(qū)域進(jìn)行平均池化,將得到的特征圖經(jīng)上采樣與原特征圖堆疊,融合具有不同分辨率的淺層語義信息,從而優(yōu)化物體分割細(xì)節(jié)。最后運(yùn)用雙線性插值法進(jìn)行上采樣,將特征圖恢復(fù)至原輸入圖像的尺寸。
金字塔池化具體結(jié)構(gòu)如圖5所示,上游網(wǎng)絡(luò)輸出維度為41×41×2 048的特征圖,分別經(jīng)過4次不同輸出尺寸的平均池化,得到4個(gè)特征的尺寸分別為1×1、2×2、3×3和6×6,通道數(shù)保持為2 048,再分別經(jīng)過1×1的卷積調(diào)整通道數(shù)為512,經(jīng)過InPlace-ABN層處理后,再利用雙線性插值法將4個(gè)特征圖的尺寸還原,并將4個(gè)特征圖堆疊后輸出。
圖4 PSPNet與金字塔池化結(jié)構(gòu)示意圖[10]
圖5 金字塔池化模塊具體結(jié)構(gòu)圖
判別網(wǎng)絡(luò)借鑒DCGAN[16]中的判別器結(jié)構(gòu),為了訓(xùn)練過程中損失函數(shù)的穩(wěn)定性,判別網(wǎng)絡(luò)不使用池化操作和批量標(biāo)準(zhǔn)化,激活函數(shù)使用Leaky ReLU,整個(gè)判別網(wǎng)絡(luò)由5個(gè)卷積層組成,此外,為了將特征分辨率恢復(fù)至原輸入圖像的尺寸,使用雙線性插值法進(jìn)行上采樣,最終輸出維度H×W×1的置信圖。
判別網(wǎng)絡(luò)本質(zhì)上是一個(gè)二分類網(wǎng)絡(luò),將輸入數(shù)據(jù)分類為真實(shí)標(biāo)簽或者由分割網(wǎng)絡(luò)產(chǎn)生的分割圖。本文采用與文獻(xiàn)[9]完全相同的判別網(wǎng)絡(luò)。
輸入圖像表示為Xn,維度為H×W×3,分別對應(yīng)圖像的高、寬和RGB三種顏色通道。S(·)表示分割網(wǎng)絡(luò),S(Xn)表示維度為H×W×C的分類概率圖,其中C代表類別數(shù)。D(·)表示全卷積判別網(wǎng)絡(luò),其輸入來自對真實(shí)標(biāo)簽進(jìn)行one-hot編碼得到的Yn或者分割網(wǎng)絡(luò)S(Xn)的分割結(jié)果,輸出為H×W×1的置信圖。在本文中one-hot編碼具體指:當(dāng)(h,w)位置上的像素點(diǎn)Xn(h,w)屬于c類時(shí),Yn(h,w,c)的值為1;反之,值為0。在本文中只使用標(biāo)記數(shù)據(jù)訓(xùn)練判別網(wǎng)絡(luò),在全監(jiān)督和半監(jiān)督實(shí)驗(yàn)中,判別網(wǎng)絡(luò)的損失函數(shù)是相同的。
通過最小化損失函數(shù)LD的方式訓(xùn)練判別網(wǎng)絡(luò),表達(dá)式如式(1)。
(1)
基于上述損失函數(shù)LD可以通過梯度下降方式進(jìn)行判別網(wǎng)絡(luò)的訓(xùn)練。
2.2.1 全監(jiān)督訓(xùn)練
全監(jiān)督訓(xùn)練只使用已標(biāo)注好的數(shù)據(jù)進(jìn)行訓(xùn)練。在固定判別網(wǎng)絡(luò)的情況下,分割網(wǎng)絡(luò)的訓(xùn)練目標(biāo)是最大程度地減少多類交叉熵?fù)p失,同時(shí)增大式(1)中判別網(wǎng)絡(luò)的損失函數(shù),即鼓勵(lì)分割網(wǎng)絡(luò)產(chǎn)生與真實(shí)標(biāo)簽盡量相似的分割結(jié)果,從而欺騙判別網(wǎng)絡(luò)。全監(jiān)督訓(xùn)練通過最小化式(2)的Lseg損失函數(shù)來訓(xùn)練分割網(wǎng)絡(luò):
Lseg=Lce+λadvLadv
(2)
其中,Lce表示多分類交叉熵函數(shù),Ladv表示對抗損失,λadv為可調(diào)權(quán)重參數(shù)?;贕AN的語義分割網(wǎng)絡(luò)將對抗損失加入到分割網(wǎng)絡(luò)的損失函數(shù)中。超參數(shù)λadv用來調(diào)節(jié)交叉熵?fù)p失和對抗損失在損失函數(shù)中的比重,λadv越大,對抗損失權(quán)重越大。
在全監(jiān)督訓(xùn)練條件下,輸入圖像為Xn,給定圖像真實(shí)標(biāo)注對應(yīng)的one-hot編碼為Yn,分割網(wǎng)絡(luò)的預(yù)測結(jié)果為S(Xn),對應(yīng)的多分類交叉熵?fù)p失函數(shù)為
(3)
對抗訓(xùn)練損失函數(shù)為
(4)
在具體實(shí)現(xiàn)時(shí),借鑒文獻(xiàn)[7]中的設(shè)定,用-lbce(D(S(Xn)(h,w)),1)代替式(4)中的lbce(D(S(Xn)(h,w)),0),這一改變可以加快訓(xùn)練速度。
2.2.2 半監(jiān)督訓(xùn)練
在半監(jiān)督訓(xùn)練方式下,前5 000個(gè)epoch只使用標(biāo)注數(shù)據(jù)進(jìn)行全監(jiān)督訓(xùn)練,目的是使分割網(wǎng)絡(luò)具備初步的分割能力,判別網(wǎng)絡(luò)也具備了基本的判斷能力。隨后,使用已標(biāo)注和未標(biāo)注數(shù)據(jù)同時(shí)訓(xùn)練。在全監(jiān)督訓(xùn)練時(shí),已經(jīng)證實(shí)判別網(wǎng)絡(luò)能夠在一定程度上識別分割網(wǎng)絡(luò)生成的分割結(jié)果并生成置信度較高的可信任區(qū)域。這一特性可以被應(yīng)用到半監(jiān)督訓(xùn)練中,將未標(biāo)注數(shù)據(jù)經(jīng)分割網(wǎng)絡(luò)得到的分類概率圖輸入判別網(wǎng)絡(luò),輸出的置信圖經(jīng)過二值化生成偽標(biāo)簽用于自訓(xùn)練。由于偽標(biāo)簽的存在,無論是標(biāo)記數(shù)據(jù)還是未標(biāo)記數(shù)據(jù),都可以計(jì)算出相應(yīng)的分割損失和對抗損失。在更新分割網(wǎng)絡(luò)參數(shù)時(shí),固定判別網(wǎng)絡(luò)參數(shù)不變,對于未標(biāo)記數(shù)據(jù)通過半監(jiān)督訓(xùn)練更新分割網(wǎng)絡(luò)參數(shù),對于有標(biāo)記數(shù)據(jù)通過全監(jiān)督方式更新網(wǎng)絡(luò)參數(shù)。
半監(jiān)督訓(xùn)練的目的是最小化式(5)的損失函數(shù):
Lseg=Lce+λadvLadv+λsemiLsemi
(5)
其中,Lce,Ladv,Lsemi分別代表多分類交叉熵?fù)p失、對抗損失、半監(jiān)督訓(xùn)練的多分類交叉熵?fù)p失。λadv與λsemi為調(diào)節(jié)各項(xiàng)權(quán)重的超參數(shù)。Lce,Ladv與全監(jiān)督情況下表達(dá)式相同。在半監(jiān)督訓(xùn)練時(shí),判別網(wǎng)絡(luò)生成的偽標(biāo)簽有時(shí)誤差較大,乘上超參數(shù)λsemi可以適當(dāng)減小錯(cuò)誤標(biāo)簽的影響。
半監(jiān)督多分類交叉熵?fù)p失函數(shù)為
(6)
構(gòu)造偽標(biāo)簽的過程為:將未標(biāo)記圖像輸入分割網(wǎng)絡(luò),得到該圖片的分類概率圖,然后輸入判別網(wǎng)絡(luò),輸出置信圖。置信圖中每一個(gè)像素位置的值表示該像素正確分類的概率。指示函數(shù)根據(jù)給定的閾值Tsemi將置信圖中的像素值進(jìn)行0、1二值化,生成偽標(biāo)簽。閾值可以用來權(quán)衡偽標(biāo)簽的精確性和規(guī)模。較大的閾值Tsemi可以提高偽標(biāo)簽的正確性,但是被采納的偽標(biāo)簽會(huì)減少。
實(shí)驗(yàn)平臺(tái)為:Intel Core i7-7820@2.9GHz CPU, NVIDIA 1080 GPU,系統(tǒng)內(nèi)存32GB,顯卡內(nèi)存為8 GB,Ubuntu 18.04操作系統(tǒng),使用CUDA 9.0和cudnn7.2深度神經(jīng)網(wǎng)絡(luò)加速庫,PyTorch v0.4深度學(xué)習(xí)框架。
分割網(wǎng)絡(luò)和判別網(wǎng)絡(luò)的學(xué)習(xí)速率以及參數(shù)設(shè)置參考DCGAN等經(jīng)典對抗生成網(wǎng)絡(luò)。由于對抗生成網(wǎng)絡(luò)在訓(xùn)練時(shí)很難平穩(wěn)地優(yōu)化,所以分割網(wǎng)絡(luò)和判別網(wǎng)絡(luò)均使用較小的學(xué)習(xí)速率10-4,并使用Adam優(yōu)化器。另外,借鑒參考文獻(xiàn)[8]和[9]的取值,已標(biāo)記數(shù)據(jù)和未標(biāo)記數(shù)據(jù)的超參數(shù)λadv分別設(shè)置為0.01和0.001,λsemi設(shè)置為0.1,Tsemi=0.25,模型共訓(xùn)練30 000個(gè)epoch。
為了評價(jià)語義分割的效果,參考已有研究工作,采用平均交并比(Mean Intersection Over Union,MIoU)作為度量指標(biāo),其定義為分割結(jié)果和真實(shí)值之間的交集與并集之比。
本文采用標(biāo)準(zhǔn)的語義分割數(shù)據(jù)集PASCAL VOC 2012和文獻(xiàn)[17]提供的帶有額外標(biāo)注的增強(qiáng)PASCAL VOC 2012數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),共包括10 582個(gè)訓(xùn)練圖像和1 449個(gè)驗(yàn)證圖像。訓(xùn)練時(shí)會(huì)對數(shù)據(jù)進(jìn)行隨機(jī)裁剪、水平翻轉(zhuǎn)等預(yù)處理,以增加訓(xùn)練樣本的多樣性,減少過擬合。PASCAL VOC 2012數(shù)據(jù)集包含20個(gè)物體類和1個(gè)背景類。
表1給出了多種語義分割算法在PASCAL VOC 2012驗(yàn)證集上全監(jiān)督訓(xùn)練的效果。直觀的分割效果如圖6所示,結(jié)果證明本文提出的模型不僅能夠提高網(wǎng)絡(luò)的分割效果,還能減輕文獻(xiàn)[9]中由于空洞卷積引起的柵格化問題。實(shí)驗(yàn)證實(shí)了對抗學(xué)習(xí)增強(qiáng)語義分割的可行性,同時(shí)驗(yàn)證了判別模塊能夠識別提取分割結(jié)果中的可信任區(qū)域,為接下來的半監(jiān)督語義分割方法提供理論依據(jù)。
表1 PASCAL VOC2012驗(yàn)證集上全監(jiān)督實(shí)驗(yàn)結(jié)果對比
模型進(jìn)行半監(jiān)督訓(xùn)練時(shí),需要從訓(xùn)練集中分別隨機(jī)抽取1/8、1/4、1/2的訓(xùn)練數(shù)據(jù),這些數(shù)據(jù)參與半監(jiān)督訓(xùn)練時(shí)需要提供人工標(biāo)注,其余數(shù)據(jù)的標(biāo)注采用偽標(biāo)簽。理論上來說,帶有標(biāo)簽的數(shù)據(jù)越多,訓(xùn)練效果越好。實(shí)驗(yàn)表明,本文采用的半監(jiān)督訓(xùn)練方法在該數(shù)據(jù)集上能夠取得更優(yōu)的分割效果,如表2所示。
表2中本文方法和文獻(xiàn)[9]中的方法都分別采用了無對抗和有對抗兩種訓(xùn)練方式。在無對抗條件下,由于無法獲得偽標(biāo)簽,因此訓(xùn)練過程實(shí)際上等同于只采用1/8(或1/4、1/2)有標(biāo)簽數(shù)據(jù)進(jìn)行有監(jiān)督訓(xùn)練。表2中的結(jié)果一方面反映了本文方法相對于文獻(xiàn)[9]方法的優(yōu)越性,另外也反映了對抗訓(xùn)練產(chǎn)生偽標(biāo)簽的價(jià)值所在:即使原本的訓(xùn)練數(shù)據(jù)不帶標(biāo)簽,我們依然可以通過對抗訓(xùn)練的方式獲得偽標(biāo)簽,進(jìn)而在一定程度上提升訓(xùn)練效果。
圖6 全監(jiān)督學(xué)習(xí)分割效果展示
表2 PASCAL VOC 2012驗(yàn)證集上半監(jiān)督實(shí)驗(yàn)結(jié)果對比
圖7給出了用1/8有標(biāo)簽數(shù)據(jù)訓(xùn)練之后在驗(yàn)證集上的分割效果,可以看出本文的半監(jiān)督方法具有更好的分割性能。
圖7 半監(jiān)督學(xué)習(xí)分割效果展示
本文將PSPNet引入基于GAN的語義分割框架中,借助金字塔池化模塊構(gòu)造了分割網(wǎng)絡(luò)。金字塔池化模塊可以有效提取圖像中的空間結(jié)構(gòu)信息,提高了分割的精度。在PASCAL VOC 2012數(shù)據(jù)集上的實(shí)驗(yàn)表明,本文方法獲得的語義分割精度在全監(jiān)督和半監(jiān)督條件下均超過現(xiàn)有的基于GAN的語義分割方法。
在未來工作中,一方面可以構(gòu)造更加高效的分割網(wǎng)絡(luò)和判別網(wǎng)絡(luò),提高基于GAN的語義分割的整體性能;另一方面,可以嘗試采用動(dòng)態(tài)閾值的方式獲得半監(jiān)督訓(xùn)練的偽標(biāo)簽,使其恰當(dāng)?shù)胤从撑袆e網(wǎng)絡(luò)逐步提升的判別性能。