AI/Computer Vision

[CV] NVS evaluation metrics, 이미지 합성 평가지표

도도걸만단 2025. 1. 24. 13:17
반응형

렌더링된 뷰(합성된 이미지)를 평가하는 데 사용된 네 가지 주요 평가 지표(PSNR, SSIM, LPIPS, MAE/L1)에 대해 수식과 개념

 

1. PSNR (Peak Signal-to-Noise Ratio, 피크 신호 대 잡음비)

PSNR은 원본 이미지와 합성된 이미지 간의 오차를 역으로 나타내는 지표로, 두 이미지가 얼마나 유사한지를 측정한다.

신호(signal)는 원본 이미지의 정보, 잡음(noise)는 합성된 이미지의 오류로 간주된다.

높은 PSNR 값은 원본과 합성된 이미지가 매우 유사하다는 것을 의미한다.

 단위: 데시벨(dB)

 PSNR 값이 30dB 이상이면 품질이 우수하다고 간주

PSNR은 영상 화질 손실양을 평가하기 위해 사용되는 지표, 이미지 저장, 전송, 압축, 영상 처리 등에서 영상 화질이 바뀌었을 때 사용된다.

 

수식

 

PSNR은 MSE (Mean Squared Error)를 기반으로 계산한다:

1. MSE (Mean Squared Error):

\(\text{MSE} = \frac{1}{MN} \sum_{i=1}^{M} \sum_{j=1}^{N} \left( I(i, j) - K(i, j) \right)^2\)

  • I(i, j) : 원본 이미지의 픽셀 값
  • K(i, j): 합성된 이미지의 픽셀 값
  • M, N : 이미지의 width가로, height세로 크기 (픽셀 수)

2. PSNR:

\(\text{PSNR} = 10 \cdot \log_{10}\left(\frac{\text{MAX}^2}{\text{MSE}}\right)\)

  • MAX: 이미지 픽셀 값의 최대값 (예: 8비트 이미지는 255)
  •  

  • MAX는 1개 픽셀당 갖고 있는 정보량(흑백 : 255, RGB : 255x3, RGBA : 255x4)을 나타냅니다. -> MSE를 픽셀 정보량으로 Scale을 변경(Normalization)한다고 생각 할 수 있다.
  • 픽셀간의 단순 오차를 나타내는 것이 MSE이고, MSE의 Scale을 변경(Normalization) 한 것이 PSNR라고 생각 할 수 있다.

2. SSIM (Structural Similarity Index Measure, 구조적 유사성)

SSIM은 두 이미지의 구조적 유사성을 측정하며, 인간의 시각적 인식을 반영한다.

단순한 픽셀 차이뿐만 아니라, 명암, 대비, 구조적 패턴을 함께 고려한다.

SSIM 값은 에서 사이의 값을 가지며, 에 가까울수록 유사성이 높다.

 SSIM은 구조적 품질을 평가하며, PSNR이 놓칠 수 있는 시각적 품질을 보완한다.

높을수록 좋음

 

수식

 

SSIM은 세 가지 항목(밝기, 대비, 구조)을 결합하여 계산한다:

1. SSIM:

\(\text{SSIM}(I, K) = \frac{(2\mu_I\mu_K + C_1)(2\sigma_{IK} + C_2)}{(\mu_I^2 + \mu_K^2 + C_1)(\sigma_I^2 + \sigma_K^2 + C_2)}\)

  • \(\mu_I, \mu_K\) : 각각 원본 이미지 I와 합성된 이미지 K의 평균값
  • \(\sigma^2_I, \sigma^2_K\) : 각각 I와 K의 분산
  • \(\sigma_{IK}\) : 와 간의 공분산
  • \(C_1,  C_2\) : 안정성을 위한 작은 상수

 

  • 두 이미지(x, y) 간의 상관계수를 Luminance(휘도), Contrast(대비), Structure(구조) 총 3가지 측면에서 평가합니다. (α=β=γ=1)
    휘도는 빛의 밝기, 대비는 밝기 차이, 구조는 상관관계를 나타냅니다.
  • 이미지 내 픽셀의 평균, 표준편차, 공분산(covariance)로 위 3개값을 계산 할 수 있습니다.
  • C의 경우, 아래와 같은 수식으로 계산이 되는데, K1=0.01, K2=0.03이고 L은 픽셀당 갖고 있는 정보량(흑백 : 255, RGB : 2553, RGBA : 2554)입니다. PSNR의 MAX값과 같은 역할을 합니다.
  •  

3. LPIPS (Learned Perceptual Image Patch Similarity, 학습된 지각 이미지 패치 유사성)

