Image Processing Using Multi-Code GAN Prior

2020. 12. 27. 01:20Deep Learning/Paper Review

 

    GAN(Generative Adversarial Networks)이 가지는 최고의 강점은 바로 주어진 데이터 분포를 모방함으로써 얻는 생성 능력입니다. 이를 이용해 이미지 생성 모델들은 눈부신 성장을 이뤘고, 2020년 현재에 이르러서는 BigGAN[각주:1]이나 PGGAN[각주:2], StyleGAN[각주:3]과 같은 모델을 통해 만들어지는 고해상도의 이미지들은 무려 $512\times512$나 $1024\times1024$까지 이르는 해상도를 가질 정도입니다. 심지어 사람의 눈으로도 가짜라는 걸 분간할 수 없을 만큼 이미지의 품질 또한 좋습니다. 위의 사진은 BigGAN을 통해 생성된 $512 \times 512$ 크기의 이미지들인데, 이를 보고 단번에 실제 사진이 아니라고 분간할 수 있는 사람은 많지 않을 것입니다.

 

 

    GAN은 이와 같은 강력한 이미지 생성 능력을 기반으로 SISR(Single Image Super-Resolution), denoising, inpainting와 같은 여러 이미지 처리 분야에도 널리 쓰이고 있습니다. 하지만 대부분의 GAN을 이용한 이미지 처리 모델들은 특정 한 가지 분야에만 특화된 손실 함수와 네트워크 구조를 이용한다는 한계점이 있습니다. 즉, 범용성이 낮다는 것입니다.

 

    이러한 한계점을 극복하고자 최근에는 미리 학습된 BigGAN이나 StyleGAN과 같은 거대한 이미지 생성 모델을 이용하는 방식이 연구되고 있습니다. 이는 GAN의 강력한 이미지 생성 능력을 활용함과 동시에 학습 또한 크게 요구하지 않는다는 장점을 가지고 있습니다. 이전 포스트에서 살펴본 PULSE[각주:4]라는 모델 또한 이러한 아이디어를 채용하여 개발된 모델이었습니다.

 

 

    PULSE는 입력된 LR 얼굴 이미지이 대응되는 HR 이미지를 StyleGAN의 잠재 공간에서 직접 탐색하여 SISR 문제를 푸는 독자적인 방법을 제시했지만, 실제로는 괜찮은 결과를 내기가 쉽지 않았습니다. PULSE가 제대로 적용되기 위해서는 한 가지 전제조건이 필요했는데, 일단 복원하려는 얼굴 이미지가 실제 잠재 공간 상에 존재해야 한다는 것입니다. 제 아무리 수만 장의 고화질 얼굴 이미지로 학습된 StyleGAN 모델이라도 만들어 낼 수 없는 얼굴은 있기 마련입니다.

 

    대표적인 예시로 위의 사진처럼 입력된 LR 이미지 속 얼굴이 학습할 때 쓰였던 데이터셋과 다른 방식으로 정렬되어 있다면 전혀 연관되지 않은 이상한 결과를 출력하게 됩니다. StyleGAN의 학습에 쓰이는 FFHQ 데이터셋에 들어있는 이미지는 모두 정수리와 턱이 위아래로 꽉 차게, 그리고 두 눈의 세로축 상의 위치가 같도록(즉, roll이 0) 정렬되어 있기 때문에 이를 만족시키는 얼굴 중에서 입력된 LR 이미지와 그나마 매칭되는 이미지를 출력하는 것입니다. 당연히 납득할 만한 결과는 아니겠지요.

 

    이처럼 생성 모델을 학습시킬 때 쓰이는 데이터셋은 대부분 한 가지 클래스의 이미지들로만 구성되어 있거나 대부분 비슷한 방식으로 정렬되어 있기 때문에 잠재 공간이 넓지 않다는 단점이 존재합니다. 이번 포스트에서 소개해드릴 논문은 이로 인해 발생하는 문제점이 단일 잠재 벡터만을 최적화의 대상으로 삼기 때문에 비롯된다고 주장하며, 이를 해결할 새로운 접근법인 mGANprior를 제시했습니다. 2020년도 CVPR에서 소개된 논문인 Image Processing Using Multi-Code GAN Prior를 통해 살펴보도록 하겠습니다.

 

