蔣文杰,羅曉曙,戴沁璇
(廣西師范大學 電子工程學院,廣西 桂林 541004)
近年來,深度學習在圖像處理領(lǐng)域表現(xiàn)出了巨大的優(yōu)越性,目前手工對其進行上色將花費巨大的時間和人力成本,所以還無法做到對黑白照片/圖像的批量上色處理。如果能夠借助深度學習的方法將上色這一過程無監(jiān)督化,將在效率和時間上給黑白照片/圖片帶來質(zhì)的提升,提高其藝術(shù)觀賞價值。
文獻[1-2]提出了使用人工干預和灰度直方圖對灰度圖進行上色,效率不高,很難進行大規(guī)模推廣應用。文獻[3-5]提出一種藝術(shù)風格轉(zhuǎn)化的方法,這種方法是通過卷積神經(jīng)網(wǎng)絡分別提取兩張圖片的特征,然后再將得到的特征結(jié)合起來組合成新的圖片,并沒有實現(xiàn)真正的上色功能。在文獻[6]中針對高分辨率圖片上色的問題,突破了難以生成高分辨率圖像的限制,雖然實現(xiàn)了對高分辨率圖片上色,但也增加了訓練難度同時對計算機硬件提出了更高的要求。
生成對抗網(wǎng)絡作為深度學習中的一種概率生成模型,最早由Ian Goodfellow等人[7]于2014年提出,它能夠自動學習圖片的輸入到輸出的映射,不需要構(gòu)造復雜的目標函數(shù),構(gòu)建了泛化模型。GAN由兩個網(wǎng)絡構(gòu)成,分別是生成器G,其作用是抓取數(shù)據(jù)分布特征,另外一個是判別器D,其作用是估計圖片來自訓練數(shù)據(jù)還是來自于生成器G生成的圖片。兩者進行極大極小值博弈[7]最終達到動態(tài)平衡,具體表達式如下所示:
min(G)max(D)V(D,G)=Ex~pdata[logD(x)]+Ez~pz(z)[log(1-D(G(z)))]
(1)
對黑白照片/圖像進行上色需要考慮兩個因素:輸出的彩色圖像與原來的黑白照片/圖片的底層輪廓信息不變,另外就是上色的合理性。文中在兼顧底層信息不變和上色合理性的前提下,構(gòu)建了基于改進生成對抗網(wǎng)絡的黑白照片/圖片無監(jiān)督上色模型。該模型包含了帶有U型[8]結(jié)構(gòu)的生成器模型和以塊的方式(PatchGAN)[9]的判別器模型。該模型是以黑白照片/圖像作為生成器模型的輸入,然后生成器輸出彩色圖像,接下來通過判別器判斷該輸出彩色圖是來自真實分布還是生成器輸出圖像,生成器和判別器兩者以對抗的方式相互進行訓練,不斷優(yōu)化黑白圖像和彩色圖像的映射關(guān)系,最后得到穩(wěn)定的網(wǎng)絡模型。由于黑白照片/圖像到彩色照片的數(shù)據(jù)集較少,文中所用的數(shù)據(jù)集是從各大網(wǎng)站抓取并進行加工處理后得到,使用tensorflow在GPU上對模型進行訓練。
利用GAN對黑白照片/圖像樣本集進行無監(jiān)督上色訓練,最終輸出彩色圖像。訓練好的GAN模型雖然能夠?qū)⑤斎氲暮诎讏D像轉(zhuǎn)化為彩色圖像,但是卻無法保持上色的合理性。為了解決這個問題,這里引入了條件對抗網(wǎng)絡CGAN(conditional generative adversarial nets)[10]。該網(wǎng)絡是在GAN的生成器和判別器都額外添加一個條件y,即生成器必須要生成和條件y匹配的樣本,判別器不僅要判別圖像是否真實,還要判別圖像和條件y是否匹配。CGAN的基本結(jié)構(gòu)如圖1所示。
生成器G,輸入為一個噪聲z,輸出一個圖像G(z),判別器D,輸入為一個圖像x,輸出該圖像為真實的概率D(x),CGAN的損失函數(shù)可以定義為:
LCGAN(G,D)=Ex,y[logD(x,y)]+Ex,z[log(1-D(x,G(x,z))]
(2)
圖1 CGAN基本結(jié)構(gòu)
文中算法在CGAN基礎(chǔ)上進行改進,原始的CGAN為了能夠加快訓練網(wǎng)絡時的收斂速度以及歸納統(tǒng)一樣本的統(tǒng)計分布性,采用批量歸一化BN(batch normalization)[11],它能將數(shù)據(jù)強行歸一化為均值為0、方差為1的正態(tài)分布上,這樣有利于數(shù)據(jù)分布一致,也避免了梯度消失。BN的缺點也很明顯,首先,它對樣本的數(shù)量的大小比較敏感,因為每次計算的方差和均值都在一個批量上,所以如果批量太小,這會導致方差和均值不足以代表整個數(shù)據(jù)分布。其次BN只對固定深度的前向神經(jīng)網(wǎng)絡很方便。
基于此,文中采用了實例歸一化IN(instance normalization)[12]替換BN,這是因為在無監(jiān)督上色中,輸出圖像主要依賴于某個圖像實例,IN是對一個批次中單張圖片進行歸一化,而不是像BN對整批圖片進行歸一化然后提取平均值,所以IN更適合于無監(jiān)督上色,提高輸出圖片上色的合理性和更好地保留底層信息,IN的計算公式如下:
(3)
(4)
(5)
其次,該算法還在生成器中引入了自注意力Self-Attention[13]機制,傳統(tǒng)的生成對抗網(wǎng)絡的問題表現(xiàn)在卷積核的大小選取上,小的卷積核很難發(fā)現(xiàn)圖像中的依賴關(guān)系,但是大的卷積核又會降低卷積網(wǎng)絡的計算效率。
為了提升上色效果,該算法將Self-Attention加載到生成器網(wǎng)絡中,具體網(wǎng)絡如圖2所示,即在前一層的特征圖上加入Self-Attention機制,使得生成對抗網(wǎng)絡在生成時能區(qū)分不同的特征圖。
圖2 Self-Attention機制結(jié)構(gòu)
圖中f(x)=Wfx,g(x)=Wgx,Wf、Wg都是網(wǎng)絡的參數(shù),Self-Attention機制的注意力計算如下:
(6)
注意力層的輸出如下所示:
(7)
最后得到加入了Self-Attention機制的特征圖:
yi=γoi+xi
(8)
這里γ的值初始化為0,再逐漸增大權(quán)重,由于Self-Attention一開始可能訓練得不太好,用它作指引效果不好,所以等Self-Attention層訓練得越來越好后再加大γ的值。
在對圖像彩色化的問題上,為了保持原圖像的底層輪廓信息不變和上色的合理性,一般是采用U-Net結(jié)構(gòu),如圖3所示,其好處是不需要所有的信息都通過生成器的所有層,這樣就能使得輸入和輸出圖像的底層信息和突出邊緣位置信息能夠被共享。U-Net型網(wǎng)絡對于提升輸出圖像的細節(jié)起到了良好的效果。
圖3 生成器模型結(jié)構(gòu)
對于判別器D,文中采用PatchGAN的方法,即對每張輸出圖像的每個N*N小塊(Patch)計算概率,然后再將這些概率求平均值作為整體的輸出,其優(yōu)點在于可以加快模型收斂和計算的速度。判別器模型結(jié)構(gòu)如圖4所示。
圖4 判別器網(wǎng)絡結(jié)構(gòu)
文中算法的損失函數(shù)基于CGAN進行改進,和CGAN相比少了噪聲輸入,文中定義了和CGAN相同的損失,另外為了加快模型的收斂速度并提高圖像的清晰度,在CGAN損失函數(shù)的基礎(chǔ)上還添加了L1損失:
LL1(G)=Ex,y,z[‖y-G(x,z)‖1]
(9)
最終得到的目標函數(shù)為:
G=arg min(G)max(D)LCGAN(G,D)+λLL1(G)
(10)
由于在模型訓練中需要大量的卷積計算,相對于CPU而言,GPU的運用將極大地縮短訓練時間,加快訓練速度。本實驗中所使用的計算機配置是雙E5-2637 v4 CPU,操作系統(tǒng)為Ubuntu 16.04,同時還使用了GTX1080Ti顯卡、12 GB內(nèi)存來加快訓練。所使用的平臺是谷歌開發(fā)的機器學習框架tensorflow1.9。
該算法所用到的圖像數(shù)據(jù)集是使用爬蟲從各大網(wǎng)站上隨機抓取的,經(jīng)過篩選并剔除不適用于訓練的圖像,最后剩下大約2萬張的數(shù)據(jù)圖像,最終典型的實驗效果如圖5所示。
圖5 上色方法效果比較
為了進一步驗證該算法的有效性,這里進行了簡化模型測試,使用控制變量法單獨分出了CGAN模型,分別使用IN項和GN(group normalization)[14]項代替原模型的BN項,最終的實驗效果如圖6所示。
圖6 不同算法效果比較
從上面對比分析可知,CGAN模型經(jīng)過訓練后雖然也能對黑白圖像進行上色,但色彩較為單一;將CGAN模型的BN項替換成IN項,其色彩要比原模型鮮艷,但色彩分布不均勻;采用GN項替換后雖然色彩分布較為均勻但是色調(diào)偏暗,最后文中把IN項和添加的Self-Attention項結(jié)合起來,其效果比原先算法都要好。
為了更加準確地分析生成圖片的質(zhì)量好壞,該算法采用了衡量圖片質(zhì)量的若干指標:均方差(MSE)[15],數(shù)值越小表示越接近原圖,峰值信噪比(PSNR)[16]和結(jié)構(gòu)相似度(SSIM)[17],數(shù)值越大表示畫質(zhì)越好。該算法選取了測試集作綜合比較,最終將實驗結(jié)果進行定量計算,結(jié)果如表1所示。
表1 不同算法對數(shù)據(jù)平均客觀指標對比
從表1可知,使用實例歸一化IN進行網(wǎng)絡優(yōu)化以及在生成器中引入自注意力Self-Attention機制的效果相較于CGAN、GN和IN在測試集的評價結(jié)果,MSE分別減少了60.35,139.07和50.04,PSNR分別提高了2.21 dB,3.91 dB和2.03 dB,SSIM指標略有提高,這是因為實例歸一化能夠較好地保留底層信息,另外由于黑白圖像到彩色圖像的映射關(guān)系復雜,引入自注意力機制能夠提高生成圖像的上色效果,進一步體現(xiàn)了該算法的優(yōu)越性。
文中研究了基于改進生成對抗網(wǎng)絡的上色算法,實現(xiàn)了對黑白照片/圖像的上色。該算法通過理論分析及對比試驗發(fā)現(xiàn),當采用實例歸一化IN以及在生成器中引入自注意力機制Self-Attention,最終的實驗效果在指標評價上均要比原始模型有較大提高,這充分說明了該算法的可行性和有效性。由于目前的上色方法中,研究對象均是低分辨率圖像,后續(xù)將對高分辨率圖像上色作進一步研究。