生成對抗網(wǎng)絡(luò),AI將圖片轉(zhuǎn)成漫畫風(fēng)格
哈嘍,大家好。
最近大家都在玩 AI 繪畫,我在 GitHub 上找了一個開源項目,給大家分享一下。
今天分享的這個項目是用 GAN? 生成對抗網(wǎng)絡(luò)實現(xiàn)的,關(guān)于GAN的原理和實戰(zhàn)我們之前分享過很多文章,想了解的朋友可以去翻歷史文章。
源碼和數(shù)據(jù)集文末獲取,下面分享如何訓(xùn)練、運行項目。
1. 準(zhǔn)備環(huán)境
安裝 tensorflow-gpu 1.15.0?,GPU顯卡使用2080Ti?,cuda版本10.0。
git下載項目AnimeGANv2源碼。
搭建好環(huán)境后,還需要準(zhǔn)備數(shù)據(jù)集和vgg19。
下載dataset.zip?壓縮文件,里面包含 6k 張真實圖片和2k張漫畫圖片,用于GAN的訓(xùn)練。
vgg19是用來計算損失的,下面會有詳細(xì)介紹。
2. 網(wǎng)絡(luò)模型
生成對抗網(wǎng)絡(luò)需要定義兩個模型,一個是生成器,一個是判別器。
生成器網(wǎng)絡(luò)定義如下:
生成器中主要的模塊是反向殘差塊
殘差結(jié)構(gòu)(a)和反向殘差塊(b)
判別器網(wǎng)絡(luò)結(jié)構(gòu)如下:
3. 損失
計算損失之前先用VGG19?網(wǎng)路將圖片向量化。這個過程有點像NLP?中的Embedding操作。
Eembedding?是講詞轉(zhuǎn)化成向量,VGG19是講圖片轉(zhuǎn)化成向量。
VGG19定義
計算損失部分邏輯如下:
這里使用vgg19?分別計算真實圖片(參數(shù)real)與生成的圖片(參數(shù)fake)?的損失,生成的圖片(參數(shù)fake)與漫畫風(fēng)格(參數(shù)anime)的損失。
最終給這兩個損失不同的權(quán)重,這樣是的生成器生成的圖片,既保留了真實圖片的樣子,又向漫畫風(fēng)格進行遷移
4. 訓(xùn)練
在項目目錄下執(zhí)行以下命令開始訓(xùn)練
運行成功后,可以看到一下數(shù)據(jù)。
同時,也可以看到損失在不斷下降。
源碼和數(shù)據(jù)集都已經(jīng)打包好了,需要的朋友評論區(qū)留言即可。
如果大家覺得本文對你有用就點個 在看 鼓勵一下吧,后續(xù)我會持續(xù)分享優(yōu)秀的 Python+AI 項目。