1. 程式人生 > >Colorful Image Colorization

Colorful Image Colorization

  這篇論文是加里福利亞大學Richard Zhang發表在ECCV 2016上的文章,論文的工作是灰度圖的自動著色,這裡博主想要重點關注一下論文對顏色分佈預測的工作,所以把一篇這麼老的論文翻出來重新看。

1. 論文貢獻

  用論文作者自己的話說,論文貢獻主要體現在兩方面:

  • 在自動影象著色的圖形學領域取得了進步:設計了一個合適的損失函式來處理著色問題中的多模不確定性(簡單來說就是物體可以有多種可能的上色),維持了顏色的多樣性;介紹了一種新型的著色演算法評估框架,而且這種評估框架有應用到其他影象合成任務的潛力;通過在百萬數量級的彩色圖片上訓練在這類任務上抵達了一個新的水準。
  • 將影象著色任務轉化為一個自監督表達學習的任務,並且在一些基準上獲得了最好的效果。

  論文所做的事情用一句話就能概括:給灰度圖上色。不過論文的切入點我覺得很巧妙,它不是恢復灰度圖的真實顏色,而是用灰度圖中物體的紋理、語義等資訊作為線索,來預測可能的上色,最後的上色結果只要真實即可。這不僅降低了上色的難度,而且也符合人們的認知:比如一個蘋果,給它上青色,上紅色都是正常的,不限於某一個顏色,只要不是紫色黑色等奇怪的顏色。

2. 論文動機

  考慮到這篇論文是發表於2016年,當時影象著色方面的工作還不是很多,已有的方法比如ICCV 2015的《Deep colorization》,可以看到下圖中的上色結果,雖然大體上正確,但是顏色顯得飽和度比較低,有些單調的感覺。Richard Zhang認為,前人的目標只是優化預測結果和真實圖片間的歐氏距離(即MSE),這種損失函式會鼓勵比較保守的預測(原因在後面會將),從而導致顏色飽和度不高,色彩不豐富。

  《Very deep convolutional networks for large-scale image recognition》這篇文章指出,顏色預測是一個多模的問題,一個物體本來就可以上不同的顏色。為了對這種多模性建模,Richard Zhang為各個畫素預測一個顏色的分佈,這可以鼓勵探索顏色的多樣性,而不僅僅侷限在某一種顏色中。

3. 論文模型

  基本模型還是比較簡單的,輸入圖片的LL通道,使用一個CNN預測對應的abab通道取值的概率分佈,最後轉化為RGBRGB影象結果。網路模型這裡不存在什麼難點,下面著重看一下作者是怎麼設計損失函式的。

損失函式

  給定輸入的L

L通道XRH×W×1X\in \mathbb{R}^{H\times W \times 1},現在的目標是學習一個到相應abab通道YRH×W×2Y \in \mathbb{R}^{H \times W \times 2}的對映Y^=F(X)\hat{Y}=\mathcal{F}(X)。最自然的一個想法是使用預測結果和真實影象間的L2L_2損失:(1)L2(Y^,Y)=12h,wYh,wY^h,w22L_2(\hat{Y}, Y)=\frac{1}{2}\sum_{h,w}\|Y_{h, w}-\hat{Y}_{h,w}\|_2^2\tag{1}但是這種損失函式對於著色問題的固有歧義和多模特性不是很魯棒。如果一個物體可以上若干種顏色,L2L_2損失函式的最優解將會是這幾種顏色的平均值,直觀上來看就是那些灰色的,不飽和的結果。而且,如果可能顏色所在的平面是非凸的,平均後的結果可能就會在平面之外,從而出現比較詭異的顏色(這裡的平面可以理解為真實自然上色的解集)。   這篇論文將上色問題視為一個分類問題。首先將abab通道的輸出空間以10為步長量化為Q=313Q=313類,對於給定的輸入XX,學習一個到顏色概率分佈Z^[0,1]H×W×Q\hat{Z} \in [0, 1]^{H \times W\times Q}的對映Z^=G(X)\hat{Z}=\mathcal{G}(X)

  為了比較預測的結果Z^\hat{Z}和真實值的差距,我們定義一個函式Z=Hgt1(Y)Z=\mathcal{H}^{-1}_{gt}(Y)將真實顏色YY轉換成向量ZZ(通過搜尋最接近的分類將YY變為One-Hot向量)。論文中的soft-encoding scheme是指在313類的輸出空間中找到Yh,wY_{h,w}的5個最近鄰,並按照它們距離Yh,wY_{h,w}的距離按比例進行高斯加權。最後使用多分類交叉熵作為損失函式:(2)Lcl(Z^,Z)=h,wv(Zh,w)qlog(Z^h,w,q)L_{cl}(\hat{Z}, Z)=-\sum_{h,w}v(Z_{h,w})\sum_q\log(\hat{Z}_{h,w,q})\tag{2}其中v()v(\cdot)是用來平衡那些出現頻率較少的類的權重(下一節會將)。最後再使用函式Y^=H(Z^)\hat{Y}=\mathcal{H}(\hat{Z})將預測得到的概率分佈Z^\hat{Z}對映到具體的顏色值Y^\hat{Y}(下下節中會講)。

