《BASNet:Boundary-Aware Salient Object Detection》論文筆記

m_buddy發表於2021-01-03

參考程式碼:BASNet

1. 概述

導讀:文章研究的問題是顯著性目標檢測,但相比於文章之前的一些演算法更加關注目標的邊緣區域,從而得到更好的顯著性目標(分割)結果。對此文章在一個編解碼組成的U型網路結構上預測得到顯著性目標結果,之後在此基礎上新增了一個顯著性目標優化模組去更近一步優化分割結果,從而得到更加精細化的邊緣呈現。除了網路上的改進之外,文章還提出了hybrid loss,其實是二值交叉熵(BCE)/結構相似度(Structural Similarity,SSIM)/IoU損失三者的結合,這三個損失分別用於監督和側重於最後結果中的不同成分(也就是文章說到的pixel-level/patch-level/map-level),從而得到整體上更加好的結果。文章的方法在1080 TiGPU上運算速度為25FPS(224*224的輸入)。

對於顯著性目標檢測任務來說,不僅僅需要關注全域性資訊還需要關注區域性細節資訊,從而得到更好的顯著性目標結果。除了上述提到的對於輸入影像資訊的抽取方法之外,網路的監督也是需要改進的地方,經常使用的BCE損失函式傾向於在邊界區域產生較低的置信度,因而就導致了邊界的模糊化。對應於上面提到的兩點文章分別採用了下面的策略:

  • 1)使用一個ResNet-34組成的U型編解碼結構,充分獲取網路中的全域性和區域性資訊,生成一個較為coarse的顯著性分割結果,之後還額外新增了一個顯著性分割結果U型優化模組去提升分割質量;
  • 2)將BCE/SSIM/IoU三個損失函式組合起來,在三個不同的側重維度上進行監督,從而得到質量更高的結果;

將文章的方法與之前的一些方法進行比較,對比見下圖所示:
在這裡插入圖片描述

2. 方法設計

2.1 網路結構

文章pipeline的結構見下圖所示:
在這裡插入圖片描述
其主要由編解碼預測模組和殘差優化模組組成。

2.1 編解碼預測模組

文章採用以ResNet-34為基礎構建的編解碼網路結構,從而很好地獲取global/local資訊。其具體網路結構見圖2的左半部分所示,主要的改動有:

  • 1)影像的輸入端,將原來 s t r i d e = 2 stride=2 stride=2卷積核大小為 7 ∗ 7 7*7 77替換為 s t r i d e = 1 stride=1 stride=1卷積核大小為 3 ∗ 3 3*3 33,從而使得第一個stage輸出的特徵圖與輸入的尺寸保持一致;
  • 2)在ResNet-34的後部新增了一兩個由basic res-blocks(channel=512)構成的stage;

對於解碼部分其結構大體與編碼部分近似(由三個Conv+BN+ReLU構成),會與之前的特徵圖進行shortcut連線。在圖2左半部分的對應解碼stage部分還通過一個 3 ∗ 3 3*3 33 conv+bilinear upsampling+sigmoid組成的預測分支得到顯著性目標預測結果,用於引導更具表達能力的特徵生成。

2.2 殘差優化模組

除了上述提到在每個stage上進行預測監督,文章還在最後預測結果上進行了進一步優化,將編解碼得到的coarse結果進一步優化,下圖展示了文章的邊界分佈與期望的邊界分佈之間的差異:
在這裡插入圖片描述
因而,文章最後的輸出結果其實是兩個部分進行疊加優化的結果:
S r e f i n e d = S c o a r s e + S r e s i d u a l S_{refined}=S_{coarse}+S_{residual} Srefined=Scoarse+Sresidual
同時為了更好獲取不同尺度的資訊,文章提出對應的殘差優化模組,其結構見下圖所示(c圖):
在這裡插入圖片描述

2.4 網路損失函式

