《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
其中,
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資料集: