匯總|實時性語義分割算法(全)
來源:公眾號|3D視覺工坊(系投稿)
作者:明澤Danny
「3D視覺工坊」技術(shù)交流群已經(jīng)成立,目前大約有12000人,方向主要涉及3D視覺、CV&深度學(xué)習(xí)、SLAM、三維重建、點云后處理、自動駕駛、CV入門、三維測量、VR/AR、3D人臉識別、醫(yī)療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產(chǎn)品落地、視覺競賽、車牌識別、硬件選型、學(xué)術(shù)交流、求職交流、ORB-SLAM系列源碼交流、深度估計等。工坊致力于干貨輸出,不做搬運工,為計算機視覺領(lǐng)域貢獻自己的力量!歡迎大家一起交流成長~
添加小助手微信:CV_LAB,備注學(xué)校/公司+姓名+研究方向即可加入工坊一起學(xué)習(xí)進步。
QQ群「3D視覺研習(xí)社」,群號:574432628
我們在上篇—匯總|實時性語義分割算法?中,已經(jīng)總結(jié)了【1】~【12】,這里我們繼續(xù)。
【13】用于實時語義分割的雙向分割網(wǎng)絡(luò)
《BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation》
鏈接:https://arxiv.org/pdf/1808.00897.pdf
本文的出發(fā)點是因為以往的工作中的1.感受野太小 2.空間信息的損失
關(guān)于空間信息
空間信息(Spatial information)主要指的是圖像的局部細節(jié)信息,尤其是對于邊緣豐富的圖像。由于卷積網(wǎng)絡(luò)規(guī)模大,一般要求輸入圖像尺寸較小,需要對原始圖像進行Crop或者Resize,這個過程會損失細節(jié)的空間信息。通過設(shè)置只包含3個網(wǎng)絡(luò)的Spacial Path,可保留豐富的空間信息,進而將低緯度的空間細節(jié)信息與高緯度的信息整合。
網(wǎng)絡(luò)框架:

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

【14】用于實時語義分割的輕量級精細網(wǎng)
《Light-Weight RefineNet for Real-Time Semantic Segmentation》
鏈接:https://arxiv.org/pdf/1810.03272v1.pdf
論文提出了RefineNet 的輕量化版本Light-Weight RefineNet ,針對實時分割任務(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個模塊,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ù)的實驗作者又發(fā)現(xiàn)RCU對于網(wǎng)絡(luò)的精度提升效果微弱,因此將RCU模塊也去掉了。
為什么去掉RCU模塊,網(wǎng)絡(luò)精度影響很???
因為:
(1)雖然RCU模塊中的3*3卷積使得網(wǎng)絡(luò)具有更大的感受野,但是通過shortcut結(jié)構(gòu),底層特征和高層特征也可以共享。
(2)CRP模塊也可以獲得上下文的信息。
可以從下圖看出,RCU模塊對精度提升微弱,而CRP模塊對精度提升明顯。

模型參數(shù)比較:

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

