訂閱
糾錯
加入自媒體

如何使用預訓練的權(quán)重從自定義數(shù)據(jù)集中生成圖像?

概要

分享我的知識,使用帶有示例代碼片段的遷移學習逐步在Google colab中的自定義數(shù)據(jù)集上訓練StyleGAN

如何使用預訓練的權(quán)重從自定義數(shù)據(jù)集中生成圖像

使用不同的種子值生成新圖像

介紹

生成對抗網(wǎng)絡(GAN) 是機器學習中的一項最新創(chuàng)新,由 Ian J. Goodfellow 及其同事于2014年首次提出。

它是一組神經(jīng)網(wǎng)絡,以兩人零和博弈的形式相互對抗。博弈論(一個人的勝利就是另一個人的損失)。它是用于無監(jiān)督學習的生成模型的一種形式。這里有一個生成器(用于從潛在空間中的某個點在數(shù)據(jù)上生成新實例)和鑒別器(用于將生成器生成的數(shù)據(jù)與實際或真實數(shù)據(jù)值區(qū)分開)。

最初,生成器生成虛假或偽造的數(shù)據(jù),鑒別器可以將其分類為偽造,但是隨著訓練的繼續(xù),生成器開始學習真實數(shù)據(jù)的分布并開始生成真實的數(shù)據(jù)。這種情況一直持續(xù)到鑒別器無法將其分類為不真實的并且生成器輸出的所有數(shù)據(jù)看起來都像真實數(shù)據(jù)。因此,此處生成器的輸出連接到鑒別器的輸入,并根據(jù)鑒別器的輸出(是實數(shù)還是非實數(shù))計算損失,并通過反向傳播,為后續(xù)訓練(epoch)更新生成器的權(quán)重。

StyleGAN目前在市場上有多種GAN變體,但在本文中,我將重點介紹Nvidia在2018年12月推出的StyleGAN。StyleGAN的體系結(jié)構(gòu)使用基線漸進式GAN。即,生成圖像的大小從非常低的角度逐漸增加分辨率(4×4)到非常高的分辨率(1024×1024),并使用雙線性采樣代替基線漸進式GAN中使用的最近鄰居上/下采樣。

遷移學習在另一個相似的數(shù)據(jù)集上使用已訓練的模型權(quán)重并訓練自定義數(shù)據(jù)集。

自定義數(shù)據(jù)集包含2500個來自時尚的紋理圖像。下面幾張示例紋理圖像可供參考。此處你可以替換成自己的自定義數(shù)據(jù)集。

重點和前提條件:必須使用GPU,StyleGAN無法在CPU環(huán)境中進行訓練。為了演示,我已經(jīng)使用google colab環(huán)境進行實驗和學習。

確保選擇Tensorflow版本1.15.2。StyleGAN僅適用于tf 1.x

StyleGAN訓練將花費大量時間(幾天之內(nèi)取決于服務器容量,例如1個GPU,2個GPU等)

如果你正在從事與GAN相關的任何實時項目,那么由于colab中的使用限制和超時,你可能想在 tesla P-80或 P-100專用服務器上訓練GAN 。

如果你有google-pro(不是強制性的),則可以節(jié)省多達40-50%的本文訓練時間 ,我對GAN進行了3500次迭代訓練,因為訓練整個GAN需要很長時間(要獲取高分辨率圖像),則需要至少運行25000次迭代(推薦)。另外,我的圖像分辨率是64×64,但是styleGAN是在1024×1024分辨率圖像上訓練的。

我已使用以下預先訓練的權(quán)重來訓練我的自定義數(shù)據(jù)集(有關更多詳細信息,請參見Tensorflow Github官方鏈接)

https://drive.google.com/uc?id=1MEGjdvVpUsu1jB4zrXZN7Y4kBBOzizDQ使用遷移學習在Google Colab中的自定義數(shù)據(jù)集上訓練style GAN打開colab并打開一個新的botebook。確保在Runtime->Change Runtime type->Hardware accelerator下設置為GPU驗證你的帳戶并裝載G驅(qū)動器from google.colab import drive
drive.mount('/content/drive', force_remount=True)
確保選擇了Tensorflow版本1.15.2。StyleGAN僅適用于tf1.x。%tensorflow_version 1.x
import tensorflow
print(tensorflow.__version__)
從 https://github.com/NVlabs/stylegan 克隆stylegan.git!git clone https://github.com/NVlabs/stylegan.git
!ls /content/stylegan/
You should see something like this
config.py              LICENSE.txt             run_metrics.py
dataset_tool.py        metrics                 stylegan-teaser.png
dnnlib                 pretrained_example.py   training
generate_figures.py    README.md               train.py
5.  將 stylegan文件夾添加到python,以導入dnnlib模塊import sys
sys.path.insert(0, "/content/stylegan")
import dnnlib
6. 將自定義數(shù)據(jù)集從G驅(qū)動器提取到你選擇的colab服務器文件夾中!unrar x "/content/drive/My Drive/CustomDataset.rar" "/content/CData/"
7. Stylegan要求圖像必須是正方形,并且為獲得很好的分辨率,圖像必須為1024×1024。但是在本演示中,我將使用64×64的分辨率,下一步是將所有圖像調(diào)整為該分辨率。# resize all the images to same size
import os
from tqdm import tqdm
import cv2
from PIL import Image
from resizeimage import resizeimage
path = '/content/CData/'
for filename in tqdm(os.listdir(path),desc ='reading images ...'):
image = Image.open(path+filename)
image = image.resize((64,64))
image.save(path+filename, image.format)
8.將自定義數(shù)據(jù)集復制到colab并調(diào)整大小后,使用以下命令將自定義圖像轉(zhuǎn)換為tfrecords。這是StyleGAN的要求,因此此步驟對于訓練StyleGAN是必不可少的。! python /content/stylegan/dataset_tool.py create_from_images /content/stylegan/datasets/custom-dataset /content/texture
replace your custom dataset path (instead of /content/texture)
9.一旦成功創(chuàng)建了tfrecords,你應該查看它們/content/stylegan/datasets/custom-dataset/custom-dataset-r02.tfrecords - 22
/content/stylegan/datasets/custom-dataset/custom-dataset-r03.tfrecords - 23
/content/stylegan/datasets/custom-dataset/custom-dataset-r04.tfrecords -24
/content/stylegan/datasets/custom-dataset/custom-dataset-r05.tfrecords -25
/content/stylegan/datasets/custom-dataset/custom-dataset-r06.tfrecords -26
These tfrecords correspond to 4x4 , 8x8 ,16x16, 32x32 and 64x64 resolution images (baseline progressive) respectiviely

1  2  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號