Introduction

    우선 미리 학습된 생성 모델을 통해 이미지 처리 모델을 구현하기 위해서 선행되어야 하는 기술이 있습니다. 바로 GAN inversion이라 불리는 기술입니다. 기존의 생성 모델에서는 generator 네트워크 $G$가 무작위로 샘플링된 잠재 벡터 $z$를 입력으로 받아 가상의 이미지 $G(z)$를 생성했다면, GAN inversion에서는 실제 이미지 $x$와 특정 reconstruction loss $\mathcal{L}(\cdot)$에 대해 다음 조건을 만족하는 잠재 벡터 $z^*$를 출력하는 문제를 다룹니다.

 

$$z^* = \arg\min_{z \in \mathcal{Z}} \mathcal{L}(G(z), x)$$

 

    만약 $\mathcal{L}(\cdot)$을 단순한 픽셀 단위 거리라고 생각한다면 이 방정식을 푸는 것은 $G$에 입력됐을 때 $x$와 최대한 동일한 이미지가 나오도록 하는 잠재 벡터 $z^*$를 찾는 문제가 됩니다. 쉽게 말해 잠재 벡터를 입력으로 받아 이미지를 생성해내는 생성 모델을 함수 $G:z \rightarrow x$로 보면, 이름 그대로 GAN inversion은 이미지를 입력으로 받아 해당하는 잠재 벡터를 출력하는 GAN의 역함수 $G^{-1}:x \rightarrow z^*$라고 볼 수 있는 것입니다. 이 과정이 제대로 이루어졌다면 역변환된 잠재 벡터 $z^*$를 생성 모델에 다시 입력했을 때 원래의 이미지 $x$가 제대로 나와야할 것입니다.

 

    여기서 reconstruction loss를 정의하는 방식에 따라 GAN inversion 문제를 여러 가지 이미지 처리 문제와 동치로 만들 수 있습니다. 예를 들어, 흑백 이미지를 컬러 이미지로 변환하는 image colorization 문제라면 다음과 같이 이미지의 휘도에 해당하는 채널(YCbCr 컬러 공간에서 Y 채널)만을 취해 흑백 이미지를 만드는 전처리 함수 $\texttt{gray}(\cdot)$를 써서 손실 함수를 다음과 같이 새로 정의할 수 있습니다.

 

$$\mathcal{L}_{color} = \mathcal{L}(\texttt{gray}(G(z)), I_{gray})$$

 

    이를 이용한 역전파를 통해 잠재 벡터 $z$를 최적화하는 것은 흑백으로 만들었을 때 입력 흑백 이미지와 동일하게 되는 이미지를 미리 학습된 생성 모델의 잠재 공간에서 찾는 것과 같을 것입니다. 비유하자면 기존의 방식이 입력된 흑백 이미지에 픽셀 단위로 적절한 색을 입히는 방식이었다면, 생성 모델을 활용한 방식은 흑백으로 만들었을 때 입력된 흑백 이미지가 되는 그림을 수많은 그림이 들어있는 창고에서 찾는 것이라고 할 수 있겠습니다.

 

    이런 식으로 생성된 이미지와 입력된 이미지 사이의 관계를 정의하는 전처리 함수만 잘 설계한다면 생성 모델을 이용해 이미지 처리 문제를 푸는 것은 GAN inversion 문제를 푸는 것과 일치합니다. 즉, GAN inversion만 제대로 풀 수 있다면 우리는 GAN 기반의 거대한 생성 모델이 가진 강점을 온전히 살릴 수 있다는 것입니다. 애석하게도, GAN inversion은 그렇게 쉬운 문제가 아니었습니다. 경사 하강법(Gradient descent)으로 잠재 벡터를 바로 최적화하는 방식[각주:5]이나 별도의 인코더를 학습시키는 방식[각주:6]이 시도되었지만, StyleGAN과 같은 거대한 모델에 제대로 활용되기엔 역부족이었습니다.

 

    이 논문의 저자들은 여태까지 GAN inversion이 어려웠던 이유가 단일 잠재 벡터만을 최적화하려고 했기 때문이라고 분석했습니다. 하나의 잠재 벡터만을 다루게 되면 잠재 공간에 존재하지 않는 이미지는 탐색할 수 없다는 한계가 명확해지기 때문입니다. 앞에서 살펴봤던 PULSE처럼 말이죠.

 

    저자들은 이 논문이 다음과 같은 contribution이 있다고 주장했습니다.

 

  • 여러 개의 잠재 벡터와 adaptive channel importance를 활용한 새로운 GAN inversion 방법인 mGANprior(multi-code GAN prior)를 제시함

  • mGANprior를 image colorization, SISR, image inpainting 등 다양한 실제 이미지 처리 문제에 적용시킴

  • 생성 모델의 네트워크의 각 층에 있는 feature들을 결합해보며 각각 다른 층에서의 internal representation을 분석하는 방법을 제시함

 

