一.摘要
本文在進(jìn)行語義分割任務(wù)時(shí)將空間金字塔池化(SPP)模塊或encoder-decoder結(jié)構(gòu)引入到深度神經(jīng)網(wǎng)絡(luò)中。以前的網(wǎng)絡(luò)通過對輸入的feature map使用多種尺度的卷積核或者池化操作以及多種感受野能夠編碼出多尺度的環(huán)境信息。而之后的一些工作中提出的網(wǎng)絡(luò)通過逐漸恢復(fù)空間信息能夠捕獲更加精細(xì)的物體邊界。在本文中,將以上兩種優(yōu)勢(多尺度特征+恢復(fù)空間信息)進(jìn)行結(jié)合。特別地,本文提出的deeplabv3+在deeplabv3的基礎(chǔ)上加入了簡單卻有效的decoder模塊去細(xì)化分割結(jié)果,特別是物體的邊界。本文進(jìn)一步探索了Xception模型并且將深度可分離卷積應(yīng)用在空洞空間金字塔池化(ASPP)以及decoder模塊中,從而構(gòu)造出了更快和更強(qiáng)的encoder-decoder網(wǎng)絡(luò)。
二.方法
這部分簡單介紹空洞卷積以及深度可分離卷積。然后在探討本文提出的附加在encoder模塊之后的decoder模塊之前先來回顧DeepLabv3,Deeplabv3用來當(dāng)作本文提出模型的encoder模塊。
2.1包含空洞卷積的encoder-decoder
?上圖為本文提出的deeplabv3+整體模型結(jié)構(gòu),可以看出整體是基于encoder-decoder架構(gòu)的,其中用到了空洞卷積和金字塔模塊,下面具體介紹各個(gè)模塊。
空洞卷積:
空洞卷積是一個(gè)能夠有效控制深度神經(jīng)網(wǎng)絡(luò)輸出的feature map的分辨率的工具以及能夠調(diào)整卷積核的感受野從而捕獲多尺度信息,空洞卷積是標(biāo)準(zhǔn)卷積的一個(gè)擴(kuò)展。在一個(gè)二維卷積中,對于卷積輸出的特征上的每個(gè)位置以及對應(yīng)的卷積核,對于輸入,空洞卷積的計(jì)算如下所示:
上式中為空洞率,表示卷積核在卷積操作的輸入上的取樣步長;表示卷積核參數(shù)的位置,例如卷積核尺寸為3,則;表示卷積核尺寸(論文中公式上沒有,在這里為了表示清晰加入)。更直觀的空洞卷積如下圖所示:
?不難看出,標(biāo)準(zhǔn)卷積就是空洞率為1的空洞卷積。卷積核的感受野隨著空洞率的改變隨之也會(huì)發(fā)生改變。
深度可分離卷積:
深度可分離卷積將一個(gè)標(biāo)準(zhǔn)卷積拆分為深度卷積+1*1卷積,極大的減少了計(jì)算復(fù)雜度。特別地,深度卷積獨(dú)立的為輸入feature的每個(gè)channel做卷積操作,然后使用1*1的卷積對深度卷積的輸出進(jìn)行channel間進(jìn)行融合操作,這樣就替代了一個(gè)標(biāo)準(zhǔn)卷積操作,即融合了空間信息,也融合了不同通道間的信息。在之前的一些工作中,已經(jīng)能夠?qū)⒖斩淳矸e融入到深度可分離卷積中,如下圖所示:
?上圖中(a)就是之前提到的深度卷積,單獨(dú)的為每個(gè)channel進(jìn)行卷積操作;(b)就是之前提到的1*1卷積用來融合channel間的信息。(a)和(b)就組成了深度可分離卷積。那如果將(a)中的標(biāo)準(zhǔn)卷積操作替換為空洞卷積,如圖(c)所示就實(shí)現(xiàn)了帶有空洞卷積的深度可分離卷積,本文稱之為空洞可分離卷積(atrous seperable convolution)。本文應(yīng)用空洞可分離卷積極大的減少所提出模型的計(jì)算復(fù)雜度與此同時(shí)維持了與原模型相似或者更好的模型效果。
DeepLabv3作為encoder:
Deeplabv3使用了空洞卷積去對深度神經(jīng)網(wǎng)絡(luò)輸出的任意分辨率的feature進(jìn)行特征提取。這里使用輸出步長(output stride)表示模型輸入圖像和輸出的feature map(在全局池化或全連接層之前)的空間分辨率的比值。對于分類任務(wù),最終feature map的空間分辨率往往是模型輸入圖像的1/32,因此輸出步長為32。對于語義分割任務(wù)來說,通過移除網(wǎng)絡(luò)最后1到2個(gè)模塊的步長以及相應(yīng)地使用空洞卷積(例如對最后兩個(gè)網(wǎng)絡(luò)模塊采用空洞率為2和4的空洞卷積從而實(shí)現(xiàn)輸出步長為8)從而減小整個(gè)模型的輸出步長從而達(dá)到輸出步長為8或16,這樣就能夠提取到更稠密的特征。此外,deeplabv3增加了帶有圖像級別特征的空洞空間金字塔模塊(ASPP),空間金字塔模塊(ASPP)能夠通過不同的空洞率獲取多尺度卷積特征。本文使用原始deeplabv3的logits模塊之前最后輸出的feature map作為本文encoder-decoder中encoder部分的輸出。需要注意的是,encoder輸出的feature map包含256個(gè)通道以及豐富的語義信息。除此之外,根據(jù)計(jì)算能力可以采用空洞卷積在任意分辨率的輸入上提取特征。
提出的decoder:
deeplabv3作為encoder輸出的features通常輸出步長為16,在之前的研究工作中,feature map通過雙線性插值上采樣16倍來將輸出feature map恢復(fù)為模型輸入尺寸,可以將其看作是一個(gè)簡單的decoder模塊。然而,這種簡單的decoder模塊可能并不能夠很好的恢復(fù)物體分割細(xì)節(jié)。因此本文提出了一個(gè)簡單但是有效的decoder模塊,2.1中deeplabv3+整體結(jié)構(gòu)圖中所示,encoder輸出的特征首先進(jìn)行4倍的雙線性插值上采樣,然后和encoder中backbone中擁有相同尺寸的低級別(淺層)特征(例如Resnet-101的Conv2模塊的輸出)進(jìn)行通道維度的拼接,在拼接之前首先對低級別特征進(jìn)行1*1卷積,目的是為了減小低級別特征的通道數(shù)目,因?yàn)榈图墑e特征通常含有大量的通道數(shù)目(例如256或512),這樣底級別特征的重要性可能會(huì)超過encoder輸出的富有語義信息的特征(在本文模型中只有256個(gè)通道)并且使得訓(xùn)練更加困難。在將encoder輸出特征和低級別特征拼接之后,對拼接結(jié)果進(jìn)行了幾個(gè)3*3卷積操作去細(xì)化特征,并隨后又接了一個(gè)4倍的雙線性插值上采樣。在之后的實(shí)驗(yàn)中證明了,當(dāng)encoder的輸出步長為16時(shí)可以達(dá)到速度和精度的最好的權(quán)衡。當(dāng)encoder的輸出步長為8時(shí)模型效果略有提升,但也相應(yīng)增加了額外的計(jì)算復(fù)雜度代價(jià)。
2.2改進(jìn)Aligned Xception
Xception模型在ImageNet上已經(jīng)展示了不錯(cuò)的圖像分類結(jié)果并有著較快的計(jì)算速度。最近,MSRA團(tuán)隊(duì)對Xception模型做了一些改動(dòng)(稱為Aligned Xception)以及進(jìn)一步的推動(dòng)了在目標(biāo)檢測任務(wù)上的表現(xiàn)。受這些發(fā)現(xiàn)的啟發(fā),本文沿著相同的方向去采用Xception模型來進(jìn)行語義分割任務(wù)。特別地,我們在MSRA的修改上做了一些變動(dòng),分別為(1)更深的Xception,這個(gè)變動(dòng)借鑒了以前的一些研究工作,但是不同的是,為了更快的計(jì)算以及高效的內(nèi)存運(yùn)用本文沒有修改Xception的輸入流網(wǎng)絡(luò)結(jié)構(gòu)(entry flow network structure);(2)最大池化操作通過使用帶有一定步長的深度可分離卷積進(jìn)行替代,也可以將深度可分離卷積替換為前文所說的空洞可分離卷積去在任意分辨率的輸入上提取特征(或者另一種選擇就是使用帶有空洞率的最大池化操作替換原始的池化操作)。(3)在每一個(gè)3*3的深度卷積之后添加額外的batch normalization以及ReLU操作,這與MobileNet的設(shè)計(jì)類似。修改后的Xception整體結(jié)構(gòu)如下圖所示:
三.實(shí)驗(yàn)驗(yàn)證
本文利用ImageNet-1k預(yù)訓(xùn)練的Resnet-101或上文中修改后的aligned Xception去使用空洞卷積提取稠密特征。
訓(xùn)練時(shí)采用了“poly”學(xué)習(xí)率策略以及初始學(xué)習(xí)率設(shè)置為0.007,圖像尺寸為513*513。模型訓(xùn)練時(shí)端到端的。
3.1decoder設(shè)計(jì)選擇
定義“DeepLabv3 feature map”作為Deeplabv3最后輸出的feature map(例如,features包含ASPP特征以及圖像級別的特征),[k*k,f]作為卷積操作,表示卷積核尺寸為k*k,共有f個(gè)卷積核(即卷積輸出feature map的通道數(shù)為f)。
當(dāng)采用輸出步長為16時(shí),基于Resnet-101的DeepLabv3在訓(xùn)練和測試中對logits均采用16倍的雙線性插值。這種簡單的雙線性插值方式可以認(rèn)為時(shí)一種簡單的decoder設(shè)計(jì),在PASCAL VOC2012驗(yàn)證集上得到了77.21%的精度,比不用這種簡單的decoder方式(例如直接將groud truth降采樣來保證和網(wǎng)絡(luò)輸出尺寸相同)提升了1.2個(gè)百分點(diǎn)。為了提升這種簡單的baseline,本文剔提出的“Deeplabv3+”在encoder輸出后添加了decoder模塊,如前文中DeepLabv3+整體結(jié)構(gòu)圖中所示。在decoder模塊中,本文想了3個(gè)不同的設(shè)計(jì)方式,(1)1*1卷積減少encoder的低級別特征通道數(shù);(2)3*3卷積被運(yùn)用去獲取更加精準(zhǔn)的分割結(jié)果;(3)什么encoder的低級別特征應(yīng)當(dāng)被應(yīng)用。
為了驗(yàn)證decoder中的1*1卷積的效果,本文采用Resnet-101網(wǎng)絡(luò)的Conv2特征作為低級別特征。采用1*1卷積對低級別特征減少通道數(shù),減少為不同通道數(shù)目的模型效果如下表所示:
?可以看到,當(dāng)通道數(shù)目降低為32或48時(shí)模型效果較好,因此對低級別特征采用[1*1,48]的卷積操作來減少低級別特征通道數(shù)目。
之后設(shè)計(jì)了decoder的3*3卷積結(jié)構(gòu),不同的設(shè)計(jì)效果如下表所示:
?本文發(fā)現(xiàn),在拼接Conv2特征和“Deeplabv3 feature map”后,采用2個(gè)3*3,卷積核個(gè)數(shù)為256的卷積操作效果要優(yōu)于簡單的使用1個(gè)或3個(gè)卷積操作。并發(fā)現(xiàn),將卷積核數(shù)目從256變至128或卷積核從3*3變?yōu)?*1均會(huì)降低模型表現(xiàn)。隨后還做測試了同時(shí)使用Conv2以及Conv3特征,但發(fā)現(xiàn)效果并不明顯,因此最終采用了簡單而有效的decoder:利用減少通道數(shù)的低級別特征(Conv2特征)和“Deeplabv3 feature map”進(jìn)行拼接,然后進(jìn)行2個(gè)[3*3,256]的卷積操作。
3.2Resnet-101作為backbone網(wǎng)絡(luò)
當(dāng)使用Resnet-101作為DeepLabv3+的backbone時(shí),為了比較精度和速度的變化,觀察了mIOU以及Multiply-Adds。得益于空洞卷積,模型在訓(xùn)練時(shí)能夠在不同分辨率下獲取特征以及在模型驗(yàn)證時(shí)使用單一模型。
Baseline:
?上表中train OS表示訓(xùn)練時(shí)的輸出步長,eval OS表示驗(yàn)證時(shí)的輸出步長。Decoder表示是否使用本文提出的decoder模塊,MS表示驗(yàn)證時(shí)模型使用多尺度輸入,F(xiàn)lip表示模型輸入時(shí)添加左右反轉(zhuǎn)輸入。
上表中第一大行(前4小行)展示了采用更小的輸出步長(輸出步長為8時(shí))獲取更稠密特征或者采用多尺度輸入以及采用decoder模塊、輸入圖像反轉(zhuǎn)等操作時(shí)的模型效果。其中采用圖像反轉(zhuǎn)輸入模型將模型計(jì)算復(fù)雜度變?yōu)樵瓉淼膬杀叮切Ч嵘苄 ?/p>
添加decoder:
上表中第二大行采用了本文提出的decoder結(jié)構(gòu),呈現(xiàn)了驗(yàn)證時(shí)不同的輸出步長(8或16)或采用多尺度輸入或圖像反轉(zhuǎn)時(shí)模型效果。
粗粒度feature maps:
進(jìn)行了實(shí)驗(yàn)?zāi)P陀?xùn)練時(shí)采用輸出步長為32(例如在訓(xùn)練時(shí)沒有采用空洞卷積)來達(dá)到更快的計(jì)算速度。在上表中第三大行展示了在訓(xùn)練時(shí)采用輸出步長為32以及在驗(yàn)證時(shí)采用輸出步長為8~32,以采用decoder和不采用decoder時(shí)的模型效果。
3.3Xception作為backbone網(wǎng)絡(luò)
?如上表所示為Xception作為backbone時(shí)的一些實(shí)驗(yàn)效果,與Resnet-101的類似,這里就不細(xì)講了,需要說明的是,可以發(fā)現(xiàn)表中多了一些操作,其中SC表示是否采用深度可分離卷積在ASPP以及decoder模塊中;COCO表示模型是否在MS-COCO上預(yù)訓(xùn)練;JFT表示模型是否在JFT上預(yù)訓(xùn)練。文章來源:http://www.zghlxwxcb.cn/news/detail-458687.html
四.實(shí)驗(yàn)效果
文章來源地址http://www.zghlxwxcb.cn/news/detail-458687.html
到了這里,關(guān)于DeepLabv3+的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!