Image Processing using Multi-Code GAN Prior

생성모델쟁이·2020년 12월 23일
12

GAN

목록 보기
7/9
post-thumbnail

작성자 : 이화여자대학교 김수현

1. GAN Inversion

GAN Inversion이란?

GAN : latent code(z) -> real image
GAN inversion : real image -> latent code(z)
=> GAN inversion의 목표는 input image를 복원할 수 있는 가장 적절한 latent code를 찾아내는 것이다.
이미지를 나타내는 적절한 latent code를 찾아내면, 이를 이용해 GAN model을 통해 이미지를 생성할 수 있다.

2. Image Processing using Multi-Code GAN Prior

paper : Image Processing Using Multi-Code GAN Prior (2020 CVPR)

Goal

  • GAN models as powerful prior to various image inversion tasks

기존의 Problems

  • Expensive training
  • 일반화 성능(Generalization)
  • Single latent code는 하나의 image를 표현하기에 한정적이다.

Solution : mGANprior

  • Pre-trained된 model을 사용한다.
  • Multiple latent codes(z) -> multiple feature maps
  • 한 개의 latent code를 사용하는 기존 선행연구의 방식들은 이미지의 정보를 전부 복원하기에 어렵다. 따라서, mGANprior는 N개의 latent code를 사용하여 target image의 sub-region을 복원할 수 있도록 한다.

Method

Multi-Code GAN Prior는 여러 개의 latent code를 적용하여, 여러 개의 feature map을 Generator의 중간 레이어에서 생성한다. 그 다음, Adaptive Channel Importance를 적용하여 Input 이미지를 복원한다.
자세한 과정은 다음과 같다.

  1. N개의 random latent code z로부터 시작한다.
  2. 각각의 z들은 Generator G1을 거쳐 feature를 형성한다.
  3. Adaptive channel importance를 channel-wise하게 곱해서, N개의 feature마다 어떤 채널에 가중치를 줄 지 결정한다. 이를 통해, 더욱 다양한 정보를 표현할 수 있게 된다.
  4. 최종적으로 형성된 N개의 feature들을 더해준 후, Generator G2를 거쳐 output을 만들어낸다.
  5. Target image와 비교하여 loss function을 통해 latent code z를 업데이트하는 과정을 반복한다.

GAN Inversion

Baseline equation :

z=argminzL(G(z),x)z^* = argmin_z\mathcal{L}(G(z),x)

Target Image x가 주어지면, GAN Inversion은 x와 가깝게 이미지를 제작할 수 있도록 적절한 latent code를 찾아 GAN의 generation process를 reversing할 수 있도록 한다.
기존의 연구들은 single latent code를 optimizing 하기 때문에 image를 잘 만들어 내는 데에 한계가 있었다. 따라서 mGANprior에서는 여러 개의 latent code를 사용하고, Adaptive channel importance를 가진 해당 intermediate feature map을 구성한다.

Feature Composition

GAN Inversion에서 가장 올바른 solution은 zn에서 제작된 이미지들을 Image Space X에 입히는 것이나, X는 linear space가 아니므로, 합성된 이미지를 linear하게 결합한다고 해서 의미론적인 이미지를 생성하기 어려우며, Input을 세부적으로 복원하기 어렵다. 따라서, mGANprior에서는 feature composition을 위하여 intermediate feature map을 사용한다. 즉, Generator가 두 개의 네트워크,

G1l,G2l{G_1}^l, {G_2}^l

로 나뉜다. 여기서 l은 feature composition을 위한 intermediate layer의 index이다.

Adaptive Channel Importance(α)

각각의 z_n이 이미지의 particular regions를 복구하여야 하기 때문에, adaptive channel importance(α)를 적용하여 object와 texture를 반영한 이미지를 복구할 수 있도록 한다.
α_n 은 adaptive channel importance로 표현되고 각각의 z_n에 대해 다른 semantic 정보를 반영하도록 도움을 준다. channel-wise multiplication이기 때문에, feature에 있는 각각의 channel에 multiplication을 취한다.

xinv=G2l(n=1N(Fnlαn))x^{inv} = G_2^{l}(\sum_{n=1}^{N}(F_n^{l}\odotα_n))

Optimization Function

  • 위에서 제시한 Equation을 adaptive channel importance, feature composition을 적용한 식으로 바꾸면 아래와 같이 변환할 수 있다.
  • Low-level과 high-level information을 알아내기 위하여 pixel-wise reconstruction error를 적용하여 Optimization 식이 아래와 같이 표현된다.

Applications

어떤 pre-trained GAN model을 사용하는지에 따라 다양한 활용이 가능하다.

Results


[Reference]

