侯偉棟
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
有很多原因會(huì)造成圖像模糊,在日常拍照或者是監(jiān)控視頻中,因?yàn)閿z像機(jī)和物體之間發(fā)生了相對(duì)運(yùn)動(dòng),而造成的圖像問(wèn)題,稱之為運(yùn)動(dòng)模糊。運(yùn)動(dòng)模糊與普通模糊不同的是,普通模糊通常是一些噪聲模糊核與圖像數(shù)據(jù)卷積的結(jié)果,而運(yùn)動(dòng)模糊的模糊核與其并不相同,其主要形成原因是隨機(jī)的相對(duì)運(yùn)動(dòng),我們把這些隨機(jī)的相對(duì)運(yùn)動(dòng)也稱之為模糊核,而實(shí)際原理大不相同。
在計(jì)算機(jī)視覺(jué)領(lǐng)域,關(guān)于人臉和去除模糊一直都是比較熱門的研究課題。去除運(yùn)動(dòng)模糊是去除模糊的一個(gè)分支,近幾年關(guān)于去除運(yùn)動(dòng)模糊的研究越來(lái)越多,但是這些研究對(duì)圖像本身的內(nèi)容并不怎么關(guān)注。很多時(shí)候我們需要針對(duì)特定場(chǎng)景下的圖像來(lái)去除運(yùn)動(dòng)模糊,這些研究的算法具有普適性但沒(méi)有針對(duì)性,它們并不關(guān)注圖像本身的信息,所以在特定場(chǎng)景下效果并不突出。
無(wú)論是日常拍照還是視頻監(jiān)控,很多時(shí)候大家對(duì)人臉圖像更為看重,因此在人臉圖像上去除運(yùn)動(dòng)模糊顯得尤為重要。本課題基于此,針對(duì)人臉進(jìn)行去除運(yùn)動(dòng)模糊的算法研究,在人臉這個(gè)特定場(chǎng)景下將具有更好的表現(xiàn)效果。
關(guān)于圖像模糊問(wèn)題大約分為兩類,一種是在了解模糊核的基礎(chǔ)上進(jìn)行去除模糊,被稱為非盲目去模糊,另一種是在不知道模糊核的情況下,被稱為盲目去模糊。早期的研究主要是非盲目去模糊,即在模糊核是已知的前提下[1],如何恢復(fù)圖像,當(dāng)時(shí)主要使用經(jīng)典的Lucy-Richardson 算法,或者Tikhonov 濾波器來(lái)對(duì)圖像進(jìn)行反卷積運(yùn)算,但是這些方法雖然都有一定的效果,但是從視覺(jué)效果上來(lái)看還是比較差。之后出現(xiàn)了一些基于迭代的方法[2],通過(guò)使用帶參數(shù)的先驗(yàn)?zāi)P蛠?lái)改進(jìn)每次迭代的模糊核以及目標(biāo)圖像,雖然效果有一定提升,但是這些算法的運(yùn)行時(shí)間和迭代次數(shù)是不可預(yù)估的。
隨著近些年深度學(xué)習(xí)的興起以及神經(jīng)網(wǎng)絡(luò)在圖像領(lǐng)域的大規(guī)模應(yīng)用,越來(lái)越多的去除運(yùn)動(dòng)模糊方法采用深度學(xué)習(xí)的方法,并且其效果也被大大加強(qiáng),漸漸地使用深度學(xué)習(xí)去除運(yùn)動(dòng)模糊的算法逐漸成為了主流,效果也越來(lái)越好。Sun 等人[3]采用卷積神經(jīng)網(wǎng)絡(luò)(CNN)的方法來(lái)預(yù)估模糊核,取得了不錯(cuò)的效果,Gong 等人[4]則使用完全卷積網(wǎng)絡(luò)進(jìn)行運(yùn)動(dòng)軌跡的預(yù)估,從而預(yù)測(cè)模糊核具體表達(dá)方式,Nah 等人[5]采用了多尺度的卷積神經(jīng)網(wǎng)絡(luò),端到端的去除運(yùn)動(dòng)模糊,所有這些方法都使用CNN 來(lái)估計(jì)未知的模糊函數(shù)。
考慮到現(xiàn)有的神經(jīng)網(wǎng)絡(luò)算法都是為了解決圖像的運(yùn)動(dòng)模糊問(wèn)題,而并不針對(duì)圖像的類別,為了更好地解決人臉圖像的去除運(yùn)動(dòng)模糊問(wèn)題,本文在生成對(duì)抗網(wǎng)絡(luò)[6](GAN)的基礎(chǔ)上提出了一種深度學(xué)習(xí)方法,該方法采用自己制作的虛擬人臉運(yùn)動(dòng)模糊數(shù)據(jù)集,將上采樣網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)以及殘差網(wǎng)絡(luò)結(jié)合起來(lái),通過(guò)使用跳躍鏈接的方式關(guān)聯(lián)前后端網(wǎng)絡(luò)輸出,得到了最終的端到端的網(wǎng)絡(luò)結(jié)構(gòu),這種方法能夠很好地去除人臉圖像的運(yùn)動(dòng)模糊,下面是本文方法介紹。
在現(xiàn)有的公開(kāi)數(shù)據(jù)集中,只有運(yùn)動(dòng)模糊的數(shù)據(jù)集,并沒(méi)有根據(jù)圖像內(nèi)容分門別類,為了更好地訓(xùn)練網(wǎng)絡(luò)的針對(duì)性,我們制作了人臉圖像運(yùn)動(dòng)模糊的數(shù)據(jù)集。首先,從現(xiàn)有的人臉公開(kāi)數(shù)據(jù)集CelebA_HQ 和FFHQ中人工篩選出可用的人臉正面圖片,之后采用Orest Kupyn 等人[7]提出的一種基于馬爾科夫隨機(jī)過(guò)程的生成模糊核運(yùn)動(dòng)軌跡的算法,對(duì)圖像進(jìn)行處理,得到對(duì)應(yīng)的人臉運(yùn)動(dòng)模糊圖像。將生成的運(yùn)動(dòng)模糊圖像和原圖編為圖像對(duì),即生成了最終的虛擬數(shù)據(jù)集,如圖1所示。
圖1 虛擬數(shù)據(jù)集
數(shù)據(jù)集中所有圖像數(shù)據(jù)尺寸均為256×512,均由256×256 大小的運(yùn)動(dòng)模糊圖像和其對(duì)應(yīng)的原圖像組成,數(shù)據(jù)集中總共有近6000 張圖片,其中4700 多張用于訓(xùn)練,1100 多張用于測(cè)試。
Goodfellow 等人提出了生成對(duì)抗網(wǎng)絡(luò)的概念,即生成器和鑒別器。生成器接收混亂數(shù)據(jù)并生成樣本,鑒別器接收真實(shí)數(shù)據(jù)和生成的樣本數(shù)據(jù),并嘗試區(qū)分它們。最終的目標(biāo)是得到一個(gè)能夠生成使得鑒別器無(wú)法區(qū)分的樣本生成器。生成器G 和鑒別器D 的博弈過(guò)程如公式(1)所示:
公式中G表示生成器,D表示鑒別器,x表示真實(shí)數(shù)據(jù)(GroundTruth),z表示輸入的混亂數(shù)據(jù),G(z)表示生成器生成的樣本數(shù)據(jù),D(*)表示鑒別器判斷輸入數(shù)據(jù)是否是真實(shí)數(shù)據(jù)的概率。整個(gè)公式的目標(biāo)就是最大化G,最小化D。生成對(duì)抗網(wǎng)絡(luò)被應(yīng)用于很多不同的圖像領(lǐng)域,如圖像超分辨率[8]、風(fēng)格遷移[9]、圖片合成[10]等。
卷積網(wǎng)絡(luò),GAN 網(wǎng)絡(luò)被越來(lái)越多地用到了圖像處理領(lǐng)域中。本文提出的神經(jīng)網(wǎng)絡(luò)模型結(jié)合了以上兩種網(wǎng)絡(luò)結(jié)構(gòu),如圖2 所示。
圖2 神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
首先介紹下生成網(wǎng)絡(luò)。首先數(shù)據(jù)加載器會(huì)將圖像對(duì)加載到網(wǎng)絡(luò)中,圖像對(duì)的尺寸大小為256×512,在進(jìn)入網(wǎng)絡(luò)之前將圖像對(duì)切分為運(yùn)動(dòng)模糊圖像和真實(shí)圖像,最終運(yùn)動(dòng)模糊圖像會(huì)作為原始輸入,輸入到網(wǎng)絡(luò)中。圖像通過(guò)第一層卷積網(wǎng)絡(luò)層,分解為維度為64 的圖像特征層,但圖像大小不變,之后兩層的卷積網(wǎng)絡(luò)中使用了池化的操作,每次都將圖像變?yōu)樵瓉?lái)的1/2,在通過(guò)第三層網(wǎng)絡(luò)后,圖像大小變?yōu)?4×64,維度變?yōu)?56。網(wǎng)絡(luò)中段使用4 個(gè)串聯(lián)的殘差模塊增加網(wǎng)絡(luò)的深度,采用這種結(jié)構(gòu),能在增加圖像特征信息的基礎(chǔ)上,保證梯度信息不會(huì)消失,保障網(wǎng)絡(luò)的訓(xùn)練過(guò)程,并且殘差模塊并不會(huì)更改圖像的大小以及維度。最后的部分使用連續(xù)兩層的上采樣網(wǎng)絡(luò),將圖像放大到原來(lái)的大小,同時(shí)將圖片維度進(jìn)行壓縮,與前面的卷積網(wǎng)絡(luò)形成對(duì)應(yīng),再通過(guò)一個(gè)卷積網(wǎng)絡(luò)生成最終的樣本圖像。整個(gè)生成網(wǎng)絡(luò)中,將卷積網(wǎng)絡(luò)、殘差網(wǎng)絡(luò)、上采樣網(wǎng)絡(luò)結(jié)合起來(lái),既加深了網(wǎng)絡(luò)深度,提取了更多的深層特征,又避免了由于網(wǎng)絡(luò)過(guò)深而產(chǎn)生的梯度消失問(wèn)題。為了得到更好的生成效果,在網(wǎng)絡(luò)前端添加了一個(gè)跳躍鏈接線,將前端產(chǎn)生的圖像特征與后端的圖像特征相疊加,這樣更好地加強(qiáng)了網(wǎng)絡(luò)前后端的聯(lián)系。
其次是鑒別網(wǎng)絡(luò)。在鑒別網(wǎng)絡(luò)中使用了三個(gè)串聯(lián)的卷積層作為主體結(jié)構(gòu),將生成網(wǎng)絡(luò)輸出的樣本圖像和對(duì)應(yīng)的真實(shí)數(shù)據(jù)分別傳入網(wǎng)絡(luò)中,最終生成了兩個(gè)1維的數(shù)據(jù),鑒別網(wǎng)絡(luò)的最終目的就是為了分辨這兩個(gè)數(shù)據(jù)的真假。
本文的損失函數(shù)由對(duì)抗損失和均方誤差損失結(jié)合而成,如公式(2)所示。
其中L 為本文最終的損失函數(shù),a、b 為不同損失函數(shù)的權(quán)重參數(shù),具體設(shè)置為a=0.01,b=2,LGAN為GAN 網(wǎng)絡(luò)中的對(duì)抗損失,LM為輸出樣本圖像和真實(shí)圖像之間的均方誤差。
其中對(duì)抗損失描述的是鑒別網(wǎng)絡(luò)在對(duì)輸入圖像真假進(jìn)行判斷是產(chǎn)生的損失,如公式(3)所示。
公式中所描述的是輸入1~N 個(gè)樣本的散度的疊加,I 代表生成網(wǎng)絡(luò)最終輸出的樣本數(shù)據(jù)。
均方誤差損失描述的是生成的樣本圖像數(shù)據(jù)與真實(shí)圖像數(shù)據(jù)之間的差距,如公式(4)所示。
其中n 為樣本的個(gè)數(shù),m 代表每個(gè)圖像樣本數(shù)據(jù)中二維圖像點(diǎn)的個(gè)數(shù),w 代表每個(gè)點(diǎn)出的權(quán)重參數(shù),x為真實(shí)圖像每個(gè)二維圖像點(diǎn)處的數(shù)據(jù),y 為輸出樣本二維圖像點(diǎn)處的數(shù)據(jù)。
本文使用PyTorch 深度學(xué)習(xí)框架實(shí)現(xiàn)的網(wǎng)絡(luò)模型。為了優(yōu)化訓(xùn)練效果,在反向傳播的過(guò)程中,生成網(wǎng)絡(luò)反向傳播一次,鑒別網(wǎng)絡(luò)反向傳播4 次。使用Adam[11]作為優(yōu)化器對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化,batch size 設(shè)置為8,總共訓(xùn)練200 個(gè)epoch,學(xué)習(xí)率lr 最初設(shè)置為0.001,在第100 個(gè)epoch 之后開(kāi)始衰減,在200 個(gè)epoch 時(shí)衰減為0。整個(gè)網(wǎng)絡(luò)在CPU 為Intel Core i7 8700K,內(nèi)存為32GB,顯卡為NVIDIA 2080 的電腦上進(jìn)行訓(xùn)練,整個(gè)訓(xùn)練時(shí)長(zhǎng)大約為4 天。
在網(wǎng)絡(luò)訓(xùn)練結(jié)束后,選取訓(xùn)練時(shí)最佳的網(wǎng)絡(luò)參數(shù)加載入網(wǎng)絡(luò)中進(jìn)行測(cè)試,最終的測(cè)試結(jié)果和真實(shí)數(shù)據(jù)如圖3 所示,可以發(fā)現(xiàn)本文中提出的網(wǎng)絡(luò)結(jié)構(gòu)取得了明顯的效果,證明了本方法的可行性和有效性。
圖3 實(shí)驗(yàn)結(jié)果
本文提出了一種端到端的神經(jīng)網(wǎng)絡(luò)模型,模型結(jié)合了GAN 網(wǎng)絡(luò)、卷積網(wǎng)絡(luò)、殘差網(wǎng)絡(luò)幾種基本的網(wǎng)絡(luò)結(jié)構(gòu),并通過(guò)跳躍鏈接的方式加強(qiáng)了網(wǎng)絡(luò)的整體聯(lián)系。通過(guò)使用自己生成的數(shù)據(jù)集訓(xùn)練后,網(wǎng)絡(luò)能夠很好地完成去除人臉運(yùn)動(dòng)模糊的任務(wù)。實(shí)驗(yàn)證明此網(wǎng)絡(luò)能夠比較好地恢復(fù)運(yùn)動(dòng)模糊人臉的圖像細(xì)節(jié),在視覺(jué)效果上有著很好的表現(xiàn)力,但是該算法在人臉是正臉時(shí)有著很好的表現(xiàn)力,當(dāng)人臉為側(cè)臉時(shí)效果會(huì)有所下降,如何解決這一問(wèn)題是后面研究的重點(diǎn)。