GAN의 성능지표가 되는 score 두 가지 비교

(요즈음은 대부분 FID, IS만 사용하는 것 같다.

이미 IS/ FID만으로 아래 세 가지 value를 담을 수 있으며, FID와 LPIPS가 겹치는 개념이라서 인듯하다.)

 

우선 GAN이 달성해야 하는 목표는 아래 세가지라고 볼 수 있다.

1. 얼마나 실제 같은 real한 이미지가 나오는지 (Quality)

2. 이미지가 다양하게 만들어지는지 (Diversity)

3. 얼마나 실제 이미지(=학습 이미지)의 분포와 비슷하게 나오는지 (Similarity)

 

 

+ IS, FID 부분은 아래 블로그를 참조했으며, 수식 및 이미지도 가져와서 사용했다.

https://jonathan-hui.medium.com/gan-how-to-measure-gan-performance-64b988c47732

 

GAN — How to measure GAN performance?

In GANs, the objective function for the generator and the discriminator usually measures how well they are doing relative to the opponent…

jonathan-hui.medium.com


IS : Inception Score

Inception 모델(Classification)에서 이미지 및 그 레이블의 편차의 다양성을 담기 위해 설계된 수치 

 

IS 설명

: Diversity란 결국 Randomness와 같은 의미로, entrophy를 통해 측정한다. 

엔트로피는 random의 정도를 표현하는 값으로,

random할수록 = 예측 불가능할 수록 = diversity 할수록 => 높은 값이 나온다. 

즉, 엔트로피에 기반한 IS 역시 diverse 할수록 높은 값이 나와야 한다.

 

: 다만, GAN 모델의 학습 방향 자체는 이와 달리  

즉 낮은 엔트로피를 갖도록 학습이 된다. (이때 y는 class label, x는 image)

 (이러한 학습 방향을 통해 이미지의 quality를 높인다.

  class label y를 잘 예측한다는 뜻은 더욱 실제와 비슷한 이미지가 나온다는 뜻)

 

+) 엔트로피에 대한 짧은 remind

: 아래 두 분포에서 y값을 가지고 x를 역추적 하기 더 어려운 것은 p2(blue)이다. 

따라서 p1보다 p2의 엔트로피가 더 높다. 

출처 : https://jonathan-hui.medium.com/gan-how-to-measure-gan-performance-64b988c47732

 

따라서 IS 는 KL divergence를 기반으로, "P(y|x)와 p(y)의 분포의 다른 정도"를 계산한다. 

 

+ KL divergence는 두 분포의 다른 정도를 표현함으로써, 그 값이 낮을 수록 두 분포가 유사하다는 뜻이다.

이 역시 엔트로피 기반으로 두 분포가 유사할 수록 엔트로피가 낮기 때문에 더 낮은 KL divergence 값이 나온다. 

 

출처 : https://jonathan-hui.medium.com/gan-how-to-measure-gan-performance-64b988c47732


FID : Frechet Inception Distance

FID 역시 inception model을 기반으로 한 수치로, inception model에서 추출한 feature간의 거리를 측정한다.

 

FID 설명

: 기존에 simmilarity를 판단하기 위해 pixel 간의 단순 거리를 측정하는 L2 loss 등이 있었다. 

다만 L1, L2 loss는 단순히 pixel 간의 값을 빼서 계산하는 값으로 실제 사람이 인지하는 두 이미지 간의 차이와는 

그 대소관계가 다르다. 

 

: 따라서, 실제 이미지 x와 생성된 결과 이미지 g를 각각 inception model에 통과시킨 후 추출한 피쳐의

평균과 공분산을 계산하여 두 분포 사이의 거리를 나타내어 계산한다. (similarity)

출처 : https://jonathan-hui.medium.com/gan-how-to-measure-gan-performance-64b988c47732

+ ) 앞의 항 : x와 g 사이의 평균의 L2 loss, 뒤의 항 : 두 분포 사이의 공분산을 구하는 diagonal 계산식

 

GAN은 학습 이미지의 분포를 더 잘 담을 수록 더 좋은 성능을 내는 것이니,

두 분포사이의 차이가 적을 수록 = FID 값이 작을 수록 더 좋은 성능이다.

 


'딥러닝 공부 > Generatives' 카테고리의 다른 글

03. Generative model 분류  (0) 2022.02.16
02. Generative model - 기본1 prior vs posterior  (0) 2022.02.15
[GAN] Intro - GAN이란?  (0) 2020.11.10

Google AI Blog: Holistic Video Scene Understanding with ViP-DeepLab (googleblog.com)

 

Holistic Video Scene Understanding with ViP-DeepLab

Posted by Siyuan Qiao, Student Researcher and Liang-Chieh Chen, Research Scientist, Google Research People are able to retrieve the visua...