文章的損失函式是由多個分支的預測監督得到的,表示為:
L = ∑ k = 1 K α k L ( k ) L=\sum_{k=1}^K\alpha_kL^{(k)} L=k=1KαkL(k)
其中, K = 8 K=8 K=8代表是圖2中存在8個需要監督的訓練的地方, α k \alpha_k αk是代表不同stage上的加權係數。那麼對於具體每個stage上的損失函式其由3個部分組成:
L ( k ) = L b c e ( k ) + L s s i m ( k ) + L i o u ( k ) L^{(k)}=L_{bce}^{(k)}+L_{ssim}^{(k)}+L_{iou}^{(k)} L(k)=Lbce(k)+Lssim(k)+Liou(k)
其中對於BCE損失函式其定義為:
L b c e = − ∑ ( r , c ) [ G ( r , c ) l o g ( S ( r , c ) ) + ( 1 − G ( r , c ) ) l o g ( 1 − S ( r , c ) ) ] L_{bce}=-\sum_{(r,c)}[G(r,c)log(S(r,c))+(1-G(r,c))log(1-S(r,c))] Lbce=(r,c)[G(r,c)log(S(r,c))+(1G(r,c))log(1S(r,c))]
其中, G ( r , c ) ∈ [ 0 , 1 ] G(r,c)\in[0,1] G(r,c)[0,1]代表是在位置 ( r , c ) (r,c) (r,c)處的取值。對於SSIM損失其描述的是影像結構上的差異,是通過patch取樣得到的,其在影像(預測結果 S S S與GT 二值掩膜 G G G)中進行取樣得到對應的兩個樣本(取樣patch的大小為 N ∗ N N*N NN x = { x j : j = 1 , … , N 2 } x=\{x_j:j=1,\dots,N^2\} x={xj:j=1,,N2} y = { y j : j = 1 , … , N 2 } y=\{y_j:j=1,\dots,N^2\} y={yj:j=1,,N2},則對應的損失函式描述為:
L s s i m = 1 − ( 2 μ x μ y + C 1 ) ( 2 σ x y + C 2 ) ( μ x 2 μ y 2 + C 1 ) ( σ x 2 + σ y 2 + C 2 ) L_{ssim}=1-\frac{(2\mu_x\mu_y+C_1)(2\sigma_{xy}+C_2)}{(\mu_x^2\mu_y^2+C_1)(\sigma_x^2+\sigma_y^2+C_2)} Lssim=1(μx2μy2+C1)(σx2+σy2+C2)(2μxμy+C1)(2σxy+C2)
其中, μ x , μ y , σ x , σ y \mu_x,\mu_y,\sigma_x,\sigma_y μx,μy,σx,σy代表取樣區域 x x x y y y的均值和方差, C 1 = 0.0 1 2 C_1=0.01^2 C1=0.012 C 2 = 0.0 3 2 C_2=0.03^2 C2=0.032為常量用於防止除0的情況,該損失函式會在邊界區域給予較大的權重,從而幫助邊界進行迴歸。對於IoU的損失函式,其表示為:
L i o u = 1 − ∑ r = 1 H ∑ c = 1 W S ( r , c ) G ( r , c ) ∑ r = 1 H ∑ c = 1 W [ S ( r , c ) + G ( r , c ) − S ( r , c ) G ( r , c ) ] L_{iou}=1-\frac{\sum_{r=1}^H\sum_{c=1}^WS(r,c)G(r,c)}{\sum_{r=1}^H\sum_{c=1}^W[S(r,c)+G(r,c)-S(r,c)G(r,c)]} Liou=1r=1Hc=1W[S(r,c)+G(r,c)S(r,c)G(r,c)]r=1Hc=1WS(r,c)G(r,c)
在下圖中展示了三種損失函式在網路訓練的不同階段扮演的貢獻力度(從縱向來看):
在這裡插入圖片描述
從上圖中可以看到三個損失函式在不同的階段上扮演了不同的角色(在不同的階段中扮演不同的重要性),從而在不同方面幫助得到更好的分割結果。

上述文章涉及到的網路結構與損失函式對於最後網路效能的影響見下表所示:
在這裡插入圖片描述

3. 實驗結果

在這裡插入圖片描述

相關文章