본문 바로가기

Upstage AI Lab 2기

Upstage AI Lab 2기 [Day095] CV - Generation

Upstage AI Lab 2기
2024년 4월 29일 (월) Day_095 - 4월 30일 (화) Day_096

더보기

2024년 4월 29일 (월) Day_095

오늘의 todo

  • [ ] 4/29 월, 4/30 화 강의 수강
    • [ o ] 생성 모델 평가 지표의 필요성
    • [ o ] 생성 모델의 평가 지표 (IS & FID)
    • [ o ] 생성 모델의 평가 지표 (정밀도 & 재현율)
    • [ o ] 생성 모델의 평가 지표 (조건부 생성 모델)
    • [ o ] 적대적 생성 신경망
    • [ o ] 조건부 생성 모델
    • [ -> ] 적대적 생성 신경망 실습
    • [ o ] 조건부 생성 모델을 활용한 다양한 영상 조작
    • [ ] Pix2Pix와 CycleGAN 실습
  • [ o ] 생성 모델 평가 지표 강의 내용 정리
  • [ -> ] 적대적 생성 신경망 강의 내용 정리
  • [ o ] 퀴즈 2
  • [ o ] 퀴즈 4
  • [ o ] 코드 필사

2024년 4월 30일 (화) Day_096

  • [ o ] 코드 필사
  • [  ] VAE 실습 강의 수강
  • [  ] 미션 중 실행
  • [  ] 산책
  • [  ] chapter3-VAE 실습 내용 정리

 

 

 


CH 2. 생성 모델의 평가 지표

Part 1. 생성 모델 평가 지표의 필요성

 

판별모델과 생성모델의 평가 지표의 차이

 

판별모델은 정답(Ground Truth)이 존재, 정답과 모델의 예측 비교로 성능 평가

- Classification : 정확도, 정밀도(Precision = (TP)/(TP+FP)), 재현율(Recall = (TP)/(TP+FN)), F1-score

- Regression : MSE, MAE, R-squared, 상관계수

 

생성모델의 평가가 어려운 이유

- 비교할 정답이 존재 x (훈련데이터를 정답으로 쓸 수 없음)

- 사람이 평가 시 : 주관성과 전문성의 문제

∴ 생성 모델의 평가 지표를 잘 정의해야 함 - Fidelity & Diversity

 

생성모델의 평가 지표

1. IS(Inception Score)

2. FID(Frechet Inception Distance)

3. Improved Precision & Recall 개선된 정밀도, 재현율

4. Conditional Accuracy 조건부 정확도

5. LPIPS (Learned Perceptual Image Patch Similarity)

6. CLIP-score

 

Fidelity & Diversity

 

 

part2. 생성 모델의 평가 지표 (IS & FID)

잘 학습된 신경망 모델로 특징을 추출하여 추출된 특징 간 비교 가능

pretrain neural network가 필요함!

 

IS (Inception Score) : Inception v3를 분류기로 이용. Sharpness(S) & Diversity(D)를 평가

entropy 개념에 대한 이해가 필요

entropy가 낮을 수록 높은 Sharpness(S)

Diversity(D) : uniform distribution에 가까운 분포가 나온다면 - marginal entropy가 높게 나옴

IS = Sharpness(S) x Diversity(D) -> 두 확률 분포의 KL-Divergence를 계산하는 것과 동

확률이 필요 -> pretrained classifier를 사용

한계점 :

1. 확률을 활용하기 때문에 확률 계산이 안 되는 데이터셋에 대해서는 적용할 수 없음

예) ImageNet으로 pretrained -> ImageNet에는 사람 얼굴 사진이 없어서 이에 대해 적용할 수 없음

2. 품질이 높은 일부 샘플만 확대 재생산 하는 것으로도 점수가 높게 나옴

3. adversarial attack 등에 취약함

사람의 직관과 다른 결과를 내놓음

 

FID(Frechet Inception Distance)

확률분포가 아닌 특징 벡터 (feature vector)를 이용함

거리 기반, 낮을 수록 좋은 지표

사람의 직관과 비슷함

 

생성 데이터 뿐만 아니라 학습 데이터도 활용

충분한 수의 학습데이터와 생성데이터의 특징을 추출하면 가우시안 분포를 따른다는 선행연구를 기반으로 함.

특징들의 mean, var 측정, 이를 기반으로 FID 측정

 

T : real dataset

G : generated dataset

 

μ : 특징 벡터의 평균 (Mean)

Σ : 특징 벡터의 공분산 (Covariance)

Tr : 대각 성분의 합 (Trace)

 

μT와 μG 의 L2 distance 

variance의 trace 계산

 

한계점 : IS 대비 데이터셋의 제약이 없음

but Fidelity와 Diversity를 분리하여 표현할 수 없음

즉, Fidelity가 높은 모델인지, Diversity가 높은 모델인지, 균형 잡힌 모델인지 알 수 없음

 

 

