← Documentation

用語集

私たちの技術報告書やSQLクエリには、記号・変数名・名前の付いた 概念が説明なしに繰り返し登場します。このページはそれら全てを 1か所にまとめた用語集です——sigma_gt・ notta・「Failure Fingerprint」・「masking blind spot」をはじめ、登場する用語が実際に何を指すのか、ここで 確認できます。

記号・変数

comp_*
8×8の画像ブロックから直接計算する、8つの復元画像側の 診断用特徴量(sharpness・edges・artifact_ringing・ artifact_block・contrast・texture・entropy・noise)です。 完全な定義と実装はDOI 1.8に、 概要は技術基盤ページにあります。
σgt(sigma_gt)
ground truthの8×8ブロック内の画素値の標準偏差——加工前の 元画像における、局所的なコントラスト・質感をブロック単位で 測る、この研究独自の指標です。SSIMのコントラスト項(C)と 構造項(S)に直接反映されます。
σnotta(sigma_notta)
同じ標準偏差の指標を、ground truthではなく、そのブロックの モデルによるnoTTA復元結果から計算したものです。σgt と比較することで、復元結果の局所的なコントラストが元画像と どれだけ一致しているかを検証します。
σstat(sigma_stat)
Two-Segment Optimal Splitという手法で経験的に求めた、 σgt軸上のしきい値で、モデルの質感軸の挙動が 切り替わる位置を示します。導出過程については DOI 1.4・ 1.10・ 1.12(公開済みの訂正) を参照してください。
μgt(mu_gt)
ground truthの8×8ブロック内の画素値の平均——元画像の 局所的な明るさ・輝度をブロック単位で測る、この研究独自の 指標です。SSIMの輝度項(L)に直接反映されます。
μnotta(mu_notta)
μgtと同じ平均画素値の指標を、ground truthではなく、 そのブロックのモデルによるnoTTA復元結果から計算したものです。 μgtと比較することで、復元結果の明るさが元画像と どれだけ一致しているかを検証します—— DOI 1.18参照。
μstat(mu_stat)
σstatと同種の、経験的に求めたしきい値ですが、 質感軸(σgt)ではなく輝度軸(μgt) 上にあります。
notta / TTA
全ブロックが評価される2つの推論条件です。notta ("no test-time augmentation")は、1回だけの直接的な復元です。 TTA(test-time augmentation)は、入力に変換を 加えた複数のバージョンから同じ画像を復元し、その結果を平均する 手法で、出力品質の向上を狙った一般的な技術です。超解像 (Super-Resolution)分野の論文では、この手法は一般に self-ensembleと呼ばれます——EDSR論文が提唱した "geometric self-ensemble"という手法名に由来する呼び方です。 「TTA」はコンピュータビジョン全般で使われる、より広い総称に あたります。技術基盤を参照。
Δssim(delta_ssim)
同じブロック座標における、TTA条件のSSIMスコアからnoTTA条件の SSIMスコアを引いた値です。正であればそのブロックでTTAがスコアを 改善したこと、負であれば悪化させたことを意味します。
L, C, S
SSIMの3つの乗法的な成分——輝度(Luminance)・コントラスト (Contrast)・構造(Structure)——で、その積(L×C×S) がブロック全体のSSIMスコアになります。全体像は SSIMとはを参照してください。
ρ(ピアソンの相関係数)
2つのブロックの画素値の「パターン(形)」がどれだけ一致して いるかを測る値(−1〜1)——実際の明るさ (μgt)やばらつきの 大きさ(σgt)とは 独立した軸です。ρ=1は、それぞれのブロック自身の平均から の偏差が、全く同じ比率で増減していることを意味します—— 一方のブロックがもう一方よりずっと明るい・ばらつきが大きい 場合でも成り立ちます。SSIMの構造項S (S=(σxy+C3)/(σxσy+C3)、 ρ=σxy/(σxσy)) に直接反映されます。同じ式の中に出てくる σxy(共分散)と混同しないよう注意——記号は 同じσを使いますが、σgt/ σnotta(標準偏差)とは別の量です。μgtや σgtと違って、σxyは片方の ブロックの値だけからは計算できません——GT側の画素xiと 復元側の画素yiについて、 (xi−μgt)×(yi−μnotta) をブロック内の画素のペアごとに全部計算し、その平均を取った ものです——両方の画像の画素を位置ごとに突き合わせる必要が あり、それぞれのブロック単体の平均・ばらつきだけでは求まりま せん。具体例と図はDOI 1.18参照。
is_comp_zero / comp_zero
このプロジェクトの当初の(現在は廃止済みの)JOINベースの データベーススキーマにあったブール値フラグで、「このブロックの 8つのcomp_*特徴量が全て厳密にゼロ」という意味でした。その JOINステップに繰り返しデータ整合性のバグが見つかったため 廃止しました——置き換え済み ファイルを参照してください。現行のデータベースはcomp_* 特徴量を直接計算するため、このようなフラグ自体が存在しません。
n_features_matched
あるブロックの8つのcomp_*特徴量のうち、同じ座標のground truth 自身のcomp_*値と厳密に一致するものがいくつあるか——0から8までの 整数です。

