← 発行物一覧

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です)。

1つのブロックを2通りに測ったら、同じ数字だった 1つの8x8画像ブロックから、別々の目的で2つの計算をする:sigma_gtと、comp_contrast_gtを255で割った値。この2つの経路は、誤差ゼロで完全に一致する。 1つの8×8画像ブロック σgt 本シリーズ全体で使用 comp_contrast_gt ÷ 255 別目的の独立した特徴量 = 完全一致、誤差ゼロ

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個だけです。同じ「なめらか加工」でも、 モデルによってこれだけ効き方が違う、ということです。

本物のテクスチャがある100個のブロックのうち、復元後も残るのは何個か 10x10、100個の正方形のグリッドを、モデルごとに1つずつ。1つの正方形が、本物には確かにテクスチャがある1つのブロックを表す。塗りつぶされた正方形はモデルの復元結果でもテクスチャが残ったブロック、薄い正方形は平滑化で消えたブロック。Upscayl High-Fidelityは100個中43個、Digital-Artは100個中79個が残る。 Upscayl High-Fidelity 100個中43個は模様が残る Digital-Art 100個中79個は模様が残る 模様が残った なめらか加工で消えた

1つの正方形が、本物には確かに模様がある1つのブロックを表す — 塗りつぶしはモデルの復元結果でも模様が残ったこと、薄い色は平滑化で消えたことを示す。同じ「なめらか加工」でも、モデルによって効き方が大きく違う。

この物差し(comp_contrast由来のσ)自体は誤差ゼロで 測れているので、この数字のばらつきは測定の不正確さではなく、 モデルごとの復元のクセをそのまま映し出しています。

もっと詳しく知りたい方へ

技術的な詳細(検証用SQL・画面録画・ファイルハッシュ)は、 DOI 1.20の Zenodoレコードと DOI 1.20.1のZenodoレコードで公開しています。