요약

IS (Inception Score) : ImageNet pretrained classifier를 활용

- 선명하면 특정 클래스로 분류될 확률이 높음

- 다양하면 각 클래스에 고르게 분포

- Sharpness(S) & Diversity(D) 모두 고려하지만 ImageNet과 다른 데이터셋의 경우 측정이 어려움

- noise 같은 이미지로도 높은 점수를 만들 수 있음

 

FID(Frechet Inception Distance) : ImageNet pretrained feature를 활용, 특징 분포간 거리를 측정

- Fidelity와 Diversity 모두 고려, ImageNet 아니어도 평가가능, but Fidelity와 Diversity 분리 어려움.

 

 

Part 3. 생성 모델의 평가 지표 (정밀도 Precision & 재현율 Recall)

Fidelity와 Diversity의 중요도가 다른 문제 상황이 있을 수 있음

∴ Fidelity와 Diversity 별도 측정하는 지표 필요

Improved Precision and Recall Metric for Assessing Generative Models 논문 중

 

(정밀도 Precision & 재현율 Recall)

생성모델에 적용

Precision : 생성된 데이터셋을 기준으로, 실제 데이터와 유사한 비율

Recall : 실제 데이터셋을 기준으로, 생성데이터가 생성한 데이터의 비율

 

 

 

 

Precision & Recall -> 분포의 겹치는 정도를 계산해야 함.

겹친다는 것은 무엇이고 어떻게 계산 할 수 있는지

근방 (Close to)을 정의 : 

Improved Precision and Recall Metric for Assessing Generative Models 논문 중

 

[Generation] (2-3) 생성 모델의 평가 지표 (정밀도와 재현율) 강의 자료 중

Improved Precision

1. 실제 데이터셋을 가지고 "근방"을 측정

2. "근방"의 범위 안에 들어온 데이터 셋의 비율로 Improved Precision 정의

 

Improved Recall 

1. 생성된 데이터셋을 가지고 "근방"을 측정

2. 생성된 데이터셋 내의 실제 데이터의 비율로 Improved Recall 정의

 

한계점 :

1. 아웃라이어에 민감하게 반응

2. 실제 데이터와 생성된 데이터의 분포가 동일하더라도 샘플링에 따라 점수가 낮을 수 있음

 

강건성 보완 : Density & Coverage (but 여전히 Improved Precision and Recall을 많이 사용하고 있음)

이상치에 상대적으로 덜 민감

Density : 반경의 합집합이 아닌 가중 합집합으로 계산

(이상치에 민감한 precision에 대한 대응)

Coverage : 생성된 데이터에 대해 매번 계산하는 것이 아니라, 실제 데이터셋으로 미리 계산한 뒤 사용

안정적이고 계산량 감소

(recall 에 대한 대응)

 

요약

Improved Precision and Recall 한계점

매개변수에 민감함 : 몇번째 인접 데이터를 기준으로 반지름 k를 정의하느냐, 실제 데이터셋의 크기 M, 생성 데이터 셋의 크기 N

학습 과정 중 일부 클래스에 대해 학습이 되지 않아도 이에 대해 덜 민감하게 반응함.

계산량이 많음 : 매 계산마다 생성된 매니폴드를 알아야 함. 반지름 k 이내의 데이터들에 대해 모두 계산해야함.

 

Precision and Recall 간 trade-off가 있음.

 

 

Part 4. 생성 모델의 평가 지표 (조건부 생성 모델)

조건부 생성 모델과 일반 생성 모델의 차이

- 일반 생성 모델 : 조건 없이 데이터셋의 분포p(X)를 추정, 생성된 데이터셋을 제어할 수 없음.

- 조건부 생성 모델 : 주어진 레이블 또는 조건에 맞게 p(X|Y)를 학습, 특정 조건을 만족하는 데이터를 생성 제어 가능

 

조건부 생성 모델의 평가

- IS, FID, Precision and Recall 는 조건부 생성을 고려하지 않음. -> 조건에 맞는지를 판단하는 기준이 포함되지 않음

- 조건을 고려한 지표가 필요함 -> 분류 정확도 기반 평가 지표

 

분류 정확도 기반 평가 지표

1. Intra FID

FID를 클래스 별로 계산 후 평균

 

2. pretrained classifier로 생성 데이터의 class를 추측하여 정확도 계산

분류기 사전 학습 -> 새로운 데이터 생성 -> 생성 데이터를 사전학습 분류기에 인풋, 정확도 측정

한계점 : 사전훈련된 분류기에 크게 의존, 조건에 맞지 않더라도 threshold만 넘으면 됨, diversity 측정 불가

 

3. CAS (Classification Accuracy Score)

pretrained classifier의 정확도와 반대 과정

생성 모델을 학습 (조건과 데이터의 pair가 생김) -> 분류기 학습(-> supervised learning) -> 테스트 셋에 대한 정확도 측정

