語義分割是為圖像中的像素分配標記的過程。
這與分類形成了鮮明的對比,在分類中,一個標簽被分配給整個圖片。語義分割將同一類的多個對象視為一個實體。另一方面,實例分割將同一類的多個對象視為不同的單個對象(或實例)。通常,實例分割比語義分割更難。語義分割和實例分割之間的比較
本文將探討一些使用經典和基于深度學習的方法來執(zhí)行語義分割的方法。此外,還將討論常用的損失函數的選擇和應用。
經典方法
在深度學習時代到來之前,大量的圖像處理技術被用來將圖像分割成感興趣的區(qū)域。下面列出了一些常用的方法。
灰度分割
最簡單的語義分段形式涉及分配區(qū)域必須滿足的硬編碼規(guī)則或屬性,以便為其分配特定標簽。規(guī)則可以根據像素的屬性(例如灰度級強度)來構建。使用此技術的一種方法是拆分(Split)和合并(Merge)算法。該算法遞歸地將圖像分割成子區(qū)域,直到可以分配標簽,然后通過合并它們將相鄰的子區(qū)域與相同的標簽組合。
這種方法的問題是規(guī)則必須硬編碼。此外,僅用灰色級別的信息來表示復雜的類(如人)是極其困難的。因此,需要特征提取和優(yōu)化技術來正確地學習這些復雜類所需的表示。
條件隨機場
考慮通過訓練模型為每個像素分配類來分割圖像。如果我們的模型不完美,我們可能會得到自然界不可能得到的噪聲分割結果(如圖中所示,狗像素與貓像素混合)。
將帶標簽dog的像素與帶標簽cat的像素混合(圖c),更真實的分割結果如圖d所示
可以通過考慮像素之間的先驗關系來避免這些問題,例如,對象是連續(xù)的,因此附近的像素往往具有相同的標簽。為了模擬這些關系,我們使用條件隨機場(CRF)。
CRF是一種用于結構化預測的統(tǒng)計建模方法。與離散分類器不同,CRF可以在進行預測之前考慮“相鄰上下文”,比如像素之間的關系。這使得它成為語義分割的理想候選。本節(jié)探討CRF在語義分割中的應用。
圖像中的每個像素都與一組有限的可能狀態(tài)相關聯。在我們的示例中,目標標簽是可能的狀態(tài)集。將一個狀態(tài)(或標簽,u)分配給單個像素(x)的成本稱為它的一元成本(unary cost)。為了對像素之間的關系建模,我們還考慮了將一對標簽(u,v)分配給一對像素(x,y)的成本,即成對成本(pairwise cost)。我們可以考慮它的近鄰像素對(Grid CRF)或者我們可以考慮圖像中的所有像素對(Dense CRF)
Dense vs Grid CRF
所有像素的一元和成對成本之和被稱為CRF的energy (或成本/損失)??梢宰钚』撝狄垣@得良好的分割輸出。
深度學習方法
深度學習極大地簡化了執(zhí)行語義分割的管道,并產生了令人印象深刻的質量結果。在本節(jié)中,我們將討論用于訓練這些深度學習方法的流行模型體系結構和損失函數。
1.模型架構
全卷積網絡(FCN)是用于語義分割的最簡單、最流行的架構之一。在論文FCN for Semantic Segmentation中,作者使用FCN首先通過一系列卷積將輸入圖像下采樣到更小的尺寸(同時獲得更多通道)。這組卷積通常稱為編碼器。然后通過雙線性插值或一系列轉置卷積對編碼輸出進行上采樣。這組轉置卷積通常稱為解碼器。
FCN中的下采樣和上采樣
這種基本架構雖然有效,但也有一些缺點。其中一個缺點是由于轉置卷積(或反卷積)操作的輸出不均勻重疊而出現棋盤偽影(Checkerboard Artifacts)。
棋盤偽影的形成
另一個缺點是由于編碼過程中的信息丟失而在邊界處的分辨率較差。
有幾種解決方法可以提高基本FCN模型的性能。下面是一些很受歡迎的解決方法
- U-Net
U-Net是對簡單FCN架構的升級。它具有從卷積塊的輸出到同一層轉置卷積塊的相應輸入的skip connections。
U-Net
這種skip connections 允許梯度更好地傳遞,并提供來自圖像大小的多個尺度的信息。來自更大范圍(上層)的信息可以幫助模型更好地分類。來自更小范圍(更深層次)的信息可以幫助模型更好地分段/定位。
- Tiramisu模型
Tiramisu模型類似U-Net,不同之處是它使用Dense塊進行卷積和轉置卷積,就像DenseNet論文中所做的那樣。Dense塊由若干層卷積組成,在這些卷積層中,前面所有層的特征映射都用作后面所有層的輸入。由此產生的網絡具有極高的參數效率,可以更好地訪問較早層的特征。
Tiramisu Network
這種方法的缺點是,由于多個機器學習(ML)框架中的連接操作的性質,它的內存效率不是很高(需要運行大型GPU)。
- MultiScale方法
一些深度學習模型顯式地引入了合并來自多個尺度的信息的方法。例如,金字塔場景解析網絡(PSPNet)使用四種不同的核大小執(zhí)行池化操作(max或average),并跨越CNN的輸出特征映射,例如ResNet。然后,使用雙線性插值來對所有池輸出和CNN輸出特征映射的大小進行采樣,并將所有這些輸出特征映射沿著通道軸連接。在該級聯輸出上執(zhí)行最終卷積以生成預測。
PSPNet
Atrous(Dilated)卷積提供了一種有效的方法來組合多個尺度的特征而不會大量增加參數的數量。通過調節(jié)dilation rate,相同的filter使其權重值在空間中spread得更遠。這使它能夠學習更多全局背景。
級聯的Atrous Convolutions
DeepLabv3論文使用不同擴張率的Atrous卷積從多個尺度捕獲信息,圖像大小沒有顯著損失。他們嘗試以級聯方式(如上所示)使用Atrous卷積,并以Atrous Spatial Pyramid Pooling的形式(如下所示)以并行方式使用Atrous卷積。
Parallel Atrous Convolutions
- 混合CNN-CRF方法
一些方法使用CNN作為特征提取器,然后使用這些特征作為Dense CRF的一元成本(潛在)輸入。由于CRF能夠模擬像素間關系,因此這種混合CNN-CRF方法提供了良好的結果。
使用CNN和CRF組合的方法
某些方法將CRF納入神經網絡本身,如CRF-as- rnn,其中Dense CRF被建模為循環(huán)神經網絡。這支持端到端訓練,如上圖所示。
2.損失函數
與普通分類器不同,必須為語義分段選擇不同的損失函數。以下是一些用于語義分割的常用損失函數:
- Pixel-wise Softmax with Cross Entropy
用于語義分割的標簽大小與原始圖像相同。標簽可采用one-hot編碼形式表示,如下圖所示:
用于語義分段的One-Hot 格式
由于標簽是一種方便的One-Hot 形式,因此可以直接作為計算交叉熵的ground truth (target)。然而,在應用交叉熵之前,必須在預測輸出上逐像素地應用softmax,因為每個像素可以屬于我們的任何目標類。
- Focal Loss
在RetinaNet的論文中引入的Focal Loss,建議在嚴重類不平衡的情況下,升級到標準交叉熵損失。
考慮如下圖所示的標準交叉熵損失方程(藍色)。即使在我們的模型對像素類(比如80%)非常有信心的情況下,它也有一個有形的損失值(在這里,大約為0.3)。另一方面,當模型對一個類有信心(即80%的置信度損失接近0)時,Focal Loss(紫色,gamma=2)對模型的懲罰并不大。
標準交叉熵(藍色)與Focal Loss有不同的伽瑪值
讓我們通過一個直觀的例子來探討為什么這是重要的。假設我們有一個10000像素的圖像,只有兩個類:背景類(單熱形式為0)和目標類(單熱形式為1)。讓我們假設97%的圖像是背景,3%的圖像是目標?,F在,假設我們的模型80%確定背景像素,但只有30%確定目標類像素。
在使用交叉熵的同時,由于背景像素引起的損失(97% of 10000) * 0.3等于等于2850 并且由于目標像素引起的損失等于(3% of 10000) * 1.2等于360。顯然,由于更自信的階級所造成的損失占主導地位,并且模型學習目標階層的動機很小。相比之下,由于焦點損失,背景像素引起的損失等于(97% of 10000) * 00.這使得模型能夠更好地學習目標類。
- Dice Loss
Dice Loss是另一種流行的損失函數,用于具有極端類不平衡的語義分割問題。在V-Net論文中引入Dice Loss用于計算預測類和ground truth類之間的重疊。Dice 系數(D)表示如下:
Dice 系數
我們的目標是最大化預測類和ground truth類之間的重疊(即最大化Dice 系數)。因此,我們通常最小化(1-D) 以獲得相同的目標,因為大多數機器學習(ML)庫僅提供最小化的選項。
Dice 系數的導數
盡管Dice Loss對于具有類不平衡的樣本效果很好,但計算其導數的公式(如上所示)在分母中具有平方項。當這些值很小時,我們可能會得到很大的梯度,導致訓練不穩(wěn)定。
應用
語義分段用于各種現實生活中。以下是語義分段的一些重要用例。
自動駕駛
語義分割用于識別車道,車輛,人和其他感興趣的對象。所得結果可用于智能決策,以正確引導車輛。
自動駕駛汽車的語義分割
自動駕駛汽車的一個限制是性能必須是實時的。解決上述問題的一個方法是將GPU與車輛本地集成。為了提高上述解決方案的性能,可以使用較輕(低參數)的神經網絡,也可以實現邊緣擬合神經網絡的技術。
醫(yī)學圖像分割
語義分割用于識別醫(yī)學掃描中的顯著元素。這對鑒別腫瘤這種異常特別有用。算法的準確性和較低的召回率對這些應用具有重要意義。
醫(yī)學掃描的分割
我們還可以自動化一些不太重要的操作,比如從三維語義分割掃描中估計器官的體積。
場景理解
語義分割通常是場景理解和視覺問答(VQA)等復雜任務的基礎。場景圖或標題通常是場景理解算法的輸出
場景理解
時尚產業(yè)
在服裝行業(yè)中,語義分割用于從圖像中提取服裝項目,從而從零售商店中提供類似的建議。更高級的算法可以在圖像中"重新設計"特定的衣物。
衛(wèi)星(或航空)圖像處理
語義分割用于從衛(wèi)星圖像中識別陸地類型。典型的使用案例涉及分割水體以提供準確的地圖信息。其他高級用例包括繪制道路,識別作物類型,識別免費停車位等。
衛(wèi)星/航空圖像的語義分割
結論
深度學習極大地增強和簡化了語義分割算法,為現實應用中的更廣泛采用鋪平了道路。由于研究界一直在努力提高這些算法的準確性和實時性,本文中列出的概念并不詳盡。然而,本文介紹了這些算法的一些流行變體及其實際應用。
1.《多個掃描件怎么拆分?總結很全面速看!語義分割的簡單指南》援引自互聯網,旨在傳遞更多網絡信息知識,僅代表作者本人觀點,與本網站無關,侵刪請聯系頁腳下方聯系方式。
2.《多個掃描件怎么拆分?總結很全面速看!語義分割的簡單指南》僅供讀者參考,本網站未對該內容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉載時請保留本站內容來源地址,http://f99ss.com/gl/3008635.html