티스토리 뷰

AI,ML,DL/GAN

StyleGAN 어때? - 01 (FID와 GAN)

brainbow 2022. 6. 21. 15:09

자꾸 핵심을 잊을 때가 많아서 개인적으로 스토리를 만들어서 적어보는 시리즈입니다.

GAN 어때 시리즈 - StyleGAN

StyleGAN2를 이용한 이모티콘 생성 프로젝트를(https://github.com/GAN-ji) 끝낸 이후로 관련 내용들이 상당히 어렵고 개인적으로 정리가 필요해서 시작하는 시리즈입니다. 다시 공부하면서 제가 기억하기 좋게, 설명하기 좋은 방향으로 적다보니 뇌피셜이 많을 수 있습니다. 잘못된 부분을 잡아주시면 오히려 감사드립니다.

 

Pixel 비교보다는 Feature 비교

  GAN으로 생성된 이미지를 비교할 때 어떻게 비교하면 좋을지에 대한 고민은 현재 진행형입니다. 컴퓨터는 보통 이미지를 RGB의 채널들과 0~255의 픽셀로서 인식하니까 "Pixel로 비교해보면 어떨까?" 라는 생각이 드는데, 사실 GAN의 생성 이미지 비교는 이와 목적이 맞지 않습니다. 일반적으로 진짜 같지만 다른 이미지를 생성하려는 GAN의 목적과는 다르게 픽셀 비교는 완전히 같음을 비교하게 되니까요.

 

  그럼... 특징을 추출하여 비교해보면 괜찮겠다는 아이디어가 나옵니다. 픽셀보다 더 높은 수준의 정보를 보는 것이죠. 마치 사람이 두 장의 강아지 사진을 비교할 때, 눈이 두 개인지, 털은 어떤지, 코는 무슨 색인지 그리고 몇 마린지를 보고 비교하는 것과 비슷한 느낌으로 평가를 해보면 확실히 좋은 평가가 이뤄질 것 같습니다.

 

Frechat Inception Distance

Frechet Distance

  Frechet Distance는 두 곡선 사이의 거리를 계산하는 방법으로 위 사진처럼 강아지와 산책을 할 때(파란선 : 강아지, 주황선 : 사람) 필요한 최소 끈 길이입니다. 참고로 각자의 속도로 가되 뒤로 가는 경우는 생각하지 않는 모든 경우만을 고려하고 이때 필요한 최소의 끈 길이는 얼마인지를 구하면 그것이 frechet distance가 됩니다.

 

  분포 사이의 Frechet 거리를 구할 수도 있는데(a.k.a. 2-Wasserstein distance), 아래와 같은 식은 L2-norm 식의 거리 개념과 같다고 생각해도 될 것 같습니다.  그래서 이 식을 다변량의 정규분포에서도 적용한다고 했을 때 이를 일반화하게 되면 두번째의 식처럼 표현이 되는 것이고, 이게 바로 FID score입니다. 식에서 C로 표현되는 부분들은 covariance matrix들을 뜻하고, 이 공분산 행렬의 형태에 의해 필요한 성분은 분산값인 대각선의 성분들 뿐이다(나머지 요소들은 공분산). 그래서  대각선 요소의 합을 뜻하는 Tr(=trace)이 들어가며 이는 원래 보았던 단변량에서의 식과 같은 것을 의미하게 됩니다.

단변량의 정규 분포 간의 Frechet 거리
                               definition of FID                                                                                               Covariance Matrix

  FID는 이름에서 알 수 있듯이 Inception V3라는 네트워크를 이용하여 거리를 계산합니다. 마지막 pool레이어에서 뽑아낸 2048개짜리 feature vector를 진짜와 가짜에 대해서 뽑아내고, 이 벡터들의 feature-wise 평균과 분산을 구해 FID 공식을 통해 score를 산출합니다. score는 거리를 잰 값이기 때문에 음수일 수 없고 0에 가까울수록 진짜 이미지처럼 보입니다.

 

  하지만 FID도 단점들이 존재합니다. 예를 들어, pre-trained 된 Inception 모델을 이용하므로 내가 비교하려는 이미지와 도메인 차이로 feature들을 잡아내지 못 할 수도 있습니다. 이외에도 샘플 크기에 영향을 받아 클수록 FID가 낮게 나오고 동시에 큰 샘플에서는 실행 속도가 무척 느립니다. 마지막으로 이미지의 분포가 일반적으로 정규분포를 따르지 않는데, 우리는 분포가 다변량 정규 분포임을 가정하고 이미지에 존재하는 평균, 공분산 같은 제한된 통계치만을 사용합니다.

 

참고 : https://nbviewer.org/github/junji64/GAN/blob/main/C2W1/C2W1%20Evaluation%20of%20GANs.ipynb

 

 

  FID 부터 설명을 진행한 이유가 있는데, 우선 GAN은 그럴듯한 이미지를 만드는 것이 목적입니다. 그럴듯한 이미지는 수학적으로 실제 데이터의 분포가 있고 그 분포랑 얼추 비슷한 이미지를 생성해낸다면 그것이 진짜와 구분하기 힘든 그럴듯한 이미지일 겁니다. FID score도 진짜와 가짜의 분포의 거리를 통해 점수를 내는 방식이죠. 그래서 GAN은 실제 데이터의 분포 학습을 통해서 있을 법 하지만 새로운 이미지를 만들어낸다는 점을 강조하고 싶었습니다. 

 

'AI,ML,DL > GAN' 카테고리의 다른 글

StyleGAN 어때? - 02 (StyleGAN, WGAN-GP, PPL)  (0) 2022.06.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함