王睿哲 楊永琪 胡龍星
(合肥工業大學 計算機與信息系,安徽 宣城242000)
隨著科學技術的提高,圖像處理在社會中越來越廣泛。圖像處理有很多方向,如圖像識別、目標檢測、語義分割等。隨著深度學習的發展和現代計算機的算力不斷提高,圖像語義分割成為當前熱門課題。
語義分割是讓計算機根據圖中語義進行圖像的分割,其中語義是指對圖像內容和含義的分析與理解。如今語義分割在醫療領域、自動駕駛、GIS、機器人等領域有著巨大作用。如在自動駕駛領域,據摩根大通的研究分析,2019 年至2025 年,中國L1到L5 級的輔助駕駛和自動駕駛市場規模將實現33%的年均增長率,并于2025 年達到約71 億美元。
在語義分割算法中,全卷積網絡(FCN)是深度學習語義分割方向的里程碑。FCN 是一種較簡單輕便的神經網絡,其有兩個明顯的優點:(1) FCN 可接受隨意的圖片尺寸進行訓練與檢測;(2)FCN 可減少CNN 網絡由于大量存儲和計算量的問題。然而本文發現,FCN 由于最后一層采用8 倍上采樣,導致恢復原圖大小過于劇烈,丟失許多圖像信息,從而導致整體精確度不高。該缺陷會在其應用領域導致重大影響,尤其在自動駕駛、醫療等領域更會造成不可估量的嚴重后果。
FCN 在深度學習方向的語義分割具有里程碑式的意義,但因最后上采樣層采樣倍數過大而導致準確度不高。為了解決該問題,本文提出了一種卷積型漸進上采樣FCN 圖像語義分割方法,對FCN 的激活函數以及最后的上采樣層進行改進。將FCN中的relu 激活函數替換為swish 函數,而FCN 網絡結構中最后8 倍上采樣層替換為3 層2 倍上采樣層。本文的主要貢獻如下:(1)提出了一種卷積型漸進上采樣FCN 圖像語義分割方法。本文對FCN 的激活函數以及上采樣層進行改進。將FCN 網絡中的激活函數改進為swish 函數;同時為了防止最后上采樣層8 倍上采樣過于激進的放大尺寸而導致圖像信息缺失,本文將3 個2 倍的上采樣層替代最后的上采樣層以提高FCN 的準確率。(2)在VOC2012 數據集上,我們通過進行實驗充分驗證了本文改進的FCN 網絡的有效性,相比傳統的FCN 算法,本文改進的FCN在評價指標MIOU 提升1%,測試集準確度提升2%。
學者們在20 世紀50 年代開始研究圖像語義分割,傳統的語義分割的方法界定一直比較模糊。傳統方法大致分為三種:閾值法、區域法、邊緣檢測法。閾值法:典型的全局單閾值分割方法是由Prewitt 等人提出的直方圖雙峰法。優點是簡單快速,但是當灰度圖差別不大時,部分邊界信息極易丟失。區域法:Adams R 等人通過類似屬性的像素連接,以形成所需分割的區域。這種方法可以解決不連續的時空間的劣勢,但缺點是會造成圖像的過度分割。邊緣檢測法:Ziou D 等人利用微分算子將圖片的灰度值進行邊緣檢測。適用于低噪聲且不太復雜的圖片。之后由于機器學習的流行,薛志東等提出了基于SVM 的語義分割方法,相比上述方法有了大大的提高,但仍需進行改進。
隨著深度學習卷積網絡的飛速發展,學者們將深度學習算法運用于圖像語義分割并取得了重大突破。如B Hariharan 首次利用DCNN 解決語義分割問題, 提出了通過協同檢測并分割(SDS)的方法,并利用卷積網絡來進行訓練,該方法在當時的圖像分割中已達到了國際領先,但準確率較低。為解決準確率較低問題,Long 等人利用遷移學習將VGG 的分類網絡改成全卷積網絡并加入上采樣層提高了性能,并將該網絡稱為全卷積網絡(FCN),相比于之前算法在一定程度程度上提高了分割的準確率。Duan Jie 等人提出了一種卷積型多尺度融合FCN 的圖像分割方法,與此同時彭鵠等人在航空遙感方向改進了傳統的FCN加入了對編碼器,盡管兩者的模型在準確率上都有進步,但收效甚微。
因為FCN 最后一層上采樣提升維度過于猛烈,導致圖像丟失過多的數據,而且傳統FCN 使用的激活函數并沒有減少梯度消失的問題,與我們發現FCN 準確率不高相吻合,我們提出了新型的方案解決此類問題。
FCN 是Long 等依據已有的VGG 分類網絡結構修改形成的,它是將VGG 中所有的全連接層都變為卷積層。通過與傳統插值方式不同的反卷積進行上采樣,同時在原有的像素區域方法上進行像素與像素之間、端對端的學習,從而實現了圖像的語義分割。FCN 網絡中卷積層十分重要,是進行提取特征的關鍵。卷積示意圖如圖1 所示。

