王華鋒 王 琦
(北方工業(yè)大學信息學院,100144,北京)
近年來圖像語義分割(Semantic Segmentation)領域中,研究方法可分為基于區(qū)域的分割方法和基于像素的分割方法. 2017年何凱明提出了基于區(qū)域的分割方法Mask-RCNN網絡,該模型首先提取目標對象的候選區(qū)域,隨后再對區(qū)域內的物體進行分割.[1]雖然這種方法能夠同時完成圖像的檢測與分割兩項任務,但是對候選區(qū)域分割時缺少了全局的語義信息,對小尺度物體進行分割時容易出錯導致分割準確率較低.
在基于像素的分割方法中,Shelhamer等人于2015年提出全卷積網絡 (Fully Convolutional Networks,簡稱FCN),該模型在結構中丟棄了傳統(tǒng)卷積神經網絡中的全連接層,并且在網絡中全部使用卷積層進行處理以實現(xiàn)整張圖像的逐像素理解.[2]FCN網絡通過特征提取后通過直接上采樣的方法恢復圖像尺寸,但由于直接上采樣方法丟失了像素的空間信息,導致該方法的分割效果比較粗糙. 為解決上述FCN中的問題,研究學者提出基于編碼器- 解碼器結構的語義分割模型. 其中,劍橋大學團隊提出了SegNet網絡,該模型利用保存池化中的索引來恢復卷積過程中減少的空間信息.[3]Ronneberger提出U- Net網絡,該模型使用了跳躍連接,攜帶類別信息的高級特征不斷融合攜帶位置信息的低級特征,通過這種方式實現(xiàn)了特征維度的不斷加深.[4]RefineNet對網絡的解碼器部分實施改進,將來自于編碼器的圖像高分辨率特征和來自于RefineNet模塊的低分辨率特征進行融合,將融合后的輸出作為輸入送至下一個解碼結構中,以疊加的方式融合不同階段的特征完成恢復圖像分辨率.[5]編碼器- 解碼器結構模型雖在分割效果上獲得了改善,但以犧牲部分效率為代價.
為了使語義分割模型能夠保留盡量多的有用信息,研究者們提出了兩種策略:一是注意力方法,該方法模擬人類將視線聚焦于突出對象的機制,將特征提取的重點集中在對圖像有突出貢獻的部分. Hu的研究工作中設計了通道注意力模塊,對不同通道卷積中所獲得的特征關系進行了建模,實現(xiàn)了網絡表達能力的目的.[6]Woo提出除了考慮通道維度外還考慮了空間維度,網絡沿著這兩個維度依次推斷各自的注意力映射關系的提高,然后將注意力圖與輸入特征圖矩陣元素相乘以進行自身特征調整.[7]二是融合相鄰像素特征的策略,2015年Yu等人提出“擴張卷積”的概念,通過在卷積操作中注入空洞的方式來增加感受野.[8]此方法由于訓練網絡時減少了圖像像素的壓縮率,產生了密集預測,細化了分割圖像. 但只采用同樣空洞率的卷積核會出現(xiàn)圖像中小物體被大物體吞噬的現(xiàn)象. 為了解決此類問題,2018年Wang提出了采用混合擴張卷積疊加的結構[9],通過疊加不同膨脹率的擴張卷積使小物體也能夠獲得關注. 此類方法將信息的獲取范圍限制為相鄰像素,計算上下文時存在難以區(qū)分不同類別像素的問題,這種缺點在對象具有相似特征時表現(xiàn)得更加明顯.
綜上,目前的文獻及研究中多通過融合相鄰像素之間的信息進行圖像像素的分類判斷,但這些方法僅獲取了相鄰像素之間的聯(lián)系忽略了像素與整體場景的關系,在對目標對象進行分割對象時會對分割的連貫性和像素準確率造成極大的影響. 針對上述問題,本文提出一種基于場景上下文編碼模塊,像素分類與場景信息相結合的解決思路.
針對以往圖像語義分割模型進行圖像分割時其往往忽略了圖像整體信息的問題,本文提出了一種基于場景上下文編碼的多任務網絡,算法流程如圖1所示.
在該結構中,輸入為RGB圖像,CNN對圖像進行特征提取后送入PPM(Pyramid Pooling Moudle)模塊對特征進行多尺度聚合,隨后聚合后的特征作為輸入進入場景上下文編碼模塊進行編碼學習,獲得編碼后的特征,輸出最終的場景分類預測和圖像分割預測.
針對語義分割中缺乏上下文信息這一問題,本模型在特征提取后增加了PPM結構,其層次結構能夠聚合不同區(qū)域上下文信息.[10]如圖2所示.
本模型中,輸入圖像首先通過一個卷積網絡提取圖像特征,為了避免池化過程造成丟失圖像細節(jié)信息,特征提取中采用了融入膨脹卷積的殘差網絡(Residual Net,簡稱ResNet).[11]從而增加卷積核的感受野. 提取后的特征作為金字塔池化模塊的輸入,該特征金字塔模塊融合了1×1、2×2、3×3、6×6這4種不同尺度的特征,每個尺度的特征由一個不同尺度的池化操作獲取. 池化后的特征通過1×1的卷積將特征維度減少為原始維度的1/4,最后將所得4個尺度的金字塔特征通過雙線性插值法進行上采樣恢復到圖像的原始尺寸,將所有特征進行合并,實現(xiàn)了目標的淺層特征與深層特征的融合,得到最后的特征圖.
PPM模塊中雖然融合了多尺度的信息,但多尺度的信息并不等于對圖像的場景語義的理解,粗略的整體全局上下文信息缺乏對物與物之間關系的學習,不足以對場景中的模糊對象進行分類,這導致了難以確定像素屬于哪個類別的問題. 因此,在模型的設計中需將PPM與能夠對特征圖進行場景學習的模塊進行融合.
與其他工作中通過增大感受野和多尺度融合來捕獲上下文信息的方法不同,上下文編碼模塊(Context Encoding Module,簡稱CEM)以編碼的方式將特征統(tǒng)計信息作為圖像場景語義進行捕獲[12],模塊的輸出稱之為上下文語義編碼.
傳統(tǒng)的分類方法的步驟為提取圖像特征、字典學習或聚類獲得特征編碼、使用分類器進行分類. 這樣的方法雖然字典和編碼中攜帶了空間域信息,但局限在于其只有前向過程缺少反饋過程,無法對提取的特征和獲得的特征編碼進行迭代尋找最優(yōu)解. 上下文編碼模塊將傳統(tǒng)的分步過程融合成了端到端的模型. 模塊結構如圖3所示.
輸入圖像通過CNN網絡提取特征后,得到了C×H×W形狀的特征映射,特征編碼模塊以該特征映射作為輸入并將其視作一組C維的向量,每個向量中由大小為H×W的特征圖確定了數(shù)量為N的特征描述符. 對N個特征描述符定義一個集合x={x1,x2,…,xn},其中的每個子描述符xn通過字典學習,從提取的特征圖中學習一組語義編碼字典D={d1,d2,…,dk}以及相對應的視覺特征系數(shù)α={α1,α2,…,αk},其中K表示每個子特征描述符中包含的語義詞信息.
將每個特征描述符xn分別與字典學習獲得的語義詞dk計算殘差,將殘差表示為rnk=xn-dk,賦值權重根據(jù)描述符和編碼之間的距離將特征系數(shù)分配給每個殘差. 對加權后的殘差進行歸一化處理,獲得該點像素上針對第K個語義詞的編碼信息enk,其中K=1,2,…,K.
(1)
將特征圖中包含的N個特征的語義編碼信息進行加和,獲得整張圖像相對于第K個語義詞的信息ek. 其中N=1,2,…,N.
(2)
將K個ek進行融合以獲得整張圖像相對于第K個語義詞的全部信息. 模塊選擇采用特征聚合的融合方式保留空間信息,避免了串聯(lián)方法特征被排序從而丟失空間信息. 圖像獲得對第K個語義詞的信息ek后使用ReLU激活函數(shù)進行批歸一化,最終求和得到圖像的語義編碼信息.
(3)
本研究在PPM模塊的基礎上融合了能夠對圖像信息進行編碼的上下文編碼模塊,在多尺度特征提取的基礎上再次對特征圖中的全部信息進行編碼,使得圖像中的每個像素的分類分割更加緊密地與圖像場景信息聯(lián)系起來,并且每幅圖像的特征只包含其場景相關類別.
場景分類是對圖像中的物體進行分析后推斷出合理的物體存在場景,語義分割則是對圖像中所有的物體進行分類后加上對象物體的空間信息,從而分割物體. 這兩個任務看似是對圖像兩種層次的理解,但其實質上都依賴于場景上下文信息. 在場景分類中,網絡學習通常不需要圖像的高級特征,也不需要空間信息,但需要物體中整體的對象信息. 本文認為獲得的場景語義編碼信息不僅僅能改善語義分割結果,并對場景的分類也能有所貢獻,因此本文將網絡設計為多任務結構,該網絡可同時完成對圖像的語義分割及場景分類任務. 具體結構如圖4所示.
本文在CNN提取特征時使用了ResNet作為骨干網絡,ResNet第五階段的最后一個卷積層進行特征提取之后,附加上了金字塔池化模塊融合多尺度的特征. 這種方法對圖像局部區(qū)域的關注度更高,網絡能夠對一定區(qū)域內的圖像特征進行理解判斷. CEM模塊則是對整體圖像的場景信息進行編碼學習,增強圖像場景中相關類別的特征. 本文算法將PPM處理后的特征信息與場景上下文編碼信息進行融合,讓場景的理解可以從兩個層次獲取信息,從而使得輸出結果更準確.
在深度學習中訓練過程是一個通過迭代不斷降低損失值并得到最優(yōu)解的過程. 語義分割中常用的損失函數(shù)是像素的交叉熵損失(Pixel Wise Cross Entropy Loss). 該損失單獨地檢查每個像素點,將類別預測即深度方向的像素矢量與單熱(One-Hot)編碼的目標矢量進行比較. 本文算法同樣采用交叉熵損失函數(shù)作為語義分割的損失函數(shù),對圖像中的對象類別一張樣本圖像的交叉熵損失表示為:
(4)
(5)
在語義分割的訓練過程中,網絡是在真實標簽和原始圖像中孤立的像素點中學習的. 缺少全局信息,限制了神經網絡對語境的理解. 因此本文算法除了使用交叉熵訓練最終分類器的主要分支外,在ResNet的第四階段引入了輔助損失. 輔助損失對大目標和小目標都施以相同的權重,平等地考慮對象,改善小目標對象的分割結果. 兩個函數(shù)使用不同的權重一起進行傳播,共同實現(xiàn)參數(shù)的優(yōu)化.
用lossaux表示輔助損失,則語義分割整體的損失函數(shù)可表示為:
Lseg=lossmain+lossaux
(6)
為了驗證本文所提出的模型對分割結果的精度的提升效果,我們在ADE20K數(shù)據(jù)集上來進行訓練和測試,該數(shù)據(jù)集不僅包括對圖像分割的注釋以外,還包括了場景分類的標簽注釋,相對于其他數(shù)據(jù)集,能更好的檢驗本文所提出的方法. ADE數(shù)據(jù)集為多標簽數(shù)據(jù)庫,即一張圖片可能包括多種對象類別,并且圖像背景、光照條件復雜,對象角度和尺寸都不固定,背景中均存在不同程度的其他干擾物,是一個非常具有挑戰(zhàn)性的圖像分割數(shù)據(jù)庫. 數(shù)據(jù)集包含超過22 000張圖像:其中訓練集約20 000張,驗證集和測試集分別為2 000和3 000張. 物體類別數(shù)量為150,涉及了生活中常見的物體類別,是語義分割領域中一個極具挑戰(zhàn)性的數(shù)據(jù)集. ADE20K數(shù)據(jù)集在場景分類上涉及了1 038個標簽,由于場景類別過多且某些場景類的數(shù)據(jù)量過小,本文在分類任務中將場景標簽重新進行整理為356類.
假定數(shù)據(jù)集中包含u個目標類和一個背景類,將pii表示將第i類正確預測為第i類的像素樣本,pji、pij表示將第i預測錯誤的像素樣本.
像素準確率(Pixel Accuracy,簡稱PiAcc),表示分類正確的像素點和所有的像素點的比例,定義為:
(7)
平均交并比(Mean Intersection over Union,簡稱MIoU),表示分割結果的預測值和真實標簽值之間的交集和并集之比. MIoU是圖像分割中最常用的評價指標,定義為:
(8)
在場景分類任務中,本文使用最佳準確率Top-1和Top- 5作為評價指標對本文的模型進行評價,Top-1是指輸出結果中排名第一的類別與實際真實標簽相符的準確率,Top- 5是指輸出結果中排名前5的類別中包含真實標簽的準確率.
本文使用ADEChallenge20K數(shù)據(jù)集中的20 000張圖像作為樣本,2 000張圖像作為驗證集對分割結果進行驗證. 訓練時首先對圖片進行數(shù)據(jù)增強:隨機裁剪以及對數(shù)據(jù)進行標準化. 通過擴大樣本容量操作,有助于模型準確率的提高及模型泛化能力的提升.
實驗利用Pytorch框架對本文所提出的算法進行訓練,操作系統(tǒng)為Ubuntu16.04. 在8個GPU上進行卷積神經網絡的訓練,每個GPU上的批次設置為4,將網絡的初始學習率設為1e-3,在學習率的調整上本研究使用Poly策略,即:
(9)
訓練中網絡使用隨機梯度下降法進行迭代,動量設置為0.9,總共進行180輪訓練.
在語義分割任務上與4種不同的算法進行了對比,F(xiàn)CN8s對傳統(tǒng)FCN模型進行多尺度融合上采樣,是全卷積網絡中表現(xiàn)最好的一種結構,DilatedNet文章提出使用空洞卷積作為分類網絡的卷積,并通過實驗證明了空洞殘差網絡的性能與普通殘差網絡的性能相比具有優(yōu)越性;SegNet是經典的編解碼結構網絡,算法設計在池化時記錄位置,反池化時進行恢復;各算法在ADE20K測試集上的表現(xiàn)對比如表1所示.
實驗結果顯示,在語義分割任務上,本文算法在PiAcc和MioU兩個指標上達到了82.15%和41.22%,相較于FCN8s等算法有顯著提高. 本實驗還對算法測試的時間進行了記錄,以分析本文方法對算法復雜度的影響,表1中第4列即為訓練完成的模型在對測試集進行分割時,對一張圖像進行處理時所需要的時間. 結果表明,本網絡同時完成場景分類和語義分割兩項任務,但相對于表中列出的經典網絡,本文算法在提高網絡分割的精度,只犧牲了部分速率.
表1 各算法在ADE20K測試集上結果
由于本算法中使用了場景上下文編碼模塊,為了證明了該方法能夠提高網絡的分割性能,本文設置了對比實驗,實驗1設計為輔助損失取值為0.2時只融合了PPM模塊的網絡,實驗2為輔助損失函數(shù)取值為0.2時融合了PPM與CEM模塊的網絡. 最終的指標對比結果如表2所示.
表2 各算法在ADE20K測試集上結果
如圖5所示,實驗2在分割的結果上相對于實驗1有效的去除了干擾,像素連貫性更加流暢,圖像中分割目標對象“臺燈”的分割更完整.
如圖6所示,實驗2在分割的結果上相對于實驗1對場景的理解和分割更加優(yōu)異,分割結果中目標對象“建筑”之間的“天空”被準確地分割了出來.
由于本網絡是多任務網絡,除語義分割還對圖像進行了場景的分類. 2019年由曠世科技所提出的多任務卷積神經網絡,該方法在場景分類任務上與本研究采用同樣的方法將分類標簽從1 038映射到356類. 由于采用相同的數(shù)據(jù)集,且同為多任務網絡,本研究在場景分類任務上與該方法進行對比,表3列出本研究算法與UPerNet在ADE20K數(shù)據(jù)集在場景分類任務上的對比.
本文算法在ADE28類場景分類任務上Top-1獲得了68.84%準確率. 最終結果顯示本網絡結構能夠同時完成圖像的場景分類和像素的分割預測任務. 本文算法語義分割部分可視化結果如圖7所示. 其中第1行表示輸入圖像,第2行為真實值標簽,第3行為本文網絡的分割結果,第4行為本文網絡所輸出的場景分類TOP-1標簽.
表3 各分類算法在不同數(shù)據(jù)集上的表現(xiàn)
通過研究今年來的深度學習圖像語義分割算法,可知場景全局信息對圖像語義分割的重要性. 由于在語義分割中,不同的對象常常在局部之間具有相似性,從而混淆像素點的分類. 為了盡可能減少這種不良影響, 本文從場景全局上下文信息對圖像語義分割的重要性上考慮,在卷積神經網絡中融入學習場景信息的編碼模塊,將圖像的特征進行編碼,突出圖像中與場景相關的類別特征,降低了相似但非相關的類別特征對像素分類的影響. 在ADE20K數(shù)據(jù)上的實驗結果表明:
1)利用圖像的整體編碼信息指導圖像進行語義分割可以提高了分割結果的場景合理性和像素連續(xù)性,提升圖像的分割結果.
2)圖像的語義編碼信息可以作為場景分類任務上的一種有效方法.
3)本文結構為多任務的網絡結構,在效率上有所欠缺. 在未來工作中,如何提高效率是研究的重點.