ShelfNet可以看作是FCNs的集合。一些信息流路徑的例子用不同的顏色標記。每個路徑相當于一個FCN(除了在ResNet主干中有池化層)。與FCN集合的等價性使ShelfNet能夠用一個小的神經(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是不同級的特征。整個模型沒有使用池化層,用的是一個步長為2的卷積層代替,通道數(shù)在編碼器部分逐級翻倍。
可以看出這是兩個U-Net相連,有兩個U形(12, 34),而這兩個U形之間的A-D級采用跳接連接起來。U-Net網(wǎng)絡(luò)是,跳接用的是融合,也就是通道數(shù)相加,但是這里用的直接求和的模式(要求通道數(shù)必須一樣)。
但增加更多的encoder-decoder分支會導(dǎo)致參數(shù)增加,訓(xùn)練變得困難,所以作者又采用了Shared-weights residual block(參數(shù)共享殘差塊),如下圖所示。

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

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:實時語義分割比較研究
《RTSeg: REAL-TIME SEMANTIC SEGMENTATION COMPARATIVE STUDY》
鏈接:https://arxiv.org/pdf/1803.02758.pdf
提供特征提取和解碼方法,稱為元架構(gòu);
給出了計算精度和計算效率之間的權(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:實時為語義分割探索上下文和細節(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ù)雜和抽象的特征,從而提高準確性,但也增加了運行時間。聚合來自多個分辨率的上下文信息是有益的,結(jié)合了多個級別的信息以提高性能。
Depth-wise Convolution to Improve Run-time:
深度可分離卷積將標準卷積(Conv2d)分解為深度上的卷積(DWConv),也稱為空間或通道上的卷積,然后是1×1的點卷積層。因此,跨通道和空間相關(guān)性的計算是獨立的,這大大減少了參數(shù)的數(shù)量,導(dǎo)致更少的浮點運算和快速的執(zhí)行時間。
ContextNet利用了DWConv,輸入下采樣的子網(wǎng)使用了DWConv的瓶頸殘差塊。
Capturing Global and Local Context:
ContextNet有兩個分支,一個是全分辨率(h×w),另一個是低分辨率(如h/4 w/4),輸入圖像高度h,寬度w。每個分支都有不同的職責(zé);后者捕捉圖像的全局上下文,前者為更高分辨率的分割提供細節(jié)信息。
為了快速提取特征,語義豐富的特征只從最低可能的分辨率提?。?/p>
局部上下文的特征通過一個非常淺的分支從全分辨率輸入中分離出來,然后與低分辨率的結(jié)果相結(jié)合。
【20】CGNet:一個輕量級的上下文引導(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)合特征,并進一步改進全局上下文的聯(lián)合特征的CG塊。有效的利用 local feature, surrounding Context and global context。其中的CG塊,在各個階段有效地捕獲上下文信息。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ù)量。


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

使用stride 2卷積后的max-pooling來減少空間問題,這樣就減少了超參數(shù)的數(shù)量和運行時。顯然,這是為了分割精度的權(quán)衡,但對于檢測、分類等其他任務(wù)則不是這樣??紤]到該編碼器是功能獨立的,需要在解碼器方面通過廣泛學(xué)習(xí)語義特征來克服空間信息探索的差距。
非瓶頸層的設(shè)計如下圖所示。它同時包含1D和3D卷積核。一維核主要一次從一個方向提取信息,三維核主要從較大的接受區(qū)域收集特征。之后通過不同大小的多個kernel來尋找密集的信息,例如3×3, 5×5和1×1。接下來,融合使用不同內(nèi)核提取的特征。該方法有助于總結(jié)從不同接受區(qū)域收集到的語義特征。合成的特征再一次與輸入特征融合到同一個非瓶頸層。在所提出的非瓶頸層中,多個跳轉(zhuǎn)連接到特征融合塊,這有助于處理高梯度流,因為在反向傳播時,傳入的梯度分布在所有路徑中。
我們知道解碼器做得更寬,運行時間會大幅提高。因此,定期減少特征圖的數(shù)量是負擔不起的,也超出了模型的預(yù)算。
【22】DSNet:用于實時駕駛場景的語義分割
《DSNet: DSNet for Real-Time Driving Scene Semantic Segmentation》
鏈接:https://arxiv.org/pdf/1812.07049v1.pdf
DSNet是一種高效且強大的單元和非對稱的編解碼器架構(gòu)。采用混合擴張卷積方案來克服網(wǎng)格化問題。
DSNet詳細結(jié)構(gòu)如下表:
參考ShuffleNet V2總結(jié)了輕量框架指導(dǎo)準則如下:
準則1:等信道寬度最小化內(nèi)存訪問成本(MAC)
準則2:過多的組卷積增加MAC
準則3:網(wǎng)絡(luò)碎片化降低并行度
準則4:Element-wise操作不可忽略
DSNet單元模塊:
采用ENet的初始單元,使用最大池和步長2的卷積對輸入進行下采樣。深度可分卷積替換為擴張型卷積,以擴大接收域,這對語義分割至關(guān)重要。
【23】Fast-SCNN:快速語義分割網(wǎng)絡(luò)
《Fast-SCNN: Fast Semantic Segmentation Network》
鏈接:https://arxiv.org/pdf/1902.04502.pdf
我們知道在語義分割中較大的接受野對于學(xué)習(xí)目標類之間的復(fù)雜關(guān)聯(lián)(即全局上下文)很重要,圖像中的空間細節(jié)對于保持目標邊界是必要的,需要特定的設(shè)計來平衡速度和準確性(而不是重新定位分類DCNNs)。
模型框架:
two-branch 網(wǎng)絡(luò),它在低分辨率位置使用一個較深的 branch 來捕捉環(huán)境信息,在高分辨率位置使用一個較淺的 branch 來學(xué)習(xí)細節(jié)信息。然后,將這二者融合起來,形成最終的語義分割結(jié)果。
本文的主要貢獻:
1)提出了一個實時語義分割算法 Fast-SCNN,在高清圖像上準確率為68%,速度為123.5幀每秒;
2)調(diào)整了 skip connection,提出了一個淺層的 learning to downsample 模塊,可以快速而高效地通過 multi-branch 來提取低層次特征;
3)設(shè)計了low capacity Fast-SCNN,對于small capacity網(wǎng)絡(luò)而言,多訓(xùn)練幾個 epoch的效果和在ImageNet上進行預(yù)訓(xùn)練是一樣的。
之前的PSPNet 中的金字塔池化模塊和DeepLab中的 atrous 空間金字塔池化(ASPP)用于 encode 和利用全局信息。與目標檢測類似,速度是語義分割系統(tǒng)設(shè)計中的一個重要因素?;贔CN,SegNet 引入了一個聯(lián)合 encoder-decoder 模型,是最早的高效率分割模型之一。延續(xù)SegNet,ENet 也設(shè)計了 encoder-decoder ,層數(shù)較少,降低計算成本。然后,two-branch 和 multi-branch 系統(tǒng)出現(xiàn)了。ICNet, ContextNet, BiSeNet, GUN 通過一個較深的 branch 在低分辨率輸入上學(xué)習(xí)全局信息,通過一個較淺的 branch 在高分辨率圖像上學(xué)習(xí)細節(jié)信息。但是,SOTA 的語義分割仍具挑戰(zhàn),通常需要高性能GPU。受 two-branch 啟發(fā),F(xiàn)ast-SCNN 加入了一個共享的淺層網(wǎng)絡(luò)來編碼細節(jié)信息,在低分辨率輸入上高效地學(xué)習(xí)全局信息。
詳細網(wǎng)絡(luò)如下表:
【24】ShuffleNet V2:語義分割的一個有效解決方案:具有可分卷積
《An efficient solution for semantic segmentation: ShuffleNet V2 with atrous separ:able convolutions》
鏈接:https://arxiv.org/pdf/1902.07476v1.pdf
本文設(shè)計的4個出發(fā)點:
當通道寬度不相等時,內(nèi)存訪問成本(MAC)就會增加,因此通道寬度應(yīng)該保持相等。
在提升MAC時,應(yīng)該避免過度使用組卷積。
為了保持較高的并行度,應(yīng)該避免網(wǎng)絡(luò)碎片化。
諸如ReLU、Add、AddBias等元素明智操作是不可忽略的,應(yīng)該減少。
本文貢獻:
在語義分割任務(wù)上使用ShuffleNetV2、DPC編碼器以及一個全新的解碼模塊實現(xiàn)了SOT的計算效率,在Cityscapes測試數(shù)據(jù)集上達到了70.33%的mIoU;
所提出的模型和實現(xiàn)完全兼容TensorFlow Lite,能夠在Android和iOS移動手機平臺實時運行;
TensorFlow的網(wǎng)絡(luò)實現(xiàn)以及訓(xùn)練模型都是開源的。
模型結(jié)構(gòu):
如上圖所示,使用了ShufflenetV2框架來提取特征,然后接入DeepLabV3編碼器,最后使用雙線性縮放作為新的解碼器來生成分割掩模。網(wǎng)絡(luò)的設(shè)計與修改都是在ImageNet數(shù)據(jù)集上驗證后作出的選擇。
特征提取之后使用DPC編碼器。文章提供了兩種不同架構(gòu)的DPC,一個是DPC基礎(chǔ)模塊,另一個是基于MobileNetV2的DPC模塊,細節(jié)如下圖所示:
編碼器輸出之后會經(jīng)過1×1卷積層降維,然后緊接著Dropout層、雙線性縮放和最后的分類ArgMax。其中解碼部分采用的簡單的雙線性縮放操作將特征圖縮放到原圖尺寸。
模型詳細結(jié)構(gòu)如下表所示:
本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。