Method

   

    

    mGANprior는 그 이름에 걸맞게 여러 개의 잠재 벡터를 사용합니다. 모델에 입력될 여러 개의 잠재 벡터 ${z_n}^N_{n=1}$를 생각해 봅시다. 이 잠재 벡터들은 일단 적절한 방식으로 합쳐져서 하나의 이미지를 표현할 수 있어야 할 것입니다. 그렇다면 그 '적절한 방법'이라는 게 대체 무엇일까요?

 

    단순히 생각하면, 다음과 같이 잠재 벡터들의 산술평균에 대응되는 이미지는 각각의 잠재 벡터들에 대응되는 이미지의 산술평균이 되도록 정의할 수 있을 것 같습니다.

 

$$G\left(\frac{1}{N}\sum_{n=1}^N z_n\right) = \frac{1}{N}\sum_{n=1}^N x_n$$

 

    하지만 실제로는 생성 모델의 잠재 공간은 선형성이 보장되어 있지 않으므로 이처럼 단순하게 생각할 수는 없습니다. 그렇다면 어떻게 해야 할까요?

 

    최근 있었던 여러 연구를 통해 GAN inversion에서 잠재 벡터보다 generator 네트워크의 중간 층에 있는 feature map에 주목하는 것이 더 효과적이라는 것이 알려졌습니다. 이러한 연구 결과를 적극 채용하여 저자들은 generator 네트워크의 '적절한' 위치에 있는 feature map들을 '적절한' 방식으로 합치는 아이디어를 제안합니다.

 

    우선 그 '적절한' 위치에 대해 먼저 이야기해봅시다. 간단하게 그 위치가 generator 네트워크 $G(\cdot)$의 $\ell$번째 층이라고 생각해보는 것입니다. 그렇다면 우리는 일단 $G(\cdot)$를 $\ell$번째 층을 기준으로 두 개의 서브 네트워크 $G_1^{(\ell)}(\cdot)$과 $G_2^{(\ell)}(\cdot)$으로 나눠서 생각해야 합니다.

 

    $G_1^{(\ell)}$에 $n$번째 잠재 벡터를 입력했을 때 $\ell$번째 layer에서 얻을 수 있는 feature map은 다음과 같이 정의할 수 있습니다.

 

$$F_n^{(\ell)} = G_1^{(\ell)}(z_n)$$

 

    이제 $F_1^{(\ell)}$부터 $F_N^{(\ell)}$까지 총 $N$개의 feature map을 합치는 방법에 대해 이야기해볼 수 있습니다. 이들의 채널 수가 $C$라고 할 때, $N$개의 벡터 $\alpha_1, \alpha_2, \cdots, \alpha_N \in \mathbb{R}^C$를 정의한 뒤 다음과 같은  weighted sum을 계산해봅시다.

 

$$\sum_{n=1}^{N} F_n^{(\ell)} \odot \alpha_n$$

 

    여기서 $\odot$은 채널 단위 곱셈을 뜻하며, $F_n^{(\ell)}$의 $i$번째 채널을 $F_{n,i}^{(\ell)}$라고,  $\alpha_n$의 $j$번째 원소를 $\alpha_{n,j}$라고 표기할 때 다음과 같은 의미를 가집니다.

 

