0. Abstract
논문의 저자들은 real-world 이미지들을 cartoon style의 이미지로 변환하는 방법을 제시한다.
이 방법은 "learning based methods"로 최근에 painting과 같은 artistic form으로 stylize image할 수 있어 인기가 많아졌다.
그러나 이러한 기존의 방법들은 cartoonization을 위해 만족할만한 결과를 내놓지는 못했다.
그 이유는 Cartoon Style Image에서 발생한 다음 2가지의 원인이 있다.
1) Cartoon Style Image들은 unique한 특징들과 높은 수준의 simplification과 abstraction을 요구하기 때문이다.
2) Cartoon Image들은 clear edges, smooth color shading, 상대적으로 simple textures 등을 가지고 있기 때문에 기존에 사용하던 texture-descriptor-based loss function을 사용하기에는 문제가 있다.
그렇기에 저자들은 CartoonGAN(Generative Adversarial Network framework for cartoon stylization)을 제시한다.
CartoonGAN은 training을 위해 unpaired된 photos와 cartoon images를 필요로 한다.
그리고 cartoonization을 위한 두 가지의 novel loss를 제시한다.
1) Semantic Content Loss
photo와 cartoon간의 substantial style variation을 다루기 위해
VGG Network의 high-level feature map들에 sparse regularization을 가한다.
2) Edge-promoting Adversarial Loss
cartoon image의 특징인 clear edge를 보존하기 위해 사용한다.
그 후에 저자들은 initalization phase를 소개함으로써 CartoonGAN Network의 convergence를 높인다.
즉, CartoonGAN method는 기존에 존재하던 method보다 더 효율적이다.
Experiments들은 real-world photo들로부터 high-quality cartoon images를 성공적으로 generate할 수 있음을 보여준다.
즉, clear edges와 smooth shading을 통해 specific한 artist의 style과 을 follow함으로써
state-of-art method (SOTA) method를 outperform 한다.
1. Introduction
다수의 유명한 cartoon images 들은 real-world scene에 기반하여 생성되었다.
그런데 이때 cartoon image 들을 생성하는데 있어 크게 2가지의 문제가 있다.
1) Manually recreating real-world scenes
이 경우는 상당히 힘들고, 수준 높은 artistic skill을 요구한다는 단점이 있다.
high-quality cartoon을 얻기 위해 artist는 target scene의 특정 지역마다
draw every single line, shade each color 등의 작업을 수행해야 한다.
2) existing image editing software/algorithms with standard features
이는 cartoonization을 위해 만족할만한 결과물을 생성해내지 못한다는 단점이 있다.
그렇기에, 자동적으로 real-world photo들을 high-quality cartoon style image들로 변환해주는 technique이 있다면 artist들에게 매우 도움이 될 것이다.
이러한 stylizing images in an artistic manner는
non-photorealistic rendering분야에서 폭넓게 연구되었다.
1) Traditional approaches
specific style을 위한 algorithms 들을 개발했다.
다만, individual artist를 따라하는 fine-grained style을 생성하기 위해 엄청난 노력이 들어간다.
2) Learning-based transfer methods
제공된 example들을 바탕으로 image가 stylized될 수 있다.
특히, CycleGAN과 같은 모델은 unpaired (photos와 stylized images)을 이용하여 training을 하여
high-quality transfer가 가능하다.
이렇게 learning based stylization에 기반하여 여러 success들이 있었으나,
SOTA methods들은 만족할만한 quality의 cartoonized image들을 생성하지 못하는 문제가 있었다.
1) cartoon image들은 real-world photo들로부터 highly simplified & abstracted 되어있다.
2) cartoon image들은 clear edges, smooth color shading, relatively simple textures 등과 같이
artist간의 style variation에도 불구하고 공통적으로 나타나는 특징들이 존재한다.
이는 다른 형태의 artwork들과 상당히 괴리감이 있는 형태이다.
이후 논문의 저자들은 photo cartoonziation을 위한 CartoonGAN이라는 새로운 아키텍처를 제안한다.
CartoonGAN 훈련을 위해서는 (set of real-world photos, set of cartoon images)들이 필요하다.
high-quality results를 생성함과 동시에 training data를 얻기 쉽도록 하기 위해
두 개의 set of images: (real-world photos, cartoon images)간의 pairing이나 correspondence가 요구되지 않는다.
Cartoon Stylization의 목표는 content를 유지하며 photo manifold에 있는 image들을 cartoon manifold로 mapping하는 것이다.
목표를 달성하기 위해 Dedicated GAN-based architecture와 두 개의 간단하지만 효과적인 loss function을 같이 사용한다.
1) Dedicated GAN-based approach
unpaired image sets for training을 이용하여 real-world photos를 cartoon images로 mapping한다.
2) Two simple but effective loss functions
Generator: Semantic Loss w/ $l_{1}$ sparse regularization
real-world photos와 cartoon image 간의 substantial style variation을 다루기 위해 사용한다.
Discriminator: Edge-preserving Adversarial Loss
clear edge들을 preserve하기 위해 사용한다.
3) Initialization Phase
network to the target manifold의 convergence를 높이기 위해 사용한다.
2. Related Works
해당 부분은 논문을 직접 읽는 것이 더 좋을 것이라 생각한다.
3. CartoonGAN
GAN Framework는 2개의 CNN Network로 구성되어 있다.
Generator $G$: Discriminator를 속이는 output를 생성하도록 생성하도록 훈련한다.
Discriminator $D$: 주어진 Image가 real target manifold 인지 synthetic fake manifold인지 판별한다.
우리는 Mapping Function을 통해 real-world photo들을 cartoon images로 transform하는 process of learning을 design한다.
Mapping Function은 photo manifold $P$를 cartoon manifold $C$로 Mapping한다.
Mapping Function의 training data는 $S_{\text{data}}(p) = \{ p_i \mid i = 1 \ldots N \} \subseteq P$와
$S_{\text{data}}(c) = \{ c_i \mid i = 1 \ldots M \} \subseteq C$가 된다.
이때, $N, M$은 real-world photo와 cartoon image들의 개수를 의미한다.
GAN의 목적은 아래의 min-max problem을 해결하는 것이다.
$(G^*, D^*) = \arg \min_G \max_D \mathcal{L}(G, D)$
$\mathcal{L}$: Loss Function
$(G^*, D^*)$: Weights of the networks
다음 3개의 장 ($3.1, 3.2, 3.3$)에서는 아래의 내용을 설명할 예정이다.
$3.1$: CartoonGAN Network Architecture
$3.2$: Generator $G$와 Discriminator $D$에서 사용하는 두 개의 Loss Function
$3.3$: Initialization Phase와 이를 CartoonGAN에 포함시키는 과정
3.1) CartoonGAN Architecture
Generator $G$ Network는 다음과 같이 3개의 part로 구성되어 있다.
Network 뒤의 ( )는 각 Block의 개수를 의미한다.
1. Flat-Convolution(1) & Down-Convolution(2)
이 stage에서는 image를 spatially compress하고 encode한다.
유용한 Local signals들은 이 stage에서 downstream transformation을 위해 extract된다.
2. Residual Blocks(8)
Content와 Manifold Feature를 construct하기 위해 Identical Layout이 사용되었다.
3. Up-Convolution(2) & Final Convolution(1)
Output Cartoon style image들이 reconstruct된다.
Up-convolution Layer: stride $\frac {1} {2}$
Final Convolution Layer: $7 \times 7$ Kernel
$k$: Kernel size
$n$: Number of feature maps (= # of channels)
$s$: Stride of each convolutional layer
$ES$: Elementwise sum
Discriminator $D$ Network는 Generator $G$의 구조와 complementary하게 3개의 part로 구성되어 있다.
Discriminator $D$는 input image가 실제 Cartoon Image인지 아닌지 구별한다.
위의 task는 less demanding task이므로, full-image discriminator 보다는
더 적은 parameter in $D$를 보유한 simple patch-level discriminator를 사용한다.
그렇기에 Object classification task와 다르게, cartoon style discrimination은
local features of image에 의존하므로 Discriminator의 Network $D$는 shallow하게 design된다.
1. Flat Convolution(1) & Strided Convolution(2)
Reduce the resolution & classification을 위한 필수적인 local feature들을 encode한다.
2. Feature construction block(1)
Classification response를 얻기 위해 사용된다.
3. Final $3 \times 3$ Convolution Layer(1)
Classification response를 얻기 위해 사용된다.
이때, Leaky ReLU with $\alpha = 0.2$가 각 Nomalization Layer 이후에 적용된다는 특징이 있다.
3.2) Loss Function
Loss Function $\mathcal{L}(G, D)$은 2개의 part로 구성되어 있다.
$\mathcal{L}(G, D) = \mathcal{L_{adv}}(G, D) + \omega \mathcal{L_{con}}(G, D)$
$\mathcal{L_{adv}}(G, D)$: Adversarial Loss
Generator Network가 만족할만한 manifold transformation을 생성할 수 있도록 한다.
$\mathcal{L_{con}}(G, D)$: Content Loss
Cartoon stylization 동안 image content를 보존할 수 있도록 한다.
이때, 사용하는 $\omega$는 2개의 loss를 balancing 하기 위해 존재한다.
Larger $\omega$는 input photo에서 많은 content 정보를 유지하도록 한다.
이는 더 많은 detailed texture를 가진 stylized image를 출력한다.
주어진 논문에서는 $\omega = 10$의 값을 가지도록 설정하여
style transformation과 content preservation간의 균형을 맞췄다.
(1) Adversarial Loss $\mathcal{L_{adv}}(G, D)$
Adversarial Loss $\mathcal{L}(G, D)$는 Generator $G$와 Discriminator $D$에 모두 적용된다.
이는 stylized cartoonization (manifold transformation)이 Generator $G$에서 잘 적용됐는지 나타내는 척도이다.
Loss Value는 Generator가 생성한 synthesized image가 실제 cartoon image와 얼마나 비슷한지를 나타나낸다.
기존의 GAN Framework에서는 Discriminator $D$의 목적이 input image가 Generator $G$가 생성한 synthesized image인지 real target manifold인지 구별하는 것이였다.
다만 단순히 Discriminator $D$를 실제 true cartoon images들과
generated cartoon images들을 구별하도록 훈련한다고 해서
Real-world photo들을 cartoon images들로 transform 하는데 충분하지 않다.
이는 Cartoon images들이 가지는 clear edges라는 특성 때문이다.
이러한 clear edges들은 cartoon image가 가지는 중요한 특징이지만
전체 이미지에서 차지하는 비율이 매우 적다.
즉, 만약 input image가 clear edge 없이 correct shading만 있어도
전체 이미지에서 clear edge가 차지는 부분이 매우 적기에
Discriminator $D$가 이를 하여금 Generator $G$가 생성한 이미지가 아니라
real target manifold로부터 들어온 이미지라고 착각할 수가 있다.
정리하자면, clear edge가 없어도 실제 cartoon image로 판별할 수 있기에 기존의 GAN Loss와는 다르게 변형해야 한다.
이러한 문제를 해결하기 위해 training cartoon images $S_{data} \subset C$에서
$S_{data}(c)$ 의 clear edges를 제거하여 $S_{\text{data}}(e) = \{e_i \mid i = 1 \ldots M\} \subset \epsilon$의 image set을 만든다.
$C$: Cartoon manifold
$\epsilon$: Manifold of cartoon-like images without clear edges
$c_{i} \in S_{data}(c)$안의 각 이미지(Cartoon manifold 안의)마다 아래의 3-step을 통해 변환한다.
1) standard Canny edge detector를 이용하여 edge pixel들을 detect한다.
2) edge region들을 dilate 한다.
3) dilated region들에 Gaussian Smoothing을 적용한다.
위 사진에서는 cartoon image $c_{i}$와 edge들이 smoothed out된 modified version $e_{i}$ 나타낸다.
CartoonGAN에서 Discriminator $D$ Training은 각 element당 correct label을 assign 해야 한다.
$p_{k}$: photo manifold $P$안에 있는 each photo
$G(p_{k})$: Generator $G$가 real-world photo를 input으로 받아 생성한 이미지
1) $D(G(p_{k}))$: Synthesized from the Generator $G$ $(0)$ (real-world photo)
2) $D(e_{j})$: Synthesized from the Generator $G$ $(0)$ (edge-smoothed image)
cartoon images without clear edges $e_{j} \in S_{data}(e)$
3) $D(c_{i})$: Real target manifold $(1)$ (real cartoon image)
real cartoon images $c_{i} \in S_{data}(c)$
따라서 위의 3가지 element를 반영한 Adversarial Loss $\mathcal{L_{adv}}(G, D)$의 식은 아래와 같다.
$\mathcal{L}_{\text{adv}}(G, D) = \mathbb{E}_{c_i \sim S_{\text{data}}(c)}[\log D(c_i)] + \mathbb{E}_{e_j \sim S_{\text{data}}(e)}[\log (1 - D(e_j))] + \mathbb{E}_{p_k \sim S_{\text{data}}(p)}[\log (1 - D(G(p_k)))]$이다.
이를 통해 Generator $G$가 input (real-world photo)를 correct manifold로 transform할 수 있다.
(2) Content Loss $\mathcal{L_{con}}(G, D)$
이전의 Adversariasl Loss $\mathcal{L_{adv}}(G, D)$가 manifold transformation의 정확도를 높이는 것이라면
Content Loss $\mathcal{L_{con}}(G, D)$은 input photo의 semantic content를 얼마나 잘 보존하는지를 나타내는 척도이다.
CartoonGAN에서는 pre-trained된 VGGNet의 high-level feature map을 사용한다.
따라서 Content Loss의 식은 아래와 같이 작성이 가능하다.
$\mathcal{L}_{\text{con}}(G, D) = \mathbb{E}_{p_i \sim S_{\text{data}}(p)} \left[ \| VGG_l(G(p_i)) - VGG_l(p_i) \|_1 \right]$
$l$: specific VGG layer의 feature map (high-level feature map)
Semantic information을 얻기 위해서는 High-level feature map을 가져와야 하기 때문이다.
Content Loss에서는 input real-world photo $p_{i}$와 Generated cartoon image $G(p_{i})$ 간에
VGG Feature map에 $l_{1}$ sparse regularization을 적용한다.
이는 cartoon image들이 가지고 있는 특성 때문이다.
cartoon image들은 real-world photo들과 매우 다른 특성 (clear edges, smooth shading)을 가지고 있기 때문에
image content를 capture 하는 VGG Layer이라도 feature map들이 이러한 style difference에 영향을 받는다.
이러한 difference는 regional characteristic와 representation이 급격하게 바뀌는 local region에 집중한다.
따라서 VGG Layer의 Feature map에서는 real-world photo와 cartoon image들간의 차이를 잘 인식하기 때문에
위의 식과 같이 Loss를 작성할 수 있는 것이다.
$l_{1}$ sparse regularization이 standard $l_{2}$ norm보다는 위의 style difference에 더 적합하다.
이는 cartoon style에 맞춰 이미지를 생성하는데 매우 중요한 요소이다.
논문의 저자들은 VGGNet의 $conv4_4$ Layer를 활용하여 Content Loss $\mathcal{L_{con}}(G, D)$를 계산했다.
3.3) Initialization Phase
GAN model이 상당히 nonlinear하기에, random initialization을 이용한다면 쉽게
optimization에서 sub-optimal local optimum에 빠질 확률이 높다.
그렇기에 GAN Model의 convergence를 높이기 위해 새로운 Initialization phase를 제시한다.
이때 Generator $G$의 목적은 input photo의 semantic content를 유지하면서 이를 cartoon style로 reconstruct하는 것이다.
저자들은 새로운 Initialization Phase를 다음과 같이 설명한다.
Generator $G$가 input image의 content를 reconstruct하는 것으로 시작한다.
즉, 학습 초기에는 style transformation을 하지 않고 content preservation만 하는 것이다.
이 Initialization Process는
ONLY Generator $G$를 content loss $\mathcal{L_{con}}(G, D)$만을 이용하여 pre-train시킨다.
Content Loss를 이용하여 Discriminator $D$는 train 하지 않고,
Generator $G$만 train 시킨다.
위 사진에서 논문의 저자들은 initialization training phase를 10 epoch 정도 반복하고 나서
reasonable reconstruction을 보여준다고 주장한다.
그렇기에 이러한 simple initialization은 CartoonGAN이 좋은 configuration으로 fast converge할 수 있도록 한다.
4. Experiments
논문의 저자들은 CartoonGAN을 PyTorch와 Lua Framework을 이용하여 구현했다.
NVIDIA Titan Xp GPU에서 모든 experiment들이 실행됐다.
CartoonGAN은 개별 artist의 data를 사용하여 training을 진행해도 high-quality cartoon stylization을 얻을 수 있다.
CartoonGAN의 훈련 특징 상 paired image를 요구하지 않기에 효과적으로 훈련할 수 있다.
아래의 사진은 CartoonGAN을 이용하여 서로 다른 artistic style을 생성한 예시이다.
다음에 설명할 3개의 장($4.1, 4.2, 4.3$)에서는 아래의 내용을 담고 있다.
$4.1$: Collecting training and test data
$4.2$: Comparision b/w SOTA and CartoonGAN
$4.3$: Roles of component in Loss Function
4.1) Data
Training Data
- real-world photos
- cartoon images
Test Data
- only real-world photos
모든 training image들은 $256 \times 256$으로 resize되고 crop 된다.
Real-World Photos: $6,153$ photos 들이 Flickr에서 다운로드 되었고,
이 중 $5,402$개의 photo들은 training, 그 외의 image들은 test에 사용되었다.
Cartoon Images:
Real-World Photo로부터 Cartoon Image를 생성할 때
different artists들은 different style을 가진다.
그렇기에 동일한 style의 cartoon image의 set을 획득하기 위해서는
같은 artist가 그린 cartoon film의 key frame을 사용한다.
논문에서 사용한 $4,573$, 그리고 $4,212$개의 cartoon image들은
각각 Makoto Shinka, Mamoru Hosoda의 style을 따른다.
또한 $3,617$, 그리고 $2,302$개의 cartoon image들은
각각 영화 "Spirited Away"(Miyazaki Hayao), "Paprika" 의 style을 따른다.
4.2) Comparison with state of art
해당 장에서는 CartoonGAN을 CycleGAN과 NST와 비교했다.
해당 비교 부분은 상세하게 나열하는 것보다 본인이 직접 읽고 해석하는 편이 더 좋을 것이다.
4.3) Roles of components in loss function
논문의 저자들은 CartoonGAN의 각 part의 역할을 확인하기 위해 ablation experiment를 진행했다.
ablation experiment: 제거 실험
아이디어를 제거해 봄으로써 제안한 방법이 어떻게 성능이나 문제에 해결에 효과를 주는지를 확인하는 실험
실험의 결과는 CartoonGAN에서 각 component가 중요한 역할을 하는 것을 의미한다.
저자들은 총 3개의 component를 가지고 ablation experiment를 진행했다.
1) Initialization Phase:
이는 Generator $G$가 reasonable manifold로 빠르게 converge할 수 있도록 도와준다.
Initalization 없이는 style이 expectation과는 거리가 먼 것을 알 수 있다.
2) $l_{1}$ sparse regularization (Content Loss):
suitable VGG Layer가 있어도 cartoon image나 input의 feature map에 있는
large and often localized difference들이 massive style difference를 처리하기 위해 필요하다.
이때 $l_{1}$ sparse regularization을 high-level VGG feature map에 적용함으로써
cartoon image와 photo간의 substantial style difference를 다뤄 content preservation이 잘 이뤄지도록 한다.
3) Elaborately designed Edge Loss (Adversarial Loss):
Generator $G$가 clear edge를 잘 design하여 더 높은 품질의 cartoon style image를 생성하도록 한다.
5. Conclusion
해당 논문에서는 CartoonGAN이라는 real-world photo를 high-quality cartoon style image로 변환해주는
Generative Adversarial Network (GAN)를 제안한다.
위의 목적을 달성하기 위해 저자들은 3개의 내용을 제시한다.
1) Adversarial Loss
novel edge-promoting adversarial loss for clear edges
2) Content Loss
$l_{1}$ sparse regularization of VGG Layer high-level feature maps
이는 smooth shading을 위한 충분한 flexibility를 제공한다.
3) Initialization Phase
Initialization Phase를 이용하여 GAN Network의 Convergence를 돕는다.
실험들은 CartoonGAN이 real-world scene들을 cartoon-style image들로
high-quality와 high-efficiency를 유지하면서 변환할 수 있으며, SOTA method들을 능가하는 것을 보여준다.