1. 모델이 Kiki, Alex를 제외하고 거의 학습하지 못하는 것 같다. BongBong 은 몸집이랑 색깔까지는 잡는데, 이목구비를 어려워한다. Kiki, Alex는 머리가 크고 눈이 큼직큼직하게 표현되어서 특징으로 잘 포착하는 듯. 반면에 나머지 캐릭터들은 눈코입이 너무 작고 몰려있거나 머리 자체가 작다.
  2. 얼굴을 크롭하지 않은 게 큰 걸림돌이다. 데이터셋이 작아지더라도 얼굴만 크롭한 데이터를 줘야 하지 않나 -
    1. cartoon face detection 에 대한 논문이 존재할 정도로 (Bringing Cartoons to Life: Towards Improved Cartoon Face Detection and Recognition Systems) 자동화가 까다로운 과정. (침착한 생성기에서도 수기로 얼굴을 크롭했음) 게다가 위 논문에서 다루는 이미지는 비교적 사람 얼굴에 가깝고 이목구비 표현이 명확한 편인데, Zookiz처럼 추상적인 카툰 캐릭터를 사용하기 위해서는 수기 크롭이 현실적일 듯.
    2. 얼굴을 크롭하지 않아 생기는 문제는 사람얼굴->캐릭터몸으로 fine tuning할 때 사람 얼굴의 하관이 캐릭터의 몸으로 연결된다는 점이다. 따라서 network blending 을 실시했을 때에도 턱에 다리가, 귀에 팔이 달리는 기괴한 형상이 포착됨.
  3. 결론 : 사람 - zookiz 간 translation은 다른 방식을 찾아봐야 (이목구비가 사람만큼 뚜렷한 캐릭터를 사용하거나, zookiz의 얼굴만 깔끔하게 크롭한 정제된 데이터를 사용해본다면 다시 시도해볼 만할 수도.)
  4. 우선은 styleGAN2 모델을 훈련시켜두면 나중에 다양하게 활용할 수 있으니 최대한 훈련시켜두려고 한다.
  5. 지금 생각하고 있는 다음 단계는 pixel2style2pixel(sketch) 훈련시키기. pSp 모델을 훈련시키면 styleGAN2와 연결해 사용한다.
    1. sketch에서 캐릭터를 자동 생성하게 하는 것은 supervised 학습으로 sketch-character 쌍이 필요하다. Ditto님 방향이 좋은 듯!
    2. 참고할 수 있는 영상 AI Turns My Sketches into Anime Characters | Sketch to Anime

 

real image -> inferred latent codes -> generated image

 

 

16*16 에서 model blendng

 

import numpy as np
from PIL import Image
import dnnlib
import dnnlib.tflib as tflib
from pathlib import Path

latent_dir = Path("generated")
latents = latent_dir.glob("*.npy")
names = ['base-FFHQ-16', 'base-FFHQ-32']
idx = 0

for url in urls:
  tflib.init_tf()
  spec = names[idx]
  _, _, Gs_blended = pretrained_networks.load_networks(url)
  print(spec)
  for latent_file in latents:
    latent = np.load(latent_file)
    latent = np.expand_dims(latent,axis=0)
    synthesis_kwargs = dict(output_transform=dict(func=tflib.convert_images_to_uint8, nchw_to_nhwc=False), minibatch_size=8)
    images = Gs_blended.components.synthesis.run(latent, randomize_noise=False, **synthesis_kwargs)
    Image.fromarray(images.transpose((0,2,3,1))[0], 'RGB').save(latent_file.parent / (f"{latent_file.stem}-zookified-{spec}.jpg"))
  idx += 1

 

복사했습니다!