語義分割技術綜述
本文就Image Segmentation Using Deep Learning: A Survey
第三章的模型進行了分析和介紹,第一第二章的基礎指示可以看原文進行學習,相關知識有很多這裏就不班門弄斧了。
最好是一邊讀原文一邊看本文效果更佳原文連接
能力有限,水平一般,抱着學習的態度分享此文,有不準確的地方還請各位大佬斧正!
3.1 全連接網絡
關於FCN的資料有很多這裏就不展開了
下圖爲升級版的FCN(跳躍連接)
3.2 帶圖像的卷積模型
CNNs+全連接的CRF以解決深度卷積網絡最後一層的定位不足以進行精確的對象分割的問題。 這種模型可以更好的定位分割邊界。
3.3 解碼器編碼器模型
如下圖所示,左側是編碼器結構(VGG-16),右側是解碼器結構
一種更優的網絡Segnet。encoder是一個沿用VGG16的網絡模型,主要對物體信息進行解析。decoder將解析後的信息對應成最終的圖像形式,即每個像素都用對應其物體信息的顏色(或者是label)來表示。
Encoder對圖像的低級局域像素值進行歸類與分析,從而獲得高階語義信息
Decoder對縮小後的特徵圖像進行上採樣, 並使用之前max-pooling的索引進行上採樣。
編碼器解碼器結構應用於醫學的模型
U-net 和V-net 在這個領域表現良好,並在其他領域也有優秀貢獻
U-net的提出是最初是在用於顯微鏡下的圖片語義分割。
U-net 有兩個主要部分,分別是收縮並捕獲信息和擴張並精準定位。
左側是特徵提取部分 使用3x3的卷積和max pool進行編碼。
右側是上採樣部分,每上採樣一次,就和特徵提取部分對應的通道數相同尺度融合,但是融合之前要將其crop。這裏的融合也是拼接。
V-net也是基於FCN的模型,主要用於3D 醫學圖像的分割, 使用了一種客觀的Dice coefficient。這種方法可以解決前景和後景圖像體素不平衡的問題。
3.4 基於多尺度和金字塔網絡的模型
Feature Pyramid Network (FPN) 網絡
FPN 將bottom-up 和 top-down 過程進行橫向連接。
Pyramid Scene Parsing Network (PSPN) 也是基於多尺度的網絡。PSPN更好的學習全局信息。PSPN不同的是使用了帶有空洞卷積的參差網絡ResNet作爲特徵提取。
首先輸入圖像經過一個特徵提取網絡提取特徵,這部分作者採用的是添加了空洞卷積的ResNet網絡,空洞卷積的作用前面也提到過了,主要是增大感受野,提取到的特徵(具體而言stride=8)作爲後面pyramid pooling模塊的輸入。在pyramid pooling模塊中構建了深度爲4的特徵金字塔,不同深度的特徵是基於輸入特徵通過不同尺度的池化操作得到的,池化的尺度是可以調整的,這篇文章中給出的池化後的特徵尺寸分別是11、22、33和66。然後通過一個1*1卷積層將特徵維度縮減爲原來的1/4,最後將這些金字塔特徵直接上採樣到與輸入特徵相同尺寸,然後和輸入特徵做合併,也就是concat操作得到最終輸出的特徵圖。特徵合併的過程其實就是融合目標的細節特徵(淺層特徵)和全局特徵(深層特徵,也就是上下文信息)的過程,這裏因爲特徵提取網絡最後輸出的特徵層感受野足夠大,所以有足夠的全局信息(雖然網絡的深度不算深),個人認爲如果這裏能夠融合更多的淺層特徵(比如stride=4的那一層),也許分割結果在細節方面會更好一些
還有一種Laplacian Pyramid Reconstruction
網絡高層特徵富含語義信息,低層特徵更多是結構信息。在本文提出的特徵融合策略中,高層特徵的預測輸出通過一定方法(類似於拉式金字塔的做法)得到邊緣的區域,然後從低層特徵的預測結果中拿出這部分和高層輸出結合在一起。即:大範圍的語義信息取自高層特徵,邊緣信息取自低層特徵。
3.5 R-CNN 模型
Fast R-CNN, Faster R-CNN, Maksed-RCNN 這些模型已經非常成功在目標檢測領域。關於RCNN和目標檢測見RCNN。
幾個優秀的實例分割模型
Mask R-CNN
mask Rcnn 是基於faster rcnn基礎上改版而來的。
Mask-Rcnn的網絡結構
The Path Aggregation Network
3.6 空洞卷積模型和Deeplab 家族
空洞卷積提供了更大的感受野:例如3x3的卷機核在dilation rate爲2的時候有和5x5的卷積核一樣的感受野,但僅用了9個參數。如下圖。
Deeplab V1:
使用空洞卷積和CRF(條件隨機場)解決之前模型池化導致的信息丟失和標籤之間的概率模型沒有被應用的問題
空洞卷積的主要作用是在增大感受野的同時,不增加參數數量,而且VGG中提出的多個小卷積核代替大卷積核的方法,只能使感受野線性增長,而多個空洞卷積串聯,可以實現指數增長。
DeepLab V2:
DeepLab V2相對於DeepLab V1做了以下改進:
1)用多尺度獲得更好的分割效果(ASPP)
2)基礎層由VGG16改爲ResNet
3)使用不同的學習率
其中ASPP的引入是最大也是最重要的改變。多尺度主要是爲了解決目標在圖像中表現爲不同大小時仍能夠有很好的分割結果,比如同樣的物體,在近處拍攝時物體顯得大,遠處拍攝時顯得小。具體做法是並行的採用多個採樣率的空洞卷積提取特徵,再將特徵融合,類似於空間金字塔結構,形象的稱爲Atrous Spatial Pyramid Pooling (ASPP)。具體形式如下圖所示
DeepLab V3:
1)提出了更通用的框架,適用於任何網絡
2)複製了ResNet最後的block,並級聯起來
3)在ASPP中使用BN層
4)去掉了CRF
block 4 是Resnet的最後一個模塊
deeplab v3+
加入編碼器解碼器構造,可以通過改變Atrous rate 實現精度和時間的平衡
3.7 基於循環神經網絡模型
用兩個 RNNs 水平的掃描圖像,一個從上倒下,一個從下往上。每一個 RNN 將一個 patch 拉直以後的向量作爲輸入,然後更新其 hidden state,沿着輸入圖像 X 的每一個 column 進行。
還有一種2D-LSTM的結構
輸入圖像被分成多個不重疊的窗口,每個窗口的RGB通道傳入4個單獨的LSTM模型。每個窗口有左上,左下,右上,右下4個方向。每個LSTM塊的輸出通過前向傳播層,然後對每個方向進行求和並應用雙曲正切。最後對最後的LSTM塊進行求和並送入softmax。
graph-LSTM
使用LSTM網絡的動機:傳統的CNN大多是捕捉有限的局部信息,但是在語義預測的時候往往需要的是全局的信息。例如“舉起的胳膊”這種,對比軀幹才能判斷胳膊是舉起的還是放下的
- 輸入的RGB圖像首先經過預處理,使用SLIC來生成超像素的圖像,在此基礎上構建graph LSTM
- 原RGB圖像經過5層cnn,獲得feature map,該feature map分爲兩路繼續進行
- 第一路 經過1X1的卷積層,獲得confidence map(置信度map)
- 第二路 輸入到LSTM
- 將更新序列作爲上一步的輸入,加快收斂速度(參差連接)
- 1X1的卷積獲得置信度map,得到結果
更新序列排序: 通過將超像素的confidence進行排序,confidence最高的那個節點先更新。如果同時出現了置信度一樣的兩個節點,則先更新空間上偏左的那個
DA-RNN: 用於連接3D場景和語義標註
基於自然語言表達的語義分割算法:
使用CNN和LSTM分別對圖像和圖像描述進行編碼
將描述進行向量表述並和圖像的fcn模型進行融合
具體該模型工作原理可以看
R. Hu, M. Rohrbach, and T. Darrell, “Segmentation from natural language expressions,” in European Conference on Computer Vision. Springer, 2016, pp. 108–124.
3.8 注意力機制模型
注意力機制模型對不同對比例圖像賦予不同對權重(例如下圖的模型賦予大權重在小比例的人 進行1.0縮放,對近處的小孩進行小縮放0.5)
反向注意力機制:
此模型有三個分支:
第一個分支 學習的是pixel屬於各個類別的概率分佈;
第二個分支 學習的是pixel不屬於各個類別的概率分佈;
第三個分支 學習的是第一二個branch預測的map之間結合的權重;
Dual Attention network:
採用移除down-sampling的dilated ResNet(與DeepLab相同)的預訓練網絡基礎網絡爲,最後得到的feature map大小爲輸入圖像的1/8。之後是兩個並行的attention module分別捕獲spatial和channel的依賴性,最後整合兩個attention module的輸出得到更好的特徵表達。
這篇文章有詳細的講解在此引用一下JimmyHua的DAnet筆記
上半部分(Position Attention Module):
捕獲特徵圖的任意兩個位置之間的空間依賴,對於某個特定的特徵,被所有位置上的特徵加權和更新。權重爲相應的兩個位置之間的特徵相似性。因此,任何兩個現有相似特徵的位置可以相互貢獻提升,而不管它們之間的距離。
下半部分:
每個高層次特徵的通道映射都可以看作是一個特定於類的響應,不同的語義響應相互關聯。通過探索通道映射之間的相互依賴關係,可以強調相互依賴的特徵映射,提高特定語義的特徵表示。
兩個attention module的輸出先求和再做一次卷積得到最後的預測特徵圖
3.9生成模型和對抗訓練
將模型生成的預測圖或者真實的ground truth圖像一同放入對抗網絡
組合1:原始訓練圖片+ground truth, 這時候判別器判別爲 1 標籤;
組合2:原始訓練圖片+Segmentor分割結果, 這時候判別器判別爲0標籤。
這樣可以優化原始的損失函數,加入了對抗網絡的損失函數, 提高分割精度,提高鑑別能力。
效果如圖所示
弱監督的對抗網絡語義分割:
假設分割類別數爲K,那麼判別器則有K+1個類別的輸出。多出來的分類類別爲”該像素爲假像素”。訓練時,使用標記的分割圖像訓練前K個通道,使用(真實圖片,生成圖片)圖片組按照adversarial loss的定義訓練”該像素爲假像素”的通道。真是圖片既有分割數據庫中的圖片,也有大量未標註的圖片。或者也可以理解爲判斷“真/假”的分類器,其“真”的這一類擴展成了K類具體的語義類別。
對於全卷積化的判別器,其改動就是將分類結果變爲輸入圖片大小的dense prediction。從判斷每一個樣本的真僞變爲每一個像素的真僞。這樣獨立的”該像素爲假像素”通道才能和K類分割輸出放在一起。
除此之外,文章中提出的模型分爲了’semi-supervised’和’weakly-supervised’,用以區分擴展用的數據是完全沒有標註還是使用了分類標籤。對於使用分類標籤的’weakly-supervised’模型,GAN的生成器使用conditional GAN,將圖片的分類標籤作爲輸入。
應用於醫學的多尺度L1 Loss的語義分割模型:
整個網絡分爲segmentor和critic兩部分:
1、segmentor部分爲unet結構,encoder部分爲4層stride=2的卷積,decoder部分爲4層upsample,輸出爲網絡預測的腫瘤二值圖像;
2、critic部分的網絡共用segmentor部分encoder的前三層,分別向critic部分輸入經預測的腫瘤二值圖掩膜的原始輸入圖像,以及經真值腫瘤二值圖掩膜的原始輸入圖像,最後的loss計算兩個不同輸出之間的MAE值(L1 loss)。其中Multi-scale體現在對critic部分每一個卷積層輸出的特徵圖像都計算MAE值,最後的總loss取平均。
3、訓練方式類似於GAN的min-max對抗學習過程。首先,固定S(segmentor),對C(critic)進行一輪訓練;再固定C(critic),對S(segmentor)進行一輪訓練,如此反覆。對 critic 的訓練想使loss變大(min),對 segmentor 訓練想使loss變小(max)。
3.10 圖像分割的主動輪廓線學習模型
將輪廓線的長度加入損失函數
感興趣的可以看一下這篇筆記,感覺講的很不錯這邊就不多贅述了
圖像分割的主動輪廓線學習模型
3.11 其他模型
EncNet:使用基礎的特徵提取將特徵圖送入上下文編碼模型
RefineNet:該網絡顯式地利用下采樣過程中的所有可用信息來啓用使用遠程殘差連接的高分辨率預測
Seednet:使用強化學習的方式解決交互式分割的問題
Feedforward-Net:將小圖像元素(超像素)映射到從一系列範圍不斷擴大的嵌套區域中提取的豐富特徵表示。這些區域是通過從超像素一直“縮小”到場景級分辨率而獲得的。
全景分割:全景分割將語義分割(爲每個像素分配一個類標籤)和實例分割(檢測並分割每個對象實例)的典型任務統一起來。擬議的任務需要生成一個豐富而完整的連貫場景分割,這是邁向現實世界視覺系統的重要一步。
語義分割優秀模型一覽
引用:
https://blog.csdn.net/u014380165/article/details/83869175
https://zhuanlan.zhihu.com/p/75333140
https://zhuanlan.zhihu.com/p/59055363
https://blog.csdn.net/u010158659/article/details/78649827
https://blog.csdn.net/qq_26020233/article/details/88790378