梅迪
(四川大學,四川成都,610227)
全卷積神經網絡(FCN)中已經提出了上采樣(反卷積)的思想,通過此手段可以將最后一個卷積層的特征圖進行放大。不僅能夠使得所有尺寸的輸入圖像得到處理,而且保留了相應的空間信息,能較好地做出語義預測和像素分類。
但在2015 年發表的“A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation”一文中提出的SegNet 對上采樣又有創新。其提出了編碼-解碼結構,對輸入的低分辨率特征圖采用了非線性上采樣處理方式,從而省去了上采樣過程的學習。由此也可以看出,SegNet 網絡的核心就是編碼器-解碼器結構。
首先了解下SegNet 的網絡結構如圖1 所示。

圖1
SegNet 由編碼網絡,解碼網絡后接一個分類層組成。其中,編碼網絡在結構上與深度學習模型VGG16 中的13層卷積層相同,都是由若干個卷積層和池化層堆疊而成。因此就可以用在大數據庫下訓練得到的權重初始化網絡(ImageNet large scale visual recognition challenge)。此外,SegNet 通過丟棄了全連接層來在編碼輸出位置保留高分辨率特征圖,并大幅減少了編碼部分的參數量。
解碼器與編碼器對應,也有13 層,它的作用是將低分辨率的編碼特征圖還原到完整的輸入分辨率上,輸出最后會傳遞給多類別soft-max 分類器,從而用于像素級分類任務,生成像素點在不同類別下的獨立概率。
總的來看,其網絡分為兩部分,左邊是連續卷積層提取特征,通過池化增大感受野,同時圖像變小,該過程即為編碼;右邊是轉置卷積與上采樣,通過轉置卷積使得圖像分類后特征得以重現,上采樣還原到圖像原始尺寸,該過程即為解碼,最后通過Softmax 分類器,輸出不同分類的最大值,得到最終分割圖。
池化實際上是一種形式的降采樣。SegNet 的編碼器在進行最大池化時也存儲了對應的索引位置,而解碼器則使用最大池化的索引進行上采樣。最大池化(Max pooling)作為最常見的非線性池化函數,取得的是劃分開來的局部接受域中值最大的點,相比于保留圖像的背景布局方面的信息,它會更多地保留紋理細節信息。
池化的作用主要有以下三個:(1)增大感受野,即使一個像素對應回原圖的區域大小。(2)平移不變性,池化抽象了區域特征而不關心位置,所以其增加了平移不變性。(3)降低優化難度和參數。
SegNet 模型的上采樣操作中使用了特殊設計的帶池化索引的上采樣,減少因池化操作導致的信息丟失,此外還使用了跳層連接傳遞低層特征,增加特征中包含的信息量。
綜合來看,該模型的最大貢獻是將最大池化指數轉移至解碼器中,改善了分割分辨率。由于Segnet 網絡復制了最大池化指數,因此,這也使得在內存使用上,SegNet 比FCN 更為高效。
SegNet 編碼器中所采用的池化技術顯然令人印象深刻,而在2015 年同年提出的DeepLab 系列所采用的擴展感受野的方式也同樣精妙,并且它還對上采樣的方式做了進一步的改進。“DeepLab:Semantic Image Segmentation with Deep Convolutional Nets,Atrous Convolution,and Fully Connected CRFs”一文中主要強調了基于深度學習語義分割的三大貢獻:(1)使用空洞卷積來進行上采樣來進行密集的預測任務。空洞卷積可以在不增加參數量的基礎上增大filter 的感受野,從而可以得到更多的語義信息。(2)空洞空間金字塔池化結構(ASPP)探索了一種采用多采樣率和有效視野濾波器的輸入卷積特征層,從而以多尺寸來分割目標物體并獲得多尺寸的語義信息。(3)結合DCNN 與概率模型提高物體的檢測邊界。下文將主要闡述DCNN 與ASPP 這兩個核心技術。
1.2 指標檢測方法 檢測并對比兩組血清PTX3、瘦素、雌二醇(E2)、睪酮(T)、LH及FSH與HOMA-IR的相關性。
深度卷積神經網絡相對于神經網絡而言,其優點在于對特征值進行計算而不是對原始值進行計算,可使計算量大幅降低。其大致上分為三層:卷積層,利用卷積核來進行計算以得到特征值,這些特征值將構成一個特征圖;池化層,是一個功能層,是一種對特征圖進行優化的函數;全連接層,基于卷積層和池化層,用于輸出一個結果函數。
文中提到,DCNN 應用于語義分割存在三個挑戰:(1)特征分辨率的降低;(2)對象存在多尺度;(3)由于DCNNs 不變性導致的定位精度下降。并且文章中也依次給出了解決方法:針對第一個挑戰,作者移除DCNNs 最后幾層的max-pooling 并在接下來的幾層中使用upsampling filter 替代。針對第二個挑戰,作者提出了一種就計算而言很高效的方案,即在卷積之前以多種采樣率重新采樣給定特征層,這相當于多個濾波器探索原始圖像獲得互補的視野,從而在多個尺度捕獲對象及其有用的上下文信息。針對第三個挑戰,作者的方法是提出了一個全連接條件隨機場(fcCRFs)來提升模型捕獲細節的能力。
綜合來看,DeepLab 系統具有“快速、精準、簡單”的三大優勢。
另一方面,DeepLab 所提出的空洞卷積替代傳統的方法,相較于稀疏的特征提取,其優勢如圖2 所示。

