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

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

0

神經(jīng)風(fēng)格遷移指南(第一部分)

本文作者: AI研習(xí)社-譯站 2018-11-26 16:28
導(dǎo)語(yǔ):在本系列中,我們會(huì)從神經(jīng)風(fēng)格的基礎(chǔ)開始,你將從中學(xué)到一種自下而上(從基礎(chǔ)開始)的方法。

神經(jīng)風(fēng)格遷移指南(第一部分)

本文為 AI 研習(xí)社編譯的技術(shù)博客,原標(biāo)題 :

Neural Style Transfer Tutorial -Part 1

作者 | Vamshik Shetty

翻譯 | 楊惠淳、nanly、老趙    

校對(duì) | 醬番梨        整理 | 菠蘿妹

原文鏈接:

https://towardsdatascience.com/neural-style-transfer-tutorial-part-1-f5cd3315fa7f


神經(jīng)風(fēng)格遷移指南 - 第一部分

  神經(jīng)風(fēng)格遷移學(xué)說(shuō)

在本系列中,我們會(huì)從神經(jīng)風(fēng)格的基礎(chǔ)開始,你將從中學(xué)到一種自下而上(從基礎(chǔ)開始)的方法。對(duì)于初學(xué)者而言,我們將會(huì)詳細(xì)講解神經(jīng)風(fēng)格到底是什么,以及它的工作原理。本文是連載中的系列文章的第一部分,將由我與 Pawan Sasanka Ammanamanchi 共同完成。本系列長(zhǎng)期連載,我們將努力覆蓋這個(gè)領(lǐng)域的研究,并且不斷增加新的文章。目前,實(shí)現(xiàn)這一目標(biāo)的先決條件如下:

  1.  Python

  2. 基本理解卷積神經(jīng)網(wǎng)絡(luò)的工作原理.如果你對(duì)這些知識(shí)(卷積神經(jīng)網(wǎng)絡(luò))不是很了解,我們建議你看一下這篇文章卷積神經(jīng)網(wǎng)絡(luò).

那么,風(fēng)格遷移是什么意思呢?

在過(guò)去幾年里,有一些APP涌現(xiàn)出來(lái),例如Prisma等等,可以把照片風(fēng)格化,看起來(lái)就像是一幅畫一樣。這些為你提供非常多漂亮的藝術(shù)風(fēng)格,就像是梵高所畫的《星夜》。讓我用文字來(lái)闡釋背后的原理其實(shí)是不容易的。

神經(jīng)風(fēng)格遷移指南(第一部分)

圖1

如同你在圖一中看到的,兩張圖片一張是負(fù)責(zé)提供內(nèi)容的,另一張是負(fù)責(zé)提供圖像風(fēng)格的,這兩張用來(lái)生成一張全新的圖片,這張圖就被稱為經(jīng)過(guò)風(fēng)格化的圖片。關(guān)于這張圖片有一些需要注意的地方,這張圖片在保留了原有內(nèi)容的基礎(chǔ)上融合了風(fēng)格圖的特色。新的圖片看上去很棒,并且我們可以十分確定這不是簡(jiǎn)單的將兩張圖片重疊起來(lái)得到的。那么問(wèn)題就在于我們是如何實(shí)現(xiàn)的,這背后又使用了哪些數(shù)學(xué)理論。要回答這個(gè)問(wèn)題,我們需要先退后一步,思考下別的問(wèn)題,卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的到底是什么?這些卷積層以特征圖或者卷積核形式進(jìn)行編碼的到底是什么?我們輸入一張圖片的時(shí)候,卷積網(wǎng)絡(luò)學(xué)習(xí)到了什么表征?讓我們先來(lái)搞清楚這些問(wèn)題。

卷積神經(jīng)網(wǎng)絡(luò)最初被設(shè)計(jì)用來(lái)進(jìn)行圖片分類工作,最近它也被應(yīng)用到了其他諸如圖片分割,圖像風(fēng)格遷移及其他有關(guān)計(jì)算機(jī)視覺(jué)方面的任務(wù)上,當(dāng)然也有被用于自然語(yǔ)言處理的例子。卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)中最能夠被解釋的模型之一,因?yàn)槲覀兛梢詫⑺麄兊谋碚骺梢暬瘡亩斫馑麄兛赡軐W(xué)到的東西。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

我們能從卷積神經(jīng)網(wǎng)絡(luò)中得到什么啟發(fā)呢?

這一部分我想分享一些直觀的關(guān)于卷積神經(jīng)網(wǎng)絡(luò)的深度層如何表示一張圖片,同時(shí)我們又是如何使用這些只對(duì)模型有意義的表征來(lái)進(jìn)行圖像風(fēng)格遷移的。我們就用這個(gè)VGG16結(jié)構(gòu)來(lái)理解隱藏層中的表征。

神經(jīng)風(fēng)格遷移指南(第一部分)

圖2

使用上述架構(gòu)作為參考,讓我們考慮vgg16的第一個(gè)卷積層,它使用3x3內(nèi)核并訓(xùn)練64個(gè)特征映射,通過(guò)將大小為224x224的3通道圖像作為輸入來(lái)生成224x224x64的圖像表示。 如果你有點(diǎn)困惑,請(qǐng)看下面:

神經(jīng)風(fēng)格遷移指南(第一部分)

圖3

讓我們假設(shè)在訓(xùn)練這64個(gè)特征圖時(shí),它們可能已經(jīng)學(xué)會(huì)了檢測(cè)簡(jiǎn)單模式,這樣一些神經(jīng)元在看到一條直線時(shí)會(huì)激活,或者甚至是某些其他類型的模式,這樣一些神經(jīng)元在他們看到一條直線時(shí)會(huì)激活,或者甚至?xí)霈F(xiàn)一些其他類型的圖案,這些圖案可能對(duì)人眼沒(méi)有任何意義,但對(duì)這個(gè)模型有很大的價(jià)值。直線或某些模式的這種“檢測(cè)”被稱為學(xué)習(xí)特征表示。

現(xiàn)在讓我們考慮vgg16的第10個(gè)卷積層,它使用帶有512個(gè)特征映射的3x3內(nèi)核進(jìn)行訓(xùn)練,最后生成28X28x512圖像表示的輸出,為了簡(jiǎn)單起見(jiàn),我們假設(shè)第10層中有某些單位被激活, 包含像汽車輪子的圓圈的圖像,或者可能有一些圖像被具有類似于三條相交線等的圖案的圖像激活。

神經(jīng)風(fēng)格遷移指南(第一部分)

圖4-卷積網(wǎng)絡(luò)可視化和理解

可以安全地假設(shè) CNN 沒(méi)有學(xué)會(huì)編碼什么圖像,但它實(shí)際上學(xué)習(xí)編碼圖像代表什么或圖像中可見(jiàn)的內(nèi)容,并且由于神經(jīng)網(wǎng)絡(luò)的固有非線性特性,我們從淺層到更深層的隱藏單元能夠從給定圖像中檢測(cè)出越來(lái)越復(fù)雜的特征。

這些圖像表示如何幫助進(jìn)行風(fēng)格轉(zhuǎn)換?

那么編碼表示本身的這種性質(zhì)是風(fēng)格轉(zhuǎn)移的關(guān)鍵,它用于計(jì)算生成的圖像與內(nèi)容和樣式圖像之間的損失。由于每個(gè)類在數(shù)萬(wàn)個(gè)圖像上訓(xùn)練模型,因此模型能夠?yàn)樵S多不同的圖像生成相似的特征表示,因?yàn)樗鼈儗儆谕活惢蚓哂邢嗨频膬?nèi)容或樣式。因此,使用生成的圖像的特征表示的值與內(nèi)容和樣式圖像的差異來(lái)指導(dǎo)我們生成生成的圖像本身的迭代是有意義的但是我們?nèi)绾未_保內(nèi)容圖像(C)和生成的圖像(G )在內(nèi)容方面是相似的而不是風(fēng)格,而另一方面,我們?nèi)绾未_保生成的圖像僅從樣式圖像(S)繼承類似的樣式表示而不是整個(gè)樣式圖像本身。這可以通過(guò)將損失函數(shù)分為兩部分來(lái)解決,一部分是內(nèi)容損失,另一部分是風(fēng)格損失,很快我們就會(huì)理解它們彼此之間的差異以及它們?nèi)绾慰朔覀兲岢龅膯?wèn)題。


  損失函數(shù)

神經(jīng)風(fēng)格遷移指南(第一部分)

圖5

