自动上色论文《Deep Exemplar-based Colorization》(1)
今天看了一篇純數(shù)學的論文,感覺很暈。
數(shù)學是一定要學的,不過先看看網(wǎng)絡結(jié)構的去想想有沒有什么好的idea。
論文鏈接:https://arxiv.org/pdf/1807.06587.pdf
Abstract
本文作者第一個提出基于基于樣例的上色的論文,給一幅黑白圖片一張參考的彩色圖片,就可以通過本文的方式進行自動上色。與其他基于學習的上色算法不同,用戶可以通過使用不同的參考圖片對結(jié)果上色。為了進一步減少人工挑選參考樣本的工作量,系統(tǒng)自動地采用圖片檢索算法推薦包含語義信息和光照信息的圖片。從而,自動上色可以由只選擇最佳參考圖片來完成。
一、Introduction
上色問題需要符合語義且看起來比較美觀。這個問題實際上是病態(tài)的,其答案也是模棱兩可,因為上色問題不止會有一種結(jié)果(比如人衣服的顏色)。由于沒有一個定量的答案,所以人工干預在上色問題中是必要的。
引導自動上色問題的人工手段實際上有兩種方法:用戶通過不同顏色涂鴉控制顏色,或者使用一張樣例圖片。第一種方法對用戶的要求極高,而第二種方法生成的結(jié)果的質(zhì)量在很大程度上取決于參考圖片的選擇。
更可靠的方法是使用一個巨大的參考圖像的數(shù)據(jù)庫,通過數(shù)據(jù)庫來搜索最相似的圖片或者像素進行著色。近年來,通過深度學習方法生成大規(guī)模數(shù)據(jù)集的方式已經(jīng)取得了很顯著的效果。自動上色問題被視為回歸問題,并通過深度學習方式直接解決這一問題。通過某些論文可以在不使用用戶涂鴉或者參考圖片的情況下自動生成圖片。但是對應的問題有如下兩點:
1、這些方法不支持多模態(tài)問題,往往使用更具優(yōu)勢的顏色上色,從而限制了用戶交互。
2、這種方法必須使用海量的數(shù)據(jù),需要列出所有可能的結(jié)果。
因此,現(xiàn)有的方法的最佳的目標是:同時實現(xiàn)人機交互的控制能力和學習能力的魯棒性。
近年來有些論文將顏色點或筆畫形式的手動提示添加到深度神經(jīng)網(wǎng)絡,以便為用戶提供的涂鴉時可能需要的顏色,實際上就是一種對用戶交互性的提升。這種方式促進了傳統(tǒng)的“涂鴉控制顏色”的方法,并可以獲得更自然的圖片。然而,涂鴉對于獲得高質(zhì)量的結(jié)果仍然是必不可少的,因此仍然涉及一定量的試錯試驗。
本文作者使用一種混合的方法,提出了第一種基于樣本的局部著色的深度學習方法。與已有的著色網(wǎng)絡不同,本文的網(wǎng)絡允許通過選用不同的參考圖片進行對輸出圖片的控制。如下圖所示,我們的參考圖片可能與目標圖片完全不相似,但我們可以通過網(wǎng)絡生成符合語義且相對美觀的圖片。
本文通過卷積神經(jīng)網(wǎng)絡直接選擇生成黑白圖像對應生成的顏色圖片。我們的方法在質(zhì)量上優(yōu)于現(xiàn)有的基于樣例圖片的方法。主要成就為兩個關鍵的子網(wǎng)絡。
首先,相似性子網(wǎng)絡(Similarity Sub-net)是一個預處理步驟,獲得端到端網(wǎng)絡的輸入圖片。它通過在灰度圖像對象識別任務上預訓練的VGG-19網(wǎng)絡來實現(xiàn)對參考圖片和目標圖片的語義相似性的測量。
之后,著色子網(wǎng)絡(Colorization sub-net)提供一種更為普遍的上色策略。它采用多任務學習來訓練兩個不同的分支,他們共享相同的網(wǎng)絡和權重,但是使用兩種不同的損失函數(shù):
(1)色度損失:它使得網(wǎng)絡有選擇性的傳播相關patch或者像素的正確的參考顏色,從而滿足色度一致性
(2)感知損失:實現(xiàn)高級特征之間色彩的緊密匹配,這樣即使在參考圖片中沒有適當?shù)钠ヅ鋮^(qū)域的情況下,也能確保從大規(guī)模的數(shù)據(jù)中學習如何適當?shù)闹?/p>
(圖2,我們的目的是可以把正確的顏色傳播(有點像顏色的傳染?2333)到語義相同的色塊或者像素上,并通過在大規(guī)模數(shù)據(jù)集上學習來預測自然的顏色)
因此,我們的方法可以大大放寬對參照圖片的限制性要求,而之前的基于范例樣本的學習策略對這一要求較高。
為了引導用戶進行有效的參考圖片的選擇,系統(tǒng)基于圖像檢索算法推薦最有可能的參考圖片。它利用高級的語義信息和低級的亮度信息來搜索ImageNet數(shù)據(jù)集中最相似的圖像。在這種推薦系統(tǒng)的幫助下,我們的方法可以作為全自動的著色系統(tǒng)。實驗表明,我們的自動著色算法在數(shù)量和質(zhì)量上優(yōu)于現(xiàn)有的自動著色方法,甚至可以為最先進的交互方法產(chǎn)生相對高質(zhì)量的結(jié)果。我們的方法也可以被應用于視頻著色。
Contributions:
(1)自動著色問題的第一種基于樣例的深度學習方法,它允許可控性并且對參考圖片的選擇具有魯棒性。
(2)設計了一種新穎的端到端雙分支網(wǎng)絡架構,當可靠的參考圖片不可用時,它學習合理的局部著色生成有意義的參考圖片,并進行合理的顏色預測。
(3)設計用于參考圖片推薦的參考圖像檢索算法,利用它我們還可以實現(xiàn)全自動著色。
(4)具有轉(zhuǎn)移性,即使使用自然圖片進行訓練,我們也可以應用于非自然圖片。
(5)可以擴展到視頻的自動著色問題。
二、Related Work
2019.3.7補充。
作者列舉了現(xiàn)有的著色方法的種類及方法。
(1)基于人工涂畫彩色筆畫的著色方法(Scribble-based Colorization):
這類方法會在灰度圖片中通過畫一些具有顏色的筆畫來把顏色擴展到整個圖片上,這里只用到了些低級別的相似性的指標。2004年就有學者提出,在相同的照度(luminance)下應該有相同的顏色,并且通過馬爾科夫隨機場方法來把這些稀疏的色彩擴展到整張圖片上去。后來擴展到了使用紋理相似性、內(nèi)在距離,以及利用邊界信息以防止顏色泄漏。
這類方式的缺陷:需要大量的手工標注方式,以及需要標注人員有很良好的專業(yè)的涂色能力。
(2)基于參考圖片的著色方法(Exemplar-based Colorization)
這類方法通過向輸入灰度圖像提供非常相似的參考圖片來減少大量的手工標注圖片。最早的工作通過匹配全局顏色統(tǒng)計來自動著色。由于忽略了空間像素信息,因此該方法在許多情況下結(jié)果并不令人滿意。為了得到更準確的局部信息,使用了不同的獲得局部信息的方法,包括分割區(qū)域級別信息(segmented-region level),超像素級別信息(super-pixel level)。然而,在具有顯著的強度和內(nèi)容的變化的情況下,計算獲得的相似性度量的低級特征(比如SIFT特征、Gabor小波特征)很容易出錯。最近,兩篇論文利用從預訓練的VGG-19網(wǎng)絡中提取的深度特征,從而在語義相關但視覺上看起來不同的圖像之間進行可靠的匹配,然后利用它進行樣式轉(zhuǎn)移[Liao et al。 2017]和顏色轉(zhuǎn)移[He et al。 2017年]。然而,所有這些基于示例的方法都必須依賴于找到一個好的參考圖片,這仍然是用戶的一大阻礙。通過對比,我們的方法對于任何給定的參考圖片都是穩(wěn)健的,這要歸功于我們的深度網(wǎng)絡能夠從大規(guī)模圖像數(shù)據(jù)中學習自然的顏色分布。
(3)基于學習方式的著色方法(Learning-based Colorization)
有幾種技術完全依賴于學習方法來產(chǎn)生著色圖像。2015年有學者將著色問題定義為線性系統(tǒng)并學習其參數(shù)。另外有學者連接了幾個預定義的特征,并將它們輸入到三層完全連接的神經(jīng)網(wǎng)絡中。最近,一些端到端的學習方法利用CNN自動提取特征并預測顏色結(jié)果。這些網(wǎng)絡的關鍵差異是損失函數(shù)(例如,圖像重建L2損失,分類損失,考慮多模態(tài)著色的L1 + GAN損失)。所有這些網(wǎng)絡都是從大規(guī)模數(shù)據(jù)中學習的,不需要任何用戶干預。然而,它們只為每個輸入產(chǎn)生一個合理的結(jié)果,而著色問題的本質(zhì)是多模態(tài)不確定性的不適定問題。
(4)多種方法合并的著色方法(Hybrid Colorization)
為了獲得更為合適的著色方案,目前有學者將基于人工圖畫方式的可控性和基于學習方式的穩(wěn)健性相結(jié)合,比如使用提供的色點或筆畫。在本文中,我們將參考圖片而非筆畫或色點引入著色網(wǎng)絡中,因為給定一張相似的著色圖片樣本對于未經(jīng)訓練的用戶而言更為直觀。除此以外,我們也可以使用我們的圖像檢索系統(tǒng)來自動的實現(xiàn)參考圖片的選擇。
三、基于樣例的自動上色網(wǎng)絡
我們的目的是通過一張參考圖片給黑白圖片上色。更具體地,我們的目標是將參考圖片的顏色應用于存在語義相關內(nèi)容的目標圖片,并且舉一反三,即使圖片或區(qū)域毫無關聯(lián),也可以獲得一個不錯的結(jié)果。我們需要解決以下兩個問題:
我們很難測量參考圖片和目標圖片的語義相關性,更何況參考圖片是彩色的,而目標圖片是黑白圖片。我們使用gray-VGG-19網(wǎng)絡,只使用Lab圖片的L層來提取特征,并計算特征的差異。
很難通過基于相似度規(guī)則的度量來定義手動挑選的規(guī)則我們使用一種端到端的網(wǎng)絡可以同時選擇顏色并傳播的方式。為了解決無法完全恢復顏色這個問題,我們的網(wǎng)絡將改為預測大規(guī)模數(shù)據(jù)中未對齊對象的主色。
我們的pipeline如下所示:
我們使用CIE Lab顏色空間,因為這一空間在感知上是線性的。因此,每個圖片可以分為亮度空間L空間,以及色度空間a,b維度。輸入為灰度圖片的亮度TL∈RH×W×1T_L \in\mathcal{R}^{H\times W\times{1}}TL?∈RH×W×1,彩色參考圖片RLab∈RH×W×3R_{Lab} \in\mathcal{R}^{H\times W\times{3}}RLab?∈RH×W×3,以及二者之間的雙向映射函數(shù)。可當做是像素的映射函數(shù),?T→R\phi_{T\to R}?T→R?指的是灰度圖片對彩色圖片的映射,?R→T\phi_{R\to T}?R→T?指的是彩色圖片對灰色圖片的映射。為簡單起見,我們假設輸入圖像輸入圖片的維度是相同的。我們的網(wǎng)絡結(jié)構包括兩個子網(wǎng)絡。相似性子網(wǎng)絡計算目標圖片和參考圖片的相似度,從而獲得一個雙向的映射函數(shù)simT?Rsim_{T\leftrightarrow R}simT?R?;著色子網(wǎng)絡把simT?R,TL和Rab′sim_{T\leftrightarrow R},T_L和R_{ab}'simT?R?,TL?和Rab′?作為輸入,輸出預測的色度空間ab的值Pab∈RH×W×2P_{ab}\in\mathcal{R}^{H\times W\times{2}}Pab?∈RH×W×2,最后通過PL=TLP_L=T_LPL?=TL?直接獲得PLabP_{Lab}PLab?,即我們想要得到的彩色的圖片。
相似性子網(wǎng)絡
計算像素間相似度的時候先將TLT_LTL?與RLabR_{Lab}RLab?對齊,本文使用Deep Image Analogy方法進行像素的密集匹配,這種方式可以可以匹配語義上相同但看起來不一樣的圖片。本文使用VGG-19的中間輸出結(jié)果作為特征圖。由于VGG-19的識別能力會隨著圖片由彩色變成灰度圖而下降,我們在灰度圖上訓練VGG-19網(wǎng)絡,使得性能得到提升。
我們分別將TLT_LTL?與RLR_LRL?輸入到我們的VGG-19的網(wǎng)絡上,獲得5級特征圖金字塔(i=1,2,...,5i=1,2,...,5i=1,2,...,5)。第i層的特征圖是由relu{i}1relu\{i\}_1relu{i}1?層提取獲得。隨著層數(shù)的增加,這些特征的空間分辨率逐漸變大。我們將所有的特征向量圖上采樣到與輸入圖片相同分辨率,然后將TLT_LTL?和RLR_LRL?的上采樣后的特征圖分別以{FTLi}i=1,2,...,5\{F_{T_L}^i\}_{i=1,2,...,5}{FTL?i?}i=1,2,...,5?和{FRLi}i=1,2,...,5\{F_{R_L}^i\}_{i=1,2,...,5}{FRL?i?}i=1,2,...,5?表示。雙向相似性映射simT→Rsim_{T\rightarrow R}simT→R?和simT←Rsim_{T\leftarrow R}simT←R?在FTiF_T^iFTi?和FRiF_R^iFRi?之間基于每個像素p上計算:
simT→Ri(P)=d(FTi(P),FRi(?T→R(P)))sim_{T\rightarrow R}^i(P) =d(F_T^i(P),F_R^i(\phi_{T\to R}(P)))simT→Ri?(P)=d(FTi?(P),FRi?(?T→R?(P)))
simR→Ti(P)=d(FTi(?R→T(?T→R(P))),FRi(?T→R(P)))sim_{R\rightarrow T}^i(P) =d(F_T^i(\phi_{R\to T}(\phi_{T\to R}(P))),F_R^i(\phi_{T\to R}(P)))simR→Ti?(P)=d(FTi?(?R→T?(?T→R?(P))),FRi?(?T→R?(P)))
我們使用余弦相似性,因為余弦相似性在度量特征一致性的時候效果更好,則距離函數(shù)定義為d(x,y)=xTy∣∣x∣∣∣∣y∣∣d(x,y) =\frac{x^Ty}{||x||||y||}d(x,y)=∣∣x∣∣∣∣y∣∣xTy?。前向相似性映射simT→Rsim_{T\to R}simT→R?反映了從TLT_LTL?到RLR_LRL?的匹配置信度,simR→Tsim_{R\to T}simR→T?測量了在反向方向上的匹配精度。
著色子網(wǎng)絡
本文作者設計一卷積神經(jīng)網(wǎng)絡從而實現(xiàn)自動上色。設C\pmb{C}CCC是我們的卷積神經(jīng)網(wǎng)絡,我們的輸入是一個13層的feature map,包括灰度圖片的亮度層TLT_LTL?,對齊后的參考圖片Rab′(P)=Rab(?T→R(P))R_{ab}'(P) = R_{ab}(\phi_{T\to R}(P))Rab′?(P)=Rab?(?T→R?(P)),以及雙向映射函數(shù)simT?Rsim_{T\leftrightarrow R}simT?R?,可以預測到預測的圖片ab色度的值PabP_{ab}Pab?。后面介紹損失函數(shù),網(wǎng)絡架構以及訓練的詳細操作。
損失函數(shù):
在基于樣例的自動著色問題中,直接計算PabP_{ab}Pab?和TabT_{ab}Tab?之間的損失函數(shù)是不正確的,因為PabP_{ab}Pab?應該由Rab′R_{ab}'Rab′?來控制決定。因此,我們的目標函數(shù)需要由兩個必要條件決定:首先,我們更喜歡在輸出中應用可靠的參考圖片的顏色,從而使其忠實于參考圖片。 其次,即使沒有可靠的參考圖片的顏色,我們也鼓勵著色結(jié)果是自然的。
因此,我們使用一種包括兩個分支的多任務的網(wǎng)絡:色度的分支和感知性的分支。這兩種分支都使用相同的網(wǎng)絡結(jié)構C\pmb{C}CCC和權重θ\thetaθ,但是使用不同的損失函數(shù)。參數(shù)α\alphaα用于指示兩個分支之間的相對權重。
在色度分支上,神經(jīng)網(wǎng)絡通過目標圖片TLT_LTL?和參考圖片RLR_LRL?關聯(lián)性來學習如何正確的選擇性的傳播參照圖片的顏色。盡管如此,訓練這一網(wǎng)絡并不是容易的事情:一方面,網(wǎng)絡不可能直接通過Rab′R_{ab}'Rab′?進行訓練:在目標圖片上,參考色度是扭曲的,因此這個對應的ground truth是未知的。
本文的方法是通過雙向映射函數(shù)從ground truth的色度中重建一個假的參考的目標圖片Tab′T_{ab}'Tab′?,比如Tab′=Tab(?R→T(?T→R(p)))T_{ab}'=T_{ab}(\phi_{R\to T}(\phi_{T\to R}(p)))Tab′?=Tab?(?R→T?(?T→R?(p)))。我們假設,因為二者都通過?T→R\phi_{T\to R}?T→R?進行扭曲,在Tab′T_{ab}'Tab′?中正確的顏色的位置也會位列于Rab′R_{ab}'Rab′?相同的位置。
訓練色度分支時,將TLT_LTL?和Tab′T_{ab}'Tab′?輸入到網(wǎng)絡,生成結(jié)果PabTP_{ab}^TPabT?:
PabT=C(TL,simT?R,Tab′;θ)P_{ab}^T=\pmb{C}(T_L,sim_{T\leftrightarrow R},T_{ab}';\theta)PabT?=CCC(TL?,simT?R?,Tab′?;θ)
PabTP_{ab}^TPabT?基于Tab′T_{ab}'Tab′?來上色,并且應該在選擇正確的樣本和顏色的時候恢復ground truth TabT_{ab}Tab?。計算色度誤差采用smooth L1誤差:
Lchrom(PabT)=∑pL1(PabT(p),Tab(p))\mathcal{L}_{chrom}(P_{ab}^T)=\sum_pL_1(P_{ab}^T(p),T_{ab}(p))Lchrom?(PabT?)=∑p?L1?(PabT?(p),Tab?(p))
使用smooth L1誤差是為了避免在這些模糊的著色問題中獲得一個均值的解。
僅僅使用色度損失可以在Rab′R_{ab}'Rab′?有值得信賴的顏色時有用處,但是對于對照顏色不同的部分則沒什么辦法。為了使網(wǎng)絡能夠在即使沒有一個合適的對照下也能獲得視覺上可行的圖片,我們添加了一個感知分支。在這個分支下,我們使用對照圖片Rab′R_{ab}'Rab′?和目標TLT_LTL?來作為訓練時的輸入。我們繼續(xù)預測色度信息PabP_{ab}Pab?:Pab=C(TL,simT?R,Rab′;θ)P_{ab}=\pmb{C}(T_L,sim_{T\leftrightarrow R,R_{ab}';\theta})Pab?=CCC(TL?,simT?R,Rab′?;θ?)。我們計算感觀的誤差Lperc(Pab)=∑p∣∣FP(p)?FT(p)∣∣2\mathcal{L}_{perc}(P_{ab})=\sum_p||F_P(p)-F_T(p)||^2Lperc?(Pab?)=∑p?∣∣FP?(p)?FT?(p)∣∣2:FP(p)F_P(p)FP?(p)是PLabP_{Lab}PLab?通過VGG relu5_1層獲得的特征圖,FTF_TFT?是TLabT_{Lab}TLab?通過VGG relu5_1層獲得的特征圖。感觀誤差消除不正常上色帶來的語義分歧,可增強使用兩種不同合適的顏色的魯棒性。
我們通過以下方式優(yōu)化參數(shù):θ?=argminθLchrom(PabT)+αLperc(Pab))\theta^* = argmin_{\theta} \mathcal{L}_{chrom}(P_{ab}^T)+\alpha\mathcal{L}_{perc}(P_{ab}))θ?=argminθ?Lchrom?(PabT?)+αLperc?(Pab?))
α\alphaα設為0.005。
網(wǎng)絡架構:
使用具有跳躍連接的U-Net:前四個卷積塊空間大小減半,卷積核數(shù)翻倍用來提取特征;在第5、6個卷積塊使用dilated卷積層用來增強語義信息,最后四個卷積塊空間大小翻倍,卷積核數(shù)減半。在1到10、 2到9、3到8這三塊之間加入skip connection。最后通過一個1x1的卷積核去預測輸出結(jié)果PabP_{ab}Pab?。最后一層使用tanh層,將PabP_{ab}Pab?限制到一個有意義的范圍。
數(shù)據(jù)集
本文依據(jù)ImageNet數(shù)據(jù)集生成數(shù)據(jù)及,通過抽樣來自7個熱門類別的大約700000個圖像對:動物(15%),植物(15%),人(20%),風景(25%),食物(5%),交通(15%)以及文物(5%),涉及共計1000個類別中的700個類。
為了讓網(wǎng)絡對任何參考圖片都具有穩(wěn)健性,本文通過對具有不同可能相似程度的圖像對進行采樣。更具體地,其中45%的圖像對屬于前五相似性(具體看第4章),另外45%是在同一類中隨機抽樣的。在訓練階段,我們隨機切換每隊中的兩張圖片以增強數(shù)據(jù)。換句話說,目標圖片和參考圖片在訓練期間可互換。所有圖片都以256像素為最短邊緣進行縮放。
訓練的詳細操作:
batch=256,使用Adam優(yōu)化方法。每次迭代時,有50%的數(shù)據(jù)(128張圖片)進入色度分支(Chrominance branch),使用Tab′T_{ab}'Tab′?作為參考圖片;有50%的數(shù)據(jù)(128張圖片)進入感知力分支(perceptual branch)。更新感知力分支時,只有感知力損失用于梯度反向傳播;初始的學習率設置為10?410^{-4}10?4,每隔3個周期衰減0.1。默認情況下,我們用10個周期訓練整個網(wǎng)絡。大概在8路泰坦X的GPU上需要訓練2天。
不想讀了,這個文章后面還有幾塊的……我都說了只看到網(wǎng)絡結(jié)構嘛(認真)
總結(jié)
以上是生活随笔為你收集整理的自动上色论文《Deep Exemplar-based Colorization》(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于STM32的指纹锁
- 下一篇: 外贸人如何把握客户跟进频率?