$$F_n^{(\ell)} \odot \alpha_n = F_{n,1}^{(\ell)} \cdot \alpha_{n,1} + \cdots + F_{n,C}^{(\ell)} \cdot \alpha_{n,C}$$

 

    여기서 $\alpha_1, \cdots, \alpha_N$의 각 원소는 모두 입력된 잠재 벡터들과 함께 학습 가능한 패러미터입니다. 이들은 학습을 통해 $F_n^{(\ell)}$의 각 채널 중 어떤 채널에 더 큰 비중을 둘지를 나타내게 될 것입니다. 즉, adaptive channel importance를 적용해 각 feature map을 하나로 합치는 것입니다.

 

    이제 합쳐진 feature map을 $G$의 나머지 부분인 $G_2^{(\ell)}$에 입력함으로써 결과 이미지를 생성할 수 있습니다.

 

$$x^{inv} = G_2^{(\ell)} \left(\sum_{n=1}^{N} F_n^{(\ell)} \odot \alpha_n\right)$$

 

    이제 우리가 풀어야 할 문제를 다음과 같은 식으로 표현할 수 있습니다.

 

$$\{z_n^*\}_{n=1}^N,\{\alpha_n^*\}_{n=1}^N = \underset{\{z_n\}_{n=1}^N,\{\alpha_n\}_{n=1}^N}{\operatorname{arg min}}\mathcal{L}(x^{inv}, x)$$

 

    저자들은 GAN inversion을 위한 reconstruction loss $\mathcal{L}$을 다음과 같이 pixel-wise error와 perceptual error의 합으로 정의했습니다.

 

$$\mathcal{L}(x_1, x_2) = \lVert x_1-x_2 \rVert_2^2 + \lVert \phi(x_1) - \phi(x_2) \rVert_1$$

 

    여기서 $\phi(\cdot)$는 미리 학습된 VGG-16[각주:7] 네트워크에 이미지를 입력한 뒤 4번째 블록의 3번째 convolutional 층에서 얻을 수 있는 feature map을 의미합니다. 이를 활용하면 reconstruction loss는 두 이미지의 low-level에서의 거리(픽셀 상의 거리)와 high-level에서의 거리(feature map 상의 거리)를 모두 반영하게 됩니다.

 

    위에서 언급했듯, GAN inversion 문제를 제대로 풀 수 있다면 똑같은 방법을 실제 이미지 처리 문제에 적용할 수 있습니다. 전처리 함수만 적절하게 정의한다면 말이죠. 본 논문에서는 image colorization, SISR, 그리고 image inpainting까지 총 세 가지의 이미지 처리 분야에 대해 다루었습니다. 각각의 분야는 순서대로 다음과 같은 reconstruction loss를 최적화함으로써 수행됩니다.

 

$$\mathcal{L}_{color} = \mathcal{L} \left( \texttt{gray}(x^{inv}), I_{gray} \right)$$

$$\mathcal{L}_{SR} = \mathcal{L} \left( \texttt{down}(x^{inv}), I_{LR} \right)$$

$$\mathcal{L}_{inp} = \mathcal{L} \left( x^{inv} \circ m, I_{ori} \circ m \right)$$

 

    $\texttt{gray}(\cdot)$는 앞서 설명했듯 입력 이미지의 휘도 채널만 추출하는 전처리 함수이며, $\texttt{down}(\cdot)$은 입력 이미지를 $I_{LR}$과 동일한 해상도로 다운스케일링하는 전처리 함수입니다. 그리고 $m$은 가려진 픽셀 위치를 0, 나머지를 1로 채운 binary mask를 의미합니다.

 

