1. 程式人生 > 實用技巧 >《ContextNet:Context-Aware Image Matting for Simultaneous Foreground and Alpha Estimation》論文筆記

《ContextNet:Context-Aware Image Matting for Simultaneous Foreground and Alpha Estimation》論文筆記

參考程式碼(訓練部分未公開):ContextNet

1. 概述

導讀:現有的一些基於CNN網路的matting網路都是使用三色圖與原始影象作為輸入,之後輸出這張圖對應的alpha圖。而這篇文章則同時輸出前景圖和alpha圖,對此文章提出了兩個編碼器:matting編碼器(matting encoder,ME)和context編碼器(context encoder,CE),分別用於獲取表徵範圍在區域性和較大範圍的資訊,之後將編碼之後的兩個特徵進行concat,之後也是經過兩個解碼器分別得到需要的alpha圖和前景圖。對此文章還引入了兩個損失函式:Laplacian loss和feature loss,前者用於產生更高效能的數值(MSE,SAD等),後一個用於產生更加符合視覺直觀感知的結果。此外,文章還提出了一些資料增廣的策略,可以借鑑使用。

這篇文章要解決的是natural影象的matting問題,也就是需要在輸入三色圖和原圖的情況下預測出alpha圖和前景圖。現有的matting方法一般是通過已知與未知區域之間的inferring和sampling實現的。問了解決natural圖的matting問題提出了帶有2個編碼器和2個解碼器的網路。

2. 方法設計

2.1 網路結構

文章提出的方法其網路結構見下圖所示:
在這裡插入圖片描述
Matting encoder(ME):
這裡使用stride=4的Exception65作為其backbone,其中stride設定較小是為了使得特徵圖有較大的解析度;

Context encoder(CE):
這裡也是採用的Xception65作為backbone,不過這裡將stride設定為16,通過雙線性上取樣使得特徵圖尺寸與ME的對應上;

Alpha和前景decoder:
這裡通過2次堆疊matting encoder的特徵圖實現兩種預測結果的輸出,輸出結果尺寸與原圖尺寸一致;

2.2 損失函式

文章對於alpha圖的監督使用的是Laplacian loss的形式,將alpha圖分解到多個(5層)高斯金字塔層級上,之後再在各個層級上做L1損失,用於監督區域性與全域性alpha輸出,還通過加權的形式進行組合,數學表達形式為:
L l a p α = ∑ i = 1 5 2 i − 1 ∣ ∣ L i α ^ − L i ( α ) ∣ ∣ 1 L_{lap}^{\alpha}=\sum_{i=1}^52^{i-1}||L^i\hat{\alpha}-L^i(\alpha)||_1

Llapα=i=152i1Liα^Li(α)1
其中, L i ( α ) L^i(\alpha) Li(α)代表的是所在金字塔層級, α ^ , α \hat{\alpha},\alpha α^,α分別代表GT與預測alpha圖。

在完成對alpha的監督之後,文章還需要對視覺直觀的效果進行度量,對此文章使用度量方式為:
L F α = ∑ l a y e r ∣ ∣ ϕ l a y e r ( α ^ ∗ F ^ ) − ϕ l a y e r ( α ∗ F ^ ) ∣ ∣ 2 2 L_F^{\alpha}=\sum_{layer}||\phi_{layer}(\hat{\alpha}*\hat{F})-\phi_{layer}(\alpha*\hat{F})||_2^2 LFα=layerϕlayer(α^F^)ϕlayer(αF^)22
其中, F ^ \hat{F} F^代表的是前景GT, F F F就是預測出來的了, ϕ l a y e r \phi_{layer} ϕlayer代表的是網路中的特徵圖。

文章對於預測前景特徵圖使用下面的損失進行監督:
L F c = ∑ l a y e r ∣ ∣ ϕ l a y e r ( α ^ ∗ F ^ ) − ϕ l a y e r ( α ^ ∗ F ) ∣ ∣ 2 2 L_F^c=\sum_{layer}||\phi_{layer}(\hat{\alpha}*\hat{F})-\phi_{layer}(\hat{\alpha}*F)||_2^2 LFc=layerϕlayer(α^F^)ϕlayer(α^F)22
而對於前景圖使用的是L1損失函式(只在GT alpha圖大於0的部分計算):
L 1 c = ∣ ∣ f ( α > 0 ^ ∗ ( F ^ − F ) ) ∣ ∣ 1 L_1^c=||f(\hat{\alpha\gt 0}*(\hat{F}-F))||_1 L1c=f(α>0^(F^F))1

2.3 資料增廣

文章除了使用COCO資料集作為背景填充之外,還使用了一一些其它的策略用於有效的資料增廣(文章對比實驗中顯示的效果並不理想,需要根據實際情況新增):

  • 1)借用NMS的思想進行patch取樣,這裡取樣的分數使用的是不確定畫素佔整體的百分比,這樣就可以通過NMS去掉那些價值較低的patch,見下圖所示:
    在這裡插入圖片描述
  • 2)使用一些影象“濾波”的操作完成資料的增廣,具體的文章使用JEPG下采樣與高斯濾波實現,見下圖所示:
    在這裡插入圖片描述

3. 實驗結果

Composition-1K資料集:
在這裡插入圖片描述