but 분류기를 학습해야한다는 사실은 변하지 않음, 생성 모델마다 분류기를 학습해야 함

 

4. LPIPS (Learned Perceptual Image Patch Similarity)

모델 특징 비교를 통한 영상간 유사도 측정

-> feature space에서의 similarity 측정

-> 적절히 활용하면 다양성을 평가하는 지표로 만들 수 있음 (원본과의 유사도 ↓ ≒ 생성 데이터의 다양성 ↑)

 

5. CLIP score

CLIP :

given sentence -> text encoder -> extracted feature of text

given image -> image encoder -> extracted feature of image

extracted feature of text 와 extracted feature of image 유사도가 높아지는 방향으로 학습

즉, text와 image의 유사도를 측정하는 모델이 됨

 


CH 3. 오토 인코더와 변분 오토 인코더

part1. 오토 인코더의 이해

 

part2. 변분 오토 인코더의 이해

 

part3. 오토 인코더 실습

 

part4. 변분 오토 인코더 실습

 

 

 

 

 

 

 

 

part5. 벡터 양자화 변분 오토 인코더의 이해

 

 

 

 

 


CH 4. 적대적 생성 신경망 (GAN)

part1. 적대적 생성 신경망

GAN (Generative Adversarial Networks, GANs)

Yann LeCun 曰 : "GANs are the most interesting idea in the last 10 years in ML"

VAE와 GAN의 차이:

VAE : 입력 분포를 근사하는 과정에서 regularization을 주어 데이터 생성을 학습

GANs : 분포를 직접 추정하기 보다는 한 모델이 다른 모델로 하여금 분포를 따라갈 수 있도록 가이드를 제공하는 방식으로 학습을 진행하여 생성하는 방법을 터득

-> 목적 함수 정의가 필요하지 않음

 

GANs - 두 개의 네트워크로 구성

Generator & Discriminator

Generator : fake data 생성 - Discriminator의 반응만을 보고 학습

Discriminator : real data 와 fake data를 판별하는 것을 목표로 학습 (-> 이진분류문제)

 

Generator 는 uniform distribution 또는 gaussian distribution으로부터 random noise 추출하여 generate

(autoencoder의 decoder 구조와 유사)

Discriminator 는 Generator 가 생성한 fake data  와 real data 를 구분하는 task를 수행

이진 분류 문제이므로 일반적인 classifier와 동일한 구조

( autoencoder 의 encoder와 비슷하나 출력이 한개인 셈??????? )

 

GAN : 생성모델이 추정하는 분포를 업데이트 하며, 판별모델이 real과 fake를 판별하는 경계를 업데이트 함

 

Generative Adversarial Nets 논문 중

 

이것을 어떻게 최적화 과정으로 만들 것인가

 

GANs의 목적 함수

Two-Player Zero-Sum Game, saddle point를 찾는 것.

[Generation] (4-1) 적대적 생성 신경망 강의자료

 

두 네트워크가 다른 목적으로 동시에 최적화

최적점 : 실제 데이터와 생성 데이터의 분포가 동일해지도록 (최적 값은 -log4로 수렴)

 

판별 모델 기준 기울기 상승 & 생성 모델 기준 기울기 하강

판별 모델 기준 기울기 상승

 

생성 모델 기준 기울기 하강

but 이 목적함수는 실제로 잘 동작하지 않음

개선 : 생성 모델의 기울기 상승

[Generation] (4-1) 적대적 생성 신경망 강의자료 중

 

문제점 : Mode Collapse가 발생할 수 있음 (판별 모델을 속일 수 있는 일부 데이터만 생성하는 문제)

다양한 데이터를 생성하지 못함

 

f-GANs : 다양한 손실 함수에 대해 일반화

 

요약 :

두 신경망이 적대적 학습, 선명한 데이터 생성

최적화 어렵고 학습이 오래걸림

생성된 데이터의 다양성이 낮을 수 있음

 

part2.  조건부 생성 모델

생성모델의 결과를 제어 가능한 모델

특정 클래스에 대응되는 데이터를 생성하는 것이 가능

 

생성 시점에 조건을 추가

입력과 함께 조건부 벡터를 입력

 

[Generation] (4-2) 조건부 생성 모델 강의자료 중

 

Conditional Generative Adversarial Nets 논문

범주 정보를 데이터와 같이 입력

 

복잡도가 높은 이미지를 위한 다양한 형태의 판별자들이 제안됨

ACGAN, ProjGAN, ContraGAN

ContraGAN: Contrastive Learning for Conditional Image Generation 논문

 

생성자는 조건을 받기 위한 다양한 구조를 시도

9분대부터 다시 보기!

 

 

 

part3. 적대적 생성 신경망 실습

 

 

part4. 조건부 생성 모델을 활용한 다양한 영상 조작

영상 변환(이미지 대 이미지, Image Translation)

 

 

 

part5. Pix2Pix와 CycleGAN 실습