風格遷移一直是很多讀者感興趣的內(nèi)容之一,近日,網(wǎng)友Reiichiro Nakano公開了自己的一個實現(xiàn):用TensorFlow.js在瀏覽器中部署可進行任意圖像風格遷移的模型。讓我們一起去看看吧!
GitHub:github.com/reiinakano/arbitrary-image-stylization-tfjs
小工具:reiinakano.github.io/arbitrary-image-stylization-tfjs/
遷移效果
所謂風格遷移,指的是神經(jīng)網(wǎng)絡通過遷移算法,用另一種風格(通常是畫)重新“繪制”一張圖像中的內(nèi)容(通常是照片)。現(xiàn)如今,能在瀏覽器中實時進行風格遷移的項目有很多,但它們中的大多數(shù)都需要針對每種風格訓練獨立的神經(jīng)網(wǎng)絡,所以用戶的選擇大大受限。
Reiichiro Nakano提供的模型突破了以往模型的局限,它能將任何風格圖像分解為表示其風格的100維向量,然后把這些向量結(jié)合照片信息一起饋送到另一個神經(jīng)網(wǎng)絡,以產(chǎn)生最終的風格化圖像。
首先,我們來看看這個風格遷移模型的具體效果:
一種風格下的風格遷移
兩種風格下的風格遷移
演示網(wǎng)站
上圖是小編在作者開發(fā)的演示網(wǎng)站里測試的結(jié)果,感興趣的讀者可以前去一試。可以發(fā)現(xiàn),雖然談不上特別令人驚艷,但遷移的整體效果還是非常不錯的,更可貴的是,它支持任意圖像、任意風格的遷移,允許手動上傳圖片。
如果硬要說有什么不足,那就是網(wǎng)站的延遲有點高(選取圖像/風格后無法及時跳轉(zhuǎn),也許是水管不行)。此外,在對構(gòu)圖空曠的圖像(如加州金門大橋)進行風格遷移時,我們發(fā)現(xiàn)粗糲線條風格(如bricks)容易弱化主體線條,使遷移后的圖像幾乎沒有內(nèi)容。
技術(shù)來源
為了實現(xiàn)這個項目,作者參考的是2017 BMVC的一篇Oral Paper:Exploring the structure of a real-time, arbitrary neural artistic stylization network(arXiv:1705.06830)。
這篇論文結(jié)合靈活的風格遷移技術(shù)和快速網(wǎng)絡傳輸,提出了一種允許使用任何內(nèi)容/風格圖像對進行實時風格化的網(wǎng)絡。在包含約80,000幅畫作的語料庫上經(jīng)過訓練后,論文模型不僅在訓練過的風格上表現(xiàn)出色,還能夠推廣到從未見過的風格和照片。也就是說,這是一個能以完全無監(jiān)督的方式學習平滑的、結(jié)構(gòu)豐富的嵌入空間,以及與風格繪畫相關聯(lián)的語義信息的模型。
一般來說,風格遷移模型的輸入有兩個,一是包含圖像內(nèi)容的照片c,二是包含圖像風格的繪畫s。這類算法假定圖像的內(nèi)容和風格可以定義如下:
如果模型從兩幅圖像中提取到的高級特征歐氏距離接近,則兩個圖像的內(nèi)容相似。
如果模型從兩幅圖像中提取到的低級特征有相同的空間統(tǒng)計,則兩個圖像的風格相似。
根據(jù)這兩個定義,風格遷移的優(yōu)化目標可以表示為:
其中Lc(x, c)和Ls(x, s)分別是內(nèi)容和風格的損失函數(shù),λs是風格損失函數(shù)經(jīng)拉格朗日乘數(shù)加權(quán)后表示的相對權(quán)重。
論文作者改進了這一做法。他們在風格遷移網(wǎng)絡前添加了一個預測網(wǎng)絡P(·),它以任意風格的圖像作為輸入,并預測歸一化常數(shù)的嵌入向量→S,這樣做的優(yōu)勢是模型能把學到的遷移方法推廣到其他圖像上。
論文模型架構(gòu)
從本質(zhì)上來說,這個模型直接學習的是從風格圖像到風格參數(shù)的映射。在Kaggle Painter By Numbers(內(nèi)容)和Describable Textures Dataset(風格)兩個數(shù)據(jù)集上進行了訓練后,模型輸出的風格遷移效果如下圖(左)所示:
網(wǎng)絡是聯(lián)合訓練的,但它只用少量訓練圖像就模擬了多種風格,這意味著我們沒有必要為每種風格單獨設定拉格朗日乘數(shù)λs。 也就是說,同一個損失加權(quán)就足以在所有繪畫風格和紋理上產(chǎn)生合理的結(jié)果。上圖(右)則證明,該模型能夠預測以前從未見到的風格和紋理樣式,它們在質(zhì)量上與訓練集樣本的風格和紋理幾乎一致。
開源答疑
在GitHub上,開源項目的Reiichiro Nakano向開發(fā)者重點提了一些注意事項。
問:我的數(shù)據(jù)安全嗎?你會看到我提交的圖片嗎?
當你在演示網(wǎng)站里測試風格遷移時,你的數(shù)據(jù)和圖片只會在你自己的計算機上留下痕跡。事實上,這也是在瀏覽器中運行神經(jīng)網(wǎng)絡的主要優(yōu)勢之一。我只是把模型和代碼發(fā)給你,由你在自己的瀏覽器上運行模型。
問:如果我想下載,模型一共多大?
風格神經(jīng)網(wǎng)絡的大小是9.6MB,遷移網(wǎng)絡大概有7.9MB。它們在任何風格上都有效,所以你只用下一次就可以了。
問:你的模型和論文模型一模一樣嗎?
不完全一樣,論文的風格網(wǎng)絡用的是Inception-v3(大約96.2MB),太大了。所以在把模型移植到瀏覽器上之前,我用MobileNet-v2從預訓練的Inception-v3網(wǎng)絡中提取了知識,把大小縮小到了論文的1/10。
問:風格組合的具體方法是什么?
由于風格網(wǎng)絡可以把每種風格映射成100維的風格向量,所以我們只需對內(nèi)容和風格圖像的風格向量進行加權(quán)平均,把計算結(jié)果作為遷移網(wǎng)絡的輸入,即可獲得新風格向量。
-
圖像
+關注
關注
2文章
1084瀏覽量
40468 -
瀏覽器
+關注
關注
1文章
1025瀏覽量
35361 -
函數(shù)
+關注
關注
3文章
4331瀏覽量
62622
原文標題:【實現(xiàn)】在瀏覽器中快速進行任意風格遷移
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論