ai.googleblog.com

 본 글은 위의 GoogleAI Blog에  Siyuan Qiao (Student Researcher and Liang-Chieh Chen, Research Scientist, Google Research)에 의해 게제된 ViP-DeepLab 에 관한 글을 읽고 해석 및 요약한 게시글 입니다.


  사람들은 visual information을 보고 쉽게 3D 환경을 구축해낼 수 있다. - 사람은 2D 이미지에 포함된 제한된 소스로도 물체를 찾거나, 각 객체의 사이즈를 구분하거나, 3D 장면의 레이아웃을 재건할 수 있기 때문이다. 이러한 능력은 모호한 mapping 신호를 reconstruct(재건)할 수 있는 능력으로, inverse projection problem이라고도 불린다. 자율주행과 같은 Real-World Computer Vision 응용은 이러한 3D 객체 인식 및 위치구분, 클래스(물체의 종류) 구분 등의 능력에 많이 의존한다. 이미지로 부터 3D 세상을 재건하는 이러한 능력은 크게 아래 두 가지의 computer vision task로 나뉜다.


   1. Monocular Depth Estimation : 한 장의 이미지에서 거리 정보 예측

   2. Video Panotic Segmentation : 비디오 도메인에서의 panotic segmentation (instance + semantic)

 

 기존 연구들은 이 두 가지의 task를 구분해서 보았으나, 이 두 가지를 하나의 모델로 통합하는 것은 더욱 쉽게 모델링을 전개할 수 있으며, 계산량 역시 아낄 수 있는 효과를 가져온다.

 

  이러한 동기로 CVPR 2021에 googleAI는 ViP-DeepLab: Learning Visual Perception with Depth-aware Video Panoptic Segmentation”를 제출하였다. 이 논문은 depth-aware video panoptic segmentation이라는 새로운 주제를 설정하여 앞서 말한 monocular depth estimation와 video panoptic segmentation을 해결하였다.

 

  또한, 논문은 이 새로운 task를 위해 depth-aware video panoptic quality (DVPQ)이라는 새로운 metric을 적용한 dataset을 제안하여 depth estimation과 video panoptic segmentation을 함께 평가한다. 이를 만족하기 위해, 논문은 기존 Panoptic-DeepLab에 depth 예측을 하는 network branch를 달아 확장하여 ViP-DeepLab을 만들었다. 이 모델은 이미지 평면의 각 픽셀마자 panoptic segmentation과 monocular depth estimation을 함께 수행하여 state-of-the-art의 성능을 달성했으며, 그 성능은 아래 영상에서 확인할 수 있다. 

 

출처 : Google AI Blog: Holistic Video Scene Understanding with ViP-DeepLab (googleblog.com)

더보기

이미지 설명 

 좌상단 : 입력되는 video frame

 우상단 : Video panoptic segmentation 결과

 좌하단 : 예측한 깊이

 우하단 : 복원된 3D point

 


OverView

 기존 Panoptic-DeepLab은 semantic segmentation, center prediction, center regression을 한 장의 사진(single frame)에 대해 할 수 있음에 반해, multi frame에 대해서 깊이를 예측하거나 이어지는 프레임에 대해 (한시적으로) instance ID 예측을 하는 능력은 떨어진다. ViP-DeepLab은 이러한 부가적인 예측을 두 개의 연속적인 프레임을 인풋으로 받음으로써 해결했다. 먼저, 첫 번째 프레임에서의 픽셀마다의 깊이 예측이 결과로 나오게 된다. 이에 ViP-DeepLab은 첫번째 프레임에서 결과물로 나오는 객체에 대해서만 각 프레임에서 center prediction을 수행한다. 이러한 과정을 center offset prediction이라 한다. 이러한 과정을 통해 ViP-DeepLab은 첫번째 프레임에 등장하는 모든 물체에 대해 이에 해당하는 픽셀을 그룹화하여 묶을 수 있게 된다. 이때, 첫번째 프레임에서 등장하지 않아 그룹화 되지 못한 픽셀들은 New instance로 취급되어 묶인다. 이러한 과정을 전체 비디오에 대해 수행하며 일시적인 연속 instance ID를 묶어서 panoptic prediction을 수행한다.  (정리 :  panoptic prediction이 semantic segmentation에 instance segmentaion을 합친 것과 같으므로, 기존 panoptic-DeepLab의 semantic segmentation 결과에 연속 비디오 프레임에서 얻은 instance segmenation 결과를 합쳐 Panoptic segmentation 결과를 출력하는 것. 도식화는 아래 그림 참고)

 

 

출처 : Google AI Blog: Holistic Video Scene Understanding with ViP-DeepLab (googleblog.com)

 

Results