https://openaccess.thecvf.com/content_CVPR_2020/papers/Gu_Image_Processing_Using_Multi-Code_GAN_Prior_CVPR_2020_paper.pdf
https://www.youtube.com/watch?v=RCSb6OMan8Q![](https://velog.velcdn.com/images%2Ftobigs-gm1%2Fpost%2Fb144fdfa-25e2-4ce1-8d9d-27892ba3de2a%2Fimage.png)![](https://velog.velcdn.com/images%2Ftobigs-gm1%2Fpost%2F48265898-6dc7-4f7f-b332-7d494281d805%2Fimage.png)![](https://velog.velcdn.com/images%2Ftobigs-gm1%2Fpost%2F776dba22-956f-4032-b4fd-202663263ea2%2Fimage.png)![](https://velog.velcdn.com/images%2Ftobigs-gm1%2Fpost%2F57b8619c-6612-46f8-a1c7-1428a5932d06%2Fimage.png)![](https://velog.velcdn.com/images%2Ftobigs-gm1%2Fpost%2F682b34bb-7f6a-4bc8-acde-ce5370453a01%2Fimage.png)

profile
투빅스 생성모델 세미나입니다.

9개의 댓글

comment-user-thumbnail
2020년 12월 27일

투빅스 14기 한유진
오늘은 Image Processing using Multi-Code GAN Prior에 대한 주제로 김수현님께서 강의를 진행해주셨습니다.

  • GAN은 latent code에서 이미지를 생성해내는 것이 목표라면, GAN inversion은 반대로 real image에서 적절한 latent code를 구하여 이미지를 생성해내는 것이 목표입니다. 기존의 GAN은 expensive training, 일반화성능, 하나의 latent code가 이미지를 표현함에 있어서의 한정성이라는 문제 때문에 mGAN Prior가 등장하게 되었습니다.
  • pre-trained된 모델을 사용하고, 여러개의 latent codes를 사용하기 때문에 target image의 sub-region을 복원할 수 있습니다. 특징은 pre-trained된 모델의 Generator 1개를 두가지로 나누어 사용됩니다.(feature composition을 위하여 intermediate feature map을 사용) 또한 feature map에 adaptive channel importance가 곱해져서 가중치가 주어지게 됩니다. 이는 각각의 z_n에 대해 다른 시멘틱정보를 반영하도록 도움을 줍니다.
  • 이것은 training 과정이 아니라 optimization해서 a,z가 update되는 과정이기 때문에 어떤pre-trained GAN모델을 사용하는지에 따라 다양한 활용이 가능합니다.

inversion의 정확한 개념을 알 수 있었던 강의였습니다. 좋은 강의 감사합니다!

답글 달기
comment-user-thumbnail
2020년 12월 29일

투빅스 14기 김상현
이번 강의는 Image Processing Using Multi-Code GAN prior에 대한 리뷰로 투빅스 김수현님이 진행해주셨습니다.

  • GAN inversion 목표: input image를 복원할 수 있는 적절한 latent code를 찾아내는 것
  • mGANprior: 한 개의 latent code로 이미지 전부를 복원하기 어려우므로 N개의 latent code를 사용하여 target image의 sub-region을 복원한다. 방법으로는 N개의 latent code z를 각각 G1G_{1}을 통과시켜 N개의 feature를 형성한 후 α\alpha(Adaptive channel importance)를 곱하여 채널별 가중치를 준 후 G2G_{2}를 거쳐 output을 만들어 낸다.
  • GAN inversion: baseline은 zz^* = argminzargmin_{z}L(G(z),x)L(G(z), x) -> 생성된 이미지와 target 이미지의 로스를 최소로 하는 z를 찾는다.
    mGANprior에서는 위의 방법으로 xinvx^{inv}를 생성하여 L(xinv,x)L(x^{inv}, x)를 최소화하는 각각 N개의 z와 α\alpha를 찾는다.
  • Applications: 사용하는 pre-trained GAN에 따라 다양한 활용이 가능하고, 위의 PGGAN의 예시에서는 mGANprior를 이용해 좋은 성능의 super resolution을 수행한다.

GAN inversion의 개념과 mGANprior에 대해 이해할 수 있었습니다. 유익한 강의 감사합니다!

답글 달기
comment-user-thumbnail
2020년 12월 29일

