博客專欄

EEPW首頁 > 博客 > DeepLab、DeepLabv3、RefineNet、PSPNet…你都掌握了嗎?一文總結(jié)圖像分割必備經(jīng)典模型(2)

DeepLab、DeepLabv3、RefineNet、PSPNet…你都掌握了嗎?一文總結(jié)圖像分割必備經(jīng)典模型(2)

發(fā)布人:CV研究院 時間:2023-05-20 來源:工程師 發(fā)布文章

圖片

圖片

圖片

圖6 PSPNet概述。給定一個輸入圖像(a),首先使用CNN來獲得最后一個卷積層的特征圖(b),然后,應(yīng)用一個金字塔解析模塊以生成不同的子區(qū)域表征,接著是上采樣和連接層,以形成最終的特征表征,其中包含了(c)中的局部和全局上下文信息。最后,將該表征送入卷積層以獲得最終的每像素預(yù)測(d)

PSPNet用帶有空洞卷積的預(yù)訓(xùn)練的ResNet作為backbone,最后一層提取的feature map大小為輸入圖像的1/8。PSPNet為四級模塊,其二進(jìn)制大小分別為1×1、2×2、3×3和6×6。因此,通過融合四個不同金字塔尺寸的特征,將輸入的feature map分為不同的子區(qū)域并生成不同位置的池化表示,從而產(chǎn)生不同尺寸的輸出,為了強化全局特征的權(quán)重,在金字塔層數(shù)為N的情況下,利用一個1x1的卷積將上下文表示的維度降到1/N。然后將得到的特征通過雙線性插值上采樣至相同尺寸,進(jìn)行拼接后作為最終的全局金字塔池化特征。

經(jīng)過深度預(yù)訓(xùn)練的神經(jīng)網(wǎng)絡(luò)能夠改進(jìn)性能,然而深度的增加也可能會帶來額外的優(yōu)化困難。ResNet通過在每個塊中使用skip connection來解決這個問題。本文在原始?xì)埐罹W(wǎng)絡(luò)的基礎(chǔ)之上做了一些改進(jìn),提出通過另外的損失函數(shù)來產(chǎn)生初始結(jié)果,然后通過最終的損失函數(shù)來學(xué)習(xí)殘差。圖17展示了PSPNet輸入圖像后的預(yù)訓(xùn)練ResNet網(wǎng)絡(luò),改進(jìn)點在下圖中的“l(fā)oss2”,作者將這個損失作為輔助優(yōu)化的損失,即auxiliary loss,簡稱AR,主損失為下圖中“l(fā)oss1”的分類損失。

圖片圖7 ResNet101中輔助損失的說明。每個藍(lán)框表示一個殘差塊。輔助損失是在res4b22殘差塊之后添加的

5、 Dense-Net

隨著CNN的層數(shù)不斷加深,信息(輸入信息或者梯度信息)容易出現(xiàn)彌散現(xiàn)象。一些研究專門針對此問題展開,比如ResNets、Stochastic depth和FractalNets。本文引入了密集卷積網(wǎng)絡(luò)(DenseNet),以前饋方式將每一層連接到另一層。具有L層的傳統(tǒng)卷積網(wǎng)絡(luò)有L個連接,每個層與其后續(xù)層之間有一個連接,本文網(wǎng)絡(luò)則具有L(L+1)/2 個直接連接。對于每個層,所有前面層的特征圖用作輸入,其自身的特征圖被用作所有后續(xù)層的輸入。

圖片

圖8 一個5層的密集塊,增長率為k=4。每層將所有前面的特征圖作為輸入

將圖像定義為x_0 ,模型有L層,每一層為一個非線性轉(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的一個缺點是:ResNets使用的是sum操作,這可能會阻礙信息在網(wǎng)絡(luò)的流動。為了進(jìn)一步提高兩層之間信息的流動,作者提出了一個不同的連接方式,即第 l 層接收前面所有層的feature maps[ x_0,...,x_l?1]作為輸入:

圖片

其中,[x_0, x_1, ... , x_l-1]是指各層產(chǎn)生的特征圖的連接。由于其密集的連接性,作者將這種網(wǎng)絡(luò)結(jié)構(gòu)稱為密集卷積網(wǎng)絡(luò)(DenseNet)。為了便于實施,作者將Hl(·)的多個輸入串聯(lián)成一個單一的張量。作者將Hl(·)定義為三個連續(xù)操作的復(fù)合函數(shù):批歸一化(BN)、ReLU和3×3卷積(Conv)。

卷積網(wǎng)絡(luò)的一個必需操作就是下采樣,而這會改變feature maps的大小。但是當(dāng)feature maps的大小發(fā)生改變時,上式不可用。因此,為了能夠在網(wǎng)絡(luò)結(jié)構(gòu)中進(jìn)行下采樣,作者將網(wǎng)絡(luò)劃分成多個密集塊,如下圖所示:


圖片圖9 有三個密集塊的深度密集網(wǎng)。兩個相鄰塊之間的層被稱為過渡層,通過卷積和池化改變特征圖的大小

作者定義兩個blocks之間的層為過渡層,其包含一個batch normalization、一個1x1卷積層和一個2x2平均池化層。盡管每一層僅僅產(chǎn)生k個feature maps, 但是每一層的輸入依然會很多。因此,作者在3x3卷積前面增加一個1x1卷積(稱為 bottleneck layer),用于減少每一層feature map輸入的數(shù)目。作者將增加了bottleneck layer的Densenet稱為DenseNet-B。

為了進(jìn)一步提高模型的緊湊性,作者減少過渡層的feature maps的數(shù)量。如果一個dense block包含m個feature maps, 令后面的過渡層產(chǎn)生 [θxm] 個輸出feature maps,這里 0≤θ≤1 , 表示壓縮因子。作者將使用了θ<1 的網(wǎng)絡(luò)稱為DenseNet-C,本實驗中定義θ=0.5 。

6、 Mask-Lab

本文解決的是實例分割的問題,即同時解決對象檢測和語義分割的任務(wù)。論文提出了一個名為MaskLab的模型,它可以產(chǎn)生三個輸出:box檢測、語義分割和方向預(yù)測。MaskLab建立在Faster-RCNN對象檢測器之上,預(yù)測框提供了對象實例的準(zhǔn)確定位。在每個感興趣區(qū)域內(nèi),MaskLab通過組合語義和方向預(yù)測來執(zhí)行前景/背景分割。語義分割有助于模型區(qū)分包括背景在內(nèi)的不同語義類的對象,而方向預(yù)測估計每個像素朝向其相應(yīng)中心的方向,實現(xiàn)分離同一語義類的實例。



圖片

圖10 MaskLab產(chǎn)生三種輸出,包括box預(yù)測(來自Faster-RCNN)、語義分割logits(用于像素分類的logits)和方向預(yù)測logits(用于預(yù)測每個像素對其相應(yīng)實例中心的方向的logits)。對于每個感興趣的區(qū)域,通過利用語義分割和方向logits進(jìn)行前景/背景分割。對于語義分割邏輯,根據(jù)預(yù)測的box標(biāo)簽挑選通道,并根據(jù)預(yù)測的box來裁剪區(qū)域。對于方向預(yù)測Logits,進(jìn)行方向匯集,從每個通道集合區(qū)域Logits。串聯(lián)這兩個裁剪后的特征,并通過另一個1×1卷積進(jìn)行前景/背景分割


如圖10,MaskLab采用ResNet-101作為特征提取器。它由三個部分組成,所有的特征共享到conv4(或res4x)塊,還有一個額外的重復(fù)conv5(或res5x)塊用于Faster-RCNN中的box分類器。原始的conv5塊在語義分割和方向預(yù)測中都是共享的。建立在Faster-RCNN之上的MaskLab生成了box預(yù)測、語義分割邏輯(用于像素級分類的邏輯)和方向預(yù)測邏輯(用于預(yù)測每個像素對其相應(yīng)實例中心的方向的邏輯)。語義分割Logits和方向預(yù)測Logits是通過在ResNet-101的conv5塊的最后一個特征圖之后添加的另一個1×1卷積來計算的。鑒于每個預(yù)測的方框(或感興趣的區(qū)域),我們通過利用這兩個邏輯值來進(jìn)行前景/背景分割。具體的,對來自Faster-RCN預(yù)測的語義通道的裁剪過的語義Logits和經(jīng)過方向匯集后的裁剪過的方向Logits的串聯(lián)進(jìn)行1×1卷積。

語義和方向特征。MaskLab為一幅圖像生成語義分割日志和方向預(yù)測日志。語義分割邏輯用于預(yù)測像素級的語義標(biāo)簽,它能夠分離不同語義標(biāo)簽的實例,包括背景類。方向預(yù)測Logits用于預(yù)測每個像素對其相應(yīng)實例中心的方向,因此它們對進(jìn)一步分離相同語義標(biāo)簽的實例很有用。

考慮到來自box預(yù)測分支的預(yù)測box和標(biāo)簽,我們首先從語義分割邏輯中選擇與預(yù)測標(biāo)簽相關(guān)的通道(例如,人物通道),并根據(jù)預(yù)測的box裁剪區(qū)域。為了利用方向信息,我們進(jìn)行同樣的組合操作,從每個方向通道收集區(qū)域日志(由方向指定)。然后,經(jīng)過裁剪的語義分割邏輯圖和匯集的方向邏輯圖被用于前景/背景分割。圖18給出了具體細(xì)節(jié),圖中顯示 "人 "的分割Logits可以清楚地將人與背景和領(lǐng)帶分開,而方向Logits能夠預(yù)測像素對其實例中心的方向。在集合了方向邏輯后,該模型能夠在指定的box區(qū)域內(nèi)進(jìn)一步分離兩個人。作者提出的方向預(yù)測邏輯是與類別無關(guān)的。具體來說,對于有K個類別的mask分割,模型需要(K+32)個通道(K個用于語義分割,32個用于方向匯集),而輸出2×(K+1)×49個通道。


圖片圖11 語義分割邏輯和方向預(yù)測邏輯被用來在每個預(yù)測的方框內(nèi)進(jìn)行前景/背景分割。特別是,分割邏輯能夠區(qū)分不同語義類別的實例(例如,人和背景),而方向邏輯(方向是用顏色編碼的)進(jìn)一步區(qū)分同一語義類別的實例(例如,預(yù)測的藍(lán)色方框中的兩個人)。在assembling操作中,區(qū)域Logits(彩色三角形區(qū)域)從每個方向通道復(fù)制。例如,由紅色三角形指定的區(qū)域從紅色方向通道編碼實例方向的0度到45度復(fù)制Logits。粉色通道編碼實例方向從180度到225度的弱激活

Mask細(xì)化:作者通過利用HyperColumn特征進(jìn)一步細(xì)化預(yù)測的粗略mask。如圖12所示,生成的粗mask邏輯(僅利用語義和方向特征)與ResNet-101低層的特征相連接,然后由三個額外的卷積層處理,以預(yù)測最終mask。


圖片圖12 mask細(xì)化。hypercolumn特征與粗預(yù)測的mask相連接,然后送入另一個小的ConvNet,產(chǎn)生最終的精mask預(yù)測


“裁剪和調(diào)整大小”首先從特征映射中裁剪指定的邊界框區(qū)域,然后將它們雙線性地調(diào)整為指定大?。ɡ?,4×4)。進(jìn)一步將區(qū)域劃分為若干子框(例如,4個子框,每個子框具有2×2的大?。?,并使用另一個小網(wǎng)絡(luò)來學(xué)習(xí)每個子框的偏移。最后,依據(jù)每個變形的子框再次執(zhí)行“裁剪并調(diào)整大小”操作。


圖片

圖13 可變形裁剪和調(diào)整大小。(a) 裁剪和調(diào)整大小的操作是在一個邊界框區(qū)域內(nèi)裁剪特征,并將其調(diào)整到指定的4×4大小。(b) 然后將4×4區(qū)域分為4個小的子框,每個子框的大小為2×2。然后,對變形的sub-boxes再次進(jìn)行裁剪和調(diào)整大小


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