正如在上面的等式中所看到的,我們需要計(jì)算兩件事來(lái)獲得整體損失,即內(nèi)容損失和風(fēng)格損失,alpha 和 beta 超參數(shù)用于為每種類型的損失提供權(quán)重,即這些參數(shù)可以被簡(jiǎn)單認(rèn)為是作為旋鈕來(lái)控制我們想要在生成的圖像中繼承多少內(nèi)容/風(fēng)格。 因此,讓我們了解每個(gè)損失術(shù)語(yǔ)的含義。

上面顯示的此損失函數(shù)的輸入是什么? 我們不知道最終輸出的外觀。 因此,監(jiān)督學(xué)習(xí)的樸素方法可能行不通。 答案在于下圖。

神經(jīng)風(fēng)格遷移指南(第一部分)

圖6-用于內(nèi)容,風(fēng)格和生成圖像的不同表示

在每次迭代期間,所有三個(gè)圖像,即內(nèi)容圖像,風(fēng)格圖像和生成圖像都通過(guò)vgg16模型。 在某些層上對(duì)給定圖像的特征表示進(jìn)行編碼的隱藏單元的激活值被視為這些損失函數(shù)的輸入,簡(jiǎn)單來(lái)說(shuō),你可以直接將其視為在VGG16網(wǎng)絡(luò)中獲取圖層的輸出, 關(guān)于選擇圖層的任何硬性規(guī)則。 在這里注意另一件事,最初我們隨機(jī)初始化生成的圖像,如果你看它然后它只不過(guò)是一個(gè)形狀與內(nèi)容圖像相同的隨機(jī)噪聲矩陣。 每次迭代我們都會(huì)更改生成的圖像,以盡量減少總體損失L。

注意:在每個(gè)卷積層之后,它的輸出通過(guò) relu 作為激活函數(shù)傳遞,你也可以在圖2中查看每個(gè)卷積塊被表示為 [Convolution + Relu]。


內(nèi)容損失

內(nèi)容損失很容易計(jì)算,讓我們只考慮其中一個(gè)層的特征表示,讓我們考慮vgg16的第7個(gè)卷積層。 為了計(jì)算內(nèi)容損失,我們通過(guò)vgg16傳遞內(nèi)容圖像和生成的圖像,并獲得這些圖像的第7個(gè)轉(zhuǎn)換層的激活值(即輸出),這些圖像用 Relu 激活,我們將該圖層的輸出通常表示為 relu_3_3,因?yàn)?它是第三組/第三組卷積的第三轉(zhuǎn)換層的輸出(參見(jiàn)圖2和圖6以供參考)。 最后,我們發(fā)現(xiàn)這兩個(gè)激活矩陣之間的元素減法的 L2 范數(shù),這將有助于通過(guò)確保最小化特征表示的差異來(lái)保持所生成圖像中的原始內(nèi)容,所述特征表示在邏輯上集中于兩個(gè)圖像的內(nèi)容之間的差異。

把這種損失用在數(shù)學(xué)形式或我們可以計(jì)算的方程中。 假設(shè)我們有函數(shù)內(nèi)容損失,它接受三個(gè)參數(shù)作為輸入,即內(nèi)容圖像 C ,生成的圖像 G 和層 L,其激活我們將用于計(jì)算損失。 現(xiàn)在讓我們將內(nèi)容圖像的每個(gè)激活層表示為 [L](C)并將生成的圖像的激活層表示為 [L](G)。

神經(jīng)風(fēng)格遷移指南(第一部分)

圖7

風(fēng)格損失

現(xiàn)在讓我們看一下風(fēng)格損失,在計(jì)算風(fēng)格損失時(shí),我們將考慮從模型的淺層到更深層的許多卷積層的特征表示。 與內(nèi)容損失不同,我們不能僅僅找到激活單元的差異,我們需要的是在同一層的不同通道中找到這些激活之間的相關(guān)性的方法,為此我們需要一些稱為Gram Matrix的東西。

什么是Gram矩陣?

我將嘗試用一個(gè)例子來(lái)構(gòu)建理解 gram 矩陣所需的基礎(chǔ),所以讓我們考慮通過(guò) vgg16 傳遞我們的風(fēng)格圖像,我們從第7層獲得激活值,生成大小為56x56x256 的特征表示矩陣,你可以參考圖2描述的 vgg16 的體系結(jié)構(gòu)。 現(xiàn)在讓我們仔細(xì)看看這個(gè)輸出。

