朱 鋒,劉其朋
(青島大學復雜性科學研究所,山東 青島 266071)
圖像語義分割是一種視覺場景理解任務,目的是為輸入圖像中的每個像素點分配類別標簽,從而對圖像中的物體進行語義層面上的劃分,如某一區域的像素點屬于車輛、行人、樹木等。語義分割被廣泛應用于自動駕駛、醫學圖像分析等領域[1-2]。圖1展示了語義分割的示例。

圖1 語義分割示例[3]
目前比較流行的語義分割方式大多是以全卷積神經網絡(Fully Convolutional Network, FCN)為基礎構造的[4]。FCN的特點是將普通卷積神經網絡(Convolutional Neural Network,CNN)中的全連接層替換為卷積層,從而可以接受任意尺寸的輸入圖像,然后利用轉置卷積操作對特征圖進行上采樣,得到與原圖大小相同的語義分割圖像。基于FCN的語義分割會隨著網絡層次的深入逐漸丟失原圖中的空間結構信息而變為獨立的單點像素分類預測,需要額外添加全局結構約束才能獲得較好的分割效果。比較常用的方式是通過條件隨機場(CRF)[5]或者馬爾可夫隨機場(MRF)[6]等捕捉遠程像素點之間的依賴關系。
近年來隨著生成對抗網絡(Generative Adversarial Networks,GAN)[7]的提出和廣泛應用,對抗式的訓練模式為語義分割提供了新的解決方案。Luc等人首次將GAN框架引入語義分割任務中[8]。該框架包括一個分割網絡和一個判別網絡,前者用于完成語義分割任務,后者可以從全局層面評判語義分割的效果,從而為分割過程添加了像素點之間的依賴關系約束。
相比于物體識別和目標檢測問題,語義分割要求的標簽是像素級別的,因此人工標定訓練數據集工作量很大。為了緩解這一問題,半監督訓練方式逐漸引起了人們的關注。所謂的半監督,是指只有部分訓練數據帶有標簽。文獻[9]基于GAN框架設計了生成偽標簽的半監督訓練方法,使用完全無標簽的訓練數據改善了語義分割效果。文獻[9]的分割網絡中采用了空洞卷積,可以在不經過池化操作、不損失特征信息的情況下,擴大卷積核的感受野,卷積后輸出特征圖包含較大范圍的豐富信息。但是在實際操作中空洞卷積可能會導致語義分割的柵格化問題,如圖2所示。

圖2 空洞卷積導致的語義分割柵格化問題
柵格化問題的可能原因是空洞卷積中卷積核插入太多零元素,導致卷積操作結果取值不連貫。在文獻[9]的基礎上,國內已有一些改進工作。例如,劉貝貝等人[10]采用了一種編碼器—解碼器分割網絡,可以有效地融合淺層語義信息,優化目標分割細節。張桂梅等人[11]提出了一種學習率自適應調節的基于GAN的語義分割方法,提高了語義分割的精度。潘國峰[12]進一步提出了學習率和域自適應的生成對抗網絡,并用于城市交通場景的分割,分割精度得到提升。本文在文獻[9]的工作基礎上加入了PSPNet(Pyramid Scene Parsing Network)[13],構造新的語義分割網絡,利用其中的金字塔池化模塊更好地聚合不同尺度上的空間結構信息,減輕了空洞卷積柵格化的問題。在PASCAL VOC 2012數據集[14]上通過全監督訓練證明了改進網絡語義分割效果的提升。同時,判別網絡能夠檢測真實標簽與分割圖的空間結構層面的不一致,給出分割結果中的高可信度區域,并將其作為偽標簽應用到半監督訓練中。與文獻[9]中的方法相比,本文提出的改進方法在全監督和半監督條件下的分割性能都得到了提升。
本文提出的語義分割模型整體框架如圖3所示。模型參照GAN的框架包含兩部分結構:分割網絡和判別網絡。分割網絡輸入H×W×3維度的訓練圖像,輸出H×W×C維度的分類概率圖,C表示需要分割的類別數目。具體地,分類概率圖中(i,j,k)位置上的值表示的是原輸入圖像中(i,j)位置上的像素點屬于類別k的概率。判別網絡中輸入的是來自分割網絡的分類概率圖或者是與輸入的訓練圖像對應的經過one-hot編碼的真實標簽。不同于傳統GAN中判別網絡輸出單一的分類概率值,用于語義分割的判別網絡輸出的是經過上采樣得到的H×W×1的置信圖,其中每一個位置(i,j)對應的值為該像素的分類來自真實標簽的概率。在全監督訓練過程中,分割網絡優化的損失函數包括兩項:分割結果與真實標簽的交叉熵Lce,以及判別網絡的判別結果Ladv;在半監督訓練過程中,對于未標記數據,將判別網絡對應的高信任度區域作為偽標簽,替換全監督訓練中的真實標簽,相應地用分割結果與偽標簽的交叉熵Lsemi替換全監督訓練中的交叉熵Lce,再加上判別網絡的判別結果Ladv,共同構成半監督條件下分割網絡的損失函數。判別網絡的訓練則比較簡單,只需要使用標記數據集基于二分類交叉熵損失函數LD進行全監督訓練。

