丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開(kāi)發(fā)者 正文
發(fā)私信給恒亮
發(fā)送

0

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

本文作者: 恒亮 2017-03-15 11:22
導(dǎo)語(yǔ):絕大部分用戶可能只是通過(guò) Prisma 過(guò)了一把當(dāng)畫(huà)家的癮,但對(duì)于程序猿來(lái)說(shuō),僅僅得到一張風(fēng)格迥異的新照片似乎還遠(yuǎn)遠(yuǎn)不夠。

提起前段時(shí)間紅遍朋友圈的 Prisma,可能許多朋友都還記憶猶新:輸入一張自己的照片,再選一個(gè) Prisma 內(nèi)置的名畫(huà)濾鏡,幾秒之后就能得到一張名畫(huà)風(fēng)的新照片。

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

絕大部分用戶可能只是通過(guò) Prisma 過(guò)了一把當(dāng)畫(huà)家的癮,但對(duì)于程序猿們來(lái)說(shuō),僅僅得到一張風(fēng)格迥異的新照片似乎還遠(yuǎn)遠(yuǎn)不夠。

近日,有位外國(guó)開(kāi)發(fā)者根據(jù) fast.ai 平臺(tái)開(kāi)設(shè)的深度學(xué)習(xí)代碼實(shí)踐課程,親手實(shí)現(xiàn)了一個(gè)照片風(fēng)格轉(zhuǎn)換器,并對(duì)幾種常見(jiàn)的優(yōu)化算法的性能進(jìn)行了綜合對(duì)比,最終以圖表加博客的方式記錄下來(lái)。

下面就讓我們跟隨作者的腳步,一起看看究竟哪種算法最高效(程序猿是怎么玩壞 Prisma 的)。原文來(lái)自 medium.com ,雷鋒網(wǎng)編譯。文中相關(guān)的代碼開(kāi)源地址和原博客地址見(jiàn)文末。

  什么是照片風(fēng)格轉(zhuǎn)換器?它是怎么工作的?

問(wèn)題1:什么是風(fēng)格轉(zhuǎn)換器(style transfer)?

所謂照片風(fēng)格轉(zhuǎn)換器,就是類(lèi)似 Prisma 的,轉(zhuǎn)換照片風(fēng)格的軟件 App。他們抽取 A 照片的風(fēng)格特征(一般都是一張名畫(huà)),然后將這種特征應(yīng)用到 B 照片的內(nèi)容上,從而生成了全新的照片 C。

問(wèn)題2:怎樣分隔一張照片的風(fēng)格和內(nèi)容?

使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)。由于 AlexNet 已經(jīng)成功地將 CNN 應(yīng)用于目標(biāo)識(shí)別(即確定圖像中的主體內(nèi)容),并且在 2012 年主導(dǎo)了最流行的計(jì)算機(jī)視覺(jué)競(jìng)賽,因此 CNN 是目前用于圖像目標(biāo)識(shí)別的最流行和有效的方法。

簡(jiǎn)單說(shuō),CNN 是通過(guò)學(xué)習(xí)構(gòu)建在先前圖層上的各個(gè)過(guò)濾器層來(lái)識(shí)別對(duì)象的。例如,第一層通常用來(lái)學(xué)習(xí)識(shí)別簡(jiǎn)單的圖案,例如物體的邊緣和棱角。中間層可能用來(lái)識(shí)別更復(fù)雜的圖案,例如人物的眼鏡、汽車(chē)的輪胎等。Jason Yosinski 大神曾在下面這個(gè)視頻中詳細(xì)介紹了 CNN 的相關(guān)內(nèi)容。

https://www.youtube.com/watch?v=AgkfIQ4IGaM 

事實(shí)證明,CNN 第一層中的過(guò)濾器對(duì)應(yīng)于一張照片的風(fēng)格,包括畫(huà)筆描邊、紋理等。靠后的圖層中的過(guò)濾器對(duì)應(yīng)于識(shí)別圖像中的主體,例如狗,建筑物或一座山等。

例如,將一幅畢加索的畫(huà)作輸入 CNN,并分析第一層(樣式層)有多少過(guò)濾器被激活,就可以得到該畫(huà)作的樣式表示。同樣,通過(guò)最后一層(內(nèi)容層)的分析,我們也可以得到畫(huà)作內(nèi)容的表示。

問(wèn)題3:怎樣將風(fēng)格和內(nèi)容融合在一起?

