서론
사람의 시각체계는(HVS) 이미지의 밝기(Luminance), 대비(Contrast), 구조(Structure) 등에 자각하여 이미지의 품질(Quality)을 관찰하는데 L2 loss는 모든 픽셀이 독립적이라는 가정 가정이 내포되어 있다.
이는 한 이미지의 특정 픽셀이 다른 이미지의 동일한 위치의 픽셀과 얼마나 다른지만 계산하고, 그 픽셀이 주변 픽셀에 어떤 영향을 미치는지는 고려하지 않는다는 것이다.
- 예를 들어, 크기가 3x3인 두 이미지를 비교할 때, 첫 번째 이미지는 모든 픽셀이 밝은 색이고, 두 번째 이미지는 가운데 픽셀만 어두운 색이라 하자.
- L2 loss는 가운데 픽셀만 다르기 때문에 두 이미지 사이의 차이를 매우 작게 계산할 것이다.
- 그러나 사람의 눈으로 보면, 가운데 픽셀이 어두워지면 이미지 전체가 달라보일 수 있다.
- 즉, 가운데 픽셀의 특성이 이미지의 전체적인 품질(Quality)에 큰 영향을 미칠 수 있다는 것이다. 이런 부분이 L2 loss의 한계점이다.
이를 해결하기 위해 사람의 시각체계를 고려한 이미지의 유사도를 측정하는 측도로 SSIM을 사용한다.
또한 SSIM은 두 이미지의 유사도를 측정하는데 사용되기도 하지만 두 이미지가 유사해지도록 만들어야 되는 문제일때도 사용된다.
참조: https://arxiv.org/pdf/1511.08861.pdf

