語義分割與實例分割的區(qū)別
/ 導(dǎo)讀 /
以人工智能為導(dǎo)向的現(xiàn)代計算機視覺技術(shù),在過去的十年中發(fā)生了巨大的變化。今天,它被廣泛用于圖像分類、人臉識別、物體檢測、視頻分析以及機器人及自動駕駛汽車中的圖像處理等領(lǐng)域。圖像分割技術(shù)是目前預(yù)測圖像領(lǐng)域最熱門的一項技術(shù),原因在于上述許多計算機視覺任務(wù)都需要對圖像進行智能分割,以充分理解圖像中的內(nèi)容,使各個圖像部分之間的分析更加容易。本文會著重介紹語義分割和實例分割的應(yīng)用以及原理。
在開始這篇文章之前,我們得首先弄明白,什么是圖像分割?
我們知道一個圖像只不過是許多像素的集合。圖像分割分類是對圖像中屬于特定類別的像素進行分類的過程,因此圖像分割可以認為是按像素進行分類的問題。
那么傳統(tǒng)的圖像分割與今天的圖像分割的區(qū)別在哪?
傳統(tǒng)的圖像分割算法均是基于灰度值的不連續(xù)和相似的性質(zhì)。而基于深度學(xué)習(xí)的圖像分割技術(shù)則是利用卷積神經(jīng)網(wǎng)絡(luò),來理解圖像中的每個像素所代表的真實世界物體,這在以前是難以想象的。
基于深度學(xué)習(xí)的圖像分割技術(shù)主要分為兩類:語義分割及實例分割。
語義分割和實例分割的區(qū)別又是什么?
語義分割會為圖像中的每個像素分配一個類別,但是同一類別之間的對象不會區(qū)分。而實例分割,只對特定的物體進行分類。這看起來與目標檢測相似,不同的是目標檢測輸出目標的邊界框和類別,實例分割輸出的是目標的Mask和類別。
智能圖像分割的應(yīng)用
了解完圖像分割的基本概念,我們來看看圖像分割在實際中的應(yīng)用有哪些?
由于圖像分割技術(shù)有助于理解圖像中的內(nèi)容,并確定物體之間的關(guān)系,因此常被應(yīng)用于人臉識別,物體檢測, 醫(yī)學(xué)影像,衛(wèi)星圖像分析,自動駕駛感知等領(lǐng)域。在我們生活中,圖像分割技術(shù)的應(yīng)用實例也很常見,如智能手機上的摳圖相機,在線試衣間,虛擬化妝,以及零售圖像識別等,這些應(yīng)用往往都需要使用智能分割后的圖片作為操作對象。
下面讓我們來看看圖像分割技術(shù)是怎么應(yīng)用在這些實例上的。
人臉識別
人臉識別技術(shù)作為類別檢測技術(shù)幾乎被應(yīng)用于每一臺智能手機及數(shù)碼相機上。通過這項技術(shù),相機能夠很快的檢測并精確定位人臉的生物特征,實現(xiàn)快速自動聚焦。在定位人臉的生物特征后,算法還能夠分割圖像中人的五官及皮膚,實現(xiàn)自定義美顏,美容甚至實現(xiàn)換臉的效果。
摳圖相機及肖像模式
谷歌最近發(fā)布了一個可以實時去除背景的 App: YouTube stories,通過分割圖像中的前景和后景,內(nèi)容創(chuàng)作者可以在創(chuàng)作故事時顯示不同的背景。
除了摳圖相機外,手機相機中的肖像模式也是常見的圖像分割應(yīng)用。
如榮耀手機上的肖像打光模式,我們可以看到隨著布光的角度和強度變化,除了圖像的背景產(chǎn)生了顯著的變化,人臉的細節(jié),皮膚色彩,明暗度對比甚至陰影角度都產(chǎn)生了變化。這種驚艷的效果離不開精確的圖像前后景及面部組分分割技術(shù)。
虛擬化妝
虛擬化妝常見于亞馬遜,道格拉斯等美妝在線商城。在圖像分割技術(shù)的幫助下,人們甚至不需要去專柜試色號,就可以直觀的通過虛擬化妝功能看到模特或者自身使用不同化妝品組合的效果?梢灶A(yù)見,隨著美妝市場的繼續(xù)擴大,AR虛擬試妝會成為未來的一項趨勢。
在線試衣間
虛擬化妝都能有了,虛擬試衣間肯定也不會少。在智能圖像分割技術(shù)的幫助下,不用脫衣也能實現(xiàn)完美試穿。東芝的一款虛擬試衣間利用圖像分割技術(shù)將二維圖像創(chuàng)建為三維模型,并實現(xiàn)不同衣物與人體表面的完美疊合。
零售圖像識別
圖像分割技術(shù)還被廣泛應(yīng)用在零售及生產(chǎn)領(lǐng)域。零售商和生產(chǎn)商會將圖像分割后的圖片作為圖像搜索引擎的輸入,以便于理解貨架上貨物布局。這項算法能夠?qū)崟r處理產(chǎn)品數(shù)據(jù),以檢測貨架上是否有貨物。如果一個產(chǎn)品不存在,他們可以識別原因,警告跟單員,并為供應(yīng)鏈的相應(yīng)部分提出解決方案。
手寫字符識別
手機上有很多手寫文字提取的App,它們的原理絕大部分也是基于智能圖像分割技術(shù)從手寫文檔中層層提取單詞,來識別手寫字符。
醫(yī)學(xué)影像
圖像分割技術(shù)在醫(yī)學(xué)影像學(xué)中的應(yīng)用,往往被很多外行人忽略。但是實際上在過去的十年中,智能圖像分割技術(shù)幾乎遍布醫(yī)學(xué)影像學(xué)的各項檢查中。不僅是因為醫(yī)學(xué)圖像分割能夠準確檢測人類不同部位的疾病的類型,例如癌癥,腫瘤等,更重要的是它能夠有助于從背景醫(yī)學(xué)影像(例如CT或MRI圖像)中識別出器官病變的像素,這是醫(yī)學(xué)影像分析中最具挑戰(zhàn)性的任務(wù)之一。
自動駕駛汽車
近幾年,隨著自動駕駛汽車的興起,圖像分割技術(shù)也被廣泛應(yīng)用在這一領(lǐng)域,目前主要被用來識別車道線和其他必要的交通信息,或者將圖像語義分割的結(jié)果與激光傳感器的點云數(shù)據(jù)做數(shù)據(jù)匹配,實現(xiàn)像素級的多傳感器融合。
智能圖像分割的任務(wù)描述
我們已經(jīng)在上文中討論了很多基于深度學(xué)習(xí)的圖像分割技術(shù)的應(yīng)用,現(xiàn)在讓我們來看看這項技術(shù)的輸出究竟是什么?
簡單來說,圖像分割技術(shù)的目標是輸出一個 RGB 圖像或單通道灰度圖像的分割映射,其中每個像素包含一個整數(shù)類標簽。
不同于目標檢測輸出的是目標整體的邊界框和類別,語義分割輸出圖像中每個像素的類別,而實例分割輸出的是目標的Mask和類別。
下面我們通過jeremyjordan的例子了解智能圖像分割的輸出是什么。
首先我們對左上的輸入圖片進行圖像分割,預(yù)測圖像中的每一個像素,為每個可能的類創(chuàng)建一個輸出通道,使用 one-hot 對類標簽進行編碼(右上)。通過獲取每個通道的argmax,可以將多通道的預(yù)測結(jié)果壓縮為單通道分割圖(右下)。當我們使用單通道分割圖覆蓋我們觀察目標的單一通道時,圖像中出現(xiàn)特定類的區(qū)域會被高亮,我們稱之為掩膜(Mask)。我們可以將掩膜覆蓋在觀察目標上,來檢查目標中的對象(左下)。值得注意的是,為了更容易了解圖像分割的過程,作者使用了一個低分辨率的預(yù)測圖做效果展示,而在實際的圖像分割中,預(yù)測圖會被Resize到原始輸入圖像的尺寸。
語義分割
在上文中,我們介紹了智能圖像分割技術(shù)的任務(wù)究竟是什么,而接下來我們會介紹完成這項任務(wù)的方法。語義分割便是其中之一。
語義分割的目的是為了從像素級別理解圖像的內(nèi)容,并為圖像中的每個像素分配一個對象類。
Semantic Segmentation by Patch Classification
基于像素塊分類的卷積分割網(wǎng)絡(luò)是最原始的智能圖像分割網(wǎng)絡(luò),該算法將待分類像素周圍的一個圖像塊作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,用于訓(xùn)練與預(yù)測。
paper:2012-Deep Neural Networks Segment Neuronal Membranes in Electron Microscopy Images
作者采用滑窗預(yù)測的方法遍歷整張圖像的內(nèi)容,將每一個滑動窗口內(nèi)的像素塊饋送到神經(jīng)網(wǎng)絡(luò)中進行類別預(yù)測,將預(yù)測結(jié)果的編碼標注在原圖像中的對應(yīng)位置,以實現(xiàn)近似像素級的分割。
但是這種方法存在顯而易見的缺點:
采用滑窗預(yù)測的方法,圖像塊的儲存開銷很大,并且窗口重疊區(qū)域存在重復(fù)計算,非常沒有效率
像素塊的大小限制了感受域, 只能提取局部特征,圖像不同區(qū)域的特征無法共享,分類性能很受限
沒有充分利用到圖像的上下文
FCN for Semantic Segmentation
基于像素塊分類的語義分割在結(jié)果上只是近似像素級的分割,如何實現(xiàn)完全的像素級分割是接下來的發(fā)展方向。
2015年J.Long 給出了當時全像素級分割的最佳解決方案,Fully Convolutional Network 全卷積神經(jīng)網(wǎng)絡(luò)。FCN在網(wǎng)絡(luò)架構(gòu)上不再使用全連接層,直接從抽象的特征中恢復(fù)每個像素所屬的類別。這種端對端的網(wǎng)絡(luò)架構(gòu),不僅在速度上遠快于像素塊分類的方式,而且能夠適用于任何大小的圖像。
paper:2015-Fully Convolutional Networks for Semantic Segmentation
FCN的作者描述了一種Dense prediction的預(yù)測方式。這種方式的特點在于將VGG-16等傳統(tǒng)卷積分類網(wǎng)絡(luò)的最后幾個全連接層都換成了卷積層,最終的輸出結(jié)果不再是一維的類別概率信息,而是二維特征圖中每個像素點的分類概率信息。
我們可以看到在上圖中,作者刪除了卷積分類網(wǎng)絡(luò)的最后一層,并將之前幾個全連接層都換成了卷積層,然后經(jīng)過softmax層,獲得每個像素點的分類概率信息。
那么問題來了,在上圖中我們最終得到的二維特征圖只有64x64的大小,如何保證我們輸入和輸出圖像的尺寸一致?
我們已經(jīng)在Dense prediction的過程中實現(xiàn)了Downsampling,現(xiàn)在我們需要找到一個Upsampling的方式。
常見的Upsampling方案有兩種:Shift-and-Stitch 和Bilinear Interpolation。
FCN的作者在這里給出了另外一種方案:轉(zhuǎn)置卷積(Transpose Convolution)。通過轉(zhuǎn)置卷積層和激活函數(shù)的堆棧,FCN可以學(xué)習(xí)非線性上采樣。
在有些研究中,這種操作又被稱為反卷積(deconvolution),但是把轉(zhuǎn)置卷積稱作反卷積的說法有些不恰當。
轉(zhuǎn)置卷積與反卷積的實際數(shù)學(xué)運算是不同的。反卷積在數(shù)學(xué)上做的是卷積的逆操作,而轉(zhuǎn)置卷積進行規(guī)則卷積,但逆轉(zhuǎn)其空間變換。
聽起來有些令人困惑,我們來看下一個具體的例子。
一個5x5圖像輸入到步長為2,無填充的3x3卷積層,這樣就能得到一個2x2的圖像。
如果我們想要逆轉(zhuǎn)這個過程,我們需要逆數(shù)學(xué)運算,以便從我們輸入的每個像素生成9個值。我們以步長為2的3x3卷積核遍歷2x2的輸入圖像,最終輸出4x4的圖像。這就是反卷積。
而轉(zhuǎn)置卷積要求輸出一定是一個和正常卷積輸入大小相同的圖像,對于這個例子是5x5的圖像。為了實現(xiàn)這一點,我們需要在輸入上執(zhí)行一些花哨的填充,即對2x2的輸入特征矩陣進行內(nèi)填充(如填充到3x3),使其維度擴大到適配卷積目標輸出維度,然后才可以進行普通的卷積操作。
使用轉(zhuǎn)置卷積能夠從之前的卷積結(jié)果中重建空間分辨率。這雖然不是數(shù)學(xué)上的逆,但是對于編碼器-解碼器體系結(jié)構(gòu)來說,它仍然非常有用。
現(xiàn)在我們來看看FCN的網(wǎng)絡(luò)結(jié)構(gòu)。
原始的FCN只在Conv6-7這一步直接進行32倍上采樣的轉(zhuǎn)置卷積,我們會發(fā)現(xiàn)輸出的結(jié)果過于模糊。
那么我們?nèi)绾胃纳七@個結(jié)果呢?
這就得利用Resnet里面的skip-connection,融合不同網(wǎng)絡(luò)層的輸出信息,以獲得更多的細節(jié)。在卷積神經(jīng)網(wǎng)絡(luò)中,低層網(wǎng)絡(luò)往往有更多的細節(jié)信息,而高層網(wǎng)絡(luò)具有更強的語義信息,但是對細節(jié)的感知能力較差。因此我們將Pool4層的輸出與conv6-7上采樣的結(jié)果相加,恢復(fù)到原圖分辨率只需要16倍上采樣。然后我們可以繼續(xù)向更低層做信息融合,得到8倍上采樣的結(jié)果,相比于FCN-32及16,FCN-8的結(jié)果更加精細。
總的來說,FCN作為語義分割的開山之作,無論是結(jié)構(gòu)還是思路都值得后續(xù)的研究者借鑒。但是在輸出結(jié)果方面還是有待提升,主要體現(xiàn)在即使FCN-8的輸出結(jié)果還是不夠精細,而且沒有空間規(guī)整(spatial regularization)步驟,使得結(jié)果缺乏空間一致性,即沒有充分考慮像素與像素之間的關(guān)系。
U-Net for medical engineering
生物醫(yī)學(xué)對于視覺任務(wù)的要求往往很高,目標輸出不僅要包括目標類別的位置,而且圖像中的每個像素都應(yīng)該有類標簽。為了滿足這些要求,Olaf Ronneberger 等人為生物醫(yī)學(xué)專門開發(fā)了U-Net圖像分割網(wǎng)絡(luò),通過使用更深的網(wǎng)絡(luò)結(jié)構(gòu)和跳層連接大幅提升了分割的精細度。
paper:2015-U-Net: Convolutional Networks for Biomedical Image Segmentation
從上圖中我們可以看到,U-Net的結(jié)構(gòu)由左、右兩部分組成,因為它的架構(gòu)看起來像字母 U,因此被命名為 U-Net。U-Net包括一個收縮通道來捕獲上下文,一個對稱的擴展通道來恢復(fù)空間分辨率和一系列跨層連接來融合低層級的細節(jié)信息和高層級的語義特征,從而實現(xiàn)精確定位。U-Net可以根據(jù)數(shù)據(jù)集的復(fù)雜程度,通過增加和刪減block來自由加深網(wǎng)絡(luò)結(jié)構(gòu)。值得注意的是U-Net的卷積過程沒有Padding操作,需要選擇適當?shù)妮斎氤叽?使得每次池化的輸入尺寸都是偶數(shù),以確保分割的準確。
其實認真分析U-Net 和 FCN 的基本結(jié)構(gòu)會發(fā)現(xiàn),兩者都是收縮通道和擴展通道的組合,但是還是存在一些結(jié)構(gòu)上的區(qū)別。
其一是,U-Net沒有使用VGG等ImageNet預(yù)訓(xùn)練的模型作為特征提取器,原因在于U-Net做的是醫(yī)學(xué)圖像的二值分割,與ImageNet的輸出分類完全不同。
其二是,U-Net在進行特征融合的時候,采用的是Concat,而不是FCN中的Add。Concat是通道數(shù)的增加, Add是特征圖相加,通道數(shù)不變。與Concat相比,Add的計算量少很多,但是Concat層更多用于不同尺度特征圖的語義信息的融合,而Add較多使用在多任務(wù)問題上。
SegNet
FCN和U-Net,這兩種網(wǎng)絡(luò)基本上定義語義分割的基本架構(gòu),即降采樣層/收縮通道和上采樣層/擴展通道的組合。
paper: SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
SegNet 在FCN和U-Net的基礎(chǔ)上,進一步優(yōu)化了語義分割的網(wǎng)絡(luò)結(jié)構(gòu),提出語義分割的模型由編碼器Encoder和解碼器Decoder組合,取代了收縮通道和擴展通道的說法,被后來的研究人員所引用。SegNet的編碼器網(wǎng)絡(luò)由13個卷積層組成,對應(yīng)于 VGG16網(wǎng)絡(luò)中用于對象分類的前13個卷積層。而解碼器網(wǎng)絡(luò)的任務(wù)是將編碼器學(xué)習(xí)的低分辨率特征語義投影到高分辨率的像素空間上,得到一個像素級的密集分類。
值得注意的是,解碼網(wǎng)絡(luò)使用最大池化層索引進行非線性上采樣,以生成稀疏的特征映射,然后通過可訓(xùn)練的卷積模塊進行卷積,使特征映射更加密集。最終解碼器輸出的特征映射被提供給Softmax層進行逐像素分類。
那么最大池化層索引上采樣與FCN的轉(zhuǎn)置卷積層上采樣區(qū)別在哪?
從上圖中我們可以看到,使用池化層索引進行上采樣最顯著的一個優(yōu)勢就是減少訓(xùn)練的參數(shù)量,減少內(nèi)存開銷。其次可以提升邊緣刻畫度。并且這種上采樣模式具有廣泛適用性,可以被用在到任何編碼解碼器網(wǎng)絡(luò)中。
DeepLab
我們在上文中已經(jīng)討論了FCN,U-Net和Segnet這些經(jīng)典的語義分割網(wǎng)絡(luò),接下來我們會討論代表著語義分割最前沿技術(shù)的Deeplab系列。
Deeplab是由谷歌研究人員開發(fā)的,目前被廣泛應(yīng)用的語義分割模型,它最重要的特性是以更低的計算成本獲得更好的輸出。
從2016年谷歌首次推出Deeplab V1,到最新的Deeplab V3+,已經(jīng)三代半了。
本文將主要介紹Deeplab v3+。
我們首先來看看Deeplab V3+的由來。
paper:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
上圖中a是SPP空間金字塔結(jié)構(gòu),b是在Segnet和U-Net上被廣泛認可的Encoder-Decoder體系結(jié)構(gòu),而Deeplab v3+結(jié)合了a和b,并通過使用Modified Aligned Xception和Atrous Separable Convolution,開發(fā)出更快,更強大的網(wǎng)絡(luò)。
我們可以看到,Deeplab V3+由Encoder和Decoder兩部分組成,相對于V3 最大的改進是將 DeepLab 的 DCNN及ASPP 部分看做 Encoder,將 ASPP的輸出的高層語義特征與DCNN中低層高分辨率信息融合后上采樣成原圖大小的部分看做 Decoder 。值得注意的是,這里的上采樣方式是雙線性插值。雙線性插值采樣在較低的計算/內(nèi)存開銷下能給出相對于轉(zhuǎn)置卷積上采樣更好的結(jié)果。
接下來我們來看看Deeplab V3+的幾個重要組成部分:
Atrous convolutions
Atrous Spatial Pyramidal Pooling(ASPP)
Modified Aligned Xception
1. Atrous Convolution
在上文中,我們提到過,FCN通過對輸入圖像進行32倍下采樣,再上采樣得到語義分割的結(jié)果。但是這種操作的主要問題之一是由于DCNN(深度卷積網(wǎng)絡(luò))中重復(fù)的最大池化和下采樣造成圖像分辨率過度下降,圖像細節(jié)信息丟失嚴重。此外,由于在學(xué)習(xí)上采樣的過程中還涉及到其他參數(shù),將采樣數(shù)據(jù)上采樣到32倍會是一項計算和內(nèi)存開銷很大的操作。
那么能否在相同的計算條件下,不用池化損失信息的方式增大卷積的感受野?
Deeplab的研究人員為此提出了一種新的下采樣的思路:空洞卷積/擴展卷積(Atrous/Dilated convolutions)?斩淳矸e能在相同數(shù)量的參數(shù)下,獲得更大的感受野,從而避免在重復(fù)池化下采樣的過程中圖像分辨率過度降低,從而丟失細節(jié)信息。
讓我們來看看空洞卷積是怎么在參數(shù)量不變的情況下,增大感受野的?
空洞卷積的工作原理是通過增加空洞來填補卷積核各值之間的空隙來增加卷積核的大小。卷積核各值之間填充的空洞數(shù)量稱為擴張率(dilation rate)。當擴張率等于1時,它就是正常卷積。當速率等于2時,會在每個值之間插入一個空洞,使得卷積核看起來像一個5x5的卷積。換句話說,利用添加空洞擴大感受野,讓原本3x3的卷積核,在相同參數(shù)量和計算量下?lián)碛?x5(dilated rate =2)或者更大的感受野,從而無需下采樣。
值得注意的是,在VGG中使用多個小卷積核代替大卷積核的方法,只能使感受野線性增長,而多個空洞卷積串聯(lián),可以實現(xiàn)感受野指數(shù)級增長。比如正常卷積中一個5×5的卷積核是可以由2次連續(xù)的3×3的卷積代替。但是對于同樣是3x3大小,dilated=2的空洞卷積來說,連續(xù)2層的3×3空洞卷積轉(zhuǎn)換卻相當于1層13×13卷積。
2. Atrous Spatial Pyramidal Pooling(ASPP)
空間金字塔形池化是SPPNet中引入的一個概念,用于從特征圖中捕獲多尺度信息。在SPP出現(xiàn)之前,如果想要獲取多尺度信息,需要提供不同分辨率的輸入圖像,并將計算出的特征圖一起使用,這往往需要很多計算和時間成本。而使用空間金字塔形合并,可以使用單個輸入圖像捕獲多尺度信息。下圖是SPPNet的結(jié)構(gòu)圖。
SPPNet產(chǎn)生3個尺度分別為1x1、2x2和4x4的輸出。通過將這些值轉(zhuǎn)換為一維矢量進行連接,從而在多個尺度上捕獲信息。
Deeplab 系列為了使得目標在圖像中表現(xiàn)為不同大小時仍能夠有很好的語義分割效果,將多尺度的信息融合的概念應(yīng)用于空洞卷積,通過將不同的擴張率空洞卷積的輸出串聯(lián)在一起,以多個尺度比例捕捉圖像的上下文,即ASPP。
值得注意的是,Deeplab v3+ 借鑒了MobileNet,在ASPP及DCNN中的Xception模塊都使用深度可分離卷積(depthwise separable convolution),在保持性能前提下,有效降低了計算量和參數(shù)量。
Deeplab V3+對V3的ASPP結(jié)構(gòu)進行了修改,最終的ASPP結(jié)構(gòu)如下圖所示。
除了3x3不同擴張率的空洞卷積及1x1的卷積輸出外,為了提供全局信息,還會將1x1的GAP上采樣后添加到空間金字塔上。
3. Modified Aligned Xception
Deeplab v3+的主干使用Modified Aligned Xception。Xception是經(jīng)典的圖像分類網(wǎng)絡(luò),然后在可變形卷積網(wǎng)絡(luò)(Deformable Convolutional Networks)中引入了Aligned Xception以進行目標檢測。而Modified Aligned Xception 在此基礎(chǔ)上進行了進一步的優(yōu)化。
上圖是Aligned Xception, 下圖是Modified Aligned Xception。
我們發(fā)現(xiàn)改進的地方主要在于,采用深度可分離卷積替換所有的最大池化操作,從而方便后續(xù)利用空洞可分離卷積(atrous separable conv )來提取任意分辨率的特征圖。其次在每個 3×3 深度卷積后,添加和MobileNet類似的額外的批處理歸一化和ReLU激活。
實例分割
在上文中,我們已經(jīng)討論了很多語義分割的網(wǎng)絡(luò)模型。借助這些模型我們能夠從像素級別理解圖像,并準確分割對象的形狀。
比如在下圖中,我們能夠通過語義分割有效地區(qū)分牛和背景。
但是問題來了,你能區(qū)分上面的圖片中有幾頭牛嗎?
僅憑語義分割顯然不能回答這個問題,下面讓我們看看實例分割是怎么做到區(qū)分同一類別中不同物體的。
Mask R-CNN
Mask R-CNN是實例分割的代表之作。
如下圖所示,Mask R-CNN 對于分割同一類別中不同物體,給出的答案是同時利用目標檢測和語義分割的結(jié)果,通過目標檢測提供的目標最高置信度類別的索引,將語義分割中目標對應(yīng)的Mask抽取出來。
paper:Mask R-CNN
Mask R-CNN的基礎(chǔ)其實是Faster R-CNN。Faster R-CNN使用 CNN 特征提取器來提取圖像特征,利用 Region Proposal 網(wǎng)絡(luò)生成感興趣區(qū)域(ROI),并通過ROI Pooling將它們轉(zhuǎn)換為固定的維度,最后將其反饋到完全連接的層中進行分類和邊界框預(yù)測。
而Mask R-CNN與Faster R-CNN 的區(qū)別在于,Mask R-CNN在Faster R-CNN 的基礎(chǔ)上(分類+回歸分支)增加了一個小型FCN分支,利用卷積與反卷積構(gòu)建端到端的網(wǎng)絡(luò)進行語義分割,并且將ROI-Pooling層替換成了ROI-Align。下圖是Mask R-CNN 基于Faster R-CNN/ResNet的網(wǎng)絡(luò)架構(gòu)。
Mask R-CNN首先將輸入原始圖片送入到特征提取網(wǎng)絡(luò)得到特征圖,然后對特征圖的每一個像素位置設(shè)定固定個數(shù)的ROI/Anchor(默認15個),將這些ROI區(qū)域饋送到RPN網(wǎng)絡(luò)進行二分類(前景和背景)以及坐標回歸,找出所有存在對象的ROI區(qū)域。緊接著通過ROIAlign從每個ROI中提取特征圖(例如7*7)。最后對這些ROI區(qū)域進行多類別分類,候選框回歸和引入FCN生成Mask,完成分割任務(wù)。
對ROIAlign的理解得從ROI-Pooling出發(fā)。為了得到固定大小(7X7)的特征圖,一般我們需要做兩次量化操作:1)圖像坐標 — feature map坐標,2)feature map坐標 — ROI feature坐標。池化操作的輸出值只能是整數(shù),RoI Pooling進行兩次取整損失了較多的精度,而這對于分割任務(wù)來說較為致命。
Maks R-CNN提出的RoI Align取消了取整操作,保留所有的浮點數(shù),然后通過雙線性插值的方法獲得多個采樣點的值,再將多個采樣點進行最大值的池化,即可得到該點最終的值。
對于推理過程,我們還需要將14x14的Mask二值化后Resize到原圖中的實際大小,但是實際上這一結(jié)果其實并不精細。
為此作者設(shè)計了另外一種Mask R-CNN網(wǎng)絡(luò)結(jié)構(gòu):Faster R-CNN/FPN,并將最后的輸出的Mask分辨率提升到28x28。FPN特征金字塔網(wǎng)絡(luò)通過融合低層網(wǎng)絡(luò)的高分辨率信息和高層網(wǎng)絡(luò)的高語義特征,大幅提升多尺度物體及小物體的檢測效果,使得Mask R-CNN的輸出結(jié)果更加精細。
總的來說,Mask R-CNN是個非常簡單,靈活并適用于多種場景的實例分割框架。但是Mask R-CNN比較依賴目標識別部分的結(jié)果,一旦目標識別不準確,實例分割的結(jié)果也會不精確。
語義分割對于分割的精度和效率都有很高的要求,由于實例分割在語義分割的基礎(chǔ)上,還需要區(qū)分出同一類的不同的個體,因此實例分割同樣有著精度和效率的要求。除此之外還面臨著和語義分割相似的問題和難點,如深層網(wǎng)絡(luò)小物體分割細節(jié)丟失的問題,如何處理幾何變化,處理遮擋,甚至由于源圖像被光照射,被壓縮帶來的圖像退化問題。
為了解決速度和效率的問題,后續(xù)研究人員還推出了Instance FCN這種單階段實例分割網(wǎng)絡(luò)(Single Shot Instance Segmentation)。盡管單階段分割網(wǎng)絡(luò)在精度上不如雙階段分割網(wǎng)絡(luò),但是其在速度及模型大小方面仍遠優(yōu)于雙階段網(wǎng)絡(luò),因此單階段網(wǎng)絡(luò)引領(lǐng)了近些年實例分割及目標識別的研究潮流。
令人激動的是,近幾年除了出現(xiàn)基于One-stage,Anchor-based的YOLACT和SOLO外,還出現(xiàn)了受到Anchor-free思路啟發(fā)的PolarMask和AdaptIS等實例分割網(wǎng)絡(luò)。這些Anchor-free的實例分割網(wǎng)絡(luò),也很出色。我會在接下來的幾篇文章中更新Anchor-free網(wǎng)絡(luò),感興趣的同學(xué),可以關(guān)注我的專欄。
圖像分割數(shù)據(jù)集
在最后一節(jié)中我會分享一些常見的圖像分割的數(shù)據(jù)集,來滿足不同領(lǐng)域朋友的研究需求。
Coco Dataset: 擁有164k 的原始 COCO 數(shù)據(jù)集圖像,并附有像素級注釋,是一個常用的基準數(shù)據(jù)集。它包括172個類: 80個thing class,91個stuff class和1個unlabeled class。
PASCAL Context: 是2010年 PASCAL VOC 的一組擴展注釋。它為整個場景提供了注釋,包含400多個真實世界數(shù)據(jù)。
The Cityscapes Dataset:包含30個類別和50個城市的城市場景圖像。用來評價城市場景中自動駕駛汽車的視覺算法性能。KITTI 和 CamVid 是類似的數(shù)據(jù)集,但是數(shù)據(jù)量相對較小,可以用來訓(xùn)練自動駕駛汽車。
Bdd100k: 包含10000多張具有豐富城市道路實例的像素級注釋圖像,拍攝自不同的時間,天氣和駕駛場景,可以用來訓(xùn)練自動駕駛汽車。
Lits Dataset:為了從肝臟 CT 中識別出腫瘤病變而創(chuàng)建的醫(yī)學(xué)影像數(shù)據(jù)集。該數(shù)據(jù)集包括130張訓(xùn)練用CT圖和70張測試CT圖。
CCP Dataset:包含1000多張帶有像素級注釋的服裝搭配圖片,總共有59個類別。
ADEK20K:包含2萬張圖片,100個thing class 和50個stuff class的像素級注釋場景數(shù)據(jù)集。
Pratheepan Dataset:包含32張臉部照片和46張家庭照片的皮膚分割數(shù)據(jù)集。
除上述常見的之外,還有以下種類繁多的圖像分割數(shù)據(jù)集。
Stanford Background Dataset
Sift Flow Dataset
Barcelona Dataset
MSRC Dataset
LITS Liver Tumor Segmentation Dataset
Data from Games dataset
Human parsing dataset
Mapillary Vistas Dataset
Microsoft AirSim
MIT Scene Parsing Benchmark
INRIA Annotations for Graz-02
Daimler dataset
ISBI Challenge: Segmentation of neuronal structures in EM stacks
INRIA Annotations for Graz-02 (IG02)
Inria Aerial Image
ApolloScape
UrbanMapper3D
RoadDetecto
Inria Aerial Image Labeling
智能圖像分割的未來
在計算機視覺領(lǐng)域,圖像識別這幾年的發(fā)展非常迅速,圖像識別技術(shù)的價值也迅速體現(xiàn)在我們的身邊,視頻監(jiān)控,自動駕駛,智能醫(yī)療等等。我們面臨的挑戰(zhàn),除了提高模型的泛化能力,少樣本學(xué)習(xí),超大數(shù)據(jù)規(guī)模利用,還有一項便是更加全面的場景理解。
我們在本文中提到的語義分割,實例分割都是實現(xiàn)全面場景理解的一小步,未來圖像分割領(lǐng)域的發(fā)展趨勢,除了更精準的定位和分類,更高的效率,更少的訓(xùn)練標簽,還有更統(tǒng)一和全面的分割方式,如全景分割(panoptic segmentation)。要實現(xiàn)全面場景理解的目標,我們還有很長的路要走,我也會繼續(xù)更新智能圖像分割領(lǐng)域的知識和文章,和大家一起學(xué)習(xí):)
我會在接下來的文章中,分享基于Efficientdet和Detectron2的自動駕駛目標檢測及圖像分割項目實踐。
引用:Fully Convolutional Networks for Semantic SegmentationU-Net: Convolutional Networks for Biomedical Image SegmentationSegNet: A Deep Convolutional Encoder-Decoder Architecture for Image SegmentationEncoder-Decoder with Atrous Separable Convolution for Semantic Image SegmentationMask R-CNNjeremyjordanNanonets
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
即日-11.13立即報名>>> 【在線會議】多物理場仿真助跑新能源汽車
-
11月28日立即報名>>> 2024工程師系列—工業(yè)電子技術(shù)在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍皮書》
-
精彩回顧立即查看>> 【限時免費下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
推薦專題
-
5 夾縫中的文遠知行
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市