時(shí) 澄,潘 斌,郭小明,李芹芹,張露月,鐘 凡
1.遼寧石油化工大學(xué) 計(jì)算機(jī)與通信工程學(xué)院,遼寧 撫順 113001
2.遼寧石油化工大學(xué) 理學(xué)院,遼寧 撫順 113001
3.山東大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山東 青島 266237
圖像補(bǔ)全是一種在圖像缺失區(qū)域中填充替代內(nèi)容的技術(shù)。使用該技術(shù),可以為圖像中的缺失區(qū)域根據(jù)某種規(guī)則進(jìn)行補(bǔ)全,使補(bǔ)全后的圖像達(dá)到以假亂真的效果。目前,已有多種方法應(yīng)用于圖像補(bǔ)全領(lǐng)域,但是由于對(duì)補(bǔ)全效果的高要求,圖像補(bǔ)全仍然是一個(gè)具有挑戰(zhàn)性的研究方向[1-2]。
對(duì)圖像進(jìn)行補(bǔ)全不僅要考慮圖像紋理細(xì)節(jié)的合理性,也要考慮圖像整體結(jié)構(gòu)的統(tǒng)一性,生成式對(duì)抗網(wǎng)絡(luò)(generative adversarial networks,GAN)為圖像補(bǔ)全提供了新的思路。
本文提出了一種基于GAN的圖像補(bǔ)全方法。GAN模型由生成器模型和判別器模型兩部分組成。生成器模型和判別器模型均采用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)實(shí)現(xiàn)。首先,通過(guò)生成器模型進(jìn)行圖像補(bǔ)全;然后,利用判別器模型對(duì)圖像的補(bǔ)全效果進(jìn)行判別。其中,判別器模型又分為整體圖像判別器模型和局部圖像判別器模型,整體圖像判別器模型將整幅的補(bǔ)全圖像作為輸入,從整體上判別圖像場(chǎng)景是否具有一致性,而局部圖像判別器模型只判別以補(bǔ)全區(qū)域?yàn)橹行牡木植繀^(qū)域的紋理細(xì)節(jié)信息。
通過(guò)對(duì)GAN模型進(jìn)行迭代訓(xùn)練,得到穩(wěn)定的網(wǎng)絡(luò)模型。在每一次的迭代訓(xùn)練過(guò)程中,首先更新判別器模型,以便正確區(qū)分輸入的圖像是真實(shí)的圖像還是補(bǔ)全的圖像;然后更新生成器模型,使圖像的缺失區(qū)域有更好的補(bǔ)全效果。
圖像補(bǔ)全是數(shù)字圖像處理領(lǐng)域的重要研究方向,在老照片的修復(fù)、圖像冗余場(chǎng)景的去除以及圖片場(chǎng)景的合理化延伸等方面有著廣闊的應(yīng)用前景。
基于擴(kuò)散的圖像補(bǔ)全方法,是一種較為傳統(tǒng)的圖像補(bǔ)全手段。該方法使用缺失區(qū)域周圍的信息來(lái)補(bǔ)全圖像,例如Ballester等[3]提出的基于等照度線進(jìn)行傳播的方法。但是,基于擴(kuò)散的方法只能填充面積小的或者狹窄的缺失區(qū)域,對(duì)于面積較大的區(qū)域補(bǔ)全效果并不理想。
相較于基于擴(kuò)散的圖像補(bǔ)全方法,基于樣本塊的方法可以用來(lái)填充圖像中較大的缺失區(qū)域。基于樣本塊的圖像補(bǔ)全方法由Efros等[4-5]在紋理合成理論中首次被提出,該方法從圖像的完好區(qū)域中截取與缺失區(qū)域周圍紋理相同的樣本塊,填充到缺失區(qū)域中來(lái)完成圖像的補(bǔ)全。后來(lái),基于樣本塊的圖像補(bǔ)全方法進(jìn)一步發(fā)展,例如Criminisi等[6]提出的優(yōu)化樣本塊搜索的方法,Wexler等[7]和Simakov等[8]提出的基于圖像整體的樣本塊填充方法,該類方法可以從圖像中可獲得的部分搜索與缺失塊相似的區(qū)域來(lái)填充缺失區(qū)域,取得了較好的補(bǔ)全。但是此方法太依賴于圖像的已知部分,如果已知部分不存在這樣的相似塊,那么將不能較好地補(bǔ)全缺失區(qū)域。Hays等[9]提出了一種使用大型圖像數(shù)據(jù)庫(kù)的圖像補(bǔ)全方法。該方法首先在數(shù)據(jù)庫(kù)中搜索與待補(bǔ)全圖像最為相似的圖像,然后截取相似圖像中與缺失區(qū)域相對(duì)應(yīng)的片段,最后將截取的片段填充到缺失區(qū)域完成圖像的補(bǔ)全。但是,該方法是以數(shù)據(jù)庫(kù)中包含與待補(bǔ)全圖像相似的圖像為前提的,極大地限制了方法的適用性。
為了解決待補(bǔ)全圖像中缺失大量結(jié)構(gòu)化場(chǎng)景的問(wèn)題,提出了一些基于結(jié)構(gòu)特點(diǎn)的圖像補(bǔ)全方法,例如Drori等[10]提出的根據(jù)感興趣區(qū)域進(jìn)行補(bǔ)全的方法,Sun等[11]提出的根據(jù)圖像中線條的變化進(jìn)行補(bǔ)全的方法以及Pavi?等[12]提出的根據(jù)圖像的透視變換進(jìn)行補(bǔ)全的方法。這些方法通過(guò)保留重要的結(jié)構(gòu)特征來(lái)提高圖像補(bǔ)全的質(zhì)量,但是這些方法僅限于特定的結(jié)構(gòu),不具有普遍性。
近年來(lái),隨著深度學(xué)習(xí)的迅速發(fā)展,基于機(jī)器學(xué)習(xí)的圖像補(bǔ)全方法被提出[13-14]。Zhao等[13]提出的Context Encoder的圖像補(bǔ)全方法,利用對(duì)抗損失來(lái)補(bǔ)全圖像缺失區(qū)域。但是,該方法存在缺失區(qū)域與非缺失區(qū)域不連續(xù)的問(wèn)題,有明顯的修補(bǔ)痕跡,在視覺(jué)效果上較粗糙;Yang等[14]提出的基于GAN的優(yōu)化方法,須對(duì)每幅圖像進(jìn)行優(yōu)化,這大大增加了計(jì)算時(shí)間和空間的消耗。
本文提出了一種基于GAN的圖像補(bǔ)全方法。相較于之前的方法,本文的生成器模型采用馬爾科夫隨機(jī)場(chǎng)(Markov random field,MRF)與均方誤差(mean square error,MSE)相結(jié)合的損失函數(shù)進(jìn)行訓(xùn)練,以提高生成器模型的精度和對(duì)圖像紋理細(xì)節(jié)的處理能力。
GAN的提出,最初是受到博弈論中二元零和博弈的啟發(fā)。通常,GAN中包含了一對(duì)相互對(duì)抗的模型:生成器模型和判別器模型。
生成器模型的作用是使補(bǔ)全的圖像盡可能地逼近真實(shí)的圖像;判別器模型的作用是正確區(qū)分真實(shí)的圖像和補(bǔ)全的圖像。兩個(gè)模型相互博弈,二者需要不斷提高各自的生成能力和判別能力,從而使補(bǔ)全的圖像得到最佳的效果。GAN的基本工作原理如圖1所示。
Fig.1 Schematic diagram of basic working principle of generative adversarial networks圖1 生成式對(duì)抗網(wǎng)絡(luò)基本工作原理示意圖
CNN作為一種深度神經(jīng)網(wǎng)絡(luò),其在圖像處理方面具有突出的優(yōu)勢(shì)。CNN的基本功能分為兩部分:特征提取層和分類器。特征提取層主要用于逐層提取圖像特征,而分類器的主要工作是將提取到的圖像特征進(jìn)行歸納和分類。在本文中,特征提取層由卷積層和擴(kuò)張卷積層構(gòu)成,分類器由全連接層構(gòu)成。
3.2.1 卷積層
卷積層是卷積神經(jīng)網(wǎng)絡(luò)的重要組成部分,是進(jìn)行圖像特征提取的重要手段。卷積層的局部連接性和權(quán)值共享性,可以很好地幫助卷積神經(jīng)網(wǎng)絡(luò)處理大尺寸圖像。卷積層的計(jì)算公式可以表示為:
其中,(i,j)表示像素在圖像上的位置,h(k,l)表示卷積核的大小。卷積的操作過(guò)程如圖2所示。
Fig.2 Schematic diagram of convolution operation圖2 卷積操作示意圖
3.2.2 擴(kuò)張卷積層
擴(kuò)張卷積層是卷積層的一種變形[15],這種卷積層在權(quán)值數(shù)目不變的情況下,增大了特征圖的輸入面積,同時(shí)又保證了輸出特征圖的大小保持不變。擴(kuò)張卷積的計(jì)算公式可以表示為:
其中,Xp,q表示輸入層的像素分量,Yp,q表示輸出層的像素分量,Wi,j表示卷積核的大小,B表示偏置項(xiàng),×表示卷積操作,η表示擴(kuò)張系數(shù),f()表示激活函數(shù)。當(dāng)擴(kuò)張系數(shù)η不同時(shí),擴(kuò)張卷積層可讀入的特征圖的面積不同。特征圖在不同擴(kuò)張系數(shù)下的輸入面積如圖3所示。
Fig.3 Schematic diagram of input area of feature map圖3 特征圖的輸入面積示意圖
3.2.3 全連接層
在使用卷積層提取圖像特征的基礎(chǔ)上,本文采用全連接層將卷積層提取到的圖像特征進(jìn)行分類。全連接層的輸入是卷積層提取到的二維圖像特征,使用與提取到的二維圖像特征大小一樣的卷積核進(jìn)行卷積,全連接層的輸出是由一個(gè)個(gè)節(jié)點(diǎn)組成的一維向量。
本文將Iizuka等[16]提出的補(bǔ)全網(wǎng)絡(luò)加以改進(jìn)構(gòu)建生成器模型,生成器模型與補(bǔ)全網(wǎng)絡(luò)模型相比減少了一個(gè)擴(kuò)張卷積層,在不影響圖像補(bǔ)全效果的前提下,降低了生成器模型的運(yùn)算消耗。生成器模型由卷積層、擴(kuò)張卷積層、反卷積層三部分構(gòu)成。生成器模型的結(jié)構(gòu)如圖4所示。
Fig.4 Schematic diagram of generator model圖4 生成器模型結(jié)構(gòu)示意圖
在對(duì)圖像進(jìn)行補(bǔ)全之前,可以使用卷積層來(lái)降低待補(bǔ)全圖像的分辨率:一部分卷積層的卷積步幅為2,目的是將輸入的待補(bǔ)全圖像的大小減小為原來(lái)的一半,以降低圖像的存儲(chǔ)空間和計(jì)算時(shí)間。同時(shí),生成器模型中也加入了一部分卷積步幅為1的卷積層,目的是在待補(bǔ)全圖像的一些特征級(jí)上提取更多的特征圖。在降低了待補(bǔ)全圖像的分辨率后,可以使用擴(kuò)張卷積層進(jìn)行圖像補(bǔ)全,擴(kuò)張系數(shù)η的不同正是擴(kuò)張卷積層的優(yōu)勢(shì)所在,在不增加計(jì)算消耗的同時(shí),成倍地?cái)U(kuò)大了可以涵蓋的缺失區(qū)域的周圍區(qū)域,而這也正是本文方法可以對(duì)高分辨率圖像進(jìn)行補(bǔ)全的關(guān)鍵所在。在補(bǔ)全工作完成之后,又可以參照Long等[17]提出的理論使用反卷積層將補(bǔ)全好的圖像恢復(fù)到原始的分辨率。需要注意的是,由于考慮到圖像整體紋理結(jié)構(gòu)的合理性,這里僅將圖像的分辨率降低到原來(lái)的1/4。生成器模型的體系結(jié)構(gòu)如表1所示。
Table 1 Architecture of generator model表1 生成器模型的體系結(jié)構(gòu)
本文根據(jù)Iizuka等[16]提出的鑒別器網(wǎng)絡(luò)設(shè)計(jì)判別器模型,圖像判別器模型分為兩部分,即整體圖像判別器模型和局部圖像判別器模型。使用這兩個(gè)判別器模型,可以判別一幅圖像是原始的圖像還是補(bǔ)全后的圖像。判別器模型是采用CNN實(shí)現(xiàn)的,先使用卷積層不斷對(duì)圖像進(jìn)行壓縮,然后再使用全連接層對(duì)圖像進(jìn)行分類,判斷圖像的真實(shí)性,生成器模型的結(jié)構(gòu)如圖5所示。
整體圖像判別器由6個(gè)卷積層和1個(gè)全連接層組成,它將整幅圖像壓縮到256×256作為輸入,輸出為一個(gè)1 024維的向量,所有卷積層使用5×5的卷積核,并且使用2×2的步幅來(lái)降低圖像的分辨率。整體圖像判別器模型的體系結(jié)構(gòu)如表2所示。
Fig.5 Schematic diagram of discriminator model圖5 判別器模型結(jié)構(gòu)示意圖
Table 2 Architecture of global image discriminator表2 整體圖像判別器模型的體系結(jié)構(gòu)
局部圖像判別器遵循與整體圖像判別器相同的模式,但是局部圖像判別器的輸入是以補(bǔ)全區(qū)域?yàn)橹行牡?28×128的圖像塊。由于輸入圖像的分辨率是整體圖像判別器的一半,因此在構(gòu)成結(jié)構(gòu)上,局部圖像判別器可以減少一個(gè)卷積層。局部圖像判別器模型的體系結(jié)構(gòu)如表3所示。
Table 3 Architecture of local image discriminator表3 局部圖像判別器模型的體系結(jié)構(gòu)
最后,將整體和部分圖像判別器的輸出連在一起,生成一個(gè)2 048維的向量,然后經(jīng)過(guò)sigmoid函數(shù)的處理,得到一個(gè)0到1范圍內(nèi)的數(shù)值,這個(gè)數(shù)值就是該圖像是原始圖像的概率。
為了使補(bǔ)全的圖像更具真實(shí)性,在使用GAN損失函數(shù)對(duì)模型進(jìn)行訓(xùn)練的基礎(chǔ)上,引入MRF與MSE損失相結(jié)合的損失函數(shù)對(duì)生成器模型進(jìn)行訓(xùn)練。兩種損失函數(shù)的優(yōu)勢(shì)相互結(jié)合,可以訓(xùn)練出更加穩(wěn)定的高性能網(wǎng)絡(luò)模型。
將生成器模型用G(z,θg)表示,其中,z是待補(bǔ)全的圖像,θg是生成器中的參數(shù),G(z)是生成器模型的輸出。將判別器模型用D(x,θd)表示,其中,x是生成器模型補(bǔ)全后的圖像,θd是判別器中的參數(shù),D(x)是判別器模型的輸出。
訓(xùn)練生成器模型的損失函數(shù)包括MRF和MSE損失兩部分,其中MSE損失函數(shù)定義為:
其中,×表示卷積操作,||?||表示歐幾里德范式。
在使用MSE損失函數(shù)訓(xùn)練生成器模型的基礎(chǔ)上,為了進(jìn)一步提高補(bǔ)全圖像的能力,把MRF的能量函數(shù)添加到損失函數(shù)中。該能量函數(shù)的加入,將補(bǔ)全區(qū)域中的像素在最大概率上與其周圍像素在圖像特征上保持了連續(xù)性。補(bǔ)全區(qū)域和完好區(qū)域之間圖像特征的連貫性不斷加強(qiáng),使得損失函數(shù)加速下降,進(jìn)一步提高了生成器模型的訓(xùn)練效果。MRF的能量函數(shù)定義為:
其中,xi是補(bǔ)全區(qū)域中的像素點(diǎn),xj是完好區(qū)域中的像素點(diǎn),β是使圖像的補(bǔ)全區(qū)域和完好區(qū)域保持一致性的權(quán)重參數(shù)。并將此與MSE損失相結(jié)合,最終,使生成器模型的損失函數(shù)定義為:
判別器模型的訓(xùn)練是通過(guò)GAN損失函數(shù)來(lái)完成的。GAN損失函數(shù)作為本文方法的關(guān)鍵部分,其直接將生成器模型和判別器模型的對(duì)抗過(guò)程轉(zhuǎn)化成一個(gè)最小-最大問(wèn)題,使得在每次對(duì)抗的過(guò)程中,生成器模型和判別器模型被聯(lián)合更新。對(duì)于本文的方法,GAN損失函數(shù)可簡(jiǎn)化定義為:
進(jìn)一步將GAN損失函數(shù)與生成器模型的損失函數(shù)相結(jié)合,可得到:
其中,α是一個(gè)權(quán)重參數(shù)。
在模型訓(xùn)練優(yōu)化的過(guò)程中,生成器模型和判別器模型的狀態(tài)在不斷改變,這實(shí)際意味著模型中卷積核的參數(shù)在不停地變化,直到模型達(dá)到最優(yōu)狀態(tài)。模型的訓(xùn)練優(yōu)化過(guò)程可以分為兩個(gè)階段:第一階段,使用GAN損失函數(shù)更新判別器模型;第二階段,使用MRF和MSE相結(jié)合的損失函數(shù)更新生成器模型。模型的訓(xùn)練優(yōu)化過(guò)程如圖6所示。
Fig.6 Model training flow chart圖6 模型訓(xùn)練流程圖
在實(shí)驗(yàn)階段,本文GAN模型使用Python3.5和Tensorflow1.1.0進(jìn)行搭建。而模型的訓(xùn)練,則是從Places2圖像數(shù)據(jù)集[18]和SUN圖像數(shù)據(jù)集[19]中隨機(jī)選取的一百萬(wàn)幅圖像,包含了多種場(chǎng)景的圖像,提高了生成式模型對(duì)不同場(chǎng)景圖片的補(bǔ)全效果。在配置為雙NVIDIA GTX TITAN X的Windows平臺(tái)上訓(xùn)練時(shí)間為兩周。
本文的圖像補(bǔ)全方法對(duì)圖像的補(bǔ)全效果如圖7所示。圖7(a)是原始圖像;圖7(b)是待補(bǔ)全圖像,其中的紅框區(qū)域是待補(bǔ)全的區(qū)域;圖7(c)是補(bǔ)全后的圖像,其中的紅框區(qū)域是完成補(bǔ)全的區(qū)域。從圖7(c)可以看出,補(bǔ)全的區(qū)域與周圍的區(qū)域在紋理結(jié)構(gòu)和整體風(fēng)格上保持了較高水平的一致性,進(jìn)一步證明了本文的GAN模型對(duì)圖像的補(bǔ)全效果。
Fig.7 Image completion effect chart圖7 圖像補(bǔ)全效果圖
將本文的補(bǔ)全效果與Barnes等[20-21]提出的Patch-Match方法的補(bǔ)全效果、Huang等[22]提出的基于結(jié)構(gòu)方法的補(bǔ)全效果以及Zhao等[13]提出的Context Encoder方法的補(bǔ)全效果進(jìn)行比較。各個(gè)方法的圖像補(bǔ)全效果如圖8所示。圖8(a)是原始圖像;圖8(b)是待補(bǔ)全的圖像;圖8(c)是PatchMatch方法的圖像補(bǔ)全效果;圖8(d)是基于結(jié)構(gòu)方法的圖像補(bǔ)全效果;圖8(e)是Context Encoder方法的圖像補(bǔ)全效果;圖8(f)是本文方法的圖像補(bǔ)全效果。雖然PatchMatch方法會(huì)從圖像的完好區(qū)域提取與缺失區(qū)域相似的片段補(bǔ)全到缺失區(qū)域,但它并不能使補(bǔ)全圖像的整體和部分保持一致性?;诮Y(jié)構(gòu)的方法可以進(jìn)行缺失區(qū)域的填充,但是補(bǔ)全效果過(guò)于模糊,使補(bǔ)全區(qū)域太易于區(qū)分。Context Encoder方法對(duì)圖像的缺失區(qū)域的填充較合理,但補(bǔ)全區(qū)域在視覺(jué)效果上較粗糙。而使用本文的方法補(bǔ)全出的圖像更加自然,更加貼近于原始圖像。
Fig.8 Comparison chart of image completion effect圖8 圖像補(bǔ)全效果對(duì)比圖
本文使用峰值信噪比(peak signal to noise ratio,PSNR)和結(jié)構(gòu)相似性(structural similarity index,SSIM)對(duì)圖像的補(bǔ)全效果進(jìn)行更加全面的評(píng)價(jià)。其中,PSNR是衡量圖像失真或是噪聲水平的客觀評(píng)價(jià)標(biāo)準(zhǔn),補(bǔ)全圖像與原始圖像之間PSNR值越大,則越相似。而SSIM是另一種衡量?jī)煞鶊D像相似度的指標(biāo),其值可以較好地反映人眼主觀感受,取值范圍在0到1之間,值越大,表示圖像的補(bǔ)全效果越好。不同圖像補(bǔ)全方法的PSNR值和SSIM值如表4和表5所示。表4和表5展示了圖8中使用各種方法補(bǔ)全的室內(nèi)圖和外景圖的PSNR值和SSIM值。從表中可以看出,使用本文方法補(bǔ)全的室內(nèi)圖和外景圖得到了最好的PSNR值和SSIM值。
Table 4 PSNR of different image completion methods表4 不同圖像補(bǔ)全方法的PSNR值 dB
Table 5 SSIM of different image completion methods表5 不同圖像補(bǔ)全方法的SSIM值
本文提出了一種基于GAN的圖像補(bǔ)全方法,使用MRF與MSE損失相結(jié)合的損失函數(shù)訓(xùn)練生成器模型,可以生成逼真的補(bǔ)全圖像,而且與基于樣本塊的方法不同,生成的新片段是原圖像中完全不存在的。本文方法可以應(yīng)用于補(bǔ)全各種各樣的場(chǎng)景圖像,例如風(fēng)景、建筑、墻面等,即使是很大的缺失區(qū)域,補(bǔ)全的結(jié)果看起來(lái)也很自然。
由于生成器模型和判別器模型都是依靠CNN實(shí)現(xiàn)其功能,因此GAN模型中會(huì)有多個(gè)卷積層,進(jìn)而增加了模型的時(shí)間復(fù)雜度和空間復(fù)雜度。另外,訓(xùn)練集的選擇對(duì)GAN模型的訓(xùn)練過(guò)程也十分重要,使用數(shù)量大、涵蓋范圍廣的訓(xùn)練集訓(xùn)練的GAN模型可以生成理想的補(bǔ)全圖像。因此,如何進(jìn)一步簡(jiǎn)化獲取圖像結(jié)構(gòu)特征的過(guò)程,是本文下一步的主要研究?jī)?nèi)容。