彙總|實時性語義分割算法(全)

作者:明澤Danny

來源:公眾號|計算機視覺工坊(系投稿)

我們在上篇—彙總|實時性語義分割算法 中,已經總結了【1】~【12】,這裡我們繼續。

【13】用於實時語義分割的雙向分割網絡

《BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation》

鏈接:https://arxiv.org/pdf/1808.00897.pdf

本文的出發點是因為以往的工作中的1.感受野太小 2.空間信息的損失

關於空間信息

空間信息(Spatial information)主要指的是圖像的局部細節信息,尤其是對於邊緣豐富的圖像。由於卷積網絡規模大,一般要求輸入圖像尺寸較小,需要對原始圖像進行Crop或者Resize,這個過程會損失細節的空間信息。通過設置只包含3個網絡的Spacial Path,可保留豐富的空間信息,進而將低緯度的空間細節信息與高緯度的信息整合。

網絡框架:

彙總|實時性語義分割算法(全)

右邊為特徵融合模塊(FFM):

Spatial Path 捕獲的空間信息編碼了絕大多數的豐富細節信息,Context Path 的輸出特徵主要編碼語境信息。兩路網絡的特徵並不相同,因此不能簡單地加權兩種特徵,要用一個獨特的特徵融合模塊以融合這些特徵。

實驗結果:

彙總|實時性語義分割算法(全)


【14】用於實時語義分割的輕量級精細網

《Light-Weight RefineNet for Real-Time Semantic Segmentation》

鏈接:https://arxiv.org/pdf/1810.03272v1.pdf

論文提出了RefineNet 的輕量化版本Light-Weight RefineNet ,針對實時分割任務,將速度從20FPS提升到了55FPS(GPU,512*512輸入,Mean IOU 81.1%,PASCAL VOC測試集)。

網絡結構:

彙總|實時性語義分割算法(全)


彙總|實時性語義分割算法(全)


彙總|實時性語義分割算法(全)

RefineNet 的總體網絡結構,分為下采樣的encoder部分和上採樣的decoder部分。網絡主要包含4個模塊,RCU,CRP,FUSION,CLF。為了輕量化該網絡,分別使用RCU-LW,CRP-LW。

FUSION-LW替換了原始網絡的RCU,CRP,FUSION。通過後續的實驗作者又發現RCU對於網絡的精度提升效果微弱,因此將RCU模塊也去掉了。

為什麼去掉RCU模塊,網絡精度影響很小?

因為:

(1)雖然RCU模塊中的3*3卷積使得網絡具有更大的感受野,但是通過shortcut結構,底層特徵和高層特徵也可以共享。

(2)CRP模塊也可以獲得上下文的信息。

可以從下圖看出,RCU模塊對精度提升微弱,而CRP模塊對精度提升明顯。

彙總|實時性語義分割算法(全)

模型參數比較:

彙總|實時性語義分割算法(全)


基於ResNet101的基礎結構的RefineNet,第一個為傳統的RefineNet,第二個為帶RCU的RefineNet,第三個為不帶RCU的RefineNet。可見RefineNet-101-LW相比RefineNet-101將參數量和運算量都大大降低。

【15】ShelfNet用於實時語義分割

《ShelfNet for Real-time Semantic Segmentation》

鏈接:https://arxiv.org/pdf/1811.11254v1.pdf

  1. 該文章提出了一種全新的架構——ShelfNet,利用多個編碼-解碼結構對 來改善網絡中的信息流動。
  2. 同一個殘差塊的兩個卷積層貢獻權重,在不影響精度的條件下,減少參數量;
  3. 在多個Benckmark上得到驗證

模型結構:

彙總|實時性語義分割算法(全)

ShelfNet可以看作是FCNs的集合。一些信息流路徑的例子用不同的顏色標記。每個路徑相當於一個FCN(除了在ResNet主幹中有池化層)。與FCN集合的等價性使ShelfNet能夠用一個小的神經網絡來執行精確的分割。

彙總|實時性語義分割算法(全)

【16】LadderNet:用於醫學圖像分割的基於U-NET的多路徑網絡

《LadderNet: MULTI-PATH NETWORKS BASED ON U-NET FOR MEDICAL IMAGE SEGMENTATION》

