實(shí)時(shí)性語義分割算法大盤點(diǎn)

極市導(dǎo)讀
?語義圖像分割是計(jì)算機(jī)視覺中發(fā)展最快的領(lǐng)域之一,有著廣泛的應(yīng)用。本文以24篇相關(guān)論文作為切入點(diǎn),總結(jié)匯總了多種實(shí)時(shí)性語義分割的算法,非常值得分享收藏。>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿
語義分割論文
分類,即將圖像中最具代表性的物體歸為某一個(gè)類; 帶有定位的分類,對分類任務(wù)的一個(gè)擴(kuò)展,使用邊界框?qū)ο罂蚱饋碓诜诸悾?/section> 目標(biāo)檢測,對多個(gè)不同類型的對象進(jìn)行分類和定位; 語義分割,是對圖像中的每個(gè)像素進(jìn)行分類和定位; 實(shí)例分割,是語義分割的擴(kuò)展,在實(shí)例分割中,相同類型的不同對象被視為不同的對象; 全景分割,結(jié)合語義分割和實(shí)例分割,所有像素被分配一個(gè)類標(biāo)簽,所有對象實(shí)例都被獨(dú)立分割
【1】自主駕駛車輛實(shí)時(shí)語義分割的比較研究


【2】高效的語義分割CNN設(shè)計(jì)技術(shù)分析




1x1卷積降維,減少卷積的輸入通道數(shù) Group convolution Depth-wise Separable convolution

【3】基于空間稀疏性的實(shí)時(shí)語義圖像分割




【4】ENet:一種用于實(shí)時(shí)語義分割的深度神經(jīng)網(wǎng)絡(luò)架構(gòu)


【5】ICNet用于高分辨率圖像的實(shí)時(shí)語義分割


【6】加速自動(dòng)駕駛的語義分割



【7】高效卷積網(wǎng)絡(luò)用于實(shí)時(shí)語義分割






【8】ERFNet:用于實(shí)時(shí)語義分割的高效殘差分解卷積網(wǎng)絡(luò)


【9】EDANet:用于實(shí)時(shí)語義分割的高效的非對稱卷積密集模塊



【10】ESPNet:擴(kuò)展卷積的高效空間金字塔語義分割


【11】ESPNetv2:一個(gè)輕量級、高效、通用的卷積神經(jīng)網(wǎng)絡(luò)

【12】輕量級語義分段的集中綜合卷積



【13】用于實(shí)時(shí)語義分割的雙向分割網(wǎng)絡(luò)
《BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation》
鏈接:https://arxiv.org/pdf/1808.00897.pdf
本文的出發(fā)點(diǎn)是因?yàn)橐酝墓ぷ髦械?.感受野太小 2.空間信息的損失
關(guān)于空間信息
空間信息(Spatial information)主要指的是圖像的局部細(xì)節(jié)信息,尤其是對于邊緣豐富的圖像。由于卷積網(wǎng)絡(luò)規(guī)模大,一般要求輸入圖像尺寸較小,需要對原始圖像進(jìn)行Crop或者Resize,這個(gè)過程會損失細(xì)節(jié)的空間信息。通過設(shè)置只包含3個(gè)網(wǎng)絡(luò)的Spacial Path,可保留豐富的空間信息,進(jìn)而將低緯度的空間細(xì)節(jié)信息與高緯度的信息整合。
網(wǎng)絡(luò)框架:

右邊為特征融合模塊(FFM):
Spatial Path 捕獲的空間信息編碼了絕大多數(shù)的豐富細(xì)節(jié)信息,Context Path 的輸出特征主要編碼語境信息。兩路網(wǎng)絡(luò)的特征并不相同,因此不能簡單地加權(quán)兩種特征,要用一個(gè)獨(dú)特的特征融合模塊以融合這些特征。
實(shí)驗(yàn)結(jié)果:

【14】用于實(shí)時(shí)語義分割的輕量級精細(xì)網(wǎng)
《Light-Weight RefineNet for Real-Time Semantic Segmentation》
鏈接:https://arxiv.org/pdf/1810.03272v1.pdf
論文提出了RefineNet 的輕量化版本Light-Weight RefineNet ,針對實(shí)時(shí)分割任務(wù),將速度從20FPS提升到了55FPS(GPU,512*512輸入,Mean IOU 81.1%,PASCAL VOC測試集)。
網(wǎng)絡(luò)結(jié)構(gòu):