圖3 基于GAN的語義分割模型框架圖
本文將PSPNet作為GAN中分割網絡的基礎框架。文獻[13]中的研究表明,PSPNet中的金字塔池化可以有效保留卷積操作過程中的空間結構信息。本文采用這種結構以期進一步提升基于GAN的語義分割效果。另外,考慮到語義分割是一種高密度分類預測任務,即原圖中每個像素點都需要進行分類,訓練過程中對顯卡內存要求很高,一般很難進行大批量訓練,影響了訓練速度。借鑒文獻[15]中的解決方案,本文PSPNet中的批量標準化和非線性激活函數替換為InPlace-ABN(In-Place Activated Batch Normalization)模塊。文獻[15]研究表明,這種替換可以在稍微增加計算量的情況下減少大約50%的內存占用。
PSPNet的結構圖如圖4所示。輸入圖像經過多個卷積層(CNN)處理(包括3個卷積層、一個最大池化層和4個殘差網絡模塊,并且在第三、四殘差網絡中使用空洞卷積,擴大卷積核的感受野),得到大小為原圖1/8的特征圖,再通過金字塔池化模塊將輸入的特征圖分別進行4次池化操作,分別劃分為1、4、9、和36個子區域,再對這些子區域進行平均池化,將得到的特征圖經上采樣與原特征圖堆疊,融合具有不同分辨率的淺層語義信息,從而優化物體分割細節。最后運用雙線性插值法進行上采樣,將特征圖恢復至原輸入圖像的尺寸。
金字塔池化具體結構如圖5所示,上游網絡輸出維度為41×41×2 048的特征圖,分別經過4次不同輸出尺寸的平均池化,得到4個特征的尺寸分別為1×1、2×2、3×3和6×6,通道數保持為2 048,再分別經過1×1的卷積調整通道數為512,經過InPlace-ABN層處理后,再利用雙線性插值法將4個特征圖的尺寸還原,并將4個特征圖堆疊后輸出。

圖4 PSPNet與金字塔池化結構示意圖[10]

