DeepLab、DeepLabv3、RefineNet、PSPNet…你都掌握了嗎?一文總結(jié)圖像分割必備經(jīng)典模型(2)
圖6 PSPNet概述。給定一個(gè)輸入圖像(a),首先使用CNN來(lái)獲得最后一個(gè)卷積層的特征圖(b),然后,應(yīng)用一個(gè)金字塔解析模塊以生成不同的子區(qū)域表征,接著是上采樣和連接層,以形成最終的特征表征,其中包含了(c)中的局部和全局上下文信息。最后,將該表征送入卷積層以獲得最終的每像素預(yù)測(cè)(d)
PSPNet用帶有空洞卷積的預(yù)訓(xùn)練的ResNet作為backbone,最后一層提取的feature map大小為輸入圖像的1/8。PSPNet為四級(jí)模塊,其二進(jìn)制大小分別為1×1、2×2、3×3和6×6。因此,通過(guò)融合四個(gè)不同金字塔尺寸的特征,將輸入的feature map分為不同的子區(qū)域并生成不同位置的池化表示,從而產(chǎn)生不同尺寸的輸出,為了強(qiáng)化全局特征的權(quán)重,在金字塔層數(shù)為N的情況下,利用一個(gè)1x1的卷積將上下文表示的維度降到1/N。然后將得到的特征通過(guò)雙線(xiàn)性插值上采樣至相同尺寸,進(jìn)行拼接后作為最終的全局金字塔池化特征。
經(jīng)過(guò)深度預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)能夠改進(jìn)性能,然而深度的增加也可能會(huì)帶來(lái)額外的優(yōu)化困難。ResNet通過(guò)在每個(gè)塊中使用skip connection來(lái)解決這個(gè)問(wèn)題。本文在原始?xì)埐罹W(wǎng)絡(luò)的基礎(chǔ)之上做了一些改進(jìn),提出通過(guò)另外的損失函數(shù)來(lái)產(chǎn)生初始結(jié)果,然后通過(guò)最終的損失函數(shù)來(lái)學(xué)習(xí)殘差。圖17展示了PSPNet輸入圖像后的預(yù)訓(xùn)練ResNet網(wǎng)絡(luò),改進(jìn)點(diǎn)在下圖中的“l(fā)oss2”,作者將這個(gè)損失作為輔助優(yōu)化的損失,即auxiliary loss,簡(jiǎn)稱(chēng)AR,主損失為下圖中“l(fā)oss1”的分類(lèi)損失。
圖7 ResNet101中輔助損失的說(shuō)明。每個(gè)藍(lán)框表示一個(gè)殘差塊。輔助損失是在res4b22殘差塊之后添加的
5、 Dense-Net隨著CNN的層數(shù)不斷加深,信息(輸入信息或者梯度信息)容易出現(xiàn)彌散現(xiàn)象。一些研究專(zhuān)門(mén)針對(duì)此問(wèn)題展開(kāi),比如ResNets、Stochastic depth和FractalNets。本文引入了密集卷積網(wǎng)絡(luò)(DenseNet),以前饋方式將每一層連接到另一層。具有L層的傳統(tǒng)卷積網(wǎng)絡(luò)有L個(gè)連接,每個(gè)層與其后續(xù)層之間有一個(gè)連接,本文網(wǎng)絡(luò)則具有L(L+1)/2 個(gè)直接連接。對(duì)于每個(gè)層,所有前面層的特征圖用作輸入,其自身的特征圖被用作所有后續(xù)層的輸入。
圖8 一個(gè)5層的密集塊,增長(zhǎng)率為k=4。每層將所有前面的特征圖作為輸入
將圖像定義為x_0 ,模型有L層,每一層為一個(gè)非線(xiàn)性轉(zhuǎn)換Hl(·) ,這里 l 表示第 l 層。Hl(·)可以由以下操作組成,例如,Batch Normalization (BN) 、rectified linear units (ReLU)、 Pooling、 Convolution (Conv)。我們定義第 l 層的輸出為 x_l 。傳統(tǒng)的卷積前饋網(wǎng)絡(luò)將第 l 層的輸出作為第 l+1 層的輸入。即:
而ResNets定義如下:
ResNets的一個(gè)缺點(diǎn)是:ResNets使用的是sum操作,這可能會(huì)阻礙信息在網(wǎng)絡(luò)的流動(dòng)。為了進(jìn)一步提高兩層之間信息的流動(dòng),作者提出了一個(gè)不同的連接方式,即第 l 層接收前面所有層的feature maps[ x_0,...,x_l?1]作為輸入:
其中,[x_0, x_1, ... , x_l-1]是指各層產(chǎn)生的特征圖的連接。由于其密集的連接性,作者將這種網(wǎng)絡(luò)結(jié)構(gòu)稱(chēng)為密集卷積網(wǎng)絡(luò)(DenseNet)。為了便于實(shí)施,作者將Hl(·)的多個(gè)輸入串聯(lián)成一個(gè)單一的張量。作者將Hl(·)定義為三個(gè)連續(xù)操作的復(fù)合函數(shù):批歸一化(BN)、ReLU和3×3卷積(Conv)。
卷積網(wǎng)絡(luò)的一個(gè)必需操作就是下采樣,而這會(huì)改變feature maps的大小。但是當(dāng)feature maps的大小發(fā)生改變時(shí),上式不可用。因此,為了能夠在網(wǎng)絡(luò)結(jié)構(gòu)中進(jìn)行下采樣,作者將網(wǎng)絡(luò)劃分成多個(gè)密集塊,如下圖所示:
圖9 有三個(gè)密集塊的深度密集網(wǎng)。兩個(gè)相鄰塊之間的層被稱(chēng)為過(guò)渡層,通過(guò)卷積和池化改變特征圖的大小
作者定義兩個(gè)blocks之間的層為過(guò)渡層,其包含一個(gè)batch normalization、一個(gè)1x1卷積層和一個(gè)2x2平均池化層。盡管每一層僅僅產(chǎn)生k個(gè)feature maps, 但是每一層的輸入依然會(huì)很多。因此,作者在3x3卷積前面增加一個(gè)1x1卷積(稱(chēng)為 bottleneck layer),用于減少每一層feature map輸入的數(shù)目。作者將增加了bottleneck layer的Densenet稱(chēng)為DenseNet-B。
為了進(jìn)一步提高模型的緊湊性,作者減少過(guò)渡層的feature maps的數(shù)量。如果一個(gè)dense block包含m個(gè)feature maps, 令后面的過(guò)渡層產(chǎn)生 [θxm] 個(gè)輸出feature maps,這里 0≤θ≤1 , 表示壓縮因子。作者將使用了θ<1 的網(wǎng)絡(luò)稱(chēng)為DenseNet-C,本實(shí)驗(yàn)中定義θ=0.5 。
6、 Mask-Lab
本文解決的是實(shí)例分割的問(wèn)題,即同時(shí)解決對(duì)象檢測(cè)和語(yǔ)義分割的任務(wù)。論文提出了一個(gè)名為MaskLab的模型,它可以產(chǎn)生三個(gè)輸出:box檢測(cè)、語(yǔ)義分割和方向預(yù)測(cè)。MaskLab建立在Faster-RCNN對(duì)象檢測(cè)器之上,預(yù)測(cè)框提供了對(duì)象實(shí)例的準(zhǔn)確定位。在每個(gè)感興趣區(qū)域內(nèi),MaskLab通過(guò)組合語(yǔ)義和方向預(yù)測(cè)來(lái)執(zhí)行前景/背景分割。語(yǔ)義分割有助于模型區(qū)分包括背景在內(nèi)的不同語(yǔ)義類(lèi)的對(duì)象,而方向預(yù)測(cè)估計(jì)每個(gè)像素朝向其相應(yīng)中心的方向,實(shí)現(xiàn)分離同一語(yǔ)義類(lèi)的實(shí)例。
圖10 MaskLab產(chǎn)生三種輸出,包括box預(yù)測(cè)(來(lái)自Faster-RCNN)、語(yǔ)義分割logits(用于像素分類(lèi)的logits)和方向預(yù)測(cè)logits(用于預(yù)測(cè)每個(gè)像素對(duì)其相應(yīng)實(shí)例中心的方向的logits)。對(duì)于每個(gè)感興趣的區(qū)域,通過(guò)利用語(yǔ)義分割和方向logits進(jìn)行前景/背景分割。對(duì)于語(yǔ)義分割邏輯,根據(jù)預(yù)測(cè)的box標(biāo)簽挑選通道,并根據(jù)預(yù)測(cè)的box來(lái)裁剪區(qū)域。對(duì)于方向預(yù)測(cè)Logits,進(jìn)行方向匯集,從每個(gè)通道集合區(qū)域Logits。串聯(lián)這兩個(gè)裁剪后的特征,并通過(guò)另一個(gè)1×1卷積進(jìn)行前景/背景分割
如圖10,MaskLab采用ResNet-101作為特征提取器。它由三個(gè)部分組成,所有的特征共享到conv4(或res4x)塊,還有一個(gè)額外的重復(fù)conv5(或res5x)塊用于Faster-RCNN中的box分類(lèi)器。原始的conv5塊在語(yǔ)義分割和方向預(yù)測(cè)中都是共享的。建立在Faster-RCNN之上的MaskLab生成了box預(yù)測(cè)、語(yǔ)義分割邏輯(用于像素級(jí)分類(lèi)的邏輯)和方向預(yù)測(cè)邏輯(用于預(yù)測(cè)每個(gè)像素對(duì)其相應(yīng)實(shí)例中心的方向的邏輯)。語(yǔ)義分割Logits和方向預(yù)測(cè)Logits是通過(guò)在ResNet-101的conv5塊的最后一個(gè)特征圖之后添加的另一個(gè)1×1卷積來(lái)計(jì)算的。鑒于每個(gè)預(yù)測(cè)的方框(或感興趣的區(qū)域),我們通過(guò)利用這兩個(gè)邏輯值來(lái)進(jìn)行前景/背景分割。具體的,對(duì)來(lái)自Faster-RCN預(yù)測(cè)的語(yǔ)義通道的裁剪過(guò)的語(yǔ)義Logits和經(jīng)過(guò)方向匯集后的裁剪過(guò)的方向Logits的串聯(lián)進(jìn)行1×1卷積。
語(yǔ)義和方向特征。MaskLab為一幅圖像生成語(yǔ)義分割日志和方向預(yù)測(cè)日志。語(yǔ)義分割邏輯用于預(yù)測(cè)像素級(jí)的語(yǔ)義標(biāo)簽,它能夠分離不同語(yǔ)義標(biāo)簽的實(shí)例,包括背景類(lèi)。方向預(yù)測(cè)Logits用于預(yù)測(cè)每個(gè)像素對(duì)其相應(yīng)實(shí)例中心的方向,因此它們對(duì)進(jìn)一步分離相同語(yǔ)義標(biāo)簽的實(shí)例很有用。
考慮到來(lái)自box預(yù)測(cè)分支的預(yù)測(cè)box和標(biāo)簽,我們首先從語(yǔ)義分割邏輯中選擇與預(yù)測(cè)標(biāo)簽相關(guān)的通道(例如,人物通道),并根據(jù)預(yù)測(cè)的box裁剪區(qū)域。為了利用方向信息,我們進(jìn)行同樣的組合操作,從每個(gè)方向通道收集區(qū)域日志(由方向指定)。然后,經(jīng)過(guò)裁剪的語(yǔ)義分割邏輯圖和匯集的方向邏輯圖被用于前景/背景分割。圖18給出了具體細(xì)節(jié),圖中顯示 "人 "的分割Logits可以清楚地將人與背景和領(lǐng)帶分開(kāi),而方向Logits能夠預(yù)測(cè)像素對(duì)其實(shí)例中心的方向。在集合了方向邏輯后,該模型能夠在指定的box區(qū)域內(nèi)進(jìn)一步分離兩個(gè)人。作者提出的方向預(yù)測(cè)邏輯是與類(lèi)別無(wú)關(guān)的。具體來(lái)說(shuō),對(duì)于有K個(gè)類(lèi)別的mask分割,模型需要(K+32)個(gè)通道(K個(gè)用于語(yǔ)義分割,32個(gè)用于方向匯集),而輸出2×(K+1)×49個(gè)通道。
圖11 語(yǔ)義分割邏輯和方向預(yù)測(cè)邏輯被用來(lái)在每個(gè)預(yù)測(cè)的方框內(nèi)進(jìn)行前景/背景分割。特別是,分割邏輯能夠區(qū)分不同語(yǔ)義類(lèi)別的實(shí)例(例如,人和背景),而方向邏輯(方向是用顏色編碼的)進(jìn)一步區(qū)分同一語(yǔ)義類(lèi)別的實(shí)例(例如,預(yù)測(cè)的藍(lán)色方框中的兩個(gè)人)。在assembling操作中,區(qū)域Logits(彩色三角形區(qū)域)從每個(gè)方向通道復(fù)制。例如,由紅色三角形指定的區(qū)域從紅色方向通道編碼實(shí)例方向的0度到45度復(fù)制Logits。粉色通道編碼實(shí)例方向從180度到225度的弱激活
Mask細(xì)化:作者通過(guò)利用HyperColumn特征進(jìn)一步細(xì)化預(yù)測(cè)的粗略mask。如圖12所示,生成的粗mask邏輯(僅利用語(yǔ)義和方向特征)與ResNet-101低層的特征相連接,然后由三個(gè)額外的卷積層處理,以預(yù)測(cè)最終mask。
圖12 mask細(xì)化。hypercolumn特征與粗預(yù)測(cè)的mask相連接,然后送入另一個(gè)小的ConvNet,產(chǎn)生最終的精mask預(yù)測(cè)
“裁剪和調(diào)整大小”首先從特征映射中裁剪指定的邊界框區(qū)域,然后將它們雙線(xiàn)性地調(diào)整為指定大?。ɡ纾?×4)。進(jìn)一步將區(qū)域劃分為若干子框(例如,4個(gè)子框,每個(gè)子框具有2×2的大?。?,并使用另一個(gè)小網(wǎng)絡(luò)來(lái)學(xué)習(xí)每個(gè)子框的偏移。最后,依據(jù)每個(gè)變形的子框再次執(zhí)行“裁剪并調(diào)整大小”操作。
圖13 可變形裁剪和調(diào)整大小。(a) 裁剪和調(diào)整大小的操作是在一個(gè)邊界框區(qū)域內(nèi)裁剪特征,并將其調(diào)整到指定的4×4大小。(b) 然后將4×4區(qū)域分為4個(gè)小的子框,每個(gè)子框的大小為2×2。然后,對(duì)變形的sub-boxes再次進(jìn)行裁剪和調(diào)整大小
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。