神經(jīng)風(fēng)格遷移指南(第一部分)

圖8

在這個(gè)3-D陣列中,有256個(gè)通道,每個(gè)通道大小為56x56。 現(xiàn)在讓我們假設(shè)有一個(gè)通道 'A',當(dāng)它們遇到包含黑色和棕色條塊的圖像區(qū)域時(shí),它們的激活單元可能被激活,然后有一個(gè)通道 'B',當(dāng)它們遇到類似眼球的東西時(shí),它們的激活單元可能被激活。

注意:這里激活的單位指的是它們?cè)谕ㄟ^(guò) relu 之后具有相當(dāng)大的值而不是零。

如果這兩個(gè)通道 'A' 和 'B' 同時(shí)為相同的輸入激活,則圖像可能包含虎臉(因?yàn)樗袃蓚€(gè)高值的通道,可激活眼球和棕黑色條紋)。 現(xiàn)在,如果這兩個(gè)通道都以高激活值啟動(dòng),這意味著它們與通道 'A' 和 'C' 之間的相關(guān)性相比具有高相關(guān)性,其中通道 'C' 可能在看到菱形圖案時(shí)被激活。 這個(gè)想法背后的邏輯是兩個(gè)大數(shù)的乘法是大的,而兩個(gè)小數(shù)或大數(shù)和小數(shù)的乘法相對(duì)較小。 所以相關(guān)性告訴我們這些高級(jí)紋理/圖案中的哪一個(gè)發(fā)生或不發(fā)生在一起。

因此,為了獲得所有這些通道的相互關(guān)系,我們需要計(jì)算一些稱為 gram矩陣的東西,我們將使用 gram 矩陣來(lái)測(cè)量通道之間的相關(guān)程度,這些通道隨后將作為風(fēng)格本身的度量。 現(xiàn)在你可能已經(jīng)理解了 gram 矩陣的重要性,但是要理解我們?nèi)绾蔚玫缴鲜鋈S數(shù)組的 gram 矩陣,請(qǐng)通過(guò)下面提到的圖像。

神經(jīng)風(fēng)格遷移指南(第一部分)

圖9- Gram 矩陣 G

現(xiàn)在你可以看到這個(gè) gram 矩陣的每個(gè)元素如何包含所有通道相對(duì)于彼此的相關(guān)性度量。 接下來(lái),我們?nèi)绾问褂眠@個(gè)計(jì)算的 Gram 矩陣 G 來(lái)計(jì)算風(fēng)格損失。 讓我們將層 L 的風(fēng)格圖像的 gram 矩陣表示為GM [L](S),并將生成圖像的 gram 矩陣表示為 GM [L](G)。 gram 矩陣都是從同一層計(jì)算的,因此使用相同數(shù)量的通道使其成為大小為 ch x ch 的矩陣?,F(xiàn)在,如果我們找到這兩個(gè)矩陣的元素減法的平方差或 L2_norm 的總和,并嘗試最小化 。然后,這最終將導(dǎo)致最小化風(fēng)格圖像樣式和生成圖像之間的差異。 想一想,它可能需要一些時(shí)間來(lái)解決,但是當(dāng)它確實(shí)存在時(shí),你會(huì)被這簡(jiǎn)單而有效所迷惑。

神經(jīng)風(fēng)格遷移指南(第一部分)

圖10-單層 L 的風(fēng)格損失

在上面的等式中,N 下標(biāo) l 表示層1的特征圖/輸出中的通道數(shù),M 下標(biāo) l表示層1的特征圖/輸出的高度*寬度。

在計(jì)算風(fēng)格損失時(shí),我們使用多個(gè)激活層,這種情況使我們有可能為不同層提供的每個(gè)子損失分配不同的權(quán)重。 在下面的等式中,總結(jié)我剛才所說(shuō)的,但在我們的情況下或大多數(shù)情況下,一般人們給予所有層次相同的權(quán)重。

神經(jīng)風(fēng)格遷移指南(第一部分)

圖11

下一步是什么 ?

一旦你有內(nèi)容和風(fēng)格損失,前向移動(dòng)就會(huì)添加它們并使用任何優(yōu)化器來(lái)執(zhí)行梯度下降來(lái)更改生成圖像,以便在每次迭代后減少它的損失。