圖2
將空洞卷積的rate 調大,會使得到的特征圖像更加密集。由于網絡最后的卷積池化層分辨率會減少很多,因此,在隨后的網絡中增加rate=2 的空洞卷積,但這里會大大增加計算量,平衡效率與準確率,在對一個feature map 放大四倍后,進行雙線性插值來還原到原圖分辨率大小。
傳統的方法為了增大感受野的同時不增大運算量,先進行downsampling 將圖像縮小為原先的四分之一,然后采用7×7 的卷積核卷積輸出分數圖,之后再通過upsampling(stride=2)將分數圖還原到原先大小。而采用空洞卷積直接對原圖進行空洞卷積,增大了卷積核的感受野,整合了更多的上下文信息,同時雖然看起來卷積核尺寸變大,但由于空洞卷積的每一個hole 填充的為0,不參與計算,因此運算量不變,沒有下采樣也不會丟失信息,從最終輸出的分數圖來看,空洞卷積具有很大的優勢。
R-CNN 空間金字塔的方法表明任意尺度的區域可以通過對以單一尺度提取的卷積特征進行重采樣來準確而有效地分類。作者采用了一種不同于他們的方案,采用多個不同采樣率的平行空洞卷積層。對每個采樣率提取到的特征在不同的分支中進一步處理后融合從而產生最后的結果。
據此就生成了使用ASPP 的多尺度圖像表示的算法。空洞空間卷積池化金字塔(atrous spatial pyramid pooling(ASPP)),將不同空洞率的空洞卷積通過平行或者級聯堆疊來獲取多尺度的信息,相當于以多個比例捕捉了圖像的上下文。其優勢也相當明顯,即在一定程度上解決了多次池化后損失空間分辨率造成信息丟失的問題。
隨著神經網絡的繼續發展,很快人們就發現重復的下采樣(如池化或帶步長的卷積)操作使得深度卷積神經網絡在原始圖像分辨率上產生了嚴重的損失,而在DeepLab中所提出的空洞卷積作為解決方案之一卻又有耗費大量計算資源的問題。于是,在2017 年發表的“RefineNet:Multi-Path Refinement Networks for High-Resolution Semantic Segmentation”一文中提出了RefineNet,其作為一個生成性(generic)多通道恢復網絡,主要探索了在下采樣過程中可得到的所有信息,從而通過遠距離殘差連接恢復高分辨率估計。這樣一來,獲取高層語義特征的更深的層也可以直接通過從前層得到的詳細特征得到恢復。
RefnieNet 提供一種生成式的方法融合原始高層語義特征和更精細化的低層特征,從而生成更高分辨率的語義特征圖。
在本文標準多通道網絡結構中,作者將預訓練的ResNet(以ImageNet 初始化)按照分辨率分成了4 個模塊,隨后級聯了4 個RefineNet 單元,每個都直接和ResNet 模塊的輸出連在一起。用RefineNet-m 表示連接在ResNet第m 個模塊上的RefineNet 模塊。在具體應用中,每個ResNet 的輸出都通過了一個卷積層來適應維度。
簡要地來分析下RefineNet 模塊的具體結構:每一個RefineNet 模塊都有四部分組成,第一個是殘差卷積單元,用來調整預訓練的權重,其中每條通路都經過兩層級聯的殘差卷積單元;第二個是多分辨率融合單元,通過上采樣將所有特征圖恢復成與輸入相同分辨率,之后實現不同分辨率特征圖的融合;第三部分是殘差池化模塊,用來捕獲上下文關聯數據,其中池化為最大池化,后面跟一層卷積層用來學習適應性權重。后一級的池化層以上一級的輸出為輸入;最后一個是輸出卷積單元,輸入輸出尺寸相同,目的是在softmax 估計之前增加非線性,處理結果用于最終的預測。
殘差連接的思想,是將輸出表述為輸入和輸入的一個非線性變化的線性疊加,其用公式表示為“y=H(x,WH)+X”。通過對殘差這一概念的引入,輸出的變化將會將會更為明顯地展現,因此能更好地考察模型的合理性和可靠性。
針對梯度消散的情況下,殘差是有效的。但普遍認為神經網絡的退化才是難以訓練深層網絡根本原因所在。雖然梯度范數大,但是如果網絡的可用自由度對這些范數的貢獻非常不均衡,也就是每個層中只有少量的隱藏單元對不同的輸入改變它們的激活值,而大部分隱藏單元對不同的輸入都是相同的反應,此時整個權重矩陣的秩不高。并且隨著網絡層數的增加,連乘后使得整個秩變的更低。
殘差連接則強制打破了網絡的對稱性,提升了網絡的表征能力。
RefineNet 中所有組件都遵循了恒等映射思想,采用了殘差連接的設計方式。文中利用基于恒等映射的殘差鏈接能夠直接將梯度從一個模塊傳遞到另一個模塊。這個概念有助于保持干凈的信息通路,使其不被非線性層或元素阻擋。相應的非線性模塊則被放置在主干上。在每個殘差池化模塊上都應用了一個ReLU,這樣做使得網絡對于學習率不敏感。同時還觀察到了這樣做不會影響有效的梯度流。
增大感受野的方法不斷被人們所探索,其目標也往往是獲得更多的語義信息,而在2017 年所發表的“Pyramid Scene Parsing Network”卻著眼于如何聚合上下文的語義信息,文中開創性地使用了金字塔池化層來考慮不同尺寸的全局信息,金字塔池化模塊(PSP)也對聚合背景信息具有很好地效果。
PSP 模塊的精妙毋庸置疑,但我在這部分卻想著重談談PSPNet 在附加損失方面做出的改進,這一優化策略往往被人忽視,卻相當有效而又出人意料的簡單。
相似的現狀還出現在了早在2015 年就發表的論文“U-Net:Convolutional Networks for Biomedical Image Segmentation”上,在神經網絡發展的今天,非研究者總是更多的關注U-Net 的網絡架構、收縮路徑(contracting path)和對稱擴展路徑(symmetric expanding path)的布局,對于使用圖像增強技術來解決小樣本訓練數據不適合使用深度學習方法的問題的熱度卻在慢慢衰退。
因此,本部分將著重闡述PSPNet 的附加損失概念和U-Net 的數據增大方法。
“Pyramid Scene Parsing Network”的作者在Res Net101 的基礎上做了改進,額外的在第四階段添加了一個輔助的loss,額外的附加損失隨同原有的loss 一起傳播,通過使用不同的權重來共同優化參數。后續的實驗也證明了這樣做有利于快速收斂。