分類再平衡

  由於雲朵、路面、沙漠等經常大面積地作為背景出現在圖片中,自然影象中abab的取值傾向於較小的方向。下圖是從130萬的資料集中統計的abab取值分佈,可以發現自然圖片中取值都集中在不飽和區域,如果不考慮這個問題,那損失函式將會被不飽和的abab取值主導。

  為了處理這問題,作者在訓練的時候為每個畫素的loss重新調整權重,這個權重的大小是基於畫素顏色的稀有度來設定的:(3)v(Zh,w)=wqq=argmaxqZh,w,qv(Z_{h,w})=w_{q*}  q^*=\arg \max_q Z_{h,w,q}\tag{3} (4)w((1λ)p~+λQ)1E[w]=qp~qwq=1w\propto((1-\lambda)\tilde{p}+\frac{\lambda}{Q})^{-1}  \mathbb{E}[w]=\sum_q\tilde{p}_qw_q=1\tag{4}為了得到平滑的經驗分佈p~ΔQ\tilde{p}\in \Delta^Q,作者統計了ImageNet訓練集的abab概率分佈,並使用高斯核GσG_\sigma進行平滑。然後再用權重為λ[0,1]\lambda \in [0,1]的均勻分佈進行混合並進行歸一化。作者發現λ=12σ=5\lambda=\frac{1}{2},\sigma=5時效果比較好。

分類概率到點估計

  最後,我們定義函式H\mathcal{H},將預測的概率分佈Z^\hat{Z}對映到abab空間的點估計Y^\hat{Y}。一種方法是直接取每個畫素,預測得到的模式,如下圖最右邊一列所示(T=0T=0),這種情況下能得到鮮豔的顏色,但是有時會出現顏色在空間上不連續,比如巴士上紅色的點。如果取預測分佈的平均值,將沒有顏色不連續的現象,但是顏色的飽和度不高,顯得不自然(最左邊一列,T=1T=1)。造成這種低飽和度問題的原因和使用MSE損失是一樣的,為了在這兩者之前尋求一個平衡點,作者通過在softmax分佈中引入引數TT,然後取結果的平均值:(5)H(Zh,w)=E[fT(Zh,w)]fT(z)=exp(log(z)/T)qexp(log(zq)/T)\mathcal{H}(Z_{h,w})=\mathbb{E}[f_T(Z_{h,w})]  f_T(z)=\frac{\exp(\log(z)/T)}{\sum_q\exp(\log(z_q)/T)}\tag{5}引數TT的選擇借鑑模擬退火的思想,最終選定T=0.38T=0.38,效果如下圖所示。

  整個模型F\mathcal{F}最終包含兩個部分:用於預測所有畫素顏色分佈的卷積神經網路G\mathcal{G},和用於產生最終預測影象的退火平均操作H\mathcal{H}。雖然整個系統不能嚴格意義的端到端訓練,但是可以注意到H\mathcal{H}是對每個畫素單獨作用的,只有一個引數,可以作為CNN的前向轉播的一部分實現。