[Paper Review] AnimeGAN: A Novel Lightweight GAN for Photo Animation 논문 리뷰
업데이트:
- Paper:
AnimeGAN
: A Novel Lightweight GAN for Photo Animation (2020): paper, project, code - GAN-Zoos! (GAN 포스팅 모음집)
AnimeGAN
- light-weight GAN, Gram matrix
- unsupervised learning (using unpaired data)
- 3 loss: (1) grayscale style loss (2) grayscale adv-loss (3) color recon loss (+) edge-promoting adv-loss
Architecture
Generator
- symmetrical encoder-decoder network
- mainly composed of
the standard convolutions
,the depthwise separable convolutions
,the inverted residual blocks (IRBs)
,the upsampling and downsampling modules
.- last conv layer는
1x1 convolution kernels
- last conv layer는
Conv-Block
,DSConv
,IRB
의 구조는 Fig 2 참고- Down-Conv
- max-pooling을 사용하여 downsampling을 하면 feature 정보가 손실되는 문제가 있음
- 저자들은
Down-Conv
를 사용하여 이 문제를 해결
- Up-Conv
- feature map의 resolution을 키우는 upsampling 모듈
- 보통 Up-Conv로 stride 1/2 를 사용하는 경우가 많은데, 이렇게 하면 checkerboard artifacts가 많이 생겨서 이렇게 안했다고 함
- 8 consecutive & identical IRBs
- network의 중앙에 IRBs 모듈을 두어서 generator의 parameter를 많이 줄임
- pointwise convolution (w 512 kernels), depthwise conv (w 512 kernels), pointwise conv (w 256 kernels) 로 구성됨
Discriminator
- Generator보다 간단함
- 모든 conv는 standard conv, 각 conv에다가 spectral normalization을 적용하여 훈련을 보다 안정하게 해줌
Loss
Unpaired training dataset
- real photo domain: $S_{\text {data }}(p)={p_{i} \mid i=1, \cdots, N} \subset P$
- animation domain: $S_{d a t a}(a)={a_{i} \mid i=1, \cdots, M} \subset A$
-
gray scale: color animation image $a_i$ 에서 grayscale Gram matrix를 취해 gray scale image $x_i$ 를 만듦
\[S_{\text {data }}(x)=\{x_{i} \mid i=1, \cdots, M\} \subset X\] -
edge를 제거한 이미지
\[S_{\text {data }}(e)=\{e_{i} \mid i=1, \cdots, M\} \subset E\]- gray scale images, $S_{\text {data }}(y)$: color 정보가 포함되어있는 $S_{\text {data }}(e)$에서 color 정보를 제거하여 grayscale image를 만듦
-
Loss Function
\[L(G, D)=\omega_{a d v} L_{a d v}(G, D)+\omega_{c o n} L_{c o n}(G, D)+\omega_{g r a} L_{g r a}(G, D)+\omega_{c o l} L_{c o l}(G, D)\]- $\omega_{a d v}=300, \omega_{c o n}=1.5, \omega_{\text {rra }}=3 \text { and } \omega_{c o l}=10$
- content loss
- 생성된 이미지가 input image의 content를 유지하도록 강제하는 loss
- pre-trained VGG19를 사용
- $G(p_{i})$ : 생성된 이미지
- grayscale style loss
- 생성된 이미지의 texture나 line이 anime style이도록 강제하는 loss
- color recon loss
- 생성된 이미지와 original image의 color가 유사하도록 강제하는 loss
- RGB 색공간 대신 YUV 색공간을 사용
- luminance에 해당하는 Y channel에 대해서는 L1 loss를 사용하고
- color에 해당하는 U, V channel에 대해서는 Huber loss를 사용하여 color에서 차이가 크면 좀 더 penalty를 줌
최종 Generator Loss
\[\begin{array}{r}L(G)=\omega_{a d v} E_{p_{i} \sim S_{\text {data }}(p)}[(G(p_{i})-1)^{2}]+\omega_{c o n} L_{c o n}(G, D) \\+\omega_{g r a} L_{g r a}(G, D)+\omega_{c o l} L_{c o l}(G, D)\end{array}\]Discriminator Loss
\[\begin{array}{r}L(D)=\omega_{a d v}[E_{a_{i} \sim S_{d a t a}(a)}[(D(a_{i})-1)^{2}]+E_{p_{i} \sim S_{d a t a}(p)}[(D(G(p_{i})))^{2}]. \\.+E_{x_{i} \sim S_{\text {data }}(x)}[(D(x_{i}))^{2}]+0.1 E_{y_{j} \sim S_{\text {data }}(y)}[(D(y_{i}))^{2}]]\end{array}\]- $E_{x_{i} \sim S_{\text {data }}(x)}[(D(x_{i}))^{2}]$ : grayscale adv-loss
- $E_{y_{j} \sim S_{\text {data }}(y)}[(D(y_{i}))^{2}]$ : edge-promoting adv-loss
- 생성된 이미지가 좀 더 clear한 이미지를 생성하도록 하는 loss
- 이미지가 너무 sharp 해질까봐 loss 앞에 0.1을 붙였다고 함
Training
-
GAN 모델은 highly nonlinear하고 random으로 initilization하기 때문에 local optima에 빠지기 쉬움
⇒ CartoonGAN처럼 generator를 먼저 pre-training 한 다음에 fine tuning하는 방법을 채택
Experiments
Dataset
- real-world content data: 6656 photos
- style images
- 1792 images from the movie “The Wind Rises” (Miyazaki Hayao style)
- 1650 images from the movie “Your Name” (Makoto Shinkai)
- 1553 images from the movie “Paprika” (Kon Satoshi)
Results
모델 사이즈가 훨씬 작음
Loss Function
\[L(G, D)=\omega_{a d v} L_{a d v}(G, D)+\omega_{c o n} L_{c o n}(G, D)+\omega_{g r a} L_{g r a}(G, D)+\omega_{c o l} L_{c o l}(G, D)\]- $\omega_{a d v}=300, \omega_{c o n}=1.5, \omega_{\text {rra }}=3 \text { and } \omega_{c o l}=10$
- content loss가 너무 커버리면 생성된 이미지가 real image와 유사해지고, style loss가 너무 크면 생성된 이미지가 original photo의 content를 잃어버리게 됨
- 이 두 loss는 다른 loss들에 비해 커서 small weight를 갖도록 parameter를 조절
- color recon loss는 생성된 이미지가 input image의 loss를 따라가도록 강제하는 loss이기 때문에 이 값이 클수록 두 이미지간의 색감은 비슷해짐
- $\omega_{a d v}=300, \omega_{col}=10$ 일 때의 결과가 가장 좋음
A
: grayscale adv loss없이 실험한 결과B
: edge promoting adv-loss의 이미지로 gray scale image $S_{\text {data }}(y)$가 아닌 blurred color edge images $S_{\text {data }}(e)$를 사용-
C
: AnimeGAN 결과 -
A
와C
의 결과를 비교해보면,A
는 색감에 대한 학습이 잘 안되고 있음→ grayscale adv loss가 색감을 더 잘 학습하도록 도움
B
와C
의 결과 → grayscale image로 edge-promote adv loss를 썼을 때 edge가 더 분명하게 학습이 될 뿐만 아니라 색깔도 더 잘 학습된다.
Main Contributions ⭐️
1) the novel grayscale style loss for transforming the anime style textures and lines; 2) the novel color reconstruction loss to preserve the color of the content images; 3) the novel grayscale adversarial loss for preventing the generated images from being displayed as the grayscale images; 4) a lightweight generator using depth- wise separable convolutions and inverted residual blocks to achieve faster transfer.
댓글남기기