用語・概念

Merutan条件(Merutan condition)
このシリーズでis_comp_zero = TRUE AND delta_ssim != 0 (上のis_comp_zero参照)という絞り込みに付けられた 名前です——復元結果が完全に退化・平坦なのに、noTTAとTTAの間で SSIMスコアだけは変化したブロックを指します。この母集団が μstatの元データになります。
phase-transition curve(相転移曲線)
ブロックをμgtまたはσgtでビン 分けし、ビンごとにばらつきの統計量(通常は STDDEV(ABS(delta_ssim))やSの平均値)をプロット した曲線です。多くの場合、途中まで平坦で、ある点で急に折れ 曲がります——その折れ曲がりの位置をTwo-Segment Optimal Split が特定し、μstat・σstatを求めます。
臨界点(critical point、μc, σc)
SSIM自身の安定化定数(C1・C2・C3)から代数的に導出される、 理論上の閉形式の値μc=√(C1/2)・ σc=√C3のことです。データから測定した ものではありません。モデルごとに実測した μstat・σstatをこれと比較する ことで、Failure Fingerprintが得られます。
Failure Fingerprint(Δμ, Δσ)
ずれの座標 (μstat−μc, σstat−σc)のことで、 あるモデルの実測された転移点が、理論上の臨界点からどれだけ ずれているかを示します。このシリーズ全体を通して、モデルごとの コンパクトな要約統計量として使われています。
Two-Segment Optimal Split
phase-transition curveの折れ曲がり位置を、あり得る全ての 分割点を試し、両セグメント内の分散の合計が最小になるものを 選ぶことで特定するSQLの手順です。SQLの実例込みの詳しい解説は SQLの読み方にあります。
Luminance Bias(輝度バイアス、Amplification Phase)
下記のmasking blind spotの、輝度軸側に対応する現象です。 臨界点μc未満の領域では、SSIMの輝度項Lは 微小な復元誤差に対して過敏になります——分母にある安定化 定数C1に対して、信号自体(μgt2)が 小さいためです。8bit値でわずか1階調ずれるだけの、肉眼では 見分けがつかない差でも、全体のスコアが目に見えて下がる ことがあります。具体例は 組織概要 を参照してください。
masking blind spot(マスキング盲点)
DOI 1.11で証明された恒等式です:ground truthのブロックが 完全に平坦な場合(σgt=0)、SSIMの構造項Sは、 復元結果が実際に何であっても数学的に厳密に1に固定されます。 これはこのプロジェクト独自の計算のバグではなく、指標としての SSIMそのものが持つ本物の限界です—— SSIMとはを参照してください。 実務上の含意:σgt=0の領域でスコアが上がって いても、それを本物の改善とは読めません。復元結果が実際に 何であってもS項がそこでは数学的に1に固定されているためです ——σが0でない一致(DOI 1.16参照)ではSSIMは騙されませんが、こちらは 対照的です。このサイト内では「Structural Masking」とも 表記します——具体例は組織概要を 参照してください。
Pixel Identity Theorem
あるブロックのSSIM=1.0は、そのブロックの復元結果がground truthとピクセル単位で完全に一致することを強制する、という 恒等式です(逆に、comp_*特徴量がピクセル単位で一致していれば SSIM=1.0が強制されるかも検証しています—— DOI 1.15参照)。
Tier3(状態)
このプロジェクトのブロック単位の4値崩壊分類で、noTTAとTTAの 結果を比較します:Stable(どちらも崩壊なし)・ Persistent(両方とも崩壊)・ Escape(noTTAでは崩壊しているがTTAで 補正される)・BlindSpot(noTTAでは崩壊して いないがTTAで顕在化する)。DOI 1.6 参照。
Axis1
ブロックごとの符号付きバイアス方向スコアで、SSIMの内部特徴 空間の第1主成分から導出されます。正の値は劣化方向への バイアスを、負の値は改善・抑制方向へのバイアスを示します。 DOI 1.7参照 (前段のDOI 1.3で導入)。
Axis5
ブロックごとのマハラノビス距離ベースの崩壊強度指標で、複数の comp_*特徴量を学習済みの重みで組み合わせて、単一の重症度 スコアにしたものです。DOI 1.7 参照。
退化(degenerate)ブロック・復元結果
復元結果が完全に平坦・空白なブロック——8つのcomp_*特徴量が 全て厳密にゼロです。旧スキーマではis_comp_zero フラグが、現行スキーマでは8つのcomp_*フィールドが全てゼロか どうかの直接チェックが、この母集団を識別します。
幻視する(hallucinate)/幻視(hallucination)
完全に平坦なground truthからは本来存在しないはずのディテール (主にsharpnessで測定)が、モデルの復元結果に含まれている 状態です——モデルが実質的に何もないところから質感を作り出して しまっています。DOI 1.11 で特徴づけられています。
distinct値数(COUNT(DISTINCT))
「distinct」とは重複を無視することです:[1, 2, 2, 3]のdistinct値は{1, 2, 3}——4つではなく 3つです。SQLのCOUNT(DISTINCT column)は、ある列が 全行を通じて実際に何種類の異なる値を取るかを数えます。本サイト ではこれを使って「このプロジェクトの約7900万個あるブロックの うち、本当に異なる σgt(またはμgt)の値は何種類 あるのか」を問います。distinct値数がブロック数よりずっと 少なければ、中身に関係なくたまたま同じ値になっているブロックが 多数あるということです——その理由は下記の 8bit画素量子化を、この 数え方自体に潜む罠は 浮動小数点の「影の重複」 を参照してください。
8bit画素量子化
8bit画像の画素の明るさは、任意の実数ではなく0〜255の256通りの 整数のいずれかしか取れません。あるブロックのσgt はこの少数の整数から計算されるため、理論上取りうる厳密な値の 種類自体が限られています——そのため数百万のブロックがあると、 中身には何の関係もないのに、たまたま同じ値になるブロックが 多数出てきます。具体例と図付きの詳しい説明は DOI 1.16を参照。
浮動小数点の「影の重複」(ghost duplication)
浮動小数点の加算は厳密には結合則が成り立ちません——演算が 実行される正確な順序によって、結果が最小単位のビットレベルで 変わることがあります:
>>> (0.1 + 0.2) + 0.3
0.6000000000000001
>>> 0.1 + (0.2 + 0.3)
0.6
数学的にはどちらも同じ数0.6のはずですが、どちらの足し算を 先に行ったかによって、コンピュータは2つの異なるビット パターンを格納します。このプロジェクトのデータベースで、 同じ真の数値がこのようにわずかに異なる演算順序で計算されると、 素朴なCOUNT(DISTINCT)は結果を1つではなく2つの 別々の値として数えてしまい、真の値数より多く数える結果に なります。実例の1つ:8bit量子化(上記参照)によりたまたま同じ真の σgt(≈0.0004863513439456968)になった、 無関係な2つのブロックで実際に格納されていた値を比較すると、 5.421010862427522e-20という差がありました。これはちょうど 2-64——綺麗な IEEE 754機械定数(下記参照)で あって、ブロックの中身が本当に違うわけではありません。 許容誤差付きの隣接gap分析による数え直しで補正した例は DOI 1.21を参照。
IEEE 754(倍精度浮動小数点)
ほとんどのコンピュータが整数以外の数を格納するときに使う標準 規格です。数値は符号・約52bitの仮数部(有効数字)・指数部 (2のべき乗)の組み合わせとして、符号×仮数×2指数 の形で保持されます。この仕組みのせいで、ある大きさの数の近くで 格納可能な2つの値の間の最小の間隔(ULP、「最終桁の1単位」)は、 常にその大きさに対する厳密な2のべき乗になります——任意の小さな 数ではありません。これが、2-64のような間隔(上記の 浮動小数点の「影の重複」 を参照)が、本物の数値的な差ではなく丸め誤差の痕跡だとわかる 理由です:独立に測定された2つの量の間に本物の差があるとき、 それがたまたま綺麗な2のべき乗になることはほぼありません。