圖5 金字塔池化模塊具體結構圖
判別網絡借鑒DCGAN[16]中的判別器結構,為了訓練過程中損失函數的穩定性,判別網絡不使用池化操作和批量標準化,激活函數使用Leaky ReLU,整個判別網絡由5個卷積層組成,此外,為了將特征分辨率恢復至原輸入圖像的尺寸,使用雙線性插值法進行上采樣,最終輸出維度H×W×1的置信圖。
判別網絡本質上是一個二分類網絡,將輸入數據分類為真實標簽或者由分割網絡產生的分割圖。本文采用與文獻[9]完全相同的判別網絡。
輸入圖像表示為Xn,維度為H×W×3,分別對應圖像的高、寬和RGB三種顏色通道。S(·)表示分割網絡,S(Xn)表示維度為H×W×C的分類概率圖,其中C代表類別數。D(·)表示全卷積判別網絡,其輸入來自對真實標簽進行one-hot編碼得到的Yn或者分割網絡S(Xn)的分割結果,輸出為H×W×1的置信圖。在本文中one-hot編碼具體指:當(h,w)位置上的像素點Xn(h,w)屬于c類時,Yn(h,w,c)的值為1;反之,值為0。在本文中只使用標記數據訓練判別網絡,在全監督和半監督實驗中,判別網絡的損失函數是相同的。
通過最小化損失函數LD的方式訓練判別網絡,表達式如式(1)。
(1)

基于上述損失函數LD可以通過梯度下降方式進行判別網絡的訓練。
2.2.1 全監督訓練
全監督訓練只使用已標注好的數據進行訓練。在固定判別網絡的情況下,分割網絡的訓練目標是最大程度地減少多類交叉熵損失,同時增大式(1)中判別網絡的損失函數,即鼓勵分割網絡產生與真實標簽盡量相似的分割結果,從而欺騙判別網絡。全監督訓練通過最小化式(2)的Lseg損失函數來訓練分割網絡:
Lseg=Lce+λadvLadv
(2)
其中,Lce表示多分類交叉熵函數,Ladv表示對抗損失,λadv為可調權重參數。基于GAN的語義分割網絡將對抗損失加入到分割網絡的損失函數中。超參數λadv用來調節交叉熵損失和對抗損失在損失函數中的比重,λadv越大,對抗損失權重越大。
在全監督訓練條件下,輸入圖像為Xn,給定圖像真實標注對應的one-hot編碼為Yn,分割網絡的預測結果為S(Xn),對應的多分類交叉熵損失函數為
(3)
對抗訓練損失函數為
(4)
在具體實現時,借鑒文獻[7]中的設定,用-lbce(D(S(Xn)(h,w)),1)代替式(4)中的lbce(D(S(Xn)(h,w)),0),這一改變可以加快訓練速度。
2.2.2 半監督訓練
在半監督訓練方式下,前5 000個epoch只使用標注數據進行全監督訓練,目的是使分割網絡具備初步的分割能力,判別網絡也具備了基本的判斷能力。隨后,使用已標注和未標注數據同時訓練。在全監督訓練時,已經證實判別網絡能夠在一定程度上識別分割網絡生成的分割結果并生成置信度較高的可信任區域。這一特性可以被應用到半監督訓練中,將未標注數據經分割網絡得到的分類概率圖輸入判別網絡,輸出的置信圖經過二值化生成偽標簽用于自訓練。由于偽標簽的存在,無論是標記數據還是未標記數據,都可以計算出相應的分割損失和對抗損失。在更新分割網絡參數時,固定判別網絡參數不變,對于未標記數據通過半監督訓練更新分割網絡參數,對于有標記數據通過全監督方式更新網絡參數。
半監督訓練的目的是最小化式(5)的損失函數:
Lseg=Lce+λadvLadv+λsemiLsemi
(5)
其中,Lce,Ladv,Lsemi分別代表多分類交叉熵損失、對抗損失、半監督訓練的多分類交叉熵損失。λadv與λsemi為調節各項權重的超參數。Lce,Ladv與全監督情況下表達式相同。在半監督訓練時,判別網絡生成的偽標簽有時誤差較大,乘上超參數λsemi可以適當減小錯誤標簽的影響。
半監督多分類交叉熵損失函數為
(6)

