暢談人工智慧藝術新命題:神經風格遷移
介紹
神經風格遷移(Neural Transfer Style)是人工智慧在創造性環境中最令人驚奇的應用之一。在這個專案中,我們將看到如何將藝術繪畫風格轉換為所選影像,從而創造出令人驚歎的效果。Leon A. Gatys等人在2015年釋出的論文"藝術風格的神經演算法"中構思了神經風格遷移的概念。之後,許多研究人員應用和改進了方法,增加了損失的元素,嘗試了不同的優化器並試驗了用於此目的的不同神經網路。儘管如此,這篇原始論文仍然是理解這一概念的最佳來源,而VGG16和VGG19網路是這方面最常用的模型。考慮到兩者在最近的網路中表現優異,這種選擇是不尋常的,這種選擇在風格遷移中獲得了最高的效能。
https://arxiv.org/abs/1508.06576
你可以檢視此GitHub儲存庫以獲取完整程式碼。
https://github.com/maurock/neural_transfer_style
它是如何工作的?
這種技術的目標是將影像的風格(我們稱之為"風格影像")應用於目標影像,從而保留後者的內容。我們來定義這兩個術語:
-
風格是影像中的紋理和視覺圖案。一個例子是藝術家的筆觸。
-
內容是影像的巨集觀結構。人物、建築物、物體是影像內容的示例。
這裡顯示了不錯的效果:
你想看到更多的效果嗎?在文章的最後可以瀏覽。
讓我們看看高階步驟:
-
選擇要設定風格的影像
-
•選擇樣風格參考影像。通常,這是一幅具有獨特和可識別風格的繪畫。
-
初始化預訓練的深度神經網路,並獲得中間層的特徵表示。完成該步驟以實現內容影像和風格影像的表示。在內容影像中,最好的選擇是獲得最高層的特徵表示,因為它們包含有關影像巨集結構的資訊。對於風格參考影像,從不同比例的多個層獲得特徵表示。
-
定義損失函式,以最小化內容損失、樣式損失和變化損失的總和。每次迭代,優化器都會生成一個影像。內容損失是生成的影像和內容影像之間的差異(L2歸一化),而生成的影像和樣式之間的樣式損失。稍後我們將看到這些變數是如何在數學上定義的。
-
重新考慮損失的最小化
影像處理和影像逆向處理
首先,我們需要格式化在網路使用的影像。我們將要使用的卷積神經網路(CNN)是經過預先訓練的VGG19會議。當我們將影像處理成相容的陣列時,我們還需要對生成的影像進行解處理,從BGR切換到RGB格式。讓我們構建兩個輔助函式來執行此操作:
內容損失
內容損失將主要輸入影像的內容保留為風格。由於卷積神經網路的較高層包含影像巨集觀結構的資訊,因此我們將內容損失計算為輸入影像的最高層的輸出與所生成影像的同一層之間的差異(L2歸一化)。
內容損失定義為:
在等式中,F是內容影像的特徵表示(當我們執行輸入影像時網路輸出的內容),以及P是在特定隱藏層l處生成的影像之一。
這是實施的內容:
風格損失
理解風格損失並不像內容丟失那麼簡單。目標是在新生成的影像中保持影像的樣式(即視覺圖案作為筆畫)。在前一種情況下,我們比較中間層的原始輸出。在這裡,我們比較樣式參考影像和生成的影像的特定圖層的Gram矩陣之間的差異。Gram矩陣被定義為給定層的向量化特徵對映之間的內積。矩陣的含義是捕獲層的特徵之間的相關性。計算多個層的損失允許保留在樣式影像和生成的影像之間的不同層內部相關的類似特徵。
單個圖層的樣式損失計算如下:
在等式中,A是風格影像的Gram矩陣,G是生成影像的Gram矩陣,兩者都與給定層有關。 N和M是風格影像的寬度和高度。
首先為每個單獨的圖層計算樣式損失,然後將其應用於考慮為風格建模的每個圖層。我們來實現它:
變化損失
最後,損失的最後一個部分是變化損失。這個元素未包含在原始論文中,並不是專案成功的必要條件。實際上,經驗證明,新增這個元素會產生更好的結果,因為它可以平滑畫素之間的顏色變化。
讓我們把這個包括進來:
總體損失
最後,考慮到所有這些貢獻,計算總體損失。首先,我們需要提取我們選擇的特定圖層的輸出。為此,我們將字典定義為<layer name,layer output>:
然後,我們計算呼叫以前函式的程式碼的損失。每個元件乘以特定的權重,我們可以調整以產生強烈或更輕的效果:
設定神經網路
VGG19網路將一批三個影像作為輸入:輸入內容影像、風格參考影像和包含生成影像的符號張量。前兩個是常量變數,使用包keras.backend定義為Variable。第三個變數定義為佔位符(placeholder),因為它會在優化程式更新結果時隨時間變化。
一旦變數被初始化,我們就將它們加入到張量中,這將在網路後期提供。
完成後,我們需要定義損耗、梯度和輸出。原始論文使用演算法L-BFGS作為優化器。該演算法的一個限制是它需要分別轉換損失和梯度。由於獨立地計算它們將是非常低效的,我們將實現一次計算損失和梯度值的Evaluator類,但是單獨返回它們。我們開始實施:
最後一步
最後,一切都準備好了!最後一步是多次迭代優化器,直到達到所需的損失或所需的結果。我們將沿著迭代儲存結果,以檢查演算法是否按預期工作。如果結果不令人滿意,我們可以使用權重來改善生成的影像。
要檢視整個程式碼,請參閱頁面開頭提供的GitHub連結。
結果
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2220762/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 神經風格遷移:使用 tf.keras 和 Eager Execution,藉助深度學習創作藝術作品Keras深度學習
- 如何用Keras打造出“風格遷移”的AI藝術作品KerasAI
- 機器學習之光:神經風格遷移的直觀指南!機器學習
- 吳恩達《卷積神經網路》課程筆記(4)– 人臉識別與神經風格遷移吳恩達卷積神經網路筆記
- Flora影象風格遷移AppAPP
- 廢土藝術風格丨主題UI探索UI
- Android 端影象多風格遷移Android
- [譯] TensorFlow 教程 #15 – 風格遷移
- 深度有趣 | 30 快速影象風格遷移
- 人工智慧AI影像風格遷移(StyleTransfer),基於雙層ControlNet(Python3.10)人工智慧AIPython
- PUBG Mobile主題UI設計:廢土藝術風格探索UI
- Python+OpenCV 影象風格遷移(模仿名畫)PythonOpenCV
- android中的深度學習——快速風格遷移Android深度學習
- AI繪畫第二彈——影象風格遷移AI
- 廢土藝術風格 2丨遊戲主題概念設計遊戲
- 《深度學習——Andrew Ng》第四課第四周程式設計作業_2_神經網路風格遷移深度學習程式設計神經網路
- Perceptual Losses 風格遷移論文復現小記
- 使用神經網路生成抽象隨機藝術神經網路抽象隨機
- 英偉達再出GAN神作!多層次特徵的風格遷移人臉生成器特徵
- Python 超簡單實現 9 種影像風格遷移Python
- Post Microsoft Build丨暢聊技術新風潮ROSUI
- 藝術大師與遊戲的風格碰撞(一)遊戲
- BAIR提出MC-GAN,使用GAN實現字型風格遷移AI
- 談談JavaScript編碼風格JavaScript
- 遷移部落格至掘金
- Gram格拉姆矩陣在風格遷移中的應用矩陣
- 基於GAN的字型風格遷移 | CVPR 2018論文解讀
- 機器學習開源框架系列:Torch:3:影像風格遷移機器學習框架
- 雲遷移的安全風險
- 部落格圖床遷移記圖床
- 遊戲中的方塊藝術——從藝術生角度淺談劃時代產品"畫素風"遊戲
- 讀“基於深度學習的影像風格遷移研究綜述”有感深度學習
- 顏值當道,畫風為王——桌遊美術風格漫談
- 談談編碼風格與規範
- 十、特殊應用:人臉識別和神經風格轉換
- [置頂] About Me & 部落格遷移
- 伯克利AI實驗室出品:用GAN實現字型風格遷移AI
- 遷移學習與圖神經網路“合力”模型:用DoT-GNN克服組重識別難題遷移學習神經網路模型GNN