RefineNet 的總體網(wǎng)絡(luò)結(jié)構(gòu),分為下采樣的encoder部分和上采樣的decoder部分。網(wǎng)絡(luò)主要包含4個(gè)模塊,RCU,CRP,F(xiàn)USION,CLF。為了輕量化該網(wǎng)絡(luò),分別使用RCU-LW,CRP-LW。
FUSION-LW替換了原始網(wǎng)絡(luò)的RCU,CRP,F(xiàn)USION。通過后續(xù)的實(shí)驗(yàn)作者又發(fā)現(xiàn)RCU對于網(wǎng)絡(luò)的精度提升效果微弱,因此將RCU模塊也去掉了。
為什么去掉RCU模塊,網(wǎng)絡(luò)精度影響很???
因?yàn)椋?/span>
(1)雖然RCU模塊中的3*3卷積使得網(wǎng)絡(luò)具有更大的感受野,但是通過shortcut結(jié)構(gòu),底層特征和高層特征也可以共享。
(2)CRP模塊也可以獲得上下文的信息。
可以從下圖看出,RCU模塊對精度提升微弱,而CRP模塊對精度提升明顯。

模型參數(shù)比較:

基于ResNet101的基礎(chǔ)結(jié)構(gòu)的RefineNet,第一個(gè)為傳統(tǒng)的RefineNet,第二個(gè)為帶RCU的RefineNet,第三個(gè)為不帶RCU的RefineNet??梢奟efineNet-101-LW相比RefineNet-101將參數(shù)量和運(yùn)算量都大大降低。
【15】ShelfNet用于實(shí)時(shí)語義分割
《ShelfNet for Real-time Semantic Segmentation》
鏈接:https://arxiv.org/pdf/1811.11254v1.pdf
該文章提出了一種全新的架構(gòu)——ShelfNet,利用多個(gè)編碼-解碼結(jié)構(gòu)對 來改善網(wǎng)絡(luò)中的信息流動(dòng)。
同一個(gè)殘差塊的兩個(gè)卷積層貢獻(xiàn)權(quán)重,在不影響精度的條件下,減少參數(shù)量;
在多個(gè)Benckmark上得到驗(yàn)證
模型結(jié)構(gòu):

ShelfNet可以看作是FCNs的集合。一些信息流路徑的例子用不同的顏色標(biāo)記。每個(gè)路徑相當(dāng)于一個(gè)FCN(除了在ResNet主干中有池化層)。與FCN集合的等價(jià)性使ShelfNet能夠用一個(gè)小的神經(jīng)網(wǎng)絡(luò)來執(zhí)行精確的分割。

【16】LadderNet:用于醫(yī)學(xué)圖像分割的基于U-NET的多路徑網(wǎng)絡(luò)
《LadderNet: MULTI-PATH NETWORKS BASED ON U-NET FOR MEDICAL IMAGE SEGMENTATION》
鏈接:https://arxiv.org/pdf/1810.07810.pdf
模型結(jié)構(gòu):

1、3是編碼器分支,2、4是解碼器分支,A-E是不同級的特征。整個(gè)模型沒有使用池化層,用的是一個(gè)步長為2的卷積層代替,通道數(shù)在編碼器部分逐級翻倍。
可以看出這是兩個(gè)U-Net相連,有兩個(gè)U形(12, 34),而這兩個(gè)U形之間的A-D級采用跳接連接起來。U-Net網(wǎng)絡(luò)是,跳接用的是融合,也就是通道數(shù)相加,但是這里用的直接求和的模式(要求通道數(shù)必須一樣)。
但增加更多的encoder-decoder分支會導(dǎo)致參數(shù)增加,訓(xùn)練變得困難,所以作者又采用了Shared-weights residual block(參數(shù)共享殘差塊),如下圖所示。

【17】ShuffleSeg實(shí)時(shí)語義分割網(wǎng)絡(luò)
《SHUFFLESEG: REAL-TIME SEMANTIC SEGMENTATION NETWORK》
鏈接:https://arxiv.org/pdf/1803.03816.pdf
嗯。。。這篇文章沒深刻說的,哈哈。
該架構(gòu)將分成兩個(gè)主要模塊進(jìn)行解釋:負(fù)責(zé)提取特征的編碼模塊,負(fù)責(zé)在網(wǎng)絡(luò)中進(jìn)行上采樣以計(jì)算最終類別的概率圖的解碼模塊。