Cityscapes-VPS, KITTI Depth Prediction,  KITTI Multi-Object Tracking and Segmentation (MOTS) 를 벤치마크로 삼아 성능을 측정함. 

 

1. Video Panoptic Quality(VPQ) 비교 - VPSnet과의 VPQ metric 비교시 5.1% 가량 성능 향상. 

출처 : Google AI Blog: Holistic Video Scene Understanding with ViP-DeepLab (googleblog.com)

2. Depth prediction 비교 - KITTI 모델과 비교 (SILog는 더 작은 수치가 더 좋음)

출처 : Google AI Blog: Holistic Video Scene Understanding with ViP-DeepLab (googleblog.com)

3. 새로운 metric 비교 - sMOTSA로는 KITTI MOTS car class에서 3등, pedestrain class에서 1등. 

출처 : Google AI Blog: Holistic Video Scene Understanding with ViP-DeepLab (googleblog.com)

4. 최종적으로, 제안한 dataset을 DVPQ metric으로 비교

출처 : Google AI Blog: Holistic Video Scene Understanding with ViP-DeepLab (googleblog.com)

 

Conclusion 

 ViP-DeepLab은 간단한 구조로도 state-of-the-art의 성능을 달성했다.  (Dual-path transformer module을 개발하여 end-to-end 구조의 panoptic segmentation을 제안한) MaX-DeepLab과 함께 ViP-DeepLab이 holistic understanding of scenes in the real world 연구 분야의 선두주자가 될 것임을 기대한다.

* Deepfake가 날이 갈수록 이슈가 되면서 학술적으로는 어떤 모델이 있는지 알아보기 위해 서베이 논문을 읽고,

관심분야만 요약 및 약간의 설명을 추가하여 정리한 글이다.

 

deepfake 기술을 이용해 합성한 사진_(출처 - https://www.youtube.com/watch?v=iDM69UEyM3w) 

 


[DeepFakes and Beyond: A Survey of Face Manipulation and Fake Detection (ArXiv, 2020)] 

: 위 논문은 2020년 1월 ArXiv에 등재된 논문으로, Deepfake와 관련된 task를 Face Manipulation이라고 명명한 후,

관련내용을 크게 7가지 항목으로 나누어 다루고 있다. 

 

0. Abstraction

1. Introduction

2. Types of Facial Manipulations

3. Entire Face Synthesis

4. Identity Swap

5. Attribute Manipulation

6. Expression Swap

7. Other Face Manipulation Directions

 

2번 항목에서 Face Manipulation의 네 종류에 대한 간략한 소개를 하고 각 3,4,5,6번 항목에서 이를 자세히 다룬다.

(본 글에서는 최대한 초보자의 입장에서 0~2번을 정리하고 후속글로 4. Identity Swap에 대한 자세한 기술을 할 예정)


0. Abstract

 공공 데이터셋의 접근성이 좋아짐과 동시에 GAN(Generative Adversarial Networks)과 같은 딥러닝 기술들이 빠르게 발전함에 따라 상당히 자연스러운 fake 컨텐츠들이 생성된다. 본 서베이 논문은 Deepfake 관련 기술을 네 가지로 나누어 그 생성과 감지 기술을 각각 조사했다. 그 네가지 항목은 아래와 같다

   

    1) Entire Face synthesis

    2) Identity Swap(DeepFakes)

    3) Attribute Manipulation

    4) Expression Swap 


1. Introduction

  - deepfakes의 어원 ?

: 우선 deepfake의 정의는 간략하게 딥러닝 기반의 기술로 한 사람의 얼굴을 다른 사람의 얼굴로 바꾸어 fake 비디오/사진을 만드는 것이다. 그 어원은, 2017reddit의 "deepfakes"라는 유저가 딥러닝 기술을 이용해서 유명 연예인의 얼굴을 포르노 영상에 합성할 수 있다고 주장하는 글이 올라와 관심을 받으면서 유저의 이름에서 비롯된 것으로 본다. 그 뒤 금융사기, 가짜 뉴스 등 여러 유해한 용도로 기술이 사용되면서 이에 대한 연구 목적의 관심 역시 증가했다. deepfakes 생성 기술이 연구 주제로서 관심을 받기 시작하면서 역으로 그 탐지기술도 주목을 받아 MFC(Media Forensics Challenge)2018, DFDC(DeepFake Detection Challenge) 등의 챌린지대회가 열렸다. 


2. Types of Facial Manipulations

Facial Manipulation은 얼굴이 바뀌는 정도 (level of manipulation)에 따라 네 가지 task로 나눌 수 있다. 

 

    1) Entire Face synthesis          - 얼굴 생성 

    2) Identity Swap(DeepFakes)    - 얼굴 교체 

    3) Attribute Manipulation        - 얼굴 속성 변경

    4) Expression Swap                - 표정 변경


 1) Entire Face synthesis [얼굴 생성]

