Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

바닥부터 시작하는 개발 공부

[딥러닝]GAN 평가하기(1): 어떻게 GAN을 평가해야 할까? 본문

딥러닝/Computer vision

[딥러닝]GAN 평가하기(1): 어떻게 GAN을 평가해야 할까?

Im_light.J 2023. 2. 22. 04:14
728x90

Build Better Generative Adversarial Networks week1

 

coursera의 GAN 강의 시리즈의 Chapter2의 첫번째 주차의 강의입니다 

https://www.coursera.org/learn/build-better-generative-adversarial-networks-gans/home/week/1

 

Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera

Learn online and earn valuable credentials from top universities like Yale, Michigan, Stanford, and leading companies like Google and IBM. Join Coursera for free and transform your career with degrees, certificates, Specializations, & MOOCs in data science

www.coursera.org

 

학습목표 


이번 주차의 타이틀은 Evaluation of GANS입니다.   

-> GAN 모델을 평가를 하는 법을 배워보자 라고 할 수 있을 거 같습니다 

 

1. 다양한 metric과 각각의 장점/단점

2.GAN 평가에서 feature embedding을 사용하는 이유 

3. Fréchet Inception Distance (FID)와Inception Score 통해 GAN을 평가하기

 

 

 

왜 GAN 모델은 평가가 힘들까?


 기존 다른 모델들은 상대적으로 평가히기 쉬웠습니다. 

classifier를 예로 들어보겠습니다. test image를 분류기에 넣고

정확한 label로 예측하는지 평가하면 되는 문제였습니다.

 

그러니까 맞았다!!! or 틀렸다!! 로 명확하게 나눌 수 있는 문제였습니다.

 

 

그런데 GAN에서는 조금 복잡합니다 

 

학습이 완료된 GAN은 noise vector를 Generator에 넣고 이미지를 생성합니다.

그런데 결과로 나온 이미지는 이게 잘 나온건지 어떻게 구분해야할까요? 

 

위의 사진을 보겠습니다. 개의 이미지를 언뜻 보면 잘 나온것처럼 보일 수 도 있습니다. 

그러나 사진을 자세히 뜯어보면 머리의 개수도 이상하고, 다리 위치 등등 왠지

기괴한 모습의 사진이 나왔습니다.

 

물론 사람의 눈으로 보면 어느정도 판단이 가능합니다. 

그런데 그 기준이 뭘까요? 그렇다면 저 이미지는 개랑 얼마나 유사한걸까요? 

굉장히 어려운  부분입니다. 

 

 

Fidelity and Diversity 


하지만 당연하게도 어렵지만 좋은 모델을 만들기 위해서는 "평가 기준"이 반드시 필요합니다 

이 강의에서는 이를 위해서 두 가지 keyword를 제시합니다 

바로 Fidelitydiversity입니다 

 

첫번째로 Fidelity입니다. Fidelity는 생성된 이미지의 퀄리티를 의미합니다. 당연하게도 생성모델은 목적에 맞게 

원하는 이미지를 "잘" 생성할 수 있어야합니다. 위의 예시처럼 사람을 생성하는 모델이라면

그럴듯한 사람을 생성할 수 있어야합니다 

 

두번째는 diversity입니다. 생성된 이미지의 다양성을 의미합니다.  생성모델에게는 정확도만큼 중요한 부분입니다.

이미지를 계속 생성해도 늘 비슷한 이미지가 나온다면 좋은 모델이라고 하기 힘들 것 같습니다. 

개를 생성하는 모델이라면 늘 비슷한 리트리버만 생성하는게 아니라 리트리버, 불독, 코커스파니엘 등 다양한 종류를

생성 가능해야합니다 

 

여기까지 Fidelity와 diversity에 대해 간략히 알아보았습니다. 그러나 아직까지도 의문이 생깁니다. 

"정확하고 다양하게 이미지를 뽑아내는게 좋은데 그럼 어떻게 평가할건데?" 

 