1)基于ShuffleNet (Shufflenet: An extremely efficient convolutional neural network for mobile devices) 提出的分割網(wǎng)絡(luò)
2)編碼器使用ShuffleNet 單元,解碼器綜合了 UNet、FCN8s 和 Dilation Frontend 的結(jié)構(gòu);速度快,沒有什么創(chuàng)新。。。。
【18】RTSeg:實(shí)時(shí)語義分割比較研究
《RTSeg: REAL-TIME SEMANTIC SEGMENTATION COMPARATIVE STUDY》
鏈接:https://arxiv.org/pdf/1803.02758.pdf
提供特征提取和解碼方法,稱為元架構(gòu);
給出了計(jì)算精度和計(jì)算效率之間的權(quán)衡;
Shufflenet比segment減少了143x gflops;
模型結(jié)構(gòu):


使用空洞卷積代替下采樣的feature map,空洞卷積確保網(wǎng)絡(luò)維持足夠的感受野而不需要通過pooling和stride conv來破壞像素結(jié)構(gòu);
Meta-Architectures
1)SkipNet meta-architecture;
2)U-Net meta-architecture;
3)Dilation Frontend meta-architecture;
【19】ContextNet:實(shí)時(shí)為語義分割探索上下文和細(xì)節(jié)
《ContextNet: Exploring Context and Detail for Semantic Segmentation in Real-time》
鏈接:https://arxiv.org/pdf/1805.04554.pdf
模型結(jié)構(gòu):

ContextNet利用更深層的網(wǎng)絡(luò),增加的層數(shù)有助于學(xué)習(xí)更復(fù)雜和抽象的特征,從而提高準(zhǔn)確性,但也增加了運(yùn)行時(shí)間。聚合來自多個(gè)分辨率的上下文信息是有益的,結(jié)合了多個(gè)級別的信息以提高性能。
Depth-wise Convolution to Improve Run-time:
深度可分離卷積將標(biāo)準(zhǔn)卷積(Conv2d)分解為深度上的卷積(DWConv),也稱為空間或通道上的卷積,然后是1×1的點(diǎn)卷積層。因此,跨通道和空間相關(guān)性的計(jì)算是獨(dú)立的,這大大減少了參數(shù)的數(shù)量,導(dǎo)致更少的浮點(diǎn)運(yùn)算和快速的執(zhí)行時(shí)間。
ContextNet利用了DWConv,輸入下采樣的子網(wǎng)使用了DWConv的瓶頸殘差塊。
Capturing Global and Local Context:
ContextNet有兩個(gè)分支,一個(gè)是全分辨率(h×w),另一個(gè)是低分辨率(如h/4 w/4),輸入圖像高度h,寬度w。每個(gè)分支都有不同的職責(zé);后者捕捉圖像的全局上下文,前者為更高分辨率的分割提供細(xì)節(jié)信息。
為了快速提取特征,語義豐富的特征只從最低可能的分辨率提取;
局部上下文的特征通過一個(gè)非常淺的分支從全分辨率輸入中分離出來,然后與低分辨率的結(jié)果相結(jié)合。
【20】CGNet:一個(gè)輕量級的上下文引導(dǎo)的語義分割網(wǎng)絡(luò)
《CGNet: A Light-weight Context Guided Network for Semantic Segmentation》
鏈接:https://arxiv.org/pdf/1811.08201.pdf
該文分析了語義分割的內(nèi)在特性,提出了學(xué)習(xí)局部特征和周圍上下文的聯(lián)合特征,并進(jìn)一步改進(jìn)全局上下文的聯(lián)合特征的CG塊。有效的利用 local feature, surrounding context and global context。其中的CG塊,在各個(gè)階段有效地捕獲上下文信息。CGNet的主干是專門為提高分割精度而定制的,以減少參數(shù)的數(shù)量和節(jié)省內(nèi)存占用。在相同數(shù)量的參數(shù)下,提出的CGNet顯著優(yōu)于現(xiàn)有的分割網(wǎng)絡(luò)(如ENet和ESPNet)。
模型結(jié)構(gòu):

在CG block引入殘差學(xué)習(xí),兩種方式:local residual learning (LRL) 和global residual learning (GRL),如下圖所示:

由CG block定義CGNet:較少的卷積層和較少的通道數(shù),從而減少參數(shù)量。


個(gè)人觀點(diǎn):
1)CGNet進(jìn)一步拓展了non-local的概念,從local,surrounding和global三個(gè)層次獲取空間特征間的關(guān)聯(lián)。
2)在CGNet的stage2和stage3都使用GC block,區(qū)別于non-local中只有resnet部分stage和部分blcok之間引入non-local機(jī)制。
【21】用于自動(dòng)駕駛的實(shí)時(shí)語義分割解碼器的設(shè)計(jì)
《Design of Real-time Semantic Segmentation Decoder for Automated Driving》
鏈接:https://arxiv.org/pdf/1901.06580.pdf
本文是采用編碼解碼結(jié)構(gòu),編碼器是獨(dú)立的10層VGG。

使用stride 2卷積后的max-pooling來減少空間問題,這樣就減少了超參數(shù)的數(shù)量和運(yùn)行時(shí)。顯然,這是為了分割精度的權(quán)衡,但對于檢測、分類等其他任務(wù)則不是這樣??紤]到該編碼器是功能獨(dú)立的,需要在解碼器方面通過廣泛學(xué)習(xí)語義特征來克服空間信息探索的差距。

非瓶頸層的設(shè)計(jì)如下圖所示。它同時(shí)包含1D和3D卷積核。一維核主要一次從一個(gè)方向提取信息,三維核主要從較大的接受區(qū)域收集特征。之后通過不同大小的多個(gè)kernel來尋找密集的信息,例如3×3, 5×5和1×1。接下來,融合使用不同內(nèi)核提取的特征。該方法有助于總結(jié)從不同接受區(qū)域收集到的語義特征。合成的特征再一次與輸入特征融合到同一個(gè)非瓶頸層。在所提出的非瓶頸層中,多個(gè)跳轉(zhuǎn)連接到特征融合塊,這有助于處理高梯度流,因?yàn)樵诜聪騻鞑r(shí),傳入的梯度分布在所有路徑中。

我們知道解碼器做得更寬,運(yùn)行時(shí)間會大幅提高。因此,定期減少特征圖的數(shù)量是負(fù)擔(dān)不起的,也超出了模型的預(yù)算。
【22】DSNet:用于實(shí)時(shí)駕駛場景的語義分割
《DSNet: DSNet for Real-Time Driving Scene Semantic Segmentation》
鏈接:https://arxiv.org/pdf/1812.07049v1.pdf
DSNet是一種高效且強(qiáng)大的單元和非對稱的編解碼器架構(gòu)。采用混合擴(kuò)張卷積方案來克服網(wǎng)格化問題。
DSNet詳細(xì)結(jié)構(gòu)如下表:

參考ShuffleNet V2總結(jié)了輕量框架指導(dǎo)準(zhǔn)則如下:
準(zhǔn)則1:等信道寬度最小化內(nèi)存訪問成本(MAC)
準(zhǔn)則2:過多的組卷積增加MAC
準(zhǔn)則3:網(wǎng)絡(luò)碎片化降低并行度
準(zhǔn)則4:Element-wise操作不可忽略
DSNet單元模塊:

采用ENet的初始單元,使用最大池和步長2的卷積對輸入進(jìn)行下采樣。深度可分卷積替換為擴(kuò)張型卷積,以擴(kuò)大接收域,這對語義分割至關(guān)重要。
【23】Fast-SCNN:快速語義分割網(wǎng)絡(luò)
《Fast-SCNN: Fast Semantic Segmentation Network》
鏈接:https://arxiv.org/pdf/1902.04502.pdf
我們知道在語義分割中較大的接受野對于學(xué)習(xí)目標(biāo)類之間的復(fù)雜關(guān)聯(lián)(即全局上下文)很重要,圖像中的空間細(xì)節(jié)對于保持目標(biāo)邊界是必要的,需要特定的設(shè)計(jì)來平衡速度和準(zhǔn)確性(而不是重新定位分類DCNNs)。
模型框架:

two-branch 網(wǎng)絡(luò),它在低分辨率位置使用一個(gè)較深的 branch 來捕捉環(huán)境信息,在高分辨率位置使用一個(gè)較淺的 branch 來學(xué)習(xí)細(xì)節(jié)信息。然后,將這二者融合起來,形成最終的語義分割結(jié)果。
本文的主要貢獻(xiàn):
1)提出了一個(gè)實(shí)時(shí)語義分割算法 Fast-SCNN,在高清圖像上準(zhǔn)確率為68%,速度為123.5幀每秒;
2)調(diào)整了 skip connection,提出了一個(gè)淺層的 learning to downsample 模塊,可以快速而高效地通過 multi-branch 來提取低層次特征;
3)設(shè)計(jì)了low capacity Fast-SCNN,對于small capacity網(wǎng)絡(luò)而言,多訓(xùn)練幾個(gè) epoch的效果和在ImageNet上進(jìn)行預(yù)訓(xùn)練是一樣的。
之前的PSPNet 中的金字塔池化模塊和DeepLab中的 atrous 空間金字塔池化(ASPP)用于 encode 和利用全局信息。與目標(biāo)檢測類似,速度是語義分割系統(tǒng)設(shè)計(jì)中的一個(gè)重要因素?;贔CN,SegNet 引入了一個(gè)聯(lián)合 encoder-decoder 模型,是最早的高效率分割模型之一。延續(xù)SegNet,ENet 也設(shè)計(jì)了 encoder-decoder ,層數(shù)較少,降低計(jì)算成本。然后,two-branch 和 multi-branch 系統(tǒng)出現(xiàn)了。ICNet, ContextNet, BiSeNet, GUN 通過一個(gè)較深的 branch 在低分辨率輸入上學(xué)習(xí)全局信息,通過一個(gè)較淺的 branch 在高分辨率圖像上學(xué)習(xí)細(xì)節(jié)信息。但是,SOTA 的語義分割仍具挑戰(zhàn),通常需要高性能GPU。受 two-branch 啟發(fā),F(xiàn)ast-SCNN 加入了一個(gè)共享的淺層網(wǎng)絡(luò)來編碼細(xì)節(jié)信息,在低分辨率輸入上高效地學(xué)習(xí)全局信息。

詳細(xì)網(wǎng)絡(luò)如下表:

【24】ShuffleNet V2:語義分割的一個(gè)有效解決方案:具有可分卷積
《An efficient solution for semantic segmentation: ShuffleNet V2 with atrous separ:able convolutions》
鏈接:https://arxiv.org/pdf/1902.07476v1.pdf
本文設(shè)計(jì)的4個(gè)出發(fā)點(diǎn):
當(dāng)通道寬度不相等時(shí),內(nèi)存訪問成本(MAC)就會增加,因此通道寬度應(yīng)該保持相等。
在提升MAC時(shí),應(yīng)該避免過度使用組卷積。
為了保持較高的并行度,應(yīng)該避免網(wǎng)絡(luò)碎片化。
諸如ReLU、Add、AddBias等元素明智操作是不可忽略的,應(yīng)該減少。
本文貢獻(xiàn):
在語義分割任務(wù)上使用ShuffleNetV2、DPC編碼器以及一個(gè)全新的解碼模塊實(shí)現(xiàn)了SOT的計(jì)算效率,在Cityscapes測試數(shù)據(jù)集上達(dá)到了70.33%的mIoU;
所提出的模型和實(shí)現(xiàn)完全兼容TensorFlow Lite,能夠在Android和iOS移動(dòng)手機(jī)平臺實(shí)時(shí)運(yùn)行;
TensorFlow的網(wǎng)絡(luò)實(shí)現(xiàn)以及訓(xùn)練模型都是開源的。
模型結(jié)構(gòu):

如上圖所示,使用了ShufflenetV2框架來提取特征,然后接入DeepLabV3編碼器,最后使用雙線性縮放作為新的解碼器來生成分割掩模。網(wǎng)絡(luò)的設(shè)計(jì)與修改都是在ImageNet數(shù)據(jù)集上驗(yàn)證后作出的選擇。
特征提取之后使用DPC編碼器。文章提供了兩種不同架構(gòu)的DPC,一個(gè)是DPC基礎(chǔ)模塊,另一個(gè)是基于MobileNetV2的DPC模塊,細(xì)節(jié)如下圖所示:

編碼器輸出之后會經(jīng)過1×1卷積層降維,然后緊接著Dropout層、雙線性縮放和最后的分類ArgMax。其中解碼部分采用的簡單的雙線性縮放操作將特征圖縮放到原圖尺寸。
模型詳細(xì)結(jié)構(gòu)如下表所示:

推薦閱讀