Experiments (GAN inversion)

 

    우선 mGANprior를 쓰면 실제로 GAN inversion이 잘 되는지부터 짚고 넘어가야 합니다. 본 논문에서는 PGGAN과 StyleGAN을 이용해 mGANprior를 구현하였으며, 얼굴을 위해 CelebA-HQ와 FFHQ 데이터셋이, 교회 및 침실 등의 사진을 위해서 LSUN 데이터셋이 사용되었다고 합니다. 이렇게 구현된 mGANprior는 기존의 단일 잠재 벡터를 최적화하는 방식들보다 훨씬 그럴싸하게 실제 이미지를 따라할 수 있었다고 합니다.

 

 

    또한 수치상으로도 mGANprior가 기존 방식 대비 월등히 높은 PSNR과 낮은 LPIPS를 보여주는 것을 확인할 수 있었습니다. 이는 mGANprior를 통해 얻어낸 결과물이 훨씬 더 원본과 유사함과 동시에 실제 사진인 것처럼 그럴싸해 보인다는 것을 의미합니다.

 

 

    저자들은 또한 여러 가지 실험을 통해 잠재 벡터에 대해 더 자세히 분석했습니다. 우선 몇 개의 잠재 벡터를 사용하는 것이 가장 좋은지를 살펴봤습니다. 막연히 생각해보면 더 많은 잠재 벡터를 쓸 수록 계산량은 많아지지만 성능은 좋아질 것이라고 추측할 수 있겠습니다. 하지만 실제로는 20개 이상의 잠재 벡터를 쓸 때부터는 유의미한 성능 향상이 없었다고 합니다. 그래서 저자들은 20개가 최적의 개수라고 결론을 짓고, 모든 실험을 20개의 잠재 벡터를 사용하여 진행했다고 합니다.

 

    또한 네트워크에서 feature map을 합칠 지점을 정하는 것도 중요한 사항입니다. 8개의 층을 가진 PGGAN으로 실험한 결과, 더 뒤에 있는 지점을 선택할수록 더 좋은 결과가 나온다는 것이 확인되었습니다. 이는 뒷단에 있는 층일수록 이미지의 패턴이나 테두리, 색과 같은 디테일한 부분들에 대한 정보를 담고 있기 때문에 이를 선택할수록 더 좋은 품질의 결과를 낼 수 있는 것이라고 해석할 수 있습니다.

 

 

    더 나아가 각 잠재 벡터가 이미지의 어떤 부분들에 영향을 끼치는지에 대해서도 실험을 진행했습니다. 저자들은 먼저 $\alpha_n$의 원소들 중에서 0.2보다 큰 값들을 모두 0으로 설정하여 $\alpha_n'$을 만들었습니다. 이 때 $\alpha_1, \cdots, \alpha_n, \cdots, \alpha_N$을 이용할 때와 $\alpha_1, \cdots, \alpha_n', \cdots, \alpha_N$을 이용할 때 얻을 수 있는 이미지 사이의 차이를 계산해 difference map을 구하면 $n$번째 잠재 벡터에 의한 영향력이 약해지면서 이미지의 어느 부분이 가장 큰 영향을 받았는지를 확인할 수 있을 것입니다.

 

    여기서 segmentation map과 해당 difference map를 비교했을 때 가장 IoU(Intersection-over-Union)가 높게 나오는 class를 찾으면 $n$번째 잠재 벡터가 어떤 클래스와 가장 깊은 연관이 있는지도 명확하게 찾을 수 있을 것입니다. 예를 들어 LSUN Church 데이터셋으로 학습된 PGGAN에 대해서 9번째 잠재 벡터는 건물에, 14번째 잠재 벡터는 길에 큰 영향을 끼친다는 것을 알 수 있습니다.

 

 

    mGANprior가 기존의 단일 잠재 벡터를 사용하던 모델들이 가지던 문제점을 얼마나 명쾌하게 해결했는지 보여주는 실험도 있었습니다. 만약 고화질의 얼굴 이미지들로 이루어진 데이터셋으로 학습된 생성 모델이라면 침실 이미지로부터 GAN inversion을 통해 제대로 된 잠재 벡터를 뽑아내는 것은 불가능할 것입니다. 이는 위 그림의 첫 번째 열이 보여줍니다. 심지어 침실 데이터셋으로 학습했을 때도 제대로 된 결과가 나오지 않을 정도입니다.

 

    반면 mGANprior를 사용했을 때는 어떠한 데이터셋으로 학습하였던 꽤나 그럴싸하게 GAN inversion을 할 수 있었습니다. 거기다가 앞선 실험에서 확인했듯 네트워크에서 feature map을 합치는 지점을 뒤쪽 지점으로 잡을 수록 더 좋은 결과가 나온다는 것도 확인할 수 있었는데, 마지막 층을 그 지점으로 잡았을 때는 어떠한 데이터셋에 대해서도 거의 원본과 유사하게 복원이 가능했을 정도입니다.

 