構造偽標簽的過程為:將未標記圖像輸入分割網絡,得到該圖片的分類概率圖,然后輸入判別網絡,輸出置信圖。置信圖中每一個像素位置的值表示該像素正確分類的概率。指示函數根據給定的閾值Tsemi將置信圖中的像素值進行0、1二值化,生成偽標簽。閾值可以用來權衡偽標簽的精確性和規模。較大的閾值Tsemi可以提高偽標簽的正確性,但是被采納的偽標簽會減少。
實驗平臺為:Intel Core i7-7820@2.9GHz CPU, NVIDIA 1080 GPU,系統內存32GB,顯卡內存為8 GB,Ubuntu 18.04操作系統,使用CUDA 9.0和cudnn7.2深度神經網絡加速庫,PyTorch v0.4深度學習框架。
分割網絡和判別網絡的學習速率以及參數設置參考DCGAN等經典對抗生成網絡。由于對抗生成網絡在訓練時很難平穩地優化,所以分割網絡和判別網絡均使用較小的學習速率10-4,并使用Adam優化器。另外,借鑒參考文獻[8]和[9]的取值,已標記數據和未標記數據的超參數λadv分別設置為0.01和0.001,λsemi設置為0.1,Tsemi=0.25,模型共訓練30 000個epoch。
為了評價語義分割的效果,參考已有研究工作,采用平均交并比(Mean Intersection Over Union,MIoU)作為度量指標,其定義為分割結果和真實值之間的交集與并集之比。
本文采用標準的語義分割數據集PASCAL VOC 2012和文獻[17]提供的帶有額外標注的增強PASCAL VOC 2012數據集進行實驗,共包括10 582個訓練圖像和1 449個驗證圖像。訓練時會對數據進行隨機裁剪、水平翻轉等預處理,以增加訓練樣本的多樣性,減少過擬合。PASCAL VOC 2012數據集包含20個物體類和1個背景類。
表1給出了多種語義分割算法在PASCAL VOC 2012驗證集上全監督訓練的效果。直觀的分割效果如圖6所示,結果證明本文提出的模型不僅能夠提高網絡的分割效果,還能減輕文獻[9]中由于空洞卷積引起的柵格化問題。實驗證實了對抗學習增強語義分割的可行性,同時驗證了判別模塊能夠識別提取分割結果中的可信任區域,為接下來的半監督語義分割方法提供理論依據。

表1 PASCAL VOC2012驗證集上全監督實驗結果對比
模型進行半監督訓練時,需要從訓練集中分別隨機抽取1/8、1/4、1/2的訓練數據,這些數據參與半監督訓練時需要提供人工標注,其余數據的標注采用偽標簽。理論上來說,帶有標簽的數據越多,訓練效果越好。實驗表明,本文采用的半監督訓練方法在該數據集上能夠取得更優的分割效果,如表2所示。
表2中本文方法和文獻[9]中的方法都分別采用了無對抗和有對抗兩種訓練方式。在無對抗條件下,由于無法獲得偽標簽,因此訓練過程實際上等同于只采用1/8(或1/4、1/2)有標簽數據進行有監督訓練。表2中的結果一方面反映了本文方法相對于文獻[9]方法的優越性,另外也反映了對抗訓練產生偽標簽的價值所在:即使原本的訓練數據不帶標簽,我們依然可以通過對抗訓練的方式獲得偽標簽,進而在一定程度上提升訓練效果。

圖6 全監督學習分割效果展示

表2 PASCAL VOC 2012驗證集上半監督實驗結果對比
圖7給出了用1/8有標簽數據訓練之后在驗證集上的分割效果,可以看出本文的半監督方法具有更好的分割性能。

圖7 半監督學習分割效果展示
本文將PSPNet引入基于GAN的語義分割框架中,借助金字塔池化模塊構造了分割網絡。金字塔池化模塊可以有效提取圖像中的空間結構信息,提高了分割的精度。在PASCAL VOC 2012數據集上的實驗表明,本文方法獲得的語義分割精度在全監督和半監督條件下均超過現有的基于GAN的語義分割方法。
在未來工作中,一方面可以構造更加高效的分割網絡和判別網絡,提高基于GAN的語義分割的整體性能;另一方面,可以嘗試采用動態閾值的方式獲得半監督訓練的偽標簽,使其恰當地反映判別網絡逐步提升的判別性能。