基于深度学习的图像语义分割技术概述之4常用方法
本文為論文閱讀筆記,不當之處,敬請指正。
A Review on Deep Learning Techniques Applied to Semantic Segmentation:原文鏈接
4 深度學習圖像分割的常用方法
深度學習在多種高級計算機視覺任務中的成功—特別是監督CNNs(Convolutional Neural Networks,卷積神經網絡)在圖像分類、物體檢測方面的成功—鼓舞著研究人員探索此類網絡對于像素級標記,如語義分割方面的能力。此類深度學習技術的突出優點,相比傳統方法,,能夠針對當前問題自動學習合適的特征表示。傳統方法通常使用手動特征,為了使其適應新的數據集,通常需要專家經驗和時間對特征進行調整。
文章綜述中所比較的基于深度學習的圖像分割算法的特性(詳情查看原文)。
- 當前最成功的圖像分割深度學習技術都是基于一個共同的先驅:FCN(Fully Convolutional Network,全卷積神經網絡)。CNNs是非常高效的視覺工具,能夠學習到層次化的特征。
- 研究人員將全連接層替換為卷積層來輸出一種空間域映射而非類的評分,從而將現存、周知的分類模型,如AlexNet,VGG,GoogleNet和ResNet等,轉化為全卷積的模型。
- 這些映射用分數階卷積(fractionally strided convolutions,又名反卷積)來產生像素級標簽輸出。
- 這被認為是圖像分割問題的一個里程碑,展示了將CNNs應用于端到端圖像分割問題的訓練方法、如何高效地學習對任意大小圖像進行密集預測(dense predictions)。在各類標準數據集中取得令人矚目的精確率,被認為是深度學習語義分割的中流砥柱。
FCN的缺點:
- 空間無關性:不能有效地考慮全局上下文信息;
- 同類個體間差距:默認情況下不考慮個體之間的差距(不能區分相同類別的不同個體);
- 實時性:針對高分辨率圖像還遠未達到實時水平;
- 非結構化數據:不能完全適應3D點云般非結構數據或模型。
4.1 解碼器的變種(Decoder variants)
- 編碼:產生低分辨率的圖像表示或特征映射的過程,將圖像轉化為特征;
- 解碼:將低分辨率圖像映射到像素級標簽的過程,將特征轉化為圖像標簽。
除FCN之外,還有其他方法將分類的神經網絡用于語義分割。解碼過程通常是這些方法的顯著不同。
SegNet是其中一個明顯的例子。
- SegNet由一系列上采樣和卷積層組成,最后是一個softmax分類器預測像素級的標簽,其輸出與輸入大小相同。解碼階段每個上采樣層與編碼階段的最大池化相對應(上采樣與最大池化使用類似的對應規則)。這些層使用編碼階段最大值池化所對應的特征映射,將特征映射為標簽。特征圖上采樣后的結果,與一組訓練好的濾波器組進行卷積產生密集特征圖。當特征圖恢復到原始的分辨率時,之后就通過softmax分類器產生最終的分割結果。
- 基于FCN的架構使用了可學習的反卷積濾波器來上采樣特征圖。之后上采樣的特征圖被加入編碼階段產生的元素級的特征圖中。圖10顯示了兩種途徑的不同之處。
- 在SegNet中,進行最大池化時會記錄該最大值所在位置,從而在上采樣時,使用相同的位置關系將其映射到較大的特征圖中,其余部分用零填充。
- 在FCN中,反卷積核[a,b,c,d]是學習得到的,其與[x1,x2,…,x16]進行反卷積后加入到[y1,y2,…,y16]。
4.2 結合上下文知識
語義分割是一個要求多種空間域信息的問題。這也需要局部和全局信息的平衡。
- 細粒度、局部信息可以獲得較好的像素級的精確度。
- 圖像上下文的信息有助于去除局部特征的歧義。
- 池化層可以是網絡獲得一定程度的空域無關性、降低計算量、獲取全局上下文信息。即使是純CNNs網絡,如果沒有池化層,其每個單元的感受野也只能隨著層數的遞增而線性增加。
- 使CNNs考慮全局信息的途徑有很多:后處理階段使用CRFs(Conditional Random Fields ,條件隨機場)、膨脹卷積、多尺度聚合、在RNNs中加入上下文模型。
4.2.1 條件隨機場
- CNN架構的空間變換無關性限制了分割任務中的空間準確性。
- CRFs能夠將低級的圖像信息如像素之間的交互,和多類推理系統的輸出結合起來即每個像素的標簽,結合起來。這種結合對于獲取大范圍的依賴關系是非常重要的。
- DeepLab模型利用全連接對級CRF作為一個獨立的后處理階段以增強分割效果。其將每個像素建模為場中的一個節點,對于每對像素,不管有多遠都使用一個對級項(密集或全連接因子圖)。
- 考慮了短程和長程的交互,有助于系統修復細節。
- 全連接模型較為低效,可以使用概率推理進行替代
4.2.2 膨脹卷積(Dilated Convolutions)
膨脹卷積是克羅內克因子卷積濾波器的一種泛化,可以在不丟失分辨率的情況下指數級增大感受野。
- 膨脹卷積是使用上采樣濾波器的一種方法。膨脹率l
- 膨脹卷積可以使感受野指數級增長,而濾波器的參數數量線性增長。
膨脹卷積可以對任意分辨率實現密集特征提取。傳統卷積是膨脹卷積膨脹率為1情況下的特例。
膨脹卷積與卷積前先對濾波器做膨脹處理等價,即,根據膨脹率拓展其大小,將空元素用零填充。
- 通常使用膨脹卷積的網絡中,都是增加膨脹率以增大感受野,而不對特征圖進行降采樣、也沒有增加計算量。
4.2.3 多尺度預測
CNNs中的每個參數都影響著特征圖的尺度。濾波器存在只能檢測特定尺度特征的危險(假設與角度無關)。參數也可能和當前問題有關,使模型難以泛化到不同的大小。其中一種解決方法就是使用多尺度的網絡,生成多個尺度下的預測結構,之后將其結合到一個輸出中。
- 基于VGG-16的多尺度全連接網絡模型。該網絡有兩條路徑,一條處理原始大小的圖片,其網絡較淺。另一條路徑則處理二倍大小的圖片,其網絡結構為全連接的VGG-16和一個卷積層,其處理結果經過上采樣與第一條路徑的相結合。融合后的輸出經過另一系列卷積層產生最終的輸出。該網絡對尺度變換魯棒性較強。
- 另一種途徑是使用由4種尺度結合的CNNs的方法。這4個網絡具有相同的結構。其中的一個網絡用于尋找場景的語義標簽。該網絡從粗到細粒度的提取特征。
- 另一種網絡結構是由n個在不同尺度上操作的FCNs組成。從網絡中提取到的特征混合在一起(經過必要的上采樣和填充),之后經過卷積層產生最終的分割結果。其主要貢獻為兩個階段的學習過程。第一階段,獨立地訓練各個網絡,之后將網絡組合到一起,對最后一層進行微調。這種多次度模型允許高效地添加任意數量的訓練好的層。
4.2.4 特征混合
另一種向全卷積架構中加入上下文信息的方式是特征混合。
- 一種方法是將全局特征(從網絡前一層中提取的)和從子序列中的局部特征相混合。通用的架構如原始的FCN使用跳躍連接(skip connections)來實現不同層特征圖的混合。
- 另一種方法是早期混合。全局特征被反池化為局部特征大小,之后混合產生用于下一層的特征。
4.2.5 遞歸神經網絡
- CNNs已經被成功地用于多維度的數據,例如圖像。依賴手動定義的核,限制了架構對局部內容的理解。RNNs由于其獨特的拓撲結構已經被成功地應用到短、長時的序列。這種方法中,通過將像素級和局部信息相結合,RNNs能夠成功地建模全局內容、提升語義分割。
- 不足:圖像缺少自然序列架構。
- ReSeg是基于ReNet的語義分割架構。輸入圖像經過VGG-16第一層處理,將特征圖輸入到多個ReNet層中進行微調。最后使用反卷積(transposed convolution)對特征圖進行上采樣。這種方法中門遞歸單元的使用能夠在內存占用和計算效率上。
- 長項依賴存在梯度消失的問題。一些衍生模型如LSTM( Long Short-Term
Memory ,長短期記憶)網絡和GRUs可以避免這個問題。
總結
以上是生活随笔為你收集整理的基于深度学习的图像语义分割技术概述之4常用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何优雅地为程序中的变量和函数命名
- 下一篇: 用自己的数据集在R-FCN框架下进行检测