Pixel Distance 


조금 무식한 방법이지만 단순하게 전체 pixel을 비교하는 방식입니다. 

Real, Fake 사이의 각각의 pixel 값의 차이를 전부 비교해보는 방식입니다. 

각각의 pixel을 전부 대조해보는 것이니 언뜻 보면 굉장히 정확해 보일 수 있습니다

 

그런데 이 방법에는 큰 문제가 있습니다. 

 

다음과 같은 커다란 원본 이미지 하나를 생각해보겠습니다. 

이 이미지의 두 부분을 잘라서 위의 방식으로 pixel distance를 계산해본다고 하겠습니다. 

 

안타깝게도 두 이미지는 pixel 값이 일치하는게 하나도 없습니다.

인간이 육안으로 본다면 굉장히 비슷할텐데도 말이죠

(물론 위의 예시처럼 3x3이라면 눈으로 봐도 다를 거 같지만 실제로는 좀 더 큰 이미지를 생각해보겠습니다) 

하여간 pixel distance는 굉장히 큰 값을 가지게 됩니다. 그렇기 때문에 좀 더 적당한 다른 방식이 필요할 거 같습니다 

 

Feature Distance 


위에서 pixel distance는 굉장히 단순하지만 정확하다고 보기는 좀 어려웠습니다. 

이번에는 새로운 방식을 사용해보겠습니다 바로 Feature distance입니다.

Feature  distance는 말 그대로 얼마나 동일한 feature을 가지는지 비교하는 방식입니다. 

 

pixel보다 훨씬 더 고차원적인 정보를 활용해서 두 이미지를 비교합니다. 

두 이미지의 Feature extracting을 통해 각각의 Features를 획득했습니다.

이를 통해 눈 갯수는 동일한지, 코 , 귀 등등을 비교해서 얼마나 비슷한지 판단할 수 있습니다. 

물론  Feature를 먼저 추출해야한다는 단점이 존재하지만

pixel을 비교하는 것보다 더 합리적인 결론을 도출할 수 있을것입니다 

 

Feature extractor


Feature를 추출하려면 이걸 추출하기 위한 방법이 필요할 것입니다. 

그런데 우리는 이미 이런 역활을 하는 모델을 알고 있습니다. 바로 classifier입니다. 

classifier는 주어진 이미지의 class를 분류하는 역활을 합니다. 

분류를 수행하려면 이미지의 특징을 파악해야할 필요가 있습니다. 

data를 통해서 모델을 학습시키면 classifer는 이미지가 가지고 있는 feature 추출할 수 있도록 학습되게 됩니다. 

 

그러나 classifier 모델의 전체가 feature extracting을 위해서 학습 되지는 않습니다. 

일반적으로 분류기의 head에 해당하는 FC-layer는 앞에서 추출된 특징들을 통해서

class를 분류하는 역활을 수행합니다. 

 

그렇기 때문에 특징 추출을 위해서는 head(FC-layer)를 제외한 모델의 앞 부분만을 사용합니다. 

여기서 모델을 어디까지 사용할지가 또 갈리는데, 일반적으로는 마지막 Pooling layer까지 사용한다고 합니다

조금 더 앞의 layer를 사용한다면 image의 더 기초적인 feature를 추출할 수 있습니다. 

 

feature extractor로 사용할 분류기는 당연하게도 거대 dataset으로 학습된 쪽을 선택하는게 좋습니다. 

대표적인 이미지 데이터셋 중 하나인 IMAGENET은 1400만장 이상의 이미지와 2만개가 넘는

카테고리를 가지고 있습니다. 

 

 

728x90

'딥러닝 > Computer vision' 카테고리의 다른 글

[딥러닝]GAN의 단점은 뭘까?  (0) 2023.02.22
[Computer Vision]Cutmix Augmentation  (0) 2023.01.27
[Computer vision] Auto albumention(1)  (0) 2023.01.14
Comments