當前位置:
首頁 > 最新 > 用python 6步搞定從照片到名畫,你學你也可以

用python 6步搞定從照片到名畫,你學你也可以

近年來,機器學習的進步使我們僅用幾行代碼就能生成驚為天人的藝術作品。如果可以將藝術作品的原型設計速度提高100倍,讓用戶真正地與創作媒介合為一體,效果會怎麼樣呢?

如果我們可以用機器學習的模式來擴展生物學習的模式,那麼機器顯然不是我們的藝術競爭對手,而是提高我們藝術創造力的途徑。

本期,Siraj將教大家通過在Keras中用TensorFlow後端編寫Python腳本,把原圖像變成任意藝術家的風格,從而實現風格遷移。

【雷鋒字幕組】招募進行時

1. 圖像的張量表示

要用的一幅原圖以及一幅風格圖,將原圖進行風格轉化:

首先將圖片輸入神經網路,將它們轉換為同一數據格式,Keras後端TensorFlow的變數函數等價於tf.variable。該參數將表示轉換為數組的圖像,然後我們將對風格圖像執行相同的操作,創造出一個以後可以存儲最終結果的組合圖像,然後使用佔位符用給定的寬度和高度初始化。

2.將三張圖片合併到一個Keras張量作為輸入

使用 concatenate 連接函數執行此操作。

3.用3個圖像作為輸入創建VGG16網路

將輸入設置為新創建的張量,並將權重設置為imagenet,設置include_top = False。

VGG16是由牛津大學視覺幾何團隊創建的16層卷積網路,贏得了2014年的ImageNet大賽。他們的想法是對數千個不同圖像進行圖像分類的預先訓練的卷積網路。

已經知道如何對圖像中包含的信息進行編碼,它在每一層都可以通過學習過濾器來檢測出某些通性,我們將利用過濾器來執行風格轉換,而不需要頂部卷積層的原因是因為它的完全連接層和softmax函數,通過壓縮維度特徵映射來幫助圖像進行分類並輸出概率。

我們將把風格遷移任務用優化問題表示,用損失函數來衡量想要最小化的誤差值。在這種情況下,損失函數可以分解為兩個部分:內容損失和風格損失。把總損失初始化為零,並將兩種損失都添加到其中。

內容損失

可以認為圖像包括風格部分和內容部分。我們知道 CNN的學習特徵是按照漸進的抽象成分排列的,由於更高層次的特徵是更抽象的。所以檢測人臉沒有那麼抽象,可以把它們與內容聯繫起來,讓它們檢測構成圖像的對象。分別通過網路運行輸出圖像和參考圖像時,將從各自選擇的隱藏層中獲得一組特徵表示,然後測量它們之間的歐氏距離以計算損失。

風格損失

這仍然是一個網路的隱藏層輸出的函數,但稍微複雜一些。我們還是通過網路觀察兩個圖像的激活情況,但將添加額外的步驟來度量激活的相關性而不是直接比較原始的激活內容。對於這兩個圖像 ,我們將在網路中的給定層獲取激活的Gram矩陣。它是用一個給定層的所有激活的內積來計算的,這些激活是一組向量 ,每一個向量表示一個特徵。

因此 ,這個結果矩陣包含了給定層的每一對特徵映射之間的相關性,它代表了在圖像的不同部分中共同出現的特徵趨勢。一旦有了這個 ,就可以將風格損失定義為參考圖像和輸出圖像的Gram矩陣之間的歐氏距離。我們會計算選擇的每一層的風格損失的加權總和把它作為總的風格損失。

事實證明,就風格而言,像內容損失那樣只用一個單層損失效果並不理想。而當使用多個層時,效果會有所改善。

接下來定義輸出圖像對於損失的梯度,然後利用梯度來不斷地改進輸出圖像以最小化損失。所以將計算出給定層中損失對激活的導數,以得到梯度來更新輸出圖像,而不是權重。梯度給出了如何更新輸出圖像的方向,這樣一來原圖和風格圖像的區別就變小了。

4.將損失函數合併為單個標量

調用助手類組合損失函數並給出它的模型和,輸出圖像作為參數。

5.得到關於損失的輸出圖像的梯度

利用Keras的梯度函數,在後台轉換為tf.gradients。這就給出了一個張量關於一個或多個其他張量的符號梯度。

6.在輸出圖像的像素上運行優化演算法(L-BFGS)以最小化損失

這與隨機梯度下降很相似,但收斂速度更快。把計算出的梯度輸入最小化函數,它就能輸出結果圖像,讓我們看看是什麼樣的!

一些手機應用也在做這個,例如Prisma可讓用戶在移動設備上選擇過濾器,Artisto甚至支持將濾鏡應用到視頻中。我們還處於使用機器學習創造藝術的早期階段,所以這個領域仍然有很多機會。

雷鋒字幕組志願者


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 唯物 的精彩文章:

現在的AI演算法真的模擬了人腦嗎?
傳統程序員要不要轉行到AI?看完本文思路更清晰
深度學習訓練時 GPU 溫度過高?幾行命令就可迅速降溫!
我是這樣學習 GAN 的——開發者自述

TAG:唯物 |

您可能感興趣

如何用iphone拍出好照片
Angelababy終於對自己下狠手了,這次的照片誰都認不出來
這些照片里的可不是 Kim Kardashian,而是 Paris Hilton
iPhone X Plus曝出的5張手機照片,看背面和iPhone X有點不一樣!
你用iPhone拍照片也能顯示蘋果LOGO了!
為什麼會有這多人討厭angelababy,未p圖與照片相差也不大
Angelababy曬素顏照片,沒了美顏她很普通
如何使用Photoshop將照片做成仿HDR效果?
G?知 想Ins的照片獲得更多Like?首先你要知道這兩個2018流行的Hashtags!
吳尊曬齣兒時照片,與Max的照片對比,終於知道neinei長得像誰了
我的iPhone刪除不了照片怎麼回事?
照片也變臉,NVIDIA FastPhotoStyle 演算法將氛圍轉移到另一張照片
怎麼用iPhone6s給女朋友拍出很滿意的照片?
Angelababy最美的照片都收集在這裡,來看看吧
蘋果分享維也納Apple Store照片
Jasper與媽媽一起做瑜伽,應采兒小時候照片竟神似Angelababy
PS教程-photoshop零基礎都可修出唯美照片
學會這些構圖技巧,拍出好照片so easy!
我在 Facebook 上發了一張小狗的照片,Facebook 應該付錢給我嗎?
Angelababy同學曬出童年郊遊老照片 baby從小就是戲精