*출처 : DeepFakes and Beyond: A Survey of Face Manipulation and Fake Detection

: 존재하지 않는 얼굴을 존재하는 것처럼 생성해내는 기술. 대표적으로 StyleGAN 과 같은 powerful한 GAN으로 생성한다. 위의 예시 사진 역시 StyleGAN을 이용하여 생성한 예시이며, 여러 장의 사람 얼굴 사진을 먼저 저차원의 벡터로 mapping한 다음 다시 고차원의 이미지로 복원하는 과정을 반복하여 학습한다. 검증 단계 (생성 단계)에서는 임의의 noise 벡터를 주어서 사람의 얼굴로 복원해낼 수 있는지를 확인한다. 


 2) Identity Swap [얼굴 교체]

*출처 : DeepFakes and Beyond: A Survey of Face Manipulation and Fake Detection

: Face Swap 이라고도 불린다. Source 얼굴과 Target 얼굴의 사진을 여러 장 가지고 Autoencoder와 같은 구조로 학습 한 후 Source 이미지의 얼굴을 Target 이미지의 얼굴로 교체하는 task이다.  전통적인 Computer graphics를 응용해서 하는 방법과, Deep Learning을 응용해서 하는 방법으로 나뉜다.  본 글 상단에 아이언맨 영상에 톰크루즈를 합성한 이미지가 이것과 같은 Faceswap의 결과물이다. 

 

(예시 : Tom Cruise as a Iron man - https://www.youtube.com/watch?v=iDM69UEyM3w)

 


 

 3) Attribute Manipulation [얼굴 속성 변경]

*출처 : DeepFakes and Beyond: A Survey of Face Manipulation and Fake Detection

: Face editing 혹은 face Retouching 이라고도 불린다. 머리 색, 피부 색, 머리 스타일, 나이, 안경착용 여부 등등 다양한 얼굴의 한 속성을 변경하는 task이다. StyleGAN2나 StarGAN등의 GAN 모델을 대표적인 예시로 들 수 있다. 엄밀히 말하자면 StyleGAN2는 source 이미지를 입력으로 받는 것이 아니라 Entire Face synthesis와 같이 존재하지 않는 얼굴을 생성하는 과정에서 latent vector(or noise vector)에 약간의 변형을 줘서 다른 속성의 얼굴을 생성하는 방식이다. 


  

4) Expression Swap [표정 변경]

*출처 : DeepFakes and Beyond: A Survey of Face Manipulation and Fake Detection

:  face reenactment라고도 불린다. Source 이미지와 Target이미지로 학습 시킨 후에 Source 이미지의 특성을 전부 유지하되, Target이 짓던 표정으로 바꾸는 task이다. Face swap과의 차이를 말하자면, Face swap은 target 인물의 생김새와 source 이미지의 표정을 합성하고 Expression swap은 source 인물의 생김새에 target 이미지의 표정을 입히는 방식이다. 대표적인 방법으로 Face2Face등이 있다.  

1. GAN

     : Generative Adversarial Network


-> Generative Adversarial Network

 

  생성한다. 무엇을 생성할까 ? 답부터 말하자면 모든 것이 될 수 있다.

대표적으로는 image classification 문제에서 정답이 아닌 이미지를 생성할 때 사용된다. 아래와 같은 GAN의 구조에서 G 가 generative, 즉 생성하는 모델인데 그 결과는 실제 데이터와 구분 짓기 위해 fake라고 한다.


 

-> Generative Adversarial Network

적대적이다.

  GAN 구조를 살펴보면 생성하는 모델인 Ganerative model과 그것을 구분해내기 위해 Discriminator model이 있다.

그 두 모델을 경찰과 위조지폐범으로 비유하는 경우가 많은데, 딥러닝에 대한 기본 지식이 있는 사람이라면 쉽게 받아들일 수 있다. 

 

  먼저 Generative 모델은 입력으로 주어지는 noise를 갖고 fake data를 만들려고 한다. 물론 초기에는 아주 형편없는 이미지가 만들어진다. 당연히 discriminator model은 이를 쉽게 fake data라고 구분해낼 수 있다. 하지만 이러한 과정을 반복하면서 Generator는 discriminator의 감시망을 피할 수 있는 data를 만드는 법을 배운다. 


  물론, discriminator도 가만히 있지는 않는다. 몇 step을 반복한 후에는 generator를 고정시키고 discriminator를 학습시켜 발전된 fake data 역시 구분할 수 있게 발전한다. 이렇듯 서로 피드백하며 학습되는 구조 덕분에 adversarial이라는 이름이 붙게 된다. 

+ Recent posts