鏈接:https://arxiv.org/pdf/1810.07810.pdf

模型結構:

彙總|實時性語義分割算法(全)


1、3是編碼器分支,2、4是解碼器分支,A-E是不同級的特徵。整個模型沒有使用池化層,用的是一個步長為2的卷積層代替,通道數在編碼器部分逐級翻倍。

可以看出這是兩個U-Net相連,有兩個U形(12, 34),而這兩個U形之間的A-D級採用跳接連接起來。U-Net網絡是,跳接用的是融合,也就是通道數相加,但是這裡用的直接求和的模式(要求通道數必須一樣)。

但增加更多的encoder-decoder分支會導致參數增加,訓練變得困難,所以作者又採用了Shared-weights residual block(參數共享殘差塊),如下圖所示。

彙總|實時性語義分割算法(全)


【17】ShuffleSeg實時語義分割網絡

《SHUFFLESEG: REAL-TIME SEMANTIC SEGMENTATION NETWORK》

鏈接:https://arxiv.org/pdf/1803.03816.pdf

嗯。。。這篇文章沒深刻說的 哈哈

該架構將分成兩個主要模塊進行解釋:負責提取特徵的編碼模塊,負責在網絡中進行上採樣以計算最終類別的概率圖的解碼模塊。

彙總|實時性語義分割算法(全)

1)基於ShuffleNet (Shufflenet: An extremely efficient convolutional neural network for mobile devices) 提出的分割網絡

2)編碼器使用ShuffleNet 單元,解碼器綜合了 UNet、FCN8s 和 Dilation Frontend 的結構;速度快,沒有什麼創新。。。。

【18】RTSeg:實時語義分割比較研究

《RTSeg: REAL-TIME SEMANTIC SEGMENTATION COMPARATIVE STUDY》

鏈接:https://arxiv.org/pdf/1803.02758.pdf

提供特徵提取和解碼方法,稱為元架構;

給出了計算精度和計算效率之間的權衡;

Shufflenet比segment減少了143x gflops;

模型結構:

彙總|實時性語義分割算法(全)


彙總|實時性語義分割算法(全)


使用空洞卷積代替下采樣的feature map,空洞卷積確保網絡維持足夠的感受野而不需要通過pooling和stride conv來破壞像素結構;

Meta-Architectures

1)SkipNet meta-architecture;

2)U-Net meta-architecture;

3)Dilation Frontend meta-architecture;

【19】ContextNet:實時為語義分割探索上下文和細節

《ContextNet: Exploring Context and Detail for Semantic Segmentation in Real-time》

鏈接:https://arxiv.org/pdf/1805.04554.pdf

模型結構:

彙總|實時性語義分割算法(全)


ContextNet利用更深層的網絡,增加的層數有助於學習更復雜和抽象的特徵,從而提高準確性,但也增加了運行時間。聚合來自多個分辨率的上下文信息是有益的,結合了多個級別的信息以提高性能。

Depth-wise Convolution to Improve Run-time:

深度可分離卷積將標準卷積(Conv2d)分解為深度上的卷積(DWConv),也稱為空間或通道上的卷積,然後是1×1的點卷積層。因此,跨通道和空間相關性的計算是獨立的,這大大減少了參數的數量,導致更少的浮點運算和快速的執行時間。

ContextNet利用了DWConv,輸入下采樣的子網使用了DWConv的瓶頸殘差塊。

Capturing Global and Local Context:

ContextNet有兩個分支,一個是全分辨率(h×w),另一個是低分辨率(如h/4 w/4),輸入圖像高度h,寬度w。每個分支都有不同的職責;後者捕捉圖像的全局上下文,前者為更高分辨率的分割提供細節信息。

  1. 為了快速提取特徵,語義豐富的特徵只從最低可能的分辨率提取;
  2. 局部上下文的特徵通過一個非常淺的分支從全分辨率輸入中分離出來,然後與低分辨率的結果相結合。

【20】CGNet:一個輕量級的上下文引導的語義分割網絡

《CGNet: A Light-weight Context Guided Network for Semantic Segmentation》

鏈接:https://arxiv.org/pdf/1811.08201.pdf

