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")
조금 비슷해보이지만 다른 스타일로 잘됩니다. 아래는 추가적으로 다른 이미지에 적용한 예시입니다.
반응형
'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