MS-SSIMについて調べた

生成画像の評価指標に使われるMulti-Scale Structural Similarity (MS-SSIM)の論文を読んだのでまとめる.

  • Wang et al., "MULTI-SCALE STRUCTURAL SIMILARITY FOR IMAGE QUALITY ASSESSMENT", 2003

https://ece.uwaterloo.ca/~z70wang/publications/msssim.pdf

MS-SSIMを直感的に説明すると,比較したい画像ペアにローパスフィルタ+ダウンサンプルを繰り返してスケールの異なるM個のペアを作り,それぞれについてコントラストと構造を比較評価する値を計算し(M番目だけ輝度も比較),すべてかけ合わせたもの.

SSIM

SSIMについてはこちらや,

visualize.hatenablog.com

こちら

dftalk.jp

がすでに解説している.

輝度,コントラスト,構造,を比較するための項が, \mathbf{x},  \mathbf{y}が画像, \mu, \sigma, \sigma_{xy}がそれぞれ平均,分散,共分散として次で与えられる.

 
l(\mathbf{x}, \mathbf{y})=\frac{2 \mu_{x} \mu_{y}+C_{1}}{\mu_{x}^{2}+\mu_{y}^{2}+C_{1}} \tag{1}
 
c(\mathbf{x}, \mathbf{y})=\frac{2 \sigma_{x} \sigma_{y}+C_{2}}{\sigma_{x}^{2}+\sigma_{y}^{2}+C_{2}}  \tag{2}
 
s(\mathbf{x}, \mathbf{y})=\frac{\sigma_{x y}+C_{3}}{\sigma_{x} \sigma_{y}+C_{3}} \tag{3} \\

Cは定数で,

 
C_{1}=\left(K_{1} L\right)^{2}, C_{2}=\left(K_{2} L\right)^{2} \text { and } C_{3}=C_{2} / 2 \tag{4}


Lはピクセル値のダイナミックレンジ(8bits/pixelの白黒なら255),Kも定数で K_1 \ll 1, K_2  \ll 1を満たす.このとき \mathbf{x}  \mathbf{y}のSSIMの一般形は,

 
\operatorname{SSIM}(\mathbf{x}, \mathbf{y})=[l(\mathbf{x}, \mathbf{y})]^{\alpha} \cdot[c(\mathbf{x}, \mathbf{y})]^{\beta} \cdot[s(\mathbf{x}, \mathbf{y})]^{\gamma} \tag{5}


であり, \alpha=\beta=\gamma=1として

 
\operatorname{SSIM}(\mathbf{x}, \mathbf{y})=\frac{\left(2 \mu_{x} \mu_{y}+C_{1}\right)\left(2 \sigma_{x y}+C_{2}\right)}{\left(\mu_{x}^{2}+\mu_{y}^{2}+C_{1}\right)\left(\sigma_{x}^{2}+\sigma_{y}^{2}+C_{2}\right)} \tag{6}


が使われている.

SSIMは次を満たす.

  1. 対称性: SSIM(\mathbf{x}, \mathbf{y}) = SSIM(\mathbf{y}, \mathbf{x})
  2. 有界 SSIM(\mathbf{x}, \mathbf{y}) \leq 1
  3. 最大値が一意: SSIM(\mathbf{x}, \mathbf{y}) = 1が成り立つのは \mathbf{x} = \mathbf{y}のみ

最初の解説記事によると,SSIMは画像中のM個の小領域に対して計算してその平均を使い,MSSIMとよばれるらしい.

 
\operatorname{MSSIM}(\mathbf{X}, \mathbf{Y}) = \frac{1}{M} 
 \sum_{j=1}^{M} \operatorname{SSIM} \left( \mathbf{x}_j, \mathbf{y}_j \right)


MS-SSIM

MS-SSIM導入のモチベーションは,SSIMが1つのスケールだけ使って評価しているが,評価に使う最適なスケールは解像度や画像と視点の距離といった条件によって異なるはずだというところ.

式はこれ,

 
\operatorname{SSIM}(\mathbf{x}, \mathbf{y})=\left[l_{M}(\mathbf{x}, \mathbf{y})\right]^{\alpha_{M}} \cdot \prod_{j=1}^{M}\left[c_{j}(\mathbf{x}, \mathbf{y})\right]^{\beta_{j}}\left[s_{j}(\mathbf{x}, \mathbf{y})\right]^{\gamma_{j}} \cdot(7)


処理の流れは以下の通り

  1. 画像ペアにローパスフィルタとx2のダウンサンプルをかける操作をM回行う
  2. 各回で(2),(3)式を使ってconstrastとstructureの比較が行われる
  3. (1)式のluminanceの比較は最後だけ行う
  4. 最後に(7)式で全てをかけ合わせたものがMS-SSIM

f:id:e4exp:20200723182536p:plain
fig1. MS-SSIMの処理の流れ

(7)式で, \alpha_j = \beta_j = \gamma_jであり,つまり同じスケールの中では指数は同じ値を使う.また \sum_{j=1}^M \gamma_j =1. 異なるスケール間の重要度を考慮するために,異なるスケール間では指数の値を変えたいので,被験者実験により算出している.

結果だけ示すと,

 \beta_1 = \gamma_1 = 0.0448
 \beta_2 = \gamma_2 = 0.2856
 \beta_3 = \gamma_3 = 0.3001
 \beta_4 = \gamma_4 = 0.2363
 \alpha_5 = \beta_5 = \gamma_5 = 0.1333

評価実験

LIVE database(http://live.ece.utexas.edu/research/quality/)から344枚のJPEGJPEG2000の圧縮画像を使ってMS-SSIMと他の指標(PSNR, Sarnoff, SSIM(小領域の数は1~5))との性能比較を行っている. 画像は人間による主観評価で品質が点数化されており,各評価指標の値が人間によるものとどれだけ傾向が近いかを評価する. 結果は下表で,correlation系が高く,誤差系が低くなっていることがわかる.MS-SSIMが人間による評価と一致度が高いと言える.

f:id:e4exp:20200723194631p:plain
table1. 性能比較

その他

  • MS-SSIMがSSIMのように小領域の平均を使っているのかわからなかった.一読した感じだと使っていないと思う.