GAN 7 - Anime GAN

김성빈·2024년 6월 13일
0

Modern Computer Vision

목록 보기
110/117

StyleGan2을 이용해서 애니메이션 캐릭터를 생성
참고1
참고2

[주의] tensorflow 버전 및 라이브러리 지원을 안하게 될경우 최신 버전에 맞게 다시 수정해줘야함

Tensorflow 버전 1.x버전으로 낮추기

%tensorflow_version 1.x
import tensorflow as tf
print('Tensorflow version: {}'.format(tf.__version__) )

Clone StyleGan2

사전 학습된 GAN 모델(stylegan2)을 사용하여 랜덤 시드를 통해 애니메이션 캐릭터를 생성

!git clone https://github.com/NVlabs/stylegan2.git
%cd /content/stylegan2

이미지 출력

seeds = np.random.randint(10000000, size=9)
print(seeds)

zs = generate_zs_from_seeds(seeds)
imgs = generate_images(zs, .7)

9개의 랜덤 시드를 생성하고, 이를 기반으로 이미지를 생성

랜덤씨드로 9개가 출력이 됐다.

[783602 6506592 5842888 7319191 3194881 8133786 2265318 1017335 4475296]

시드 출력

시드 중 맨 앞의 이미지를 출력해보자.

imgs[0] = 783602

imgs[0]

총 9개의 시드가 존재하므로 위와 같은 애니메이션 캐릭터들이 9개가 존재할것.

랜덤시드로 작동하기 때문에 코드를 다시 실행하면 다른 이미지가 출력된다.

생성된 이미지 출력

이미지를 출력하면 아래와 같은 형식으로 출력 될 것이다.

+-----------------+-----------------+-----------------+
|     Image 1     |     Image 2     |     Image 3     |
+-----------------+-----------------+-----------------+
|     Image 4     |     Image 5     |     Image 6     |
+-----------------+-----------------+-----------------+
|     Image 7     |     Image 8     |     Image 9     |
+-----------------+-----------------+-----------------+
createImageGrid(imgs, rows=3)

랜덤 시드 2개 쓰까

seeds = np.random.randint(10000000, size=2)

랜덤시드 2개 생성

latent vectors 생성

zs = generate_zs_from_seeds(seeds)

생성된 시드 값을 기반으로 latent vectors를 생성

출력

생성한 시드 두개를 출력해보자
img[0] = seed2

img[1] > seed2


mix > img[0] + img[1]

요 두놈을 섞는건데 generate 코드를 실행하면

위와 같이 섞인다.

맨 왼쪽이 Seed1이고 맨오른쪽이 Seed2로

중간 이미지는 두 시드 값 사이에서 점진적으로 변화하는 과정을 보여준다.

출력 2

랜덤시드이기 때문에 실행할때마다 바뀐다.

profile
감사합니다. https://www.youtube.com/channel/UCxlkiu9_aWijoD7BannNM7w

0개의 댓글