圖1 卷積核示意圖
通過輸入圖像中一個區域的像素加權平均與輸出圖像的對應像素做映射,將圖像進行降維特征提取,提高感知野。通過卷積層的圖片的尺寸為:

D 為原圖片的維度;P 為卷積核的步長;d 為卷積核的維度;A 為像素填充的個數; S 為輸出圖片的維度。
為了增加網絡結構的非線性能力,我們將從卷積層得到的特征圖放入激活函數中。FCN 各層卷積和激活函數計算為:

式中hs是池化窗口的高,ws是池化窗口的寬。
FCN 中的上采樣,利用的是反卷積操作,反卷積是將每個原圖片的像素周圍加入多個空位,從中進行卷積運算,從而將圖片尺寸進行放大的方法。由于池化下采樣導致圖片的尺寸縮小,而我們要得到的目標分割圖片需要和原圖大小相同,所以必須需要上采樣方法。
FCN 因為其端到端的功能減少了預處理的時間,提高了效率,原圖片可以直接轉換為目標圖片,同時可以自我學習調整參數,也是比較輕量級的網絡,應用廣泛。FCN 的網絡框架圖如圖2 所示。
由于傳統的FCN 算法分割圖像的準確率較低。針對該問題本文提出了一種卷積型漸進上采樣FCN 語義分割方法。本文在傳統FCN 基礎上進行了改進,對網絡中的激活函數和上采樣的過程進行了一些的改良。下面,我們將從激活函數和FCN 最后采樣層改進的角度詳細介紹我們的方案。

圖2 傳統FCN 網絡結構圖
傳統的FCN 使用relu 為激活函數,然而relu 激活函數并不能很好的處理梯度消失等問題。隨著深度學習的發展,谷歌團隊提出了一種新激活函數swish。swish 函數受到了LSTM 中gating 的sigmoid 函數啟發,引入了self-gating 機制,swish 函數相比于relu 激活函數有助于防止梯度消失的問題。swish 激活函數如圖3 所示。本文在設計FCN 網絡結構時將原來的relu 激活函數替換為swish 激活函數。
由于傳統FCN 最后一層的上采樣為8 倍上采樣,使圖像的維度驟然升高,導致圖像丟失更多的局部信息,從而導致傳統FCN 擁有較低的準確率。本文針對該問題,提出了漸進上采樣方案,具體實施方案:將最后一層8 倍上采樣層替換為3 個2 倍上采樣層,這樣既可以解決輸出結果的維度問題,又可以減少因迅速提升維度導致丟失的圖像信息。此外,本文的上采樣層并不是傳統的插值上采樣,而是通過反卷積進行上采樣。反卷積層通過下式計算。上采樣的示意圖如圖4 所示。

上式中Si為處理后圖片的大小,Si-1為處理前的圖片大小,k 為卷積核的大小,p 為padding 的大小,stride 為步長大小。

圖4 改進上采樣的網絡示意圖
本文中網絡的訓練過程和結構如圖5 所示。本方案分為前向傳播和反向傳播兩個部分。在前向傳播中,首先卷積層提取特征,池化層進行下采樣。在下采樣前本方案將激活函數改進為swish 函數。最后通過反卷積將特征圖還原為原圖的尺寸。傳統的FCN 方式是最后一層為8 倍上采樣,但是這種方式會造成維度驟然的提升,因此會丟失比較多的圖像信息。基于此問題,本文則將其改為3 個2 倍上采樣層,這樣做可以使圖片尺寸不會陡然提升,讓其漸進的上升,減少圖片信息的損失,獲得更加良好的性能。在反向傳播中,本文利用Adam 優化器進行優化,調整網絡參數。最終通過訓練獲得改進之后的FCN 模型。
本文通過改變激活函數和修改網絡結構層數,提出了一個新的FCN 改進方案-通過將relu 激活函數替換為swish 并進行漸進的上采樣操作,相比傳統FCN 模型評價指標有較為明顯的提升。

