張美玉,劉躍輝,侯向輝,秦緒佳
浙江工業(yè)大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,杭州 310023
近年來,隨著深度學(xué)習(xí)的發(fā)展,許多傳統(tǒng)算法難以解決的問題有了突破性的進(jìn)展,灰度圖像上色就是這其中的一種。同時灰度圖像上色分為兩種:一種是需要提示的上色[1];另一種是灰度圖自動圖像上色,上色過程不需要人工干涉。Deshpand等[2]在2015年用CNN結(jié)構(gòu)實現(xiàn)了上色網(wǎng)絡(luò),證明了灰度圖像自動上色這一問題可以得到有效解決。
灰度圖像自動上色可運(yùn)用在歷史資料修復(fù)、老照片上色等有意義的工作上。與使用傳統(tǒng)圖像處理軟件相比,基于深度學(xué)習(xí)的灰度圖自動上色可以顯著的減少人力成本,為人們節(jié)約大量的時間和經(jīng)濟(jì)成本【3】。
須指出的是,現(xiàn)有的大部分算法雖然可以生成符合自然感的圖片,但是建立在大量的訓(xùn)練上,且模型體積都偏大,不利于部署。本文設(shè)計了一個基于不同尺度的空洞卷積[4]堆疊結(jié)構(gòu)的與one-hot編碼的灰度圖自動上色網(wǎng)絡(luò),簡化了編碼過程,并使用傳統(tǒng)的高斯卷積處理one-hot編碼生成最終結(jié)果,提升了最終上色效果。從實驗結(jié)果來看,實現(xiàn)了一個上色結(jié)果較好、易于訓(xùn)練的灰度圖自動上色網(wǎng)絡(luò)。
這一類方法主要以L2范數(shù)的均方誤差作為損失函數(shù),如下所示:
再添加其余的損失函數(shù)作為輔助,從而構(gòu)建的網(wǎng)絡(luò)。在上色任務(wù)中,大多都使用L2損失函數(shù)的方法,具體的流程為:給定輸入的L通道,學(xué)習(xí)到相應(yīng)AB通道的函數(shù):y=f(x)。上色網(wǎng)絡(luò)本質(zhì)上也屬于分類網(wǎng)絡(luò),只是將各種不同的顏色作為標(biāo)簽,不同于傳統(tǒng)的少量標(biāo)簽分類網(wǎng)絡(luò)[5]。
Iizuka等[6]使用了復(fù)雜的使用了一個非常復(fù)雜的CNN網(wǎng)絡(luò),由一個高級特征提取網(wǎng)絡(luò),一個低級特征提取網(wǎng)絡(luò),一個分類網(wǎng)絡(luò),一個特征融合網(wǎng)絡(luò),一個上色處理網(wǎng)絡(luò)組成。色彩編碼使用了LAB,使用了交叉熵作為分類損失函數(shù),最終的著色效果損失函數(shù)則使用L2的均方誤差。文獻(xiàn)[6]的方法可以更好的結(jié)合空間特征,提升了最后的上色效果。但是由于網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,所以網(wǎng)絡(luò)收斂所需時間很久,原方法使用一塊K8連續(xù)訓(xùn)練了2周。
Despande等[2]使用了一個結(jié)構(gòu)相對簡單的CNN網(wǎng)絡(luò),并在L2損失均方誤差的基礎(chǔ)上,加上了一個直方圖。Cheng等[7]使用了一個結(jié)構(gòu)相對簡單的CNN網(wǎng)絡(luò),并使用了聯(lián)合雙邊濾波器結(jié)合均方誤差函數(shù)。
DCGAN由Radford等[8]提出,是基于GAN[9]做出的改進(jìn),在生成器和判別器中,特征提取層用卷積神經(jīng)網(wǎng)絡(luò)代替了原始GAN中的多層感知機(jī)。GAN中的生成器(generator)和判別器(discriminator)來往的博弈,最終達(dá)到納什平衡,GAN多用于圖像生成一類的任務(wù)。DCGAN可以用于人臉表情識別[10]、數(shù)據(jù)增強(qiáng)[11],圖像轉(zhuǎn)換等任務(wù),也可以用于圖像自動上色。本文通過DCGAN構(gòu)建了一個上色網(wǎng)絡(luò)。
由于判別器還不足以讓生成器有上色效果,所以在生成器中加上L2范式的均方誤差修正上色結(jié)果。由于鑒別網(wǎng)絡(luò)的存在,最終的效果細(xì)節(jié)較為真實,比使用端到端的CNN網(wǎng)絡(luò)上色效果更好。
Zhang等[12]使用了VGG[13]作為主干網(wǎng)絡(luò),將LAB空間編碼分割成Q=313塊。將輸入圖片作為Y,并定義一個one-hot生成函數(shù):Z=(Y),最終每一個像素上色的結(jié)果為選取313塊中的一種。每次訓(xùn)練選取鄰近像素鄰近的5塊,并按照空間距離加權(quán),距離越短,權(quán)值越大。定義背景平衡函數(shù)v(Z h,w),通過統(tǒng)計ImageNet[14]數(shù)據(jù)集中所有的圖片顏色出現(xiàn)的概率。按照顏色出現(xiàn)的概率決定上色的概率,其中,出現(xiàn)的概率越小,顏色越稀有,反向傳播的梯度越小,得以保留更加豐富的顏色。得到最終權(quán)重編碼后,生成的One-Hot與網(wǎng)絡(luò)生成的結(jié)果做比較。最終的損失函數(shù)為:
最后引入?yún)?shù)T=0.38,讓one-hot中每一個數(shù)值除以T,使最后的顏色飽合度更高。
Yoo等[15]提出了一個帶記憶增強(qiáng)的關(guān)色模型Memo-Painter,可以捕獲稀有實例并成功著色,可以在較小樣本小取得相對可以接受的上色效果。此方法的核心是通過一個類似HashMap的記憶網(wǎng)絡(luò),具體做法以記憶空間為key,以顏色為value。使用索引和余弦相似度處理key;使用Zhang等[12]的one-hot編碼格式。
本文設(shè)計了一個新的CNN網(wǎng)絡(luò),依靠堆疊不同尺寸的普通卷積和空洞卷積,以及上采樣、Dropout[16]、1×1卷積[17]構(gòu)建了一個CNN上色網(wǎng)絡(luò)。同時本文的網(wǎng)絡(luò)設(shè)計為全卷積[18]網(wǎng)絡(luò),可以處理任理任意尺度的圖片,本文的體積也控制的比較好,在實驗部分也會列出體積對比。本文的結(jié)構(gòu)圖如圖1所示。
圖1 網(wǎng)絡(luò)總體結(jié)構(gòu)圖Fig.1 Overall diagram of network architecture
圖片的編碼格式采用LAB,主要有兩個原因:因為人眼對彩色并不是很敏感,而對亮度敏感,所以使用Lab空間處理圖片[19],觀感上要比傳統(tǒng)的RGB好;如果用LAB格式,那么只要輸入1個通道預(yù)測2個通道,比采用RGB的輸入3個通道預(yù)測3個通道更容易訓(xùn)練。L通道代表亮度,A代表從紅色到綠色,B代表從黃色到藍(lán)色,A、B都在[ ]-128,128之間。L的亮度通道即是灰度圖,已經(jīng)包含了圖片語義信息。從Iizuka等[6]的實驗可以看出,使用亮度去預(yù)測顏色比傳統(tǒng)的RGB更有優(yōu)勢。
本文的損失函數(shù)受Zhang等[12]方法的啟發(fā),將搜索策略作了調(diào)整,在最后的編碼階段使用了高斯卷積,代替了最后使用模擬退火思想得出的用于優(yōu)化分類權(quán)重的閾值。最后使用比Adam[20]效果更好的AdamW[21]進(jìn)行訓(xùn)練。AdamW則是在Adam的更新策略中采用了計算整體損失函數(shù)的梯度來進(jìn)行更新,而不是只計算不帶正則項部分的梯度進(jìn)行更新之后再進(jìn)行權(quán)重衰減[22]。
(1)將原圖O從RGB轉(zhuǎn)成LAB,并取L通道作為Ol。
(2)將原圖O的ab通道編碼成width/4×hi eght/4×313的向量O h。
(3)取Ol作網(wǎng)絡(luò)輸出的AB通道編碼的one-hot結(jié)果R h。
(4)使用交叉熵計算兩個one-hot向量R h、O h的誤差,并反向傳播修正誤差。
(5)訓(xùn)練結(jié)束,對輸出的one-hot編碼R h使用高斯卷積進(jìn)行處理。
(6)轉(zhuǎn)換one-hot編碼R h為真實的AB通道值Ra、Rb,并將R a、R b的尺寸采用擴(kuò)大4倍。
(7)取原圖的L通道Ol并加上生成的R a、Rb兩個通道,以生成最終的上色結(jié)果。
一個物體可以有若干個合理的顏色,只要這若干種顏色符合人的認(rèn)識,就作為可以接受的解,故L2損失函數(shù)的功能僅是將數(shù)據(jù)集中出現(xiàn)的解取平均值作為最優(yōu)解。經(jīng)過一定量的訓(xùn)練之后,網(wǎng)絡(luò)可以根據(jù)特征識別出物體,由于使用了L2損失函數(shù),神經(jīng)網(wǎng)絡(luò)會擬合每一個訓(xùn)練數(shù)據(jù)。比如存在各種顏色的綠植:深綠與淺綠。為了擬合所有的數(shù)據(jù),神經(jīng)網(wǎng)絡(luò)就會取一個深綠與淺綠的中間值,作為綠植的上色顏色。體現(xiàn)在最終結(jié)果上,畫面整體偏灰,顏色不豐富。比如:房屋大多是同樣的偏黑的棕色,綠植多大是相同的綠色。如圖2所示,用L2函數(shù)的上色網(wǎng)絡(luò)會嘗試擬合各種特征的樹木,取訓(xùn)練集中各個樹木顏色的平均值。最終,對新的灰度圖像進(jìn)行上色時,綠植的顏色就會是一個非常平淡的綠色。這樣的上色結(jié)果雖然也符合人類的認(rèn)知,但是最終的效果并不理想。所以這種損失函數(shù)無法解決著色問題的多解問題。一個上色良好的上色網(wǎng)絡(luò)應(yīng)該避免這個惟一解問題,所以本文選擇基于one-hot編碼的操作函數(shù)。
圖2 L 2損失函數(shù)上色效果展示圖Fig.2 Visual display of L 2 loss function coloring effect
在相關(guān)方法中,Zhang等[12]的方法是唯一一種不使用L2上色方法的結(jié)果,雖然相比L2損失函數(shù)多出了編碼圖片與解碼圖片的過程,并且最后一層分類會顯著的增加網(wǎng)絡(luò)的體積,但是最終的上色結(jié)果大幅度優(yōu)于采用均方誤差的方法。所以本文選擇沿用Zhang等[12]的思路:將圖片編碼成one-hot編碼,再使用選用基于分類的損失函數(shù)進(jìn)行著色。
2.2.1 圖像編碼
本文方法的采用Zhang等[12]的量化方法:將AB通道的輸出二維空間以10的步長量化為一維313類,并組成鍵值對,一組A、B對應(yīng)一類顏色。
本文方法將圖像編碼的具體流程為:先將圖片尺寸縮小至原來的1/4,再取所有點(diǎn)的AB值,并使用KNN的ball tree算法僅搜索一個最鄰近點(diǎn),直至所有點(diǎn)都搜索完成。
最后得到的張量為最終的one-hot編碼,大小為:313×width/4×height/4,將L通道輸入網(wǎng)絡(luò),預(yù)測AB通道的one-hot編碼,再將one-hot編碼轉(zhuǎn)成真實的AB值。
2.2.2 圖像解碼
如果直接使用每個像素預(yù)測而得到的顏色,大部分區(qū)域下可以得到符合語義的顏色,但是在小部分區(qū)域內(nèi),會出現(xiàn)顏色在空間上不連續(xù)的現(xiàn)象,比如在同一個區(qū)域內(nèi)的一小塊會出現(xiàn)與語義信息不符合的顏色,這樣非常影響最后的上色結(jié)果。所以圖像解碼不是圖像編碼的逆操作。
造成這種現(xiàn)象的原因是本文的核心方法就是將一個像素的上色問題作為313類的分類問題來解決,而每一次的分類結(jié)果不會總是正確無誤。這就導(dǎo)致有時預(yù)測的結(jié)果會出現(xiàn)一些異常的分類結(jié)果,理想的分類結(jié)果為:一個像素如果預(yù)測成湖藍(lán)色,那么必然在淡藍(lán)色,深藍(lán)色都會存在相對其他顏色相差不大的權(quán)值。但是真實的結(jié)果是同時也會有一些異常點(diǎn)出現(xiàn),這個異常顏色的權(quán)值會比較高,甚至高于正確顏色的權(quán)值,而這個異常顏色周圍的顏色權(quán)值又非常的低。Zhang等[12]采用了基于模擬退火的思想去解決這一問題,具體的作法為在softmax分布中引入?yún)?shù)T,然后取結(jié)果的平均值。這樣的缺點(diǎn)是要不停的嘗試參數(shù)并且每一次修改網(wǎng)絡(luò)結(jié)構(gòu)都需要去尋找一個合適的T值,而且并沒有對畫面有什么過大的影響。
一個固定的T值,僅是將神經(jīng)網(wǎng)絡(luò)預(yù)測的每一個權(quán)值放大1.47倍,使用的交叉熵函數(shù)讓一些本來無法選中的權(quán)值得以選中。經(jīng)過多組圖片試驗,加上T值處理的圖片會略微改變圖像的色調(diào)。可能對某一些上色結(jié)果有優(yōu)化的作用,但是無法優(yōu)化所有的上色結(jié)果。所以使用T值有一定的局限性,本文不選用T值優(yōu)化結(jié)果。
在圖像解碼這一部分中,文本使用傳統(tǒng)圖像處理中的高斯卷積,作為濾波器處理預(yù)測的顏色權(quán)值。解決突然出現(xiàn)的異常顏色點(diǎn),以在最終結(jié)果上盡可能消除不符合語義的顏色出現(xiàn)。
高斯卷積的常用于圖像模糊中,然而高斯卷積是一種數(shù)據(jù)平滑技術(shù),可用于多個場合。高斯卷積將正態(tài)分布用于數(shù)據(jù)平滑中,高斯卷積核使用高斯函數(shù)生成。
高斯函數(shù)就是正態(tài)分布的密度函數(shù)。一維形式為:
根據(jù)一維函數(shù)可以得到二維函數(shù):
假設(shè)中心點(diǎn)的坐標(biāo)為(0,0),距離它最近的8個點(diǎn)的坐標(biāo),范圍為:x∈[-1,1],y∈[-1,1],取σ=1.5,得到權(quán)重矩陣:
然后計算9個點(diǎn)的加權(quán)平均,得到本文最終使用的高斯卷積核:
對于那些異常預(yù)測值,即在最后的313類的周圍權(quán)值都很低,但是本身的權(quán)值很高,這樣的值通常不會是正解,但是通過使用高斯卷積處理后,那些預(yù)測的值很高,將會進(jìn)一步地強(qiáng)化權(quán)值,那些本身權(quán)值很低的值,會變得很加的低。所以這樣可以進(jìn)一步的削減異常權(quán)值。在最終的實驗結(jié)果中,也證明了效果的提升。本文方法中對σ的取值并沒有特殊的要求,因為高斯卷積擁有數(shù)據(jù)平滑的功能,使用高斯卷積可以平滑最終one-hot編碼。最后使用的交叉熵函數(shù),會選出一個權(quán)值最大值并以此選擇分類,所以σ的選取對最終的圖片結(jié)果影響非常微小。
本文的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計上參考了VGG系列的堆疊卷積結(jié)構(gòu),并在此基礎(chǔ)上加入了1×1卷積、Dropout[16]、不同尺寸的空洞卷積堆疊等結(jié)構(gòu)組成文本的網(wǎng)絡(luò)。最終組成了一個體積相對較小、上色效較好的深度神經(jīng)網(wǎng)絡(luò)。
本文的網(wǎng)絡(luò)結(jié)構(gòu)在開始使用了3個堆疊結(jié)構(gòu),之后,經(jīng)過上采樣放大特征。采用了一對VGG上廣泛使用的3×3卷積堆疊并進(jìn)行升維。在本文的網(wǎng)絡(luò)中,將最后的通道數(shù)放大,最高到512,最后一層縮減成313進(jìn)行分類,最后若干層的卷積均為1×1卷積。下文將對為何使用上文中提到的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)做逐一說明。
2.3.1 堆疊卷積
VGG結(jié)構(gòu)上使用了很多個卷積堆疊,具體做法是將兩個3×3的卷積層串聯(lián),相當(dāng)于1個5×5的卷積層。3×3堆疊卷積首次出現(xiàn)在VGG的結(jié)構(gòu)上,相比于傳統(tǒng)的大卷積堆疊,多個3×3結(jié)構(gòu)相比單個5×5的卷積核的優(yōu)點(diǎn)為以下兩點(diǎn):
(1)擁有相同的感受視野與更小的運(yùn)算量。運(yùn)算量的對比如表1所示。
表1 卷積參數(shù)表Table 1 Convolution parameters
2個3×3的卷積可以代替1個5×5的卷積的感受野;3個3×3的卷積才能代替1個7×7的卷積的感受野。
2個3×3和1個5×5的參數(shù)比例為3×3×2/(5×5)=0.72,同樣的3個3×3和1個7×7參數(shù)比例為3×3×3/(7×7)=0.55,使用小卷積堆疊可以減少近一倍的參數(shù)量,所以選擇多個小卷積核代替大卷積核。
(2)與使用多個卷積層比單個卷積層相比,還擁有更多的非線性變換。單個卷積層只能使用一個激活函數(shù),而后者可以使用多次激活函數(shù),使用多個卷積堆疊可以提升對特征的學(xué)習(xí)能力。
視野變化的過程如圖3所示:頂層為特征,初始為1×1,第二層為經(jīng)過一層卷積之后,視野的變化為3×3,第三層為再次經(jīng)過一層卷積之后,視野的變化為5×5。
圖3 卷積堆疊示意圖Fig.3 Convolution stacking diagram
在卷積堆疊基礎(chǔ)之上,本文使用了不同參數(shù)的空洞卷積進(jìn)行堆疊。
如果將上圖的普通卷積替換成空洞卷積,那么感受視野將進(jìn)一步擴(kuò)大,空洞卷積的感受野會隨著空洞的數(shù)量變化
本文的空洞卷積堆疊使用了兩種不同的尺寸,如表2所示。
表2 空洞卷積參數(shù)Table 2 Dilated convolution parameters
通過空洞卷積的視野計算公式:
其中,r n來表示第n個卷積層中每個單元的感受視野,k n、s n分別表示第n個卷積層的卷積核尺寸與步長。根據(jù)表2的配置參數(shù)得出使用本文所使用空洞卷積感受視野為:9×9。
2.3.2 1×1卷積
本文在最后需要降維的位置使用1×1卷積以減少參數(shù)量并減少模型體積。為了進(jìn)一步縮小網(wǎng)絡(luò)體積且盡可能的不增加運(yùn)算量,最后生成one-hot編碼的部分也采用1×1卷積。
2.3.3 Dropout
Dropout是會按給定的比例,隨機(jī)將給定比例的神經(jīng)元權(quán)值置0,雖然會降低每一次訓(xùn)練時的效果,但是隨著訓(xùn)練次數(shù)的增加,會提高整個網(wǎng)絡(luò)的性能。經(jīng)過實驗的權(quán)限,本文方法中選定的權(quán)值為0.1,并放置在即倒數(shù)第二個卷積層。此卷積層用于最后生成one-hot編碼,即此卷積層有10%的概率會失效。
本文使用Dropout并不是為了防止過擬合,而是為了使模型泛化性更強(qiáng)。原因主要有兩個:
(1)因為它不會太依賴某些局部的特征。因為Dropout程序?qū)е聝蓚€神經(jīng)元不一定每次都在一個Dropout網(wǎng)絡(luò)中出現(xiàn)。這樣權(quán)值的更新不再依賴于有固定關(guān)系的隱含節(jié)點(diǎn)的共同作用,阻止了某些特征僅僅在其他特定特征下才有效果的情況,迫使網(wǎng)絡(luò)去學(xué)習(xí)更加魯棒的特征。
(2)因為Dropout會隨機(jī)丟棄一部分權(quán)值,剩余的權(quán)值需要利用已讀到的特征輸出結(jié)果去適應(yīng)這一情況,這樣增加了網(wǎng)絡(luò)整體的性能。
2.3.4 通道數(shù)的限制
本文的網(wǎng)絡(luò)設(shè)計目標(biāo)以體積小為導(dǎo)向,所以盡可能不過多地增加通道數(shù)。使用更寬的通道數(shù)可以增加網(wǎng)絡(luò)的表達(dá)能力,以提高網(wǎng)絡(luò)的整體性能,但是網(wǎng)絡(luò)模型體積及參數(shù)也隨之上升。為了達(dá)到相對較小的體積和相對好的性能這一目標(biāo),只在中間及偏后的位置加入通道數(shù)偏大的網(wǎng)絡(luò)。通道數(shù)最多為512,此通道在同類網(wǎng)絡(luò)中已然很大,過大的通道數(shù)也沒有意義,反而徒增運(yùn)算量。
2.3.5 上采樣
相對的,反卷積也可以起到相似的作用,但是反卷積容易出現(xiàn)棋盤效應(yīng),且本身就作為卷積層需要參數(shù)[21]。使用上采樣可以不用訓(xùn)練就達(dá)到增大特征的效果,更適合本文算法。
本文的網(wǎng)絡(luò)結(jié)構(gòu)如表3所示。
表3 網(wǎng)絡(luò)詳細(xì)信息Table 3 Network details
其中,除最后一層外,激活函數(shù)采用了ReLU,最后一層的激活函數(shù)使用softmax分類生成one-hot編碼。這兩個激活函數(shù)是目前比較常用的激活函數(shù)。
在此基礎(chǔ)上,如果再加卷積層(升維)時,在空間占用量上,即模型大小上,根據(jù)通道數(shù)C的大小,及神經(jīng)網(wǎng)絡(luò)默認(rèn)使用的Float32類型,增加Cin×Cout×32字節(jié)的空間占用。運(yùn)算量上,即顯存占用上,在不同的位置,根據(jù)特征圖的大小、通道的多少,對運(yùn)算量也會有較大影響。如果改變通道數(shù),只會對本層及下一層增加或減少相應(yīng)數(shù)值的空間占用量及顯存占用量。同時因為批數(shù)量的關(guān)系,會進(jìn)一步的影響運(yùn)算量。一般來說,常見的網(wǎng)絡(luò)都會在兩端設(shè)計選擇較小的通道數(shù),并在中網(wǎng)絡(luò)中間選擇較大的通道數(shù)與較小的特征圖。本文方法也遵循這一經(jīng)驗。
經(jīng)過大量的調(diào)整各個參數(shù),本文采用了表3的參數(shù)。如果再加上幾層卷積層(升維),對上色結(jié)果沒有特別大的影響;如果再此基礎(chǔ)上再減少若干層,網(wǎng)絡(luò)將不能很好地進(jìn)行上色工作。
本文方法在Windows 10操作系統(tǒng)上進(jìn)行。顯卡為RTX 2070S 8 GB顯存,CPU為AMD Ryzen 2 400G,內(nèi)存為16 GB DDR4。軟件環(huán)境為:深度學(xué)習(xí)框架Pytorch 1.5[23]、Python 3.7、CUDA 10.0,數(shù)據(jù)集采用Place 365中的室外風(fēng)景部分。包括樓宇、小屋、山水、庭院等50多個類別大約30萬張256×256分辨率的圖片。本文方法的優(yōu)化方法是AdamW,Epoch為10。對比算法嚴(yán)格按照相同的數(shù)據(jù)集進(jìn)行訓(xùn)練,且訓(xùn)練的Epoch同樣為10。
本文算法將與DCGAN,Zhang等[12]的方法作對比,采用一樣的數(shù)據(jù)集,一樣的訓(xùn)練輪數(shù)10,并動態(tài)地調(diào)整批數(shù)量使其充分利用8 GB顯存。
3.2.1 上色評價
由于上色的最終效果難以用數(shù)學(xué)的方式衡量,因為著色時顏色越豐富,最終的損失越大,但是最終的效果是可接受的。圖4、圖5展示一些實驗效果的對比,其中圖4為彩色照片的重著色效果,圖5為黑白照片的上色效果。
圖4 彩色圖片重上色Fig.4 Colorful image recoloring
圖5 黑白圖片上色Fig.5 Gray image coloring
從彩色圖片重上色(圖4)效果來看,經(jīng)過本文方法上色的圖片顏色更加豐富,對細(xì)節(jié)的處理以及光影效果也比其余算法更好。DCGAN的效果總是偏暗,Zhang等[12]的算法有一些地方語義不到位,圖4的C組圖山脈處,D組圖的建筑部分出現(xiàn)了綠色,E組圖的路面一片綠色,F(xiàn)組圖的樹木也是綠色;本文算法除了在E組圖中沒有識別出地面,其他幾組圖片效果都相對較好。
在圖5所示的黑白圖片上色中,本文方法的語義性較好。在圖5的A組圖中,本文方法的顏色生動,對天空的還原較好,Zhang等[12]的算法總體也較好,但是天空還原不準(zhǔn)。DCGAN則較為平淡,在B組圖中,本文算法在樹葉與天空的縫隙處上色效果較好。在D組圖中,對建筑的上色更加的準(zhǔn)確,而Zhang等[12]的算法則偏綠,E組圖也是同樣的情況。在F組圖中,本文算法對地面的彩色著色相對準(zhǔn)確,而Zhang等[12]的算法可能將地圖看成了海洋。DCGAN的幾組結(jié)果上色效果均過于平淡。
3.2.2 其他參數(shù)對比
網(wǎng)絡(luò)中的參數(shù)如下所示:通過表4的數(shù)據(jù)可知,由于DCGAN沒有使用one-hot編碼,在速度上占據(jù)一定的優(yōu)勢,但是由于存在鑒別器,同時訓(xùn)練兩個網(wǎng)絡(luò),體積和訓(xùn)練時顯存都占用較多,所以批數(shù)量較少,難以訓(xùn)練。從體積大小與批數(shù)量來看,本文方法有較大的優(yōu)勢。
表4 不同模型的性能對比Table 4 Performance comparison of different models
本文使用了基于分類思想的上色網(wǎng)絡(luò),提出一個使用傳統(tǒng)高斯卷積的編碼器,并使用空洞卷積堆疊的結(jié)構(gòu)組建的CNN網(wǎng)絡(luò),不僅獲得了相比于采用L2損失函數(shù)更為鮮艷的效果,并且采用一系列方法在保證上色效果的前提下縮小模型的體積。通過在自然圖像數(shù)據(jù)集上進(jìn)行的實驗,所提出的方法可以進(jìn)行效果良好的上色,與其他方法的結(jié)果相比,在最終的上色效果與體積控制上均具有優(yōu)越性。