GTなしでSSIMの弱点を見抜く——2つの診断ツール
DOI 1.20と DOI 1.20.1 の内容を、専門知識のない方向けに噛み砕いて説明したページです。
このシリーズはこれまで、正解画像(GT)を使ってSSIMの弱点(輝度が 過敏になる領域・テクスチャが消えてしまう領域)を特徴づけてきました。 ここでは、その弱点を新しい画像をチェックするたびにGTを 使わずに見つけ出す、2つの診断ツールを紹介します。ただし、 判定の基準となる値(μstat・σstat) 自体は、モデル・データセットの組み合わせごとに一度だけGTを使って 較正しておく必要があります(今回の較正はNIH ChestX-ray8という 特定のデータセットに対して行ったもので、別のデータセットでも 同じ値が使えるかは未検証です)。GTが完全に不要になるわけではなく、 「画像1枚ごとに必要」から「モデル・データセットの組み合わせごとに 1回で済む」に変わる、という位置づけです。
GTなしで「明るさの誤差が目立ちすぎる」危険地帯を見抜く(DOI1.20)
スマホのカメラで、まっさらな壁や、雲一つない空を撮ったことは ありませんか?何もない、のっぺりした場所だからこそ、写真にした ときにほんのわずかな明るさのムラでも、はっきり目立ってしまいます。逆に、人がたくさんいる賑やかな写真なら、同じ 程度のムラはまず気づかれません。SSIMの明るさを測る項目にも同じ 性質があり、GT画像が真っ平らで模様が全くない場所ほど、ほんの小さな 明るさのズレが、スコアに大きく響いてしまいます(この現象を 「Amplification Phase(輝度の過敏地帯)」と呼んでいます)。
この危険地帯を見抜くための値(μnotta)は、「二次方程式 の解を選ぶ」方法で計算されていて、実は不正確になりうる値です。 しかし今回は、それでも問題になりません。対象を「GT側が完全に 真っ平らな場所」に絞ると、本物の明るさの値は256段階のうちの決まった 目盛りにきれいに並びます。判定の基準線は、その目盛りとぴったりは 重ならない位置にあるので、「目盛りの多少のズレ」よりも「基準線の どちら側か」の方がずっと大まかな問いになります。だから、多少 不正確な見積もりでも、正しい側さえ当てられれば十分なのです。
実際に4モデルで試したところ、正解率96.0%〜100%、しかも 「本当に危険な場所を見逃す」ケースは4モデルとも1件も ありませんでした(再現率100%)。
GTなしで「テクスチャが消えてしまう」危険地帯を見抜く(DOI1.20.1)——comp_contrastという「隠れた厳密な物差し」
もう一つの弱点は、AIモデルが「本来あるはずのテクスチャを消して しまう(Structural Masking)」ことです。こちらは、先ほどの明るさの 場合とは違う経緯で、GTなしの診断が可能になりました。
発見の核心:既存の特徴量が、実は厳密に同じものだった
このシリーズでは以前から、画像を細かいマス目に分けて「コントラスト
の強さ(σ)」という値を測ってきました。一方で、別の目的で既に
測っていたcomp_contrastという特徴量があります。
今回分かったのは、このcomp_contrastを255で割ると、
σと完全に、誤差ゼロで一致するという事実です
(255という数字は、8bit画像の最大画素値、2の8乗マイナス1です)。
4モデル全部・3.26億ブロックで検証済み — 例外なし。
これは「近い値」でも「よく似た値」でもなく、数学的に同一の量を、 別の場所で別の計算方法によってたまたま2回測っていた、ということ です。実際にSQLで、4つのモデルすべて・81,564,041ブロックすべて (4モデル合計で約3.26億ブロック)に対して検証したところ、例外は 1件もありませんでした(この検証は画面録画とファイルのハッシュ値 という形で証拠を残し、Zenodoで公開しています)。
なぜこれが重要なのか
これまでは、モデルが復元した画像側のコントラストの強さを知るために、 SSIMの計算式を逆算するという回り道が必要で、その計算には「答えの 候補が2つ出てきてしまい、どちらが正しいか選びきれない」という 弱点がありました(実はこれは、DOI1.20のμnottaで 使われているのと同じ種類の方法です)。DOI1.20の場合はこの 不正確さが問題にならない特別な状況でしたが、σの場合は 違いました。この弱点を補うために、経験的に調整した補正値を使う 案も検討していましたが、これは「たまたま今回のデータではうまく いく値」を探しているに過ぎず、心もとなさが残るやり方でした。
comp_contrastという厳密な物差しが見つかったことで、
この回り道も、補正値を探す作業も、まるごと不要になりました。
調整や近似に頼らない、誤差のない値を直接使えるようになったから
です。
この方法の性能——得意なところと、まだ弱いところ
この厳密な物差しを使い、「モデル自身の出力だけ」で判定する簡単な ルールを作ったところ、4つのモデルすべてで以下の結果になりました。
| 全体の正解率 | 98.8%〜99.5% 極めて高い総合判定精度 |
|---|---|
| マスキング検出率(再現率) | 99.1%〜99.95% テクスチャ消失をほぼ確実にキャッチ |
| 非マスキング維持率(再現率) | 42.8%〜78.8% モデルごとの復元のクセを反映 |
全体の正解率と、「本当にテクスチャが消えているマス目」を正しく 見つけられた割合はどちらも非常に高い精度です。一方で、「本当は テクスチャが残っているはずのマス目」を正しく「問題なし」と判定 できた割合は、42.8%〜78.8%と、モデルによって差があります。
この数字が意味すること——スマホの「美肌モード」のたとえ
この「42.8%〜78.8%」という数字は、判定方法そのものの精度が低い という意味ではありません。むしろ、モデル自身の実際の 復元結果に関する、正確な事実を表しています。
スマートフォンのカメラで人物や布地を撮ると、自動的な「なめらか 加工(ノイズ除去)」によって、本当は肌のシワや布の織り目など細かい 模様があるのに、それが消えてつるつるに見えてしまうことがあります。 しかもこの加工の強さは、機種やアプリによってかなり違います。
この分析では、画像全体ではなく、画像を細かい正方形のマス目に 分けて、そのマス目1つ1つについて「本当は模様があったか」「加工後 も模様が残っているか」を調べています。いわば、写真の中で「本当は シワがあったのに、なめらか加工で消えてしまったマス目」を1つずつ 数えているようなものです。
この数字は、「本物には確かに細かい模様があるマス目」を100個 集めたとき、モデルの復元結果でもその模様がちゃんと残っていた マス目が何個あったか、を表しています。数字が低いモデルほど、 なめらか加工が強く効いて、本来残すべき細かい模様を消してしまい やすい、ということです。
具体的に言うと、Upscayl High-Fidelityは42.8%なので、本物に模様が あるマス目が100個あったら、そのうち約43個はちゃんと模様を残せて いますが、残り約57個はなめらか加工で潰れてしまっています。一方 Digital-Artは78.8%なので、同じ100個のうち約79個は模様を残せて いて、潰れてしまうのは約21個だけです。同じ「なめらか加工」でも、 モデルによってこれだけ効き方が違う、ということです。
1つの正方形が、本物には確かに模様がある1つのブロックを表す — 塗りつぶしはモデルの復元結果でも模様が残ったこと、薄い色は平滑化で消えたことを示す。同じ「なめらか加工」でも、モデルによって効き方が大きく違う。
この物差し(comp_contrast由来のσ)自体は誤差ゼロで
測れているので、この数字のばらつきは測定の不正確さではなく、
モデルごとの復元のクセをそのまま映し出しています。
もっと詳しく知りたい方へ
技術的な詳細(検証用SQL・画面録画・ファイルハッシュ)は、 DOI 1.20の Zenodoレコードと DOI 1.20.1のZenodoレコードで公開しています。