這幾乎總結(jié)了一下,我希望我的解釋足以消除你對(duì)神經(jīng)風(fēng)格基礎(chǔ)的疑慮。 現(xiàn)在你可以深入研究神經(jīng)風(fēng)格的代碼,我將瀏覽我的代碼的每一行并正確地剖析它,但是下面提到的偽代碼幾乎總結(jié)了你將要運(yùn)行和使用的代碼。

神經(jīng)風(fēng)格遷移指南(第一部分)

原始論文通常使用以下內(nèi)容和風(fēng)格圖層,但你也可以嘗試其他圖層。

神經(jīng)風(fēng)格遷移指南(第一部分)

這是神經(jīng)風(fēng)格的本質(zhì)。 如果你對(duì)本文的任何部分仍有疑問(wèn)或想要更好的解釋,請(qǐng)?jiān)谙旅姘l(fā)表評(píng)論,我會(huì)盡盡快回復(fù)你。

學(xué)習(xí)快樂(lè)。


原始神經(jīng)風(fēng)格轉(zhuǎn)移的鏈接:Leon A. Gatys“藝術(shù)風(fēng)格的神經(jīng)算法”。

你可以期待以下文章。

使用Tensorflow和pyTorch進(jìn)行神經(jīng)風(fēng)格轉(zhuǎn)換的課程:

       第1部分 - 神經(jīng)風(fēng)格轉(zhuǎn)移理論

       第2部分 - 神經(jīng)風(fēng)格轉(zhuǎn)移的實(shí)施

       第3部分 - 快速神經(jīng)風(fēng)格轉(zhuǎn)移的實(shí)現(xiàn)

       第4部分 - 深度照片

       第5部分 - 人臉神經(jīng)風(fēng)格轉(zhuǎn)換理論

       第6部分 - 面部神經(jīng)風(fēng)格轉(zhuǎn)移的實(shí)現(xiàn)

感謝閱讀本文。


想要繼續(xù)查看該篇文章相關(guān)鏈接和參考文獻(xiàn)?

長(zhǎng)按鏈接點(diǎn)擊打開或點(diǎn)擊【神經(jīng)風(fēng)格遷移指南(第一部分)】:

http://ai.yanxishe.com/page/TextTranslation/1215


AI研習(xí)社每日更新精彩內(nèi)容,觀看更多精彩內(nèi)容:

機(jī)器學(xué)習(xí) 2019:AI 發(fā)展趨勢(shì)分析

使用 SKIL 和 YOLO 構(gòu)建產(chǎn)品級(jí)目標(biāo)檢測(cè)系統(tǒng)

谷歌開源BERT不費(fèi)吹灰之力輕松訓(xùn)練自然語(yǔ)言模型

使用 Tensorflow 完成簡(jiǎn)單的強(qiáng)化學(xué)習(xí) Part 1:好奇心驅(qū)動(dòng)的學(xué)習(xí)


等你來(lái)譯:

如何用PyTorch訓(xùn)練圖像分類器 

掌握機(jī)器學(xué)習(xí)必須要了解的4個(gè)概念 

給你的電腦做個(gè)簡(jiǎn)單的“人臉識(shí)別認(rèn)證”

取得自然語(yǔ)言處理SOA結(jié)果的分層多任務(wù)學(xué)習(xí)模型(HMTL) 


獨(dú)家中文版 CMU 秋季深度學(xué)習(xí)課程免費(fèi)開學(xué)!

CMU 2018 秋季《深度學(xué)習(xí)導(dǎo)論》為官方開源最新版本,由卡耐基梅隆大學(xué)教授 Bhiksha Raj 授權(quán) AI 研習(xí)社翻譯。學(xué)員將在本課程中學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí),以及它們?cè)诒姸?AI 任務(wù)中的應(yīng)用。課程結(jié)束后,期望學(xué)生能對(duì)深度學(xué)習(xí)有足夠的了解,并且能夠在眾多的實(shí)際任務(wù)中應(yīng)用深度學(xué)習(xí)。

神經(jīng)風(fēng)格遷移指南(第一部分)

↗掃碼即可免費(fèi)學(xué)習(xí)↖


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

神經(jīng)風(fēng)格遷移指南(第一部分)

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

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識(shí),讓語(yǔ)言不再成為學(xué)習(xí)知識(shí)的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?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ō)