Experiments (Image processing)

 

 

    mGANprior가 GAN inversion을 잘 수행한다는 것을 알았으니, 본격적으로 mGANprior를 여러 가지 이미지 처리에 적용했을 때 어떤 결과가 나오는지 살펴봅시다. 우선 image colorization에 대한 결과입니다. 기존에 쓰이던 방식들과 비교했을 때 mGANprior를 사용하여 색을 입힌 것이 더 그럴싸한 결과를 냈다는 것을 확인할 수 있었습니다.

 

 

    특히 image colorization에 특화된 기존 SOTA 모델인 Zhang et al.[각주:8]과 비교하자면, mGANprior는 GAN의 강력한 이미지 생성 능력 덕분에 하나의 범주에서만 보자면 더 좋은 성능을 보입니다. 침실 사진에서 바닥의 패턴을 살리는 것이나, 교회 사진에서 잔디밭의 색깔이 고르게 나오는 것으로 확인할 수 있을 것입니다. 하지만 일반적으로 모든 종류의 이미지에 적용할 수 있는 (c)와는 다르게 한정된 범위 내에서만 적용이 가능하다는 한계도 존재합니다. 저자들은 더 거대한 생성 모델을 더 다양한 데이터셋으로 학습시킨다면 이러한 한계마저도 극복할 수 있지 않을까 조심스럽게 추측했습니다.

 

 

    SISR에 대해서는 PULSE에서 그랬던 것처럼 사람의 얼굴 이미지에 대해 결과를 비교했습니다. GAN 기반의 방식이다보니 pixel-wise loss 기반의 방식인 RCAN[각주:9]보다 PSNR이 떨어지는 것은 어쩔 수 없다 치면, 모든 면에서 좋은 결과를 보여줬습니다. 아마 단일 잠재 벡터를 쓰는 PULSE보다도 좋은 성능을 낼 것으로 추측됩니다.

 

 

    마지막으로 image inpainting과 denoising에 대한 결과입니다. 표에서 Center Crop은 가운데의 $64 \times 64$ 영역을, Random Crop은 전체에서 80%만큼 임의의 픽셀을 지웠을 때의 결과를 나타냅니다. 마찬가지로 기존의 방식들을 정량적으로나 정성적으로나 압도하는 결과가 나온 걸 확인할 수 있었습니다.

 

 

    지금까지는 이전부터 활발하게 연구되어 온 low-level 이미지 처리 분야들에 대해 살펴봤습니다. 여기서 저자들은 semantic manipulation와 같은 high-level 분야에 대해서도 mGANprior가 좋은 성능을 낸다고 주장합니다. 이들은 mGANprior를 통해 입력된 이미지로부터 잠재 벡터를 얻은 뒤 이를 InterFaceGAN[각주:10]을 활용해 조절하여 실제 이미지 속 얼굴의 표정이나 성별, 나이, 포즈를 바꿔보는 실험을 진행했습니다. 비교 대상은 없지만, 마찬가지로 그럴싸한 결과가 나온다는 것은 확인할 수 있었습니다.

 

 

    마지막으로 colorization과 inpainting에 대해서도 어느 지점에서 feature map이 합쳐지는 것이 좋을지에 대한 실험이 진행되었습니다. 여기서 주목해야할 점은, Colorization의 경우에는 GAN inversion과 마찬가지로 더 깊은 지점에서 feature map을 합칠 수록 좋은 결과가 나왔지만 inpainting의 경우에는 중간 지점에서 합치는 게 더 좋은 결과가 나왔다는 것입니다.

 

    이에 대해 저자들은 colorization의 경우는 이미지에 포함된 의미론적인 정보보다는 단순한 픽셀값에 초점을 두기 때문에 이를 다루기 위해 상대적으로 깊은 층에서 추출한 feature map을 합치는 것이, inpainting의 경우는 빈 공간을 채우기 위해서 의미론적인 정보가 필요하기 때문에 상대적으로 얕은 layer에서 추출한 feature map을 합치는 것이 좋기 때문이라고 분석했습니다.

 

    이는 우리가 흔히 알고 있는 CNN의 개념과 일맥상통하다는 걸 확인할 수 있었습니다. 기존 CNN에서도 이미지에 가까운 쪽일수록 feature map들이 low-level 정보를 담고, 이미지에서 먼 쪽일수록 high-level 정보를 담고 있다는 사실을 기억해보면 이해하기 쉬운 실험 결과입니다.

 

