layout | background-class | body-class | title | summary | category | image | author | tags | github-link | github-id | featured_image_1 | featured_image_2 | accelerator | order | demo-model-link | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
hub_detail |
hub-background |
hub |
Progressive Growing of GANs (PGAN) |
High-quality image generation of fashion, celebrity faces |
researchers |
pganlogo.png |
FAIR HDGAN |
|
facebookresearch/pytorch_GAN_zoo |
pgan_mix.jpg |
pgan_celebaHQ.jpg |
cuda-optional |
10 |
import torch
use_gpu = True if torch.cuda.is_available() else False
# ์ด ๋ชจ๋ธ์ ์ ๋ช
์ธ๋ค์ ๊ณ ํด์๋ ์ผ๊ตด ๋ฐ์ดํฐ์
"celebA"๋ก ํ์ต๋์์ต๋๋ค.
# ์๋ ๋ชจ๋ธ์ ์ถ๋ ฅ์ 512 x 512 ํฝ์
์ ์ด๋ฏธ์ง์
๋๋ค.
model = torch.hub.load('facebookresearch/pytorch_GAN_zoo:hub',
'PGAN', model_name='celebAHQ-512',
pretrained=True, useGPU=use_gpu)
# ์๋ ๋ชจ๋ธ์ ์ถ๋ ฅ์ 256 x 256 ํฝ์
์ ์ด๋ฏธ์ง์
๋๋ค.
# model = torch.hub.load('facebookresearch/pytorch_GAN_zoo:hub',
# 'PGAN', model_name='celebAHQ-256',
# pretrained=True, useGPU=use_gpu)
๋ชจ๋ธ์ ์
๋ ฅ์ (N, 512)
ํฌ๊ธฐ์ ๋
ธ์ด์ฆ(noise) ๋ฒกํฐ์
๋๋ค. N
์ ์์ฑํ๊ณ ์ ํ๋ ์ด๋ฏธ์ง์ ๊ฐ์๋ฅผ ๋ปํฉ๋๋ค.
์ด ๋
ธ์ด์ฆ ๋ฒกํฐ๋ค์ ํจ์ .buildNoiseData
๋ฅผ ํตํ์ฌ ์์ฑ ํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ธ์ ๋
ธ์ด์ฆ ๋ฒกํฐ๋ฅผ ๋ฐ์์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ .test
ํจ์๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
num_images = 4
noise, _ = model.buildNoiseData(num_images)
with torch.no_grad():
generated_images = model.test(noise)
# torchvision๊ณผ matplotlib๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ ์ด๋ฏธ์ง๋ค์ ์๊ฐํ ํด๋ด
์๋ค.
import matplotlib.pyplot as plt
import torchvision
grid = torchvision.utils.make_grid(generated_images.clamp(min=-1, max=1), scale_each=True, normalize=True)
plt.imshow(grid.permute(1, 2, 0).cpu().numpy())
# plt.show()
์ผ์ชฝ๊ณผ ๋น์ทํ ์ด๋ฏธ์ง๋ฅผ ๊ฒฐ๊ณผ๋ฌผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
๋ง์ฝ ์์ ๋ง์ Progressive GAN ์ด๋ ๋ค๋ฅธ GAN ๋ชจ๋ธ๋ค์ ์ง์ ํ์ตํด ๋ณด๊ณ ์ถ๋ค๋ฉด PyTorch GAN Zoo๋ฅผ ์ฐธ๊ณ ํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
์ปดํจํฐ ๋น์ (Computer Vision)๋ถ์ผ์์ ์์ฑ ๋ชจ๋ธ์ ์ฃผ์ด์ง ์ ๋ ฅ๊ฐ์ผ๋ก ๋ถํฐ ์ด๋ฏธ์ง๋ฅผ ์์ฑํด ๋ด๋๋ก ํ์ต๋ ์ ๊ฒฝ๋ง์ ๋๋ค. ํ์ฌ ๋ค๋ฃจ๋ ๋ชจ๋ธ์ ์์ฑ ๋ชจ๋ธ์ ํน์ ํ ์ข ๋ฅ๋ก์ ๋ฌด์์์ ๋ฒกํฐ์์ ์ฌ์ค์ ์ธ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๋ฒ์ ํ์ตํ๋ GAN ๋ชจ๋ธ์ ๋๋ค.
GAN์ ์ ์ง์ ์ธ ์ฆ๊ฐ(Progressive Growing of GANs)๋ Karras์ ๊ทธ ์ธ[1]๊ฐ 2017๋ ์ ๋ฐํํ ๊ณ ํด์๋์ ์ด๋ฏธ์ง ์์ฑ์ ์ํ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ์ด๋ฅผ ์ํ์ฌ ์์ฑ ๋ชจ๋ธ์ ์ฌ๋ฌ ๋จ๊ณ๋ก ๋๋์ด์ ํ์ต๋ฉ๋๋ค. ์ ์ผ ๋จผ์ ๋ชจ๋ธ์ ์์ฃผ ๋ฎ์ ํด์๋์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋๋ก ํ์ต์ด ๋๊ณ , ์ด๋์ ๋ ๋ชจ๋ธ์ด ์๋ ดํ๋ฉด ์๋ก์ด ๊ณ์ธต์ด ๋ชจ๋ธ์ ๋ํด์ง๊ณ ์ถ๋ ฅ ํด์๋๋ 2๋ฐฐ๊ฐ ๋ฉ๋๋ค. ์ด ๊ณผ์ ์ ์ํ๋ ํด์๋์ ๋๋ฌ ํ ๋ ๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
- ํ์ฌ๋ Python3 ์์๋ง ์ง์ํฉ๋๋ค.
- [1] Tero Karras et al, Progressive Growing of GANs for Improved Quality, Stability, and Variation