圖3 金字塔池化模塊
附加損失(輔助損失)的添加有助于網絡訓練,模型使用一個輔助任務時,模型中參數的梯度的來源除了主任務,還有輔助任務。如果輔助任務是有效的,那么它提供的梯度也是有益的。Auxiliary loss 的引入無疑能更好地訓練網絡層數較多的模型。
相較于PSPNet,U-net 在損失處理方面設置了函數權重,主要側重于處理重疊的邊緣信息,這二者的優劣且不做討論,我們主要關注的是U-net 使用移位、旋轉、變形、灰度值變化等數據增強的方法,這對于之后神經網絡的研究具有更為重大的意義,其中訓練樣本的隨機彈性變形是訓練具有很少標簽的分割網絡的關鍵。文中使用隨機位移矢量在粗糙的3*3 網絡上生成平滑變形,位移從10 像素標準偏差的高斯分布中采樣,逐像素位移,然后使用雙立方插值計算每個像素位移。收縮路徑的漏失層(Drop-out layers)執行進一步的隱式數據增大。
基于以下兩種原因,醫療圖像領域適合使用文中提出的數據增大方法和u-net 網絡結構:一是醫學圖像大都展現人體、細胞中的細節情況,往往特征復雜度較高,邊界存在有不清晰的區域。二是因為 U-net 的下采樣與上采樣之間有同層分辨率級聯,其在解碼器階段能充分結合淺層圖像較為簡單的特征,且通過數據增強得到了充足的樣本數據量,因此對于樣本量小的訓練集也不容易過擬合,往往能取得不錯的效果。
在深度學習引爆了圖像處理領域的革命之前,人們大都采用N-cut,Grab cut 等來進行圖像劃分。而在計算機步入深度學習時代后,通過這些論文文獻的閱讀,我深刻體會到了算法的進步,網絡架構的創新,不同思想的百花齊放。如今,運行代價、內存占用等不斷降低,圖像語義分割的精度不斷提高,對每個像素類別所做出的預測也更為準確,各種不同模型的提出,使得對復雜背景圖像的語義分割更加快速也更加精確。
應用于圖像語義分割的神經網絡發展至今,語義信息的獲取、結果圖像分辨率降低的問題都在逐一得到解決,人們還在不斷追求更少的計算量、更高的分割準確率以及更為方便的數據標注。
目前,圖像語義分割技術在醫學、民用、工業等很多領域都大受歡迎,應用極其廣泛。通過深度學習進行特征提取,FCN等神經網絡結構作為一種技巧來對像素進行有效分類,隨著更優算法的提出、熱點問題的不斷解決,其終將推動社會文明的進步。