上期視頻我們分享了使用styleGAN2生成動漫的視頻,本期我們從代碼角度分享一下實現(xiàn)過程
我們向styleGAN2模型中輸入如下2張動漫照片,神經(jīng)網(wǎng)絡(luò)會通過學(xué)習(xí),生成同時具有2種風(fēng)格,且風(fēng)格各異的不同的動漫人物
styleGAN2
——1——
GAN生成對抗神經(jīng)網(wǎng)絡(luò)
生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks)是一種無監(jiān)督深度學(xué)習(xí)模型,用來通過計算機生成數(shù)據(jù),由Ian J. Goodfellow等人于2014年提出。模型兩個主要模塊:生成模型(Generative Model)和判別模型(Discriminative Model)。在神經(jīng)網(wǎng)絡(luò)訓(xùn)練時,生成模型與判別模型相互博弈,以達(dá)到模型最好的效果
生成對抗網(wǎng)絡(luò)被認(rèn)為是當(dāng)前最具前景、最具活躍度的模型之一,目前主要應(yīng)用于樣本數(shù)據(jù)生成、圖像生成、圖像修復(fù)、圖像轉(zhuǎn)換、文本生成等方向。
GAN模型
StyleGAN系列是NVIDIA在2018年發(fā)布的,目前已經(jīng)發(fā)展到StyleGAN3,由于其效果與精度比傳統(tǒng)GAN更好,得到了廣大開發(fā)者的喜歡,本次的代碼是基于StyleGAN2
StyleGAN與傳統(tǒng)GAN模型區(qū)別
A Style-Based Generator Architecture for Generative Adversarial Networks
https://arxiv.org/pdf/1812.04948.pdf
——2——
StyleGAN2 生成動漫人物
https://github.com/NVlabs/stylegan2 開源鏈接
如下代碼運行在Google colab上,當(dāng)然你也可以下載到自己本地電腦進(jìn)行運行
第一步
復(fù)制styleGAN2工程,并安裝相應(yīng)第三方庫與下載預(yù)訓(xùn)練模型
!git clone https://github.com/cedro3/stylegan2.git
! pip install --upgrade gdown
import gdown
gdown.download('https://drive.google.com/u/1/uc?id=1_NUX9_xRGjce1KbCxT4frUsFWctlN4ZC', 'network-tadne.pkl', quiet=False)
本代碼基于tensorflow,需要安裝上tensorflow
%tensorflow_version 1.x
%cd /content/stylegan2
from function import *
第二步
輸入給模型2張動漫圖片,模型便可以生成具有不同風(fēng)格的動漫圖片
styleGAN2
src_seed = 60
dst_seed = 75
blending = 0.5
truncation_psi = 0.8
generate_images([src_seed, dst_seed], truncation_psi)
print("Blended image (", blending, ")")
blend_images(src_seed, dst_seed, blending=blending, truncation_psi=truncation_psi)
這里src_seed是輸入圖片的編號,dst_seed是第2張輸入圖片的編號,我們把2張動漫圖片輸入給模型,讓模型學(xué)習(xí)2張圖片的特征,并生成具有2種圖片風(fēng)格的目標(biāo)動漫圖片
blending是混合圖片的比例,truncation_psi是生成的圖片距離訓(xùn)練圖片的距離
最后我們直接使用GAN模型生成圖片
第三步
我們生成一個從輸入動漫圖片到目標(biāo)動漫圖片的轉(zhuǎn)換過程
src_seed = 51
dst_seed = 58
truncation_psi = 0.7
duration_sec = 5.0
mp4_fps = 30
generate_images([src_seed, dst_seed], truncation_psi)
output_filename = interpolate_between_seeds(seed_array=[src_seed, dst_seed], truncation=truncation_psi, duration_sec=duration_sec, mp4_fps=mp4_fps)
首先,我們輸入2張圖片src_seed與dst_seed,duration_sec為視頻的時長
GAN
從結(jié)果可以看出來,就算2張圖片轉(zhuǎn)換過程中,其模型生成的中間狀態(tài)圖片也是比較精美的
2張圖片的轉(zhuǎn)換,在我們分享人臉識別與人臉檢測時,也有分享過類似的代碼,主要是使用opencv的仿射變換