這一步很有意思。由于兩張照片的風(fēng)格大不相同,因此它們的樣式層中激活的過(guò)濾器也就不同,通過(guò)分析兩個(gè)樣式層中的過(guò)濾器,就能獲得兩張照片的樣式之間的差別。同樣,對(duì)內(nèi)容層中過(guò)濾器的分析,也能得到兩張照片內(nèi)容的差別。

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

例如,如圖所示,我們想把一張自拍照和畢加索的畫(huà)作融合。融合后的圖像首先以圖示中的噪聲圖像為起點(diǎn),然后將這張圖像輸入 CNN ,它會(huì)激活樣式層和內(nèi)容層中的一些特定的過(guò)濾器。按照上述的方法,通過(guò)對(duì)比融合照片和畢加索畫(huà)作的風(fēng)格層,就可以得到風(fēng)格損失(style loss);通過(guò)對(duì)比融合照片和自拍照的內(nèi)容層,就可以得到內(nèi)容損失(content loss),將兩種損失相加,就得到了總損失。

下面的任務(wù)就很清楚了:通過(guò)優(yōu)化算法的介入,我們想辦法將這個(gè)總損失最小化,最終就得到了一張畢加索風(fēng)格的自拍照了。

問(wèn)題4:有哪些常見(jiàn)的優(yōu)化算法?

到目前為止,我遇到了兩種類(lèi)型的優(yōu)化算法:一階的和二階的。

一階方法通過(guò)梯度(gradient)將目標(biāo)函數(shù)最小化(或者最大化)。應(yīng)用最廣泛的就是梯度下降法(Gradient Descent)及其各種變體,詳情見(jiàn)如下鏈接:

http://sebastianruder.com/optimizing-gradient-descent/ 

二階方法是通過(guò)二階導(dǎo)數(shù)將目標(biāo)函數(shù)最小化(或者最大化)。由于二階導(dǎo)數(shù)的計(jì)算成本很高,因此這里所討論的二階算法 L-BFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno) 使用了 Hessian 矩陣近似。

  哪種優(yōu)化算法最高效?

由于我們?cè)谝韵略囼?yàn)中處理的照片顏色灰度都介于 0-255 之間,因此將各算法的學(xué)習(xí)率(learning rate)都設(shè)置為 10,這看起來(lái)可能有點(diǎn)大,但效果還可以接受。算法的其他超參數(shù)(hyperparameters)都保持默認(rèn)。測(cè)試的硬件環(huán)境是:Amazon P2 實(shí)例上的單片 K80 GPU。

實(shí)驗(yàn)1:100 次循環(huán),300 x 300 像素

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

如圖所示,我們輸入了兩張 300 x 300 像素的照片,并運(yùn)行整個(gè)優(yōu)化循環(huán) 100 次。雖然 100 次并不足以生成一個(gè)效果很好的融合照片,但對(duì)我們分析各個(gè)優(yōu)化算法的性能已經(jīng)足夠了。

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

如圖所示,由于學(xué)習(xí)率設(shè)置的略大,因此梯度下降(Gradient Descent)、Adadelta 和 RMSProp 在整個(gè)循環(huán)中都處于不斷的震蕩狀態(tài),并沒(méi)有顯示出明顯的收斂趨勢(shì)。反觀 Adam 和 L-BFGS 算法則能夠快速收斂,并且誤差也基本相同。

實(shí)驗(yàn)2:100 次循環(huán),600 x 600 像素

當(dāng)參數(shù)增多時(shí),L-BFGS 算法應(yīng)該表現(xiàn)的更好。為此,我們?cè)谠囼?yàn)2中增大了圖像,并切換了素材。

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

如圖所示,雖然學(xué)習(xí)率的設(shè)置還是略大,但梯度下降和 Adadelta 算法在面對(duì)大數(shù)據(jù)量時(shí)顯得更穩(wěn)定,RMSProp 還是始終處于震蕩狀態(tài)。

另外,Adam 算法一開(kāi)始收斂很快,但后期被 L-BFGS 反超。不知道是不是和循環(huán)次數(shù)有關(guān),下面我們?cè)囍黾友h(huán)次數(shù)。

實(shí)驗(yàn)3:1000 次循環(huán),300 x 300 像素

在實(shí)驗(yàn)3中,我們?cè)黾恿搜h(huán)次數(shù),依然使用實(shí)驗(yàn)2中的照片素材,但像素變?yōu)?300 x 300。

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