圖5 本文網絡結構圖
實 驗 硬 件 環 境 為 :CPU 為 Intel (R)Core (TM)i7-10750H-CPU@2.60GHz, 內存為16GB,利用RTX2080Ti 的GPU 加速,代碼實現實在pytorch 框架實現,pytorch 版本為1.4。實驗數據集為VOC2012 數據集分為20 類,包括背景為21 類,分別如下:
- Person: person
- Animal: bird, cat, cow, dog, horse, sheep
- Vehicle: aeroplane, bicycle, boat,bus, car, motorbike, train
- Indoor: bottle, chair, dining table,potted plant, sofa, tv/monitor
圖片一共有17125 張,圖片的大小不一,同時還有給定好的分割標簽圖像。按照7:3 分出訓練集和測試集,將訓練集也進行7:3 的分割分別為訓練集和驗證集,進行交叉驗證。為了防止訓練與測試出現過擬合現象,增強網絡的魯棒性,我們將圖片進行隨機分配。
我們對訓練中模型設置學習率的變化趨勢,通過指數下降的方法來調整學習率,這種方法可以在訓練中根據訓練速度自動調整學習率,降低震蕩頻率。指數下降調節學習率的公式為

L 為目前學習率;10 為初始學習率;g 為衰減系數,step 為目前迭代次數;speed 為衰減速度。
我們將學習率初值設置為2e-5, 衰減速度設置為1500,batchsize 為6,衰減系數設置為0.80,總的訓練次數設置為500次。優化器選擇Adamoptimizer,通過梯度下降,找到全局最優解。
我們使用雙線性插值的方法初始化卷積層中卷積核的權重參數,求出factor 和center 變量,之后創建網格點,計算后結果就為權重大小。

上述表達式中kerner 為卷積核大小,cog 為一列網點,rog 為一排網點;filt 為權重。
我們采用語義分割中最為主流的三個指標進行檢驗。PA 像素精度(Pixel Accuracy):標記正確的像素在總像素的比例。MPA均像素精度(Mean Pixel Accuracy):計算每個類被正確分類像素數的比例,再求所以類的平均。MIoU 均交并比(Mean Intersection over Union):計算真實值和預測值的交集和并集。
假設:共有k+1 個類,pij表示本屬于類i 但被預測為類j 的像素數量。即pii表示真正的數量,而pij和pji分別解釋為假正和假負。
PA 表達式為:


圖6 本文算法分割效果(a)傳統FCN 分割效果(b)標簽的分割結果(c)原始圖片(d)
MPA 表達式為:

為驗證本方法的優越性,我們將傳統的FCN 和本文的方法進行比較。采用相同數據集和相同參數調整模型的訓練。之后將兩個算法通過相同的測試集分別進行驗證。實驗結果如表1所示。

表1 評價指標定量分析
由表2 可知,本文的改進的FCN 方法,在PA 和MIoU 指標上均有所提高,分別提高2.01%和1.61%,這是因為本文改進了激活函數,減少了梯度消失,并通過將8 倍上采樣替換為3 個2倍上采樣減小了圖像的損失信息。本文的MPA 指標與傳統的FCN 網絡的MPA 僅僅差0.01%,近似相等,由于我們沒有將前幾個卷積層進行多尺度融合導致幾乎沒有變化。
圖6 為訓練500 個迭代次數的效果圖。我們可以明顯的看出本文的算法相比傳統的全卷積語義分割算法有優勢。因為swish 函數會極大的降低梯度消失的風險率并有著很好的泛化能力,同時使用本文的漸進進行上采樣方法會減少通過傳統方法8 倍上采樣所丟失的信息,使分割的效果更好。
綜上所述,本文的方法分割效果優于傳統FCN,這和進行數據評估分析結果不謀而合。而且因為V0C2012 數據集有不同種類和不同形態的物體,所以本文提出的方法也有較強的魯棒性。
本文方案是基于傳統的FCN 進行改良的,因傳統FCN 準確率不高,我們通過將swish 激活函數替換原來激活函數并將原8倍上采樣改為3 個2 倍上采樣的結構改進網絡。通過數據集進行完備的實驗并利用主流的評價指標進行評價分析,證明了本文方法相比傳統FCN 有著明顯的優越性,更高的分割準確度,為圖像語義分割方向提供了新的方法,使語義分割更能廣泛應用于日常生產生活之中。