該文分析了語義分割的內在特性,提出了學習局部特徵和周圍上下文的聯合特徵,並進一步改進全局上下文的聯合特徵的CG塊。有效的利用 local feature, surrounding context and global context。其中的CG塊,在各個階段有效地捕獲上下文信息。CGNet的主幹是專門為提高分割精度而定製的,以減少參數的數量和節省內存佔用。在相同數量的參數下,提出的CGNet顯著優於現有的分割網絡(如ENet和ESPNet)。

模型結構:

彙總|實時性語義分割算法(全)

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


彙總|實時性語義分割算法(全)

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

彙總|實時性語義分割算法(全)

彙總|實時性語義分割算法(全)

個人觀點:

1)CGNet進一步拓展了non-local的概念,從local,surrounding和global三個層次獲取空間特徵間的關聯。

2)在CGNet的stage2和stage3都使用GC block,區別於non-local中只有resnet部分stage和部分blcok之間引入non-local機制。

【21】用於自動駕駛的實時語義分割解碼器的設計

《Design of Real-time Semantic Segmentation Decoder for Automated Driving》

鏈接:https://arxiv.org/pdf/1901.06580.pdf

本文是採用編碼解碼結構,編碼器是獨立的10層VGG。

彙總|實時性語義分割算法(全)

使用stride 2卷積後的max-pooling來減少空間問題,這樣就減少了超參數的數量和運行時。顯然,這是為了分割精度的權衡,但對於檢測、分類等其他任務則不是這樣。考慮到該編碼器是功能獨立的,需要在解碼器方面通過廣泛學習語義特徵來克服空間信息探索的差距。

彙總|實時性語義分割算法(全)

非瓶頸層的設計如下圖所示。它同時包含1D和3D卷積核。一維核主要一次從一個方向提取信息,三維核主要從較大的接受區域收集特徵。之後通過不同大小的多個kernel來尋找密集的信息,例如3×3, 5×5和1×1。接下來,融合使用不同內核提取的特徵。該方法有助於總結從不同接受區域收集到的語義特徵。合成的特徵再一次與輸入特徵融合到同一個非瓶頸層。在所提出的非瓶頸層中,多個跳轉連接到特徵融合塊,這有助於處理高梯度流,因為在反向傳播時,傳入的梯度分佈在所有路徑中。

彙總|實時性語義分割算法(全)


我們知道解碼器做得更寬,運行時間會大幅提高。因此,定期減少特徵圖的數量是負擔不起的,也超出了模型的預算。

【22】DSNet:用於實時駕駛場景的語義分割

《DSNet: DSNet for Real-Time Driving Scene Semantic Segmentation》

鏈接:https://arxiv.org/pdf/1812.07049v1.pdf

DSNet是一種高效且強大的單元和非對稱的編解碼器架構。採用混合擴張卷積方案來克服網格化問題。

DSNet詳細結構如下表:

彙總|實時性語義分割算法(全)

參考ShuffleNet V2總結了輕量框架指導準則如下:

準則1:等信道寬度最小化內存訪問成本(MAC)

準則2:過多的組卷積增加MAC

準則3:網絡碎片化降低並行度

準則4:Element-wise操作不可忽略

DSNet單元模塊:

彙總|實時性語義分割算法(全)


採用ENet的初始單元,使用最大池和步長2的卷積對輸入進行下采樣。深度可分卷積替換為擴張型卷積,以擴大接收域,這對語義分割至關重要。

【23】Fast-SCNN:快速語義分割網絡

《Fast-SCNN: Fast Semantic Segmentation Network》

鏈接:https://arxiv.org/pdf/1902.04502.pdf

我們知道在語義分割中較大的接受野對於學習目標類之間的複雜關聯(即全局上下文)很重要,圖像中的空間細節對於保持目標邊界是必要的,需要特定的設計來平衡速度和準確性(而不是重新定位分類DCNNs)。

模型框架:

彙總|實時性語義分割算法(全)

two-branch 網絡,它在低分辨率位置使用一個較深的 branch 來捕捉環境信息,在高分辨率位置使用一個較淺的 branch 來學習細節信息。然後,將這二者融合起來,形成最終的語義分割結果。