如圖所示,在略大的學(xué)習(xí)率設(shè)置下,梯度下降、Adadelta 和 RMSProp 始終處于震蕩狀態(tài)無(wú)法收斂。但 Adam、Adagrad 和 L-BFGS 三種算法的收斂情況則相對(duì)較好,其中效果最好的 L-BFGS 大約比 Adam 的優(yōu)化效果好 50% ,并且速度也更快。

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

從最終生成的融合照片的成像效果也能看出來(lái),L-BFGS、Adam 和 Adagrad 的效果要好一些。

實(shí)驗(yàn)4:不同的學(xué)習(xí)率,100 次循環(huán),300 x 300 像素

有說(shuō)法稱過(guò)大的學(xué)習(xí)率可能會(huì)導(dǎo)致梯度下降、Adadelta 和 RMSProp 三種算法不收斂,因此在實(shí)驗(yàn) 4 中我們減小這三種算法的學(xué)習(xí)率。

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

可以看到,所有算法最終都收斂了。可能是得益于較低的學(xué)習(xí)速率,梯度下降的最終表現(xiàn)要優(yōu)于 Adadelta 算法。另外,較高的學(xué)習(xí)率雖然在一開(kāi)始時(shí)幫助 Adam LR 10 取得了較快的收斂速度,但最終效果并不好。而 Adam LR 1 雖然收斂緩慢,但表現(xiàn)很穩(wěn)定。那么問(wèn)題來(lái)了,如果增加循環(huán)次數(shù),Adam LR 1 的表現(xiàn)是否會(huì)超過(guò) Adam LR 10 呢?

實(shí)驗(yàn)5:不同的學(xué)習(xí)率,500 次循環(huán),300 x 300 像素

增加循環(huán)次數(shù)之后,即便在學(xué)習(xí)速率較小的情況下,梯度下降、Adadelta 和 RMSProp 三種算法也還是出現(xiàn)了震蕩。

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

有趣的是,Adam LR 1 最終果然反超了 Adam LR 10,甚至有超過(guò) L-BFGS 的趨勢(shì)。

實(shí)驗(yàn)6:1000 次循環(huán),300 x 300 像素

這一次我們僅僅對(duì) Adam LR 1 和 L-BFGS 進(jìn)行了對(duì)比,通過(guò)進(jìn)一步增加循環(huán)次數(shù),可以看到,Adam LR 1 最終的表現(xiàn)并沒(méi)有超過(guò) L-BFGS。

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

  總結(jié)

從上述試驗(yàn)可以發(fā)現(xiàn):在較大的學(xué)習(xí)率設(shè)置下,梯度下降、Adadelta 和 RMSProp 三種算法不容易收斂,但增大數(shù)據(jù)量,前兩種會(huì)有所好轉(zhuǎn)??傮w上,L-BFGS 算法的收斂效果最好,速度也最快。

改變學(xué)習(xí)率。Adam 在學(xué)習(xí)率較小時(shí),收斂情況提升明顯,隨著循環(huán)次數(shù)的增大,收斂效果幾乎與 L-BFGS 算法相當(dāng),但收斂情況最好的依然是 L-BFGS 算法。

最后作者表示,以上實(shí)驗(yàn)只是從參數(shù)設(shè)置、數(shù)據(jù)量和迭代次數(shù)等方面入手簡(jiǎn)單探索了幾種常見(jiàn)算法的特性,目的只是幫助大家在開(kāi)發(fā)中更好地使用它們。雖然試驗(yàn)結(jié)果顯示 L-BFGS 算法的收斂速度最快,效果最好,但按照個(gè)人習(xí)慣,他用 Adam 算法的情況反而更多。另外,究竟哪種算法效果最好,也不能一概而論,還是要根據(jù)數(shù)據(jù)類(lèi)型和項(xiàng)目要求靈活選擇。

源碼地址:https://github.com/slavivanov/Style-Tranfer 

來(lái)源:medium,雷鋒網(wǎng)編譯

雷鋒網(wǎng)相關(guān)閱讀:

通過(guò)從零開(kāi)始實(shí)現(xiàn)一個(gè)感知機(jī)模型,我學(xué)到了這些

城市版Prisma?用神經(jīng)網(wǎng)絡(luò)技術(shù)構(gòu)建夢(mèng)想中的城市

中國(guó)版 Prisma 來(lái)了,我們今天再聊聊深度學(xué)習(xí)

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知

用數(shù)據(jù)說(shuō)話:把自拍照變成畢加索名畫(huà) 哪種算法最高效?

分享:
相關(guān)文章

編輯

歡迎交流,微信:whl123465
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)