聶宇 聶鑫 朱依琳 廖晨陽(yáng)
摘要:隨著生活水平的逐日提高,人們對(duì)圖片的視覺(jué)需求不再僅僅局限于圖片的原始風(fēng)格,由此誕生了各式各樣的濾鏡,它們讓圖片更具有觀賞性。而基于機(jī)器深度學(xué)習(xí)的圖像風(fēng)格化應(yīng)用,可以在此方向更進(jìn)一步,利用訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行圖像特征提取,使圖片呈現(xiàn)出不同的藝術(shù)風(fēng)格。
關(guān)鍵詞:機(jī)器學(xué)習(xí);圖像風(fēng)格化;卷積神經(jīng)網(wǎng)絡(luò)
中圖分類(lèi)號(hào): TP18? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)07-0015-03
Abstract: With the daily improvement of living standards, people's visual needs for pictures are no longer limited to the original styles,therefore? various filters have been born, which make the pictures more enjoyable. The application of image style transfer based on machine deep learning can go further in this direction, using the trained convolutional neural network model for image feature extraction, so that the pictures present different artistic styles.
Key words: Machine Leaning;Image stylization;Convolutional Neural Network
1 研究背景
機(jī)器學(xué)習(xí)作為一門(mén)專門(mén)研究計(jì)算機(jī)如何模擬或?qū)崿F(xiàn)人類(lèi)的學(xué)習(xí)行為,以獲取新的知識(shí)或技能,在已有的知識(shí)結(jié)構(gòu)上使之不斷改善自身的性能的學(xué)科。機(jī)器能否像人類(lèi)一樣能具有學(xué)習(xí)能力呢?1959年,美國(guó)的塞繆爾(Samuel)設(shè)計(jì)了一個(gè)下棋程序,這個(gè)程序具有學(xué)習(xí)能力,它可以在不斷地對(duì)弈中改善自己的棋藝。4年后,這個(gè)程序戰(zhàn)勝了設(shè)計(jì)者本人。又過(guò)了3年,這個(gè)程序戰(zhàn)勝了美國(guó)一個(gè)保持8年之久的常勝不敗的冠軍。這個(gè)程序向人們展示了機(jī)器學(xué)習(xí)的能力,提出了許多令人深思的社會(huì)問(wèn)題與哲學(xué)問(wèn)題[1]。
近年來(lái),隨著人民生活水平的不斷提高,使用圖像成為人們記錄生活的主要方式。不論人們走到哪里,都是利用手機(jī)記錄身邊的人和景,讓生活過(guò)得如畫(huà)一般,圖片對(duì)于用戶的觀賞性成為用戶最關(guān)注的問(wèn)題。無(wú)奈的是,用戶的拍照水平,而為了得到更具觀賞性的圖片只能通過(guò)后期處理,但是后期處理又是用戶的一大問(wèn)題。然而在當(dāng)前圖片不具備一定觀賞性的條件下,如何讓圖片更具觀賞性?讓用戶更為喜愛(ài)?
而畫(huà)家的藝術(shù)品有自己獨(dú)特的藝術(shù)風(fēng)格,在這之前,沒(méi)有人工智能系統(tǒng)可以學(xué)習(xí)畫(huà)的風(fēng)格,但是在2015年8月,由Leon A. Gatys,Alexander S. Ecker,Matthias Bethge發(fā)表了論文《A Neural Algorithm of Artistic Style》,在論文當(dāng)中提出深度學(xué)習(xí)的算法,將畫(huà)的內(nèi)容(content)和風(fēng)格(style)分開(kāi)來(lái),然后將一幅畫(huà)的風(fēng)格和另一幅畫(huà)的內(nèi)容重新組合,生成新的畫(huà)。
2016年俄羅斯阿列克謝·莫伊辛恩科夫創(chuàng)建的Prisma軟件在蘋(píng)果商店發(fā)布,該軟件是利用神經(jīng)網(wǎng)絡(luò)和人工智能技術(shù),為普通照片加入藝術(shù)效果的照片編輯軟件。并在上線首周,收獲100萬(wàn)活躍用戶。
2018年北京郵電大學(xué)發(fā)表論文《基于深度學(xué)習(xí)的圖像風(fēng)格化處理》,解讀了基于深度學(xué)習(xí)下的圖像風(fēng)格化處理過(guò)程。
本課題就是本著利用機(jī)器學(xué)習(xí),讓每一個(gè)用戶都能讓自己的照片更具觀賞性,即使用戶沒(méi)有畢加索一樣的繪畫(huà)藝術(shù)功底,可是卻能通過(guò)機(jī)器深度學(xué)習(xí)畢加索的畫(huà),然后將畫(huà)的風(fēng)格遷移到照片當(dāng)中。
2 研究?jī)?nèi)容
基于機(jī)器深度學(xué)習(xí)的圖片風(fēng)格化應(yīng)用程序,通過(guò)對(duì)TensorFlow框架的研究學(xué)習(xí)[2],利用已經(jīng)訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò),去學(xué)習(xí)各種風(fēng)格的圖片,然后風(fēng)格遷移到另外的圖片上。
該軟件主要分為服務(wù)器端和移動(dòng)客戶端,服務(wù)器端采用Google的機(jī)器學(xué)習(xí)框架TensorFlow[3,4],編程語(yǔ)言使用Python,Web框架使用Django。移動(dòng)客戶端采用Java和Android進(jìn)行開(kāi)發(fā)。
移動(dòng)客戶端通過(guò)攝像頭進(jìn)行圖像采集,然后將圖像上傳到服務(wù)器,針對(duì)用戶選取的風(fēng)格樣式,服務(wù)器利用訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行圖像特征提取,并且不斷地重塑圖像的風(fēng)格和內(nèi)容,最后將生成的圖片返回給移動(dòng)客戶端。
3 風(fēng)格模型訓(xùn)練
(1)模型訓(xùn)練
圖像模型的訓(xùn)練是服務(wù)器端對(duì)一種圖片風(fēng)格的預(yù)訓(xùn)練,一般情況下利用算法來(lái)實(shí)現(xiàn)圖像的風(fēng)格遷移通常要耗費(fèi)很長(zhǎng)的時(shí)間,在CPU下進(jìn)行圖片遷移要耗費(fèi)3至5個(gè)小時(shí),即使在GPU下進(jìn)行圖片遷移都要十多分鐘,在這樣的情況下,用戶的體驗(yàn)感特別差,所以為了提高用戶的體驗(yàn)度,必須縮短圖片風(fēng)格遷移的時(shí)間,通過(guò)預(yù)先訓(xùn)練圖像風(fēng)格,然后利用生成的模型,用戶就可以在3-5秒以內(nèi)獲得服務(wù)器反饋的風(fēng)格遷移后的圖片。
圖像模型訓(xùn)練的訓(xùn)練網(wǎng)絡(luò)會(huì)根據(jù)內(nèi)容圖片和風(fēng)格樣式生成一張?jiān)肼晥D片,并將噪聲圖片傳給網(wǎng)絡(luò),這張?jiān)肼晥D片既具有內(nèi)容圖片的Content,又有風(fēng)格圖片的Style,然后再根據(jù)content loss值和style loss調(diào)整噪聲圖片,不斷重塑圖片的內(nèi)容與風(fēng)格,進(jìn)行了一定的次數(shù)后,loss值和相對(duì)于最開(kāi)始時(shí)的值也就小了,而噪聲圖片也就具備了圖片的內(nèi)容與風(fēng)格[5-7]。
其中p→代表的是Content內(nèi)容圖像,x→表示生成的噪聲圖像,P和F分別代表它們對(duì)應(yīng)層的響應(yīng);且假設(shè)第L層的響應(yīng)是F1∈RNl × Ml ,其中Nl表示第L層過(guò)濾器的個(gè)數(shù),Ml表示過(guò)濾器的大小。Fijl表示的是第L層第i個(gè)過(guò)濾器在位置j的輸出。
因?yàn)槟骋粚拥腟tyle可以用Gl∈RNl×Nl來(lái)表示,其中Nl×Nl表示不同過(guò)濾器響應(yīng)的內(nèi)積;a→表示Style的圖像,x→表示生成的噪聲圖像,Al和Gl分別表示第L層的Style。
最后通過(guò)優(yōu)化的方法使得Content loss和Style loss的總值最小,如式4:
其中[α和β]分別表示Content和 Style 的權(quán)重,當(dāng)[α]較大時(shí),則噪聲圖片的內(nèi)容和Content圖片內(nèi)容更為吻合;當(dāng)[β]較大時(shí),則噪聲圖片的風(fēng)格和Style圖片風(fēng)格更為吻合。
(2)訓(xùn)練實(shí)施
圖像模型訓(xùn)練功能通過(guò)訓(xùn)練好的VGG19卷積神經(jīng)網(wǎng)絡(luò)和COCO數(shù)據(jù)集來(lái)訓(xùn)練目標(biāo)風(fēng)格模型,COCO數(shù)據(jù)集中的train2014圖片作為輸入的內(nèi)容圖片,另外輸入一張要訓(xùn)練的風(fēng)格圖片。訓(xùn)練模型需要耗費(fèi)很長(zhǎng)的時(shí)間,但是使用訓(xùn)練好的模型進(jìn)行圖像風(fēng)格遷移則可以很快地得到結(jié)果。
圖像模型訓(xùn)練功能主要由兩個(gè)網(wǎng)絡(luò)構(gòu)成,分別是生成網(wǎng)絡(luò)(Image Transform Net)和損失網(wǎng)絡(luò)(Loss Network),如圖1所示。生成網(wǎng)絡(luò)接收一張圖片作為輸入,然后分別經(jīng)過(guò)卷積模塊,殘差模塊,和反卷積模塊,最后生成網(wǎng)絡(luò)輸出的也是一張圖片[5-7]。損失網(wǎng)絡(luò)把生成網(wǎng)絡(luò)輸出的圖片y作為輸入,對(duì)于每一張輸入的圖片y,它都有一個(gè)對(duì)應(yīng)的風(fēng)格目標(biāo)ys和內(nèi)容目標(biāo)yc,y通過(guò)和風(fēng)格目標(biāo)(ys)、內(nèi)容目標(biāo)(yc)進(jìn)行對(duì)比做損失計(jì)算,然后根據(jù)計(jì)算得到的loss值調(diào)整生成網(wǎng)絡(luò)的權(quán)重賦值,通過(guò)不斷調(diào)整loss值來(lái)達(dá)到目標(biāo)效果。當(dāng)模型訓(xùn)練開(kāi)始后,訓(xùn)練網(wǎng)絡(luò)會(huì)根據(jù)內(nèi)容圖片和噪聲生成一張?jiān)肼晥D片,并將噪聲圖片傳給網(wǎng)絡(luò),計(jì)算loss值,然后再根據(jù)loss值調(diào)整噪聲圖片,不斷重復(fù)如此操作,進(jìn)行迭代了一定的次數(shù)后,loss值和相對(duì)于最開(kāi)始時(shí)的值小了,而噪聲圖片也就具備了圖片的內(nèi)容與風(fēng)格。
服務(wù)器端通過(guò)命令的形式訓(xùn)練模型:
Python style.py --checkpoint-dir ./model/ --style ./style/udnie.jpg
style.py 是模型訓(xùn)練的腳本文件
--checkpoint-dir ./model/ 是訓(xùn)練好的模型保存的路徑
--style ./style/udnie.jpg是目標(biāo)風(fēng)格
在訓(xùn)練模型的過(guò)程中,會(huì)生成四個(gè)相關(guān)文件,如圖2所示,分別是:checkpoint、fns.ckpt.data-00000-of-00001 、fns.ckpt.index、fns.ckpt.meta。Checkpoint文件是文本文件,在這個(gè)文件里面記錄了保存的最新的checkpoint文件信息和一些其他的checkpoint相關(guān)文件列表;fns.ckpt.meta保存了網(wǎng)絡(luò)的圖結(jié)構(gòu),在這個(gè)文件當(dāng)中包含變量、集合等信息;fns.ckpt.data-00000-of-00001 、fns.ckpt.index都是二進(jìn)制文件,記錄了網(wǎng)絡(luò)中的所有權(quán)重和偏置等變量數(shù)值。
4 應(yīng)用功能
本應(yīng)用程序分服務(wù)器端和移動(dòng)客戶端,功能示意如圖3所示。
服務(wù)器端:
(1)圖像存貯功能:實(shí)現(xiàn)用戶上傳的圖像數(shù)據(jù)的存貯;
(2)圖像風(fēng)格模型訓(xùn)練功能:實(shí)現(xiàn)圖像模型的訓(xùn)練,選取藝術(shù)風(fēng)格獨(dú)特,且觀賞性好的圖片進(jìn)行訓(xùn)練,生成特定的模型;
(3)圖像風(fēng)格化處理功能:實(shí)現(xiàn)圖像風(fēng)格化的轉(zhuǎn)變處理,將圖片的內(nèi)容層和模型的風(fēng)格層重組成新的圖片,如圖4所示。
移動(dòng)客戶端:
(1)圖像采集功能:實(shí)現(xiàn)圖的采集,并將圖像上傳到服務(wù)器請(qǐng)求處理圖像,在服務(wù)器處理完圖片后接收處理后的圖片。
(2)圖像上傳功能:實(shí)現(xiàn)用戶上傳圖像。
5 結(jié)束語(yǔ)
在最初,我們通過(guò)人力提取圖像特征,準(zhǔn)備工作消耗了大量的人力物力;而現(xiàn)在,通過(guò)深度學(xué)習(xí)可以快速地提取圖像的特征,大大減少了資源消耗和技術(shù)要求,即使用戶不具備好的拍照水平,不具備后期處理圖片的能力,他們也可以對(duì)自己的圖片進(jìn)行風(fēng)格化處理,從而得到更具觀賞性的圖片。
隨著對(duì)卷積神經(jīng)網(wǎng)絡(luò)的進(jìn)一步研究,圖像風(fēng)格化的技術(shù)將會(huì)愈發(fā)成熟,圖像風(fēng)格將逐漸增加,用戶也將會(huì)有更多的選擇。
參考文獻(xiàn):
[1] 徐曉琳.面向大規(guī)模數(shù)據(jù)分析與分類(lèi)的正則化回歸算法[D].合肥:安徽大學(xué),2017.
[2] 章敏敏,徐和平,王曉潔,等.谷歌TensorFlow機(jī)器學(xué)習(xí)框架及應(yīng)用[J].微型機(jī)與應(yīng)用,2017,36(10):58-60.
[3] 谷歌推出TensorFlow機(jī)器學(xué)習(xí)系統(tǒng)[J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2015,28(11):92.
[4] 吳聯(lián)坤.基于TensorFlow分布式與前景背景分離的實(shí)時(shí)圖像風(fēng)格化算法[D].杭州:浙江大學(xué),2017.
[5] 李盛超.基于深度學(xué)習(xí)的圖像水墨風(fēng)格渲染應(yīng)用[D].南京:南京大學(xué),2017.
[6] 竇亞玲,周武彬,季人煌.基于卷積神經(jīng)網(wǎng)絡(luò)的圖像風(fēng)格遷移技術(shù)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2018,(30):47-51,60.
[7] 萬(wàn)士寧.基于卷積神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2016.
【通聯(lián)編輯:唐一東】