투빅스 14기 김민경

  • GAN inversion의 목표는 input image를 복원할 수 있는 가장 적절한 latent code를 찾아내는 것이다.
  • 기존 GAN은 training이 어렵고, 일반화 성능이 좋지 않고, Single latent code는 하나의 image를 표현하기에 한정적이라는 문제가 존재했다. 이에 대한 해결 방안으로 mGANprior가 제안되었다.
  • mGANprior은 1. Pre-trained된 model을 사용하며 2. 여러 개의 latent code를 적용하여 여러 개의 feature map을 Generator의 중간 layer에서 생성하고 3. Adaptive Channel Importance를 적용하여 input 이미지를 복원한다. (GAN Inversion)
  • GAN Inversion에서 가장 올바른 solution은 znz_n에서 제작된 이미지들을 Image Space X에 입히는 것이지만, X의 선형성이 보장돼 있지 않으므로 feature composition을 위하여 intermediate feature map을 사용한다. 따라서 가중치를 주기 위해 Generator를 2개로 나눈다.
  • 채널별로 곱해지는 가중치인 α\alpha는 object와 texture를 반영한 이미지를 복구할 수 있도록 한다. 각각의 znz_n에 대해 다른 semantic 정보를 반영하도록 도움을 준다.
  • 기존 GAN의 ‘latent code z -> 이미지’ 방식에서 탈피하여 반대로 ‘이미지 -> 이미지를 잘 설명하는 z’를 찾아 활용하는 방식이 흥미로웠습니다. 꼼꼼하고 알찬 강의 감사합니다:)
답글 달기
comment-user-thumbnail
2020년 12월 29일

투빅스 11기 이도연
Image Processing using Multi-Code GAN Prior, GAN Inversion에 대해 다루었습니다. 좋은 강의 감사합니다!

  • GAN Inversion이란 image를 복원할 수 있는 가장 적절한 latent code를 찾아내는 것으로 이를 찾아내면 GAN model을 통해 이미지를 생성할 수 있다.
  • 기존의 expensive training, generalization의 문제를 해결하기 위해 mGANprior에서는 pre-trained 모델을 사용하고, multiple latent code z와 multiple feature maps를 사용한다.
  • N개의 random latent code z로부터 Generator G1을 거쳐 여러 feature를 형성하고, adaptive channel importance를 channel-wise하게 곱해 각각 어떤 채널에 가중치를 줄 지 결정해 다양한 정보를 표현하게 된다. 최종적으로 형성된 N개의 feature들을 더해준 후, Generator G2를 거쳐 output을 만든다. 이를 target image와 비교하여 latent code z를 업데이트 한다.
  • pre-trained GAN model에 따라 다양한 활용이 가능하다.
답글 달기
comment-user-thumbnail
2020년 12월 29일

투빅스 14기 박준영
이번 강의는Image Processing using Multi-Code GAN Prior에 관한 내용으로 투빅스 김수현님께서 진행해주셨습니다.

  • Gan inversion: Gan inversion이란 input image를 복원할 수 있는 가장 적절한 latent code를 찾아내는 것이다. 이미지를 나타내는 적절한 latent code를 찾아내면, 이를 이용한 GAN model을 통해 이미지를 생성할 수 있다.

  • Image Processing using Multi-Code GAN Prior의 목표는 다양한 image inversion을 위해 강력한 Gan모델 만들기

  • 기존의 training expensive를 해결하고 single latent code는 하나의 image를 표현하기에 한정적이기에 mGANprior으로 이를 해결

  • mGANprior은 N개의 random latent code z로부터 시작해서 각각의 Z는 generator G1을 거쳐 feature형성 이를 Adaptive channel importance를 이용하여 N개의 feature에 각각 어떤 가중치를 줄지 결정해서 다양한 정보 구현

  • 최종적으로 형성된 N개의 feature를 더해서 generator G2를 거쳐 output을 만들어 낸다. 그리고 Target image와 비교하여 loss를 통해 latnet code z 업데이트하여 target image의 sub-region 복원

  • Gan inversion in mGanprior: mGan prior에서는 여러개의 latent code를 사용하여 adaptive channel importance를 가진 해당 intermediate feature map을 구성한다.

  • Feature composition: Generator가 2개의 네트워크로 나누어 input을 세부적으로 복원

  • Adaptive Channel Importance(α): latent code가 이미지의 particular regions를 복구해야하기때문에 adaptive channel importance를 적용하여 object와 texture반영하여 이미지 복구

Gan inversion과 mGanprior에 대해 자세히 배울수 있었던 시간이었습니다. 유익한 강의 감사합니다!

답글 달기
comment-user-thumbnail
2020년 12월 29일