本文的主要貢獻:

1)提出了一個實時語義分割算法 Fast-SCNN,在高清圖像上準確率為68%,速度為123.5幀每秒;

2)調整了 skip connection,提出了一個淺層的 learning to downsample 模塊,可以快速而高效地通過 multi-branch 來提取低層次特徵;

3)設計了low capacity Fast-SCNN,對於small capacity網絡而言,多訓練幾個 epoch的效果和在ImageNet上進行預訓練是一樣的。

之前的PSPNet 中的金字塔池化模塊和DeepLab中的 atrous 空間金字塔池化(ASPP)用於 encode 和利用全局信息。與目標檢測類似,速度是語義分割系統設計中的一個重要因素。基於FCN,SegNet 引入了一個聯合 encoder-decoder 模型,是最早的高效率分割模型之一。延續SegNet,ENet 也設計了 encoder-decoder ,層數較少,降低計算成本。然後,two-branch 和 multi-branch 系統出現了。ICNet, ContextNet, BiSeNet, GUN 通過一個較深的 branch 在低分辨率輸入上學習全局信息,通過一個較淺的 branch 在高分辨率圖像上學習細節信息。但是,SOTA 的語義分割仍具挑戰,通常需要高性能GPU。受 two-branch 啟發,Fast-SCNN 加入了一個共享的淺層網絡來編碼細節信息,在低分辨率輸入上高效地學習全局信息。


彙總|實時性語義分割算法(全)

詳細網絡如下表:

彙總|實時性語義分割算法(全)

【24】ShuffleNet V2:語義分割的一個有效解決方案:具有可分卷積

《An efficient solution for semantic segmentation: ShuffleNet V2 with atrous separ:able convolutions》

鏈接:https://arxiv.org/pdf/1902.07476v1.pdf

本文設計的4個出發點:

  1. 當通道寬度不相等時,內存訪問成本(MAC)就會增加,因此通道寬度應該保持相等。
  2. 在提升MAC時,應該避免過度使用組卷積。
  3. 為了保持較高的並行度,應該避免網絡碎片化。
  4. 諸如ReLU、Add、AddBias等元素明智操作是不可忽略的,應該減少。

本文貢獻:

在語義分割任務上使用ShuffleNetV2、DPC編碼器以及一個全新的解碼模塊實現了SOT的計算效率,在Cityscapes測試數據集上達到了70.33%的mIoU;

所提出的模型和實現完全兼容TensorFlow Lite,能夠在Android和iOS移動手機平臺實時運行;

TensorFlow的網絡實現以及訓練模型都是開源的。

模型結構:

彙總|實時性語義分割算法(全)

如上圖所示,使用了ShufflenetV2框架來提取特徵,然後接入DeepLabV3編碼器,最後使用雙線性縮放作為新的解碼器來生成分割掩模。網絡的設計與修改都是在ImageNet數據集上驗證後作出的選擇。

特徵提取之後使用DPC編碼器。文章提供了兩種不同架構的DPC,一個是DPC基礎模塊,另一個是基於MobileNetV2的DPC模塊,細節如下圖所示:

彙總|實時性語義分割算法(全)

編碼器輸出之後會經過1×1卷積層降維,然後緊接著Dropout層、雙線性縮放和最後的分類ArgMax。其中解碼部分採用的簡單的雙線性縮放操作將特徵圖縮放到原圖尺寸。

模型詳細結構如下表所示:

彙總|實時性語義分割算法(全)

本文僅做學術分享,如有侵權,請聯繫刪文。

下載1

在「計算機視覺工坊」公眾號後臺回覆:深度學習,即可下載深度學習算法、3D深度學習、深度學習框架、目標檢測、GAN等相關內容近30本pdf書籍。


下載2

在「計算機視覺工坊」公眾號後臺回覆:計算機視覺,即可下載計算機視覺相關17本pdf書籍,包含計算機視覺算法、Python視覺實戰、Opencv3.0學習等。


下載3

在「計算機視覺工坊」公眾號後臺回覆:SLAM,即可下載獨家SLAM相關視頻課程,包含視覺SLAM、激光SLAM精品課程。


分享到:


相關文章: