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