투빅스 13기 이예지:
이번 강의는 ‘Image Processing using Multi-Code GAN Prior’ 리뷰로, 김수현님이 진행하였습니다.

  • GAN inversion

    랜덤한 이미지를 생성하는 것이 아닌, 원하는 real 이미지를 최대한 복원할 수 있는 랜덤 벡터를 찾아내는 방법입니다.

    이를 활용하여 사용자의 요구에 따른 다양한 이미지를 생성해내는 것이 해당 논문의 목적이라고 할 수 있을 것 같습니다.

  • Image Processing using Multi-Code GAN Prior

    multiple latent codes를 활용하여 multiple feature maps을 만들어냅니다.

  • Method
    GAN Inversion: 단순히 optimization-based를 사용

    Feature composition: 합성된 이미지를 non-linear하게 결합하기 위해 intermediate feature map을 사용합니다.

    Adaptive Channel Importance: 서로 다른 의미를 가진 object를 생성해야 하기 때문에 채널별 가중결합을 활용하여 이미지를 생성해냅니다.

GAN의 expressiveness에 대해 다시 한 번 생각해볼 수 있는 강의였습니다.
좋은 강의 감사합니다 :)

답글 달기
comment-user-thumbnail
2020년 12월 30일

투빅스 14기 정재윤

오늘은 image processing using multi-code gan prior에 대한 주제로 김수현님께서 강의를 진행해주셨습니다.

  • 일반적으로 Gan은 latent code z를 넣어서 진짜와 같은 이미지를 만들어내는 것이 목표지만 Gan inversion은 이와는 정반대로 실제 이미지를 복원할 수 있는 적절한 latent code를 찾는 것이 복표입니다.

  • 하지만 real image에 맞는 single latent code를 찾아도 복원시켰을 때, 완벽히 표현해내기에는 한계가 있습니다. 이에 대한 solution으로 나온 것이 mGANprior 입니다.

  • Multiple latent code z를 G1을 통해 multiple feature maps으로 바꾸고 Adaptive Channel Importance를 적용하여 input 이미지를 복원하는 것입니다.

  • 마지막으로 어떤 pre-trained GAN model을 사용하는지에 따라 다양한 output을 만들 수 있다는 점이 굉장히 흥미로웠습니다.

    기존의 GAN과는 다르게 latent code를 구한다는 발상 자체가 굉장히 흥미로웠던 강의였습니다. 감사합니다. 😊

답글 달기
comment-user-thumbnail
2020년 12월 30일

투빅스 13기 신민정
이번 강의는 GAN Inversion에 관한 내용으로 갓수현님께서 진행해 주셨습니다.

  • GAN Inversion이란 이미지를 적절히 나타낼 수 있는 latent code를 찾는 것 입니다.
  • mGANprior란 N개의 latent code로 이미지를 복원하는 방법입니다. 기존 single code로는 하나의 image를 표현하기에는 한정적입니다.
  • mGANprior : N개의 random latent code z들은 각각 G1을 거쳐 feature map을 형성합니다. adaptive channel importance를 channel wise곱하여 채널마다 가중치를 다르게 줍니다. 이를 통해 더욱 다양한 정보를 표현할 수 있습니다. 최종적으로 형성된 N개의 feature를 더한 후 G2를 거쳐 output을 만들어냅니다. target과 비교하여 latent code z를 업데이트합니다.

GAN inversion의 개념을 알 수 있어서 좋았고, 추후 다양한 테스크에 적용해볼 수 있을 것 같습니다. 좋은 강의 감사합니다.

답글 달기
comment-user-thumbnail
2020년 12월 31일

투빅스 14기 박지은

  • GAN inversion은 input image를 복원하기 위해 적절한 latent code를 찾아내는 것입니다. 이러한 latent code를 찾아내면 GAN model을 통해 이미지를 생성할 수 있습니다. 기존의 방식인 1개의 latent code를 사용하는 방식은 이미지의 정보를 전부 복원하기 어렵기 때문에 multi-code GAN prior를 이용합니다. 이러한 multi-code GAN prior은 여러 개의 latent code를 적용하여 여러 개의 feature map을 생성합니다. 그 후, adaptive channel importance를 적용하여 input 이미지를 복원합니다.
  • GAN inversion은 target image x가 주어졌을 때 x에 제일 가까운 이미지를 만들기 위해 적절한 latent code를 찾아 GAN의 생성 과정을 거꾸로 합니다. 여기서 mGANprior을 사용하여 여러 개의 latent code를 활용하는데, adaptive channel importance까지 적용하여 Intermediate feature map을 구성합니다. 이 feature map에서 generator는 2개의 네트워크로 나뉩니다. 다음으로, 각각의 adaptive channel importance를 적용하여 object와 texture을 반영한 이미지를 복구합니다. 마지막으로 optimization을 합니다.
    GAN inverse을 통해 이미지를 생성하는 다른 방법이 있다는 것이 신기했고, 어떻게 real image에서 latent code를 구하여 생성하는지, mGANprior 등의 내용을 친절하게 다루어주셔서 이해에 도움이 되었습니다. 좋은 강의 감사드립니다!
답글 달기