목차
본론
SSIM은 luminance, contrast, structure 3가지 요소를 이용한다.
SSIM의 결과값은 0~1사이이며 1에 가까울수록 두 이미지가 유사하다.
입력값의 범위에 따라 -1~1 사이의 값을 가질 수도 있으며 마찬가지로 1에 가까울수록 두 이미지가 유사하다는 것은 동일하다.
SSIM의 전체 수식은 아래와 같다.
SSIM에서 일반적으로 \(\alpha, \beta, \gamma\)는 1로 사용하며 이는 하이퍼파라미터이다.
Luminance
휘도라고 하며 빛의 밝기를 나타내는 양이다. 이미지에서 별도의 빛의 밝기를 추출해 사용하지 않고 이미지의 픽셀값을 사용한다.
그 이유는 이미지가 밝을 수록 픽셀의 값 크기 때문이다.
두 이미지를 \(x, y\)라 할때 공식은 아래와 같다.
- \(\mu_x\)
: 이미지의 평균
이미지의 평균(\(\mu_x\))는 아래 수식으로 구한다
- \(x_i:\) 각 픽셀의 값
- \(N\): 전체 픽셀의 갯수
\(C_1\)은 분모가 0이 되지 않도록 하기 위해서 사용되는 상수값이며 아래와 같은 수식으로 정의된다.
\(K_1\)은 일반 상수이며 보통 0.01을 많이 사용한다.
\(L\)은 픽셀값의 범위를 의미하며 일반적으로 8비트의 값을 사용하기 때문에(0~255) 255를 \(L\)로 사용한다.
따라서 \(C_1=(0.01\times 255)^2=6.5025\) 를 주로 사용한다.
Contrast
대조는 이미지 내에서 빛의 밝기가 바뀌는 정도를 나타내는 양이다. 이 값은 평균 픽셀 간의 값이 얼마나 차이가 나는지 통해 정량화 할 수 있다.
이미지의 표준편차(\(\sigma_x\))는 아래 수식으로 구한다.
- \(N-1\): 표본의 표준 편차를 구하기 때문에 표본의 표준편차가 모표준 편차가 될 수 있도록 하기 위해 \(N-1\)을 사용한다.
\(C_2\)역시 상수이며 이 경우 아래와 같은 수식을 사용하며 \(K_2=0.03\)을 주로 사용한다.
Structure
픽셀의 구조적 차이점을 나타낸다. 즉 픽셀의 패턴을 표현하는 요소이다.
- 예를들어 두 장의 이미지에 사과와 배가 포함되어있다고 하자. 하나는 사과가 배의 왼쪽에 있고 다른 하나는 사과가 배의 오른쪽에 있다면 픽셀 단위의 비교만으로는 두 이미지가 매우 유사하다고 판단할 수 있지만 SSIM의 structure를 통해 이미지의 객체 배치가 다르다는 것을 포착할 수 있다.
- 정의는 아래와 같으며 \(\sigma_x, \sigma_y\)는 각각 \(x,y\)이미지의 표준편차이다.
\(x,y\) 이미지에 대한 공분산은 아래 수식으로 구할 수 있다.
- \(C_3\)
은\(\frac{C_2}{2}\)로 사용한다. 이렇게 하는 이유는SSIM은\(l(x,y), c(x,y), s(x,y)\)의 곱으로 정의되어 계산할 때식을 간편화할 수 있기 때문이다. - \(\frac{\sigma_{xy}}{\sigma_x\sigma_y}\) 수식의 의미를 살펴 보면,
luminance을 평균,contrast를 표준 편차로 이용하여Normalized(정규화)된 픽셀 값의 분포에서 픽셀 값을 다시 정의하는 것을 볼 수 있다. - 최종적으로 각 이미지의
structure성분의 곱(원본 픽셀에서 평균을 빼고 해당 이미지의 표준편차로 나눈 Normalized된 픽셀값)의 평균을 구하는 것과 같다. - \(\sigma_{xy}\)
: 공분산 - \(\sigma_x,\;\sigma_y:\)
각 이미지의 표준편차
위에서 설명했던 것 처럼 최종 수식은 다음과 같으며 \(\alpha, \beta, \gamma\)는 1로 주로 사용된다.
distance로 사용되기 위한 여러 조건중 triangle inequality(삼각부등식) \(|a+b| \leq |a|+|b|\)를 만족하지 않아서 distance를 구하기 위한 함수로는 사용할 수 없다.
- 삼각부등식은 유클리디안 공간에서의 거리 개념에서 사용되는데 임의의 세 개의 점 \(a,b,c\)에 대해 다음이 성립해야 한다.
- \(d(a,b)+d(b,c) \geq d(a,c)\)
- \(d(x,y)\)는 점 \(x,y\)사이의 거리를 의미함
만약 RGB 이미지에서 SSIM을 적용해야 한다면 각 채널 별로 SSIM을 구한 후 모두 합해주면 된다.
식으로 나타내면 아래와 같다.
- \(w_r,w_g,w_b\) : 각 채널별 SSIM에 가중을 부여하는 hyper parameter
- \(SSIM_R, SSIM_G, SSIM_B\) : 각 채널별 SSIM 값
- 특정 채널에 대하여 더 가중치를 줄 수도 있으며 일반적으로
RGB에 1/3 씩 균등하게 가중치를 주어서 사용한다.
SSIM Loss
SSIM을 Loss로 사용하려면 아래와 같이 식을 변경해서 사용할 수 있다.
SSIM은 미분 가능하므로 Loss로 사용 가능하며 0 ~ 1 사이의 스코어 값을 1에서 빼주면 두 이미지의 유사도가 낮을수록 값이 커지기 때문에 Loss로 사용할 수 있다.
SSIM을 좀 더 효과적으로 사용하기 위해서는 이미지 전체(globally)를 한번에 비교하기 보다는 N x N 윈도우를 이용하여 (ex. 8 X 8, 11 X 11) 지역적(locally)으로 비교하여 사용하는 것이 효과적이다.
왜냐하면 이미지의 왜곡이나 통계적 특성이 이미지 전반에 걸쳐서 나타나는 경우보다 지역적으로 나타나는 경우가 많고 지역적으로 더 다양한 특성을 분석할 수 있기 때문이다.
Example
#tensor(0.2894) tensor(0.7756) tensor(0.8177)

Comment