CartoonGAN을 이용하여 일본 애니메이션 그림 만들기
반응형
GAN(Generative Adversarial Network) 이용하여 실제 사진을 일본 애니메이션의 감독 스타일로 변화시키는 CartoonGAN이라는 모델이 2018년에 소개 되었습니다. 앞에 U-GAT-IT 도 소개 드렸지만 GAN은 이미지를 스타일링 하는 영역에서 많이 활용되는 것 같습니다.


사전 훈련된 모델을 이용하여 테스트를 진행하려고 합니다. 먼저 사전 훈련된 모델 다운로드 후 진행하시기 바랍니다.
모델은 '센과 치히로 행방불명', '하울의 움직이는 성' 등으로 유명한 미야자키 하야오 감독의 애니메이션 스타일과 '시간을 달리는 소녀'의 호소다 마모루 감독의 스타일, '너의 이름은'의 신카이 마코토 감독의 스타일로 변경 할 수 있는 모델입니다. 추가로 Paprika 라는 일본 애니메이션 스타일의 모델도 있습니다.




Github : https://github.com/yunwoong7/CartoonGAN-Test-Pytorch-Torch
Import Packages
import os import torch import torchvision.transforms as transforms import cv2 from utils import plt_imshow from network.Transformer import Transformer
Function
각 모델을 쉽게 테스트 할 수 있도록 Function 으로 만들었습니다.
def make_cartoon(img, size=450, style="Hayao"): model = Transformer() model.load_state_dict(torch.load(os.path.join('pretrained_model', style + '_net_G_float.pth'))) model.eval() print('{} Model loaded!'.format(style)) T = transforms.Compose([ transforms.ToPILImage(), transforms.Resize(img_size, 2), transforms.ToTensor()]) img_input = T(img).unsqueeze(0) img_input = -1 + 2 * img_input img_output = model(img_input) img_output = (img_output.squeeze().detach().numpy() + 1.) / 2. img_output = img_output.transpose([1, 2, 0]) plt_imshow([style], [img_output], figsize=(16, 10))
Load Image
img_size = 450 img_path = 'test_img/test_image.jpg' img = cv2.imread(img_path) plt_imshow(["Original"], [img])

Make Cartoon
미야자키 하야오 감독의 애니메이션 스타일입니다.
make_cartoon(img, size=450, style="Hayao")

호소다 마모루 감독의 애니메이션 스타일입니다.
make_cartoon(img, size=450, style="Hosoda")

신카이 마코토 감독의 애니메이션 스타일입니다.
make_cartoon(img, size=450, style="Shinkai")

마지막으로 Paprika 애니메이션 스타일입니다.
make_cartoon(img, size=450, style="Paprika")

조금 비슷해보이지만 다른 스타일로 잘됩니다. 아래는 추가적으로 다른 이미지에 적용한 예시입니다.
반응형
이 글은
(새창열림)
본 저작자 표시 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
Creative Commons
본 저작자 표시
'Tech & Development > AI' 카테고리의 다른 글
[ Python ] Shape Detection (0) | 2022.11.23 |
---|---|
Train Swin-Object Detection using Custom Data(without mask) (1) | 2022.08.02 |
Object Detection Architecture - 1 or 2 stage detector (0) | 2022.02.16 |
YOLOv5 - Custom Data로 학습하기 (0) | 2022.02.14 |
UGATIT (Selfie2Anime) - 사람을 애니메이션 캐릭터로 만들기 (0) | 2022.02.14 |
댓글
이 글 공유하기
다른 글
-
[ Python ] Shape Detection
[ Python ] Shape Detection
2022.11.23 -
Train Swin-Object Detection using Custom Data(without mask)
Train Swin-Object Detection using Custom Data(without mask)
2022.08.02 -
Object Detection Architecture - 1 or 2 stage detector
Object Detection Architecture - 1 or 2 stage detector
2022.02.16 -
YOLOv5 - Custom Data로 학습하기
YOLOv5 - Custom Data로 학습하기
2022.02.14
댓글을 사용할 수 없습니다.