[평가 지표] PSNR / SSIM / LPIPS
PSNR (Peak Signal-to-Noise Ratio)
PSNR은 이미지의 픽셀 값 차이를 기반으로 영상 손실 정도를 평가하는 지표이다.
\[\text{PSNR}=10\log_{10}\left(\frac{\text{MAX}_I^2}{\text{MSE}}\right)\]위의 식에서 $\text{MAX}_I$는 이미지 픽셀이 가질 수 있는 최댓값이며, 8-bit 이미지의 경우 $255$이다.
값이 클수록 원본과 유사하며 품질이 좋음을 의미한다.
PSNR은 엄격하게 1:1 픽셀 매칭을 기준으로 계산되기 때문에, 픽셀이 1~2픽셀만 이동해도 MSE가 급증하여 PSNR 값이 크게 떨어진다.
따라서 PSNR은 인간이 시각적으로 느끼는 품질차이와 일치하지 않는 경우가 많다.
SSIM (Structural Similarity Index Measure)
SSIM은 PSNR과 달리, 인간의 시각적 인지에 더 부합하도록 설계된 지표이다.
SSIM은 이미지를 구성하는 세 가지 독립적인 요소인 휘도 (luminance, $l$), 대비 (contrast, $c$), 구조 (structure, $s$)를 각각 비교한 후 결합한다.
\[\text{SSIM}(x,y)=[l(x,y)]^\alpha\cdot[c(x,y)]^\beta\cdot[s(x,y)]^\gamma\]$-1\sim1$ 사이의 범위를 가지며, $1$에 가까울수록 원본과 구조적으로 동일함을 의미한다.
각 요소는 아래와 같이 정의된다.
\[l(x,y)=\frac{\vphantom{\big(}2\mu_x\mu_y+C_1}{\mu_x^2+\mu_y^2+C_1}~~,~~ c(x,y)=\frac{\vphantom{\big(}2\sigma_x\sigma_y+C_2}{\sigma_x^2+\sigma_y^2+C_2}~~,~~ s(x,y)=\frac{\vphantom{\big(}\sigma_{xy}+C_3}{\sigma_{x}\sigma_{y}+C_3}\]- $\mu$: 이미지 픽셀 값의 평균 (휘도를 나타냄)
- $\sigma^2$: 이미지 픽셀 값의 분산 (대비)
- $\sigma_{xy}$: 두 이미지 간의 공분산 (구조적 유사도 및 패턴의 일치 정도를 나타냄)
주로 전체 이미지를 한 번에 계산하지 않고, 각 patch별로 local SSIM 맵을 구한 뒤 이를 전체 픽셀에 대해 평균 내어 최종적인 Mean SSIM 값을 도출하는 방식으로 사용한다.
LPIPS (Learned Perceptual Image Patch Similarity)
LPIPS는 AlexNet이나 VGG같은 딥러닝 네트워크를 사용하여 두 이미지 간의 지각적 (Perceptual) 거리를 측정하는 지표이다.
GT 이미지와 생성된 이미지를 각각 네트워크에 입력한 뒤, 각 레이어에서 활성화된 Feature Map 간의 cosine distance 또는 L2 distance를 채널별 가중치를 적용해 합산한다.
\[d(x,x_0)=\sum_l\frac{1}{H_lW_l}\sum_{h,w}\lVert w_l\odot(\hat{y}_{hw}^l-\hat{y}_{0hw}^l)\rVert^2_2\]위의 식에서 $\hat{y}^l$은 $l$번째 레이어의 Feature map, $w_l$은 가중치 벡터를 의미한다.
값이 작을수록 두 이미지가 지각적으로 유사함을 의미한다.