Conclusion

    mGANprior는 generator 네트워크에 입력되어 중간 지점에서 feature map 수준으로 합쳐지는 여러 개의 잠재 벡터를 동시에 최적화하는 방식으로 단일 잠재 벡터를 사용한 GAN inversion이 가지는 여러 문제점들을 해결했습니다. 이를 통해 모델을 학습시킬 때 썼던 데이터셋의 범위에서 벗어나는 이미지에 대한 GAN inversion이 가능했고, 이러한 특성을 활용하여 여러 종류의 이미지 처리도 높은 수준으로 가능하게 되었습니다.

 

    이 논문이 좋았던 점은 여러 가지 실험을 통해 다양한 분석을 진행했다는 것이라고 생각합니다. 특히 여러 개의 잠재 벡터들 중 어떤 게 생성된 이미지의 어떤 부분에 영향을 끼치는지 알아보는 실험과 네트워크의 어느 지점에서 feature map들을 결합해야 좋은 결과가 나올지에 대해 분석하는 실험이 인상 깊었습니다. 

 

    한편, colorization에 관한 실험에서 언급했듯 GAN을 쓰지 않는 기존 이미지 처리 모델들에 비해서는 낮은 범용성을 보여준다는 단점이 여전히 남아있습니다. 이 문제는 정말로 더 거대한 네트워크에 더 방대한 데이터셋을 학습시킴으로써 해결될 수 있는 걸까요? 안 그래도 요즘 딥 러닝의 트렌드가 이런 식으로 가는 방향이라 더더욱 의문이 듭니다. 아니면 혹시 새로운 형태의 획기적인 모델이 등장하고 그와 관련된 연구들이 진행되면서 GAN 기반의 생성 모델을 통한 이미지 처리가 일반적인 방법이 될 수 있을까요? 여러모로 미래가 궁금한 분야입니다.

 


 

  1. Brock, Andrew, Jeff Donahue, and Karen Simonyan. "Large scale gan training for high fidelity natural image synthesis." arXiv preprint arXiv:1809.11096 (2018). [본문으로]
  2. Karras, Tero, et al. "Progressive growing of gans for improved quality, stability, and variation." arXiv preprint arXiv:1710.10196 (2017). [본문으로]
  3. Karras, Tero, Samuli Laine, and Timo Aila. "A style-based generator architecture for generative adversarial networks." Proceedings of the IEEE conference on computer vision and pattern recognition. 2019. [본문으로]
  4. Menon, Sachit, et al. "PULSE: Self-Supervised Photo Upsampling via Latent Space Exploration of Generative Models." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020. [본문으로]
  5. Ma, Fangchang, Ulas Ayaz, and Sertac Karaman. "Invertibility of convolutional generative networks from partial measurements." Advances in Neural Information Processing Systems 31 (2018): 9628-9637. [본문으로]
  6. Zhu, Jun-Yan, et al. "Generative visual manipulation on the natural image manifold." European conference on computer vision. Springer, Cham, 2016. [본문으로]
  7. Simonyan, Karen, and Andrew Zisserman. "Very deep convolutional networks for large-scale image recognition." arXiv preprint arXiv:1409.1556 (2014). [본문으로]
  8. Zhang, Richard, Phillip Isola, and Alexei A. Efros. "Colorful image colorization." European conference on computer vision. Springer, Cham, 2016. [본문으로]
  9. Zhang, Yulun, et al. "Image super-resolution using very deep residual channel attention networks." Proceedings of the European Conference on Computer Vision (ECCV). 2018. [본문으로]
  10. Shen, Yujun, et al. "InterFaceGAN: Interpreting the Disentangled Face Representation Learned by GANs." arXiv preprint arXiv:2005.09635 (2020). [본문으로]