LPIPS는 딥러닝 모델(예: VGG-16)로 학습된 지각적 차이를 측정한다.

픽셀 단위의 계산 대신, 이미지의 고수준 특징을 기반으로 두 이미지의 품질을 평가한다.

값이 낮을수록 두 이미지 간의 차이가 적음을 의미한다.

 LPIPS는 인간의 시각적 인식과 유사한 방식으로 이미지 품질을 평가한다.

 고급 네트워크를 사용해 더 정교한 비교를 가능하게 한다.

 

계산 방식

1. 원본 이미지와 합성된 이미지를 딥러닝 모델의 중간 계층을 통과시켜 feature 추출.

2. 두 이미지의 특징 간 유클리드 거리를 계산 :

\(\text{LPIPS}(I, K) = \sum_l w_l \cdot \| \phi_l(I) - \phi_l(K) \|^2\)

  • l : 딥러닝 모델 계층
  • \(\Phi_l\) : 번째 계층의 특징 추출 함수
  • \(w_l\) : 각 계층에 대한 가중치

 

 

✅ 1. VGG의 requires_grad = False 를 해야 하는 이유

왜 백프롭(gradient 계산)을 막아야 할까?

 

VGG는 ImageNet에서 미리 학습된 Feature Extractor예요.

우리는 VGG를 Loss 계산용으로만 사용하지, 학습 대상으로 삼지 않아요.

만약 requires_grad = True로 두면?

불필요한 gradient 계산이 이뤄지고 → 메모리 낭비 + 연산 낭비

심지어 실수로 VGG까지 업데이트될 위험도 있어요 (원래 의도가 아님).

for param in self.vgg_layers.parameters():
    param.requires_grad = False  # VGG는 고정, 학습 안 함

✅ 2. VGG 입력은 ImageNet 정규화가 필요한 이유

 

VGG는 ImageNet 데이터로 학습된 모델이기 때문에,

학습 당시의 입력 분포와 같은 분포로 input이 들어와야 **의미 있는 특징(feature)**을 추출해줘요.

 

VGG는 RGB 이미지의 각 채널에 대해 다음과 같은 평균과 표준편차로 정규화된 데이터를 학습했어요:

mean = [0.485, 0.456, 0.406]   # R, G, B
std  = [0.229, 0.224, 0.225]

 

📌 예를 들어:

normalized = (image - mean) / std

정규화 안 하면 → VGG가 예상 못한 입력을 받아서 이상한 feature를 추출하게 돼요 → Loss 계산이 무의미해질 수 있음.

 


4. MAE (Mean Absolute Error, 평균 절대 오차)

MAE는 두 이미지의 픽셀 값 차이의 절대값 평균을 계산한다.

값이 낮을수록 두 이미지가 더 유사하다.

 계산이 간단하고 직관적이다.

 픽셀 단위의 차이를 평가하기 위해 주로 사용된다.

 

수식

\(\text{MAE} = \frac{1}{MN} \sum_{i=1}^{M} \sum_{j=1}^{N} |I(i, j) - K(i, j)|\)

  • I(i, j) : 원본 이미지의 픽셀 값
  • K(i, j): 합성된 이미지의 픽셀 값
  • M, N : 이미지의 가로, 세로 크기 (픽셀 수)

 


5. 평가 방식

 

(1) 이미지 가장자리에서 15%를 잘라내는 이유

이미지 가장자리는 새로운 시점에서 보이지 않던 영역(비가시 영역)이 나타날 가능성이 높다.

이러한 영역은 정확히 예측하기 어려워, 평가에 영향을 줄 수 있다.

따라서, 가장자리 15%를 잘라내고 나머지 부분만 평가에 사용한다.

 

(2) 빈 픽셀이 15% 이상인 경우 결과 제외

합성된 이미지에서 빈 픽셀(정보가 없는 영역)이 많다면, 그 결과는 신뢰할 수 없다.

모든 기준 방법에서 공정성을 유지하기 위해 빈 픽셀이 15%를 초과하면 해당 결과는 평가에서 제외한다.

 

6. 추가적인 지표

 

위의 네 가지 이외에도 다음과 같은 지표들이 사용될 수 있다:

1. FID (Fréchet Inception Distance):

이미지의 품질과 다양성을 평가.

합성된 이미지와 실제 데이터셋 간 분포 차이를 측정.

2. RMSE (Root Mean Squared Error):

MSE의 제곱근을 취해 계산.

오차를 더 민감하게 반영.

3. Perceptual Hashing:

이미지를 해싱하여, 시각적 유사성을 비교.

 

 

반응형