王睿哲 楊永琪 胡龍星
(合肥工業(yè)大學(xué) 計(jì)算機(jī)與信息系,安徽 宣城242000)
隨著科學(xué)技術(shù)的提高,圖像處理在社會(huì)中越來越廣泛。圖像處理有很多方向,如圖像識(shí)別、目標(biāo)檢測(cè)、語義分割等。隨著深度學(xué)習(xí)的發(fā)展和現(xiàn)代計(jì)算機(jī)的算力不斷提高,圖像語義分割成為當(dāng)前熱門課題。
語義分割是讓計(jì)算機(jī)根據(jù)圖中語義進(jìn)行圖像的分割,其中語義是指對(duì)圖像內(nèi)容和含義的分析與理解。如今語義分割在醫(yī)療領(lǐng)域、自動(dòng)駕駛、GIS、機(jī)器人等領(lǐng)域有著巨大作用。如在自動(dòng)駕駛領(lǐng)域,據(jù)摩根大通的研究分析,2019 年至2025 年,中國L1到L5 級(jí)的輔助駕駛和自動(dòng)駕駛市場(chǎng)規(guī)模將實(shí)現(xiàn)33%的年均增長率,并于2025 年達(dá)到約71 億美元。
在語義分割算法中,全卷積網(wǎng)絡(luò)(FCN)是深度學(xué)習(xí)語義分割方向的里程碑。FCN 是一種較簡(jiǎn)單輕便的神經(jīng)網(wǎng)絡(luò),其有兩個(gè)明顯的優(yōu)點(diǎn):(1) FCN 可接受隨意的圖片尺寸進(jìn)行訓(xùn)練與檢測(cè);(2)FCN 可減少CNN 網(wǎng)絡(luò)由于大量存儲(chǔ)和計(jì)算量的問題。然而本文發(fā)現(xiàn),F(xiàn)CN 由于最后一層采用8 倍上采樣,導(dǎo)致恢復(fù)原圖大小過于劇烈,丟失許多圖像信息,從而導(dǎo)致整體精確度不高。該缺陷會(huì)在其應(yīng)用領(lǐng)域?qū)е轮卮笥绊?,尤其在自?dòng)駕駛、醫(yī)療等領(lǐng)域更會(huì)造成不可估量的嚴(yán)重后果。
FCN 在深度學(xué)習(xí)方向的語義分割具有里程碑式的意義,但因最后上采樣層采樣倍數(shù)過大而導(dǎo)致準(zhǔn)確度不高。為了解決該問題,本文提出了一種卷積型漸進(jìn)上采樣FCN 圖像語義分割方法,對(duì)FCN 的激活函數(shù)以及最后的上采樣層進(jìn)行改進(jìn)。將FCN中的relu 激活函數(shù)替換為swish 函數(shù),而FCN 網(wǎng)絡(luò)結(jié)構(gòu)中最后8 倍上采樣層替換為3 層2 倍上采樣層。本文的主要貢獻(xiàn)如下:(1)提出了一種卷積型漸進(jìn)上采樣FCN 圖像語義分割方法。本文對(duì)FCN 的激活函數(shù)以及上采樣層進(jìn)行改進(jìn)。將FCN 網(wǎng)絡(luò)中的激活函數(shù)改進(jìn)為swish 函數(shù);同時(shí)為了防止最后上采樣層8 倍上采樣過于激進(jìn)的放大尺寸而導(dǎo)致圖像信息缺失,本文將3 個(gè)2 倍的上采樣層替代最后的上采樣層以提高FCN 的準(zhǔn)確率。(2)在VOC2012 數(shù)據(jù)集上,我們通過進(jìn)行實(shí)驗(yàn)充分驗(yàn)證了本文改進(jìn)的FCN 網(wǎng)絡(luò)的有效性,相比傳統(tǒng)的FCN 算法,本文改進(jìn)的FCN在評(píng)價(jià)指標(biāo)MIOU 提升1%,測(cè)試集準(zhǔn)確度提升2%。
學(xué)者們?cè)?0 世紀(jì)50 年代開始研究圖像語義分割,傳統(tǒng)的語義分割的方法界定一直比較模糊。傳統(tǒng)方法大致分為三種:閾值法、區(qū)域法、邊緣檢測(cè)法。閾值法:典型的全局單閾值分割方法是由Prewitt 等人提出的直方圖雙峰法。優(yōu)點(diǎn)是簡(jiǎn)單快速,但是當(dāng)灰度圖差別不大時(shí),部分邊界信息極易丟失。區(qū)域法:Adams R 等人通過類似屬性的像素連接,以形成所需分割的區(qū)域。這種方法可以解決不連續(xù)的時(shí)空間的劣勢(shì),但缺點(diǎn)是會(huì)造成圖像的過度分割。邊緣檢測(cè)法:Ziou D 等人利用微分算子將圖片的灰度值進(jìn)行邊緣檢測(cè)。適用于低噪聲且不太復(fù)雜的圖片。之后由于機(jī)器學(xué)習(xí)的流行,薛志東等提出了基于SVM 的語義分割方法,相比上述方法有了大大的提高,但仍需進(jìn)行改進(jìn)。
隨著深度學(xué)習(xí)卷積網(wǎng)絡(luò)的飛速發(fā)展,學(xué)者們將深度學(xué)習(xí)算法運(yùn)用于圖像語義分割并取得了重大突破。如B Hariharan 首次利用DCNN 解決語義分割問題, 提出了通過協(xié)同檢測(cè)并分割(SDS)的方法,并利用卷積網(wǎng)絡(luò)來進(jìn)行訓(xùn)練,該方法在當(dāng)時(shí)的圖像分割中已達(dá)到了國際領(lǐng)先,但準(zhǔn)確率較低。為解決準(zhǔn)確率較低問題,Long 等人利用遷移學(xué)習(xí)將VGG 的分類網(wǎng)絡(luò)改成全卷積網(wǎng)絡(luò)并加入上采樣層提高了性能,并將該網(wǎng)絡(luò)稱為全卷積網(wǎng)絡(luò)(FCN),相比于之前算法在一定程度程度上提高了分割的準(zhǔn)確率。Duan Jie 等人提出了一種卷積型多尺度融合FCN 的圖像分割方法,與此同時(shí)彭鵠等人在航空遙感方向改進(jìn)了傳統(tǒng)的FCN加入了對(duì)編碼器,盡管兩者的模型在準(zhǔn)確率上都有進(jìn)步,但收效甚微。
因?yàn)镕CN 最后一層上采樣提升維度過于猛烈,導(dǎo)致圖像丟失過多的數(shù)據(jù),而且傳統(tǒng)FCN 使用的激活函數(shù)并沒有減少梯度消失的問題,與我們發(fā)現(xiàn)FCN 準(zhǔn)確率不高相吻合,我們提出了新型的方案解決此類問題。
FCN 是Long 等依據(jù)已有的VGG 分類網(wǎng)絡(luò)結(jié)構(gòu)修改形成的,它是將VGG 中所有的全連接層都變?yōu)榫矸e層。通過與傳統(tǒng)插值方式不同的反卷積進(jìn)行上采樣,同時(shí)在原有的像素區(qū)域方法上進(jìn)行像素與像素之間、端對(duì)端的學(xué)習(xí),從而實(shí)現(xiàn)了圖像的語義分割。FCN 網(wǎng)絡(luò)中卷積層十分重要,是進(jìn)行提取特征的關(guān)鍵。卷積示意圖如圖1 所示。
圖1 卷積核示意圖
通過輸入圖像中一個(gè)區(qū)域的像素加權(quán)平均與輸出圖像的對(duì)應(yīng)像素做映射,將圖像進(jìn)行降維特征提取,提高感知野。通過卷積層的圖片的尺寸為:
D 為原圖片的維度;P 為卷積核的步長;d 為卷積核的維度;A 為像素填充的個(gè)數(shù); S 為輸出圖片的維度。
為了增加網(wǎng)絡(luò)結(jié)構(gòu)的非線性能力,我們將從卷積層得到的特征圖放入激活函數(shù)中。FCN 各層卷積和激活函數(shù)計(jì)算為:
式中hs是池化窗口的高,ws是池化窗口的寬。
FCN 中的上采樣,利用的是反卷積操作,反卷積是將每個(gè)原圖片的像素周圍加入多個(gè)空位,從中進(jìn)行卷積運(yùn)算,從而將圖片尺寸進(jìn)行放大的方法。由于池化下采樣導(dǎo)致圖片的尺寸縮小,而我們要得到的目標(biāo)分割圖片需要和原圖大小相同,所以必須需要上采樣方法。
FCN 因?yàn)槠涠说蕉说墓δ軠p少了預(yù)處理的時(shí)間,提高了效率,原圖片可以直接轉(zhuǎn)換為目標(biāo)圖片,同時(shí)可以自我學(xué)習(xí)調(diào)整參數(shù),也是比較輕量級(jí)的網(wǎng)絡(luò),應(yīng)用廣泛。FCN 的網(wǎng)絡(luò)框架圖如圖2 所示。
由于傳統(tǒng)的FCN 算法分割圖像的準(zhǔn)確率較低。針對(duì)該問題本文提出了一種卷積型漸進(jìn)上采樣FCN 語義分割方法。本文在傳統(tǒng)FCN 基礎(chǔ)上進(jìn)行了改進(jìn),對(duì)網(wǎng)絡(luò)中的激活函數(shù)和上采樣的過程進(jìn)行了一些的改良。下面,我們將從激活函數(shù)和FCN 最后采樣層改進(jìn)的角度詳細(xì)介紹我們的方案。
圖2 傳統(tǒng)FCN 網(wǎng)絡(luò)結(jié)構(gòu)圖
傳統(tǒng)的FCN 使用relu 為激活函數(shù),然而relu 激活函數(shù)并不能很好的處理梯度消失等問題。隨著深度學(xué)習(xí)的發(fā)展,谷歌團(tuán)隊(duì)提出了一種新激活函數(shù)swish。swish 函數(shù)受到了LSTM 中g(shù)ating 的sigmoid 函數(shù)啟發(fā),引入了self-gating 機(jī)制,swish 函數(shù)相比于relu 激活函數(shù)有助于防止梯度消失的問題。swish 激活函數(shù)如圖3 所示。本文在設(shè)計(jì)FCN 網(wǎng)絡(luò)結(jié)構(gòu)時(shí)將原來的relu 激活函數(shù)替換為swish 激活函數(shù)。
由于傳統(tǒng)FCN 最后一層的上采樣為8 倍上采樣,使圖像的維度驟然升高,導(dǎo)致圖像丟失更多的局部信息,從而導(dǎo)致傳統(tǒng)FCN 擁有較低的準(zhǔn)確率。本文針對(duì)該問題,提出了漸進(jìn)上采樣方案,具體實(shí)施方案:將最后一層8 倍上采樣層替換為3 個(gè)2 倍上采樣層,這樣既可以解決輸出結(jié)果的維度問題,又可以減少因迅速提升維度導(dǎo)致丟失的圖像信息。此外,本文的上采樣層并不是傳統(tǒng)的插值上采樣,而是通過反卷積進(jìn)行上采樣。反卷積層通過下式計(jì)算。上采樣的示意圖如圖4 所示。
上式中Si為處理后圖片的大小,Si-1為處理前的圖片大小,k 為卷積核的大小,p 為padding 的大小,stride 為步長大小。
圖4 改進(jìn)上采樣的網(wǎng)絡(luò)示意圖
本文中網(wǎng)絡(luò)的訓(xùn)練過程和結(jié)構(gòu)如圖5 所示。本方案分為前向傳播和反向傳播兩個(gè)部分。在前向傳播中,首先卷積層提取特征,池化層進(jìn)行下采樣。在下采樣前本方案將激活函數(shù)改進(jìn)為swish 函數(shù)。最后通過反卷積將特征圖還原為原圖的尺寸。傳統(tǒng)的FCN 方式是最后一層為8 倍上采樣,但是這種方式會(huì)造成維度驟然的提升,因此會(huì)丟失比較多的圖像信息。基于此問題,本文則將其改為3 個(gè)2 倍上采樣層,這樣做可以使圖片尺寸不會(huì)陡然提升,讓其漸進(jìn)的上升,減少圖片信息的損失,獲得更加良好的性能。在反向傳播中,本文利用Adam 優(yōu)化器進(jìn)行優(yōu)化,調(diào)整網(wǎng)絡(luò)參數(shù)。最終通過訓(xùn)練獲得改進(jìn)之后的FCN 模型。
本文通過改變激活函數(shù)和修改網(wǎng)絡(luò)結(jié)構(gòu)層數(shù),提出了一個(gè)新的FCN 改進(jìn)方案-通過將relu 激活函數(shù)替換為swish 并進(jìn)行漸進(jìn)的上采樣操作,相比傳統(tǒng)FCN 模型評(píng)價(jià)指標(biāo)有較為明顯的提升。
圖5 本文網(wǎng)絡(luò)結(jié)構(gòu)圖
實(shí) 驗(yàn) 硬 件 環(huán) 境 為 :CPU 為 Intel (R)Core (TM)i7-10750H-CPU@2.60GHz, 內(nèi)存為16GB,利用RTX2080Ti 的GPU 加速,代碼實(shí)現(xiàn)實(shí)在pytorch 框架實(shí)現(xiàn),pytorch 版本為1.4。實(shí)驗(yàn)數(shù)據(jù)集為VOC2012 數(shù)據(jù)集分為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 張,圖片的大小不一,同時(shí)還有給定好的分割標(biāo)簽圖像。按照7:3 分出訓(xùn)練集和測(cè)試集,將訓(xùn)練集也進(jìn)行7:3 的分割分別為訓(xùn)練集和驗(yàn)證集,進(jìn)行交叉驗(yàn)證。為了防止訓(xùn)練與測(cè)試出現(xiàn)過擬合現(xiàn)象,增強(qiáng)網(wǎng)絡(luò)的魯棒性,我們將圖片進(jìn)行隨機(jī)分配。
我們對(duì)訓(xùn)練中模型設(shè)置學(xué)習(xí)率的變化趨勢(shì),通過指數(shù)下降的方法來調(diào)整學(xué)習(xí)率,這種方法可以在訓(xùn)練中根據(jù)訓(xùn)練速度自動(dòng)調(diào)整學(xué)習(xí)率,降低震蕩頻率。指數(shù)下降調(diào)節(jié)學(xué)習(xí)率的公式為
L 為目前學(xué)習(xí)率;10 為初始學(xué)習(xí)率;g 為衰減系數(shù),step 為目前迭代次數(shù);speed 為衰減速度。
我們將學(xué)習(xí)率初值設(shè)置為2e-5, 衰減速度設(shè)置為1500,batchsize 為6,衰減系數(shù)設(shè)置為0.80,總的訓(xùn)練次數(shù)設(shè)置為500次。優(yōu)化器選擇Adamoptimizer,通過梯度下降,找到全局最優(yōu)解。
我們使用雙線性插值的方法初始化卷積層中卷積核的權(quán)重參數(shù),求出factor 和center 變量,之后創(chuàng)建網(wǎng)格點(diǎn),計(jì)算后結(jié)果就為權(quán)重大小。
上述表達(dá)式中kerner 為卷積核大小,cog 為一列網(wǎng)點(diǎn),rog 為一排網(wǎng)點(diǎn);filt 為權(quán)重。
我們采用語義分割中最為主流的三個(gè)指標(biāo)進(jìn)行檢驗(yàn)。PA 像素精度(Pixel Accuracy):標(biāo)記正確的像素在總像素的比例。MPA均像素精度(Mean Pixel Accuracy):計(jì)算每個(gè)類被正確分類像素?cái)?shù)的比例,再求所以類的平均。MIoU 均交并比(Mean Intersection over Union):計(jì)算真實(shí)值和預(yù)測(cè)值的交集和并集。
假設(shè):共有k+1 個(gè)類,pij表示本屬于類i 但被預(yù)測(cè)為類j 的像素?cái)?shù)量。即pii表示真正的數(shù)量,而pij和pji分別解釋為假正和假負(fù)。
PA 表達(dá)式為:
圖6 本文算法分割效果(a)傳統(tǒng)FCN 分割效果(b)標(biāo)簽的分割結(jié)果(c)原始圖片(d)
MPA 表達(dá)式為:
為驗(yàn)證本方法的優(yōu)越性,我們將傳統(tǒng)的FCN 和本文的方法進(jìn)行比較。采用相同數(shù)據(jù)集和相同參數(shù)調(diào)整模型的訓(xùn)練。之后將兩個(gè)算法通過相同的測(cè)試集分別進(jìn)行驗(yàn)證。實(shí)驗(yàn)結(jié)果如表1所示。
表1 評(píng)價(jià)指標(biāo)定量分析
由表2 可知,本文的改進(jìn)的FCN 方法,在PA 和MIoU 指標(biāo)上均有所提高,分別提高2.01%和1.61%,這是因?yàn)楸疚母倪M(jìn)了激活函數(shù),減少了梯度消失,并通過將8 倍上采樣替換為3 個(gè)2倍上采樣減小了圖像的損失信息。本文的MPA 指標(biāo)與傳統(tǒng)的FCN 網(wǎng)絡(luò)的MPA 僅僅差0.01%,近似相等,由于我們沒有將前幾個(gè)卷積層進(jìn)行多尺度融合導(dǎo)致幾乎沒有變化。
圖6 為訓(xùn)練500 個(gè)迭代次數(shù)的效果圖。我們可以明顯的看出本文的算法相比傳統(tǒng)的全卷積語義分割算法有優(yōu)勢(shì)。因?yàn)閟wish 函數(shù)會(huì)極大的降低梯度消失的風(fēng)險(xiǎn)率并有著很好的泛化能力,同時(shí)使用本文的漸進(jìn)進(jìn)行上采樣方法會(huì)減少通過傳統(tǒng)方法8 倍上采樣所丟失的信息,使分割的效果更好。
綜上所述,本文的方法分割效果優(yōu)于傳統(tǒng)FCN,這和進(jìn)行數(shù)據(jù)評(píng)估分析結(jié)果不謀而合。而且因?yàn)閂0C2012 數(shù)據(jù)集有不同種類和不同形態(tài)的物體,所以本文提出的方法也有較強(qiáng)的魯棒性。
本文方案是基于傳統(tǒng)的FCN 進(jìn)行改良的,因傳統(tǒng)FCN 準(zhǔn)確率不高,我們通過將swish 激活函數(shù)替換原來激活函數(shù)并將原8倍上采樣改為3 個(gè)2 倍上采樣的結(jié)構(gòu)改進(jìn)網(wǎng)絡(luò)。通過數(shù)據(jù)集進(jìn)行完備的實(shí)驗(yàn)并利用主流的評(píng)價(jià)指標(biāo)進(jìn)行評(píng)價(jià)分析,證明了本文方法相比傳統(tǒng)FCN 有著明顯的優(yōu)越性,更高的分割準(zhǔn)確度,為圖像語義分割方向提供了新的方法,使語義分割更能廣泛應(yīng)用于日常生產(chǎn)生活之中。