Zenodoで DOI 1.11 を見る:https://doi.org/10.5281/zenodo.21837260
旧DB初期のJOINベースパイプラインで構築。このバグの影響を受けたのは一部のモデルのみで、StandardとHigh-Fidelityは訂正が必要だった一方、SwinIRとDigital-Artは無傷と確認されています。詳細は置き換え済みファイルを参照。
query_doi111_verification_windows.sqlσgt=0 ⇒ S=1という恒等式を、4モデル全部を 1つのセッションで(4つのデータベースを同時にATTACHし、 UNION ALLで結果を結合して)検証し、例外がゼロであることを 確認します。
このファイルは、4モデル全部のデータベースを1つのセッションに まとめて開いた上で、3つのクエリ群を順に実行します:
ATTACH 'D:/verification/output_std/alignment_axis_images_std.duckdb' AS db_std (READ_ONLY);
ATTACH 'D:/verification/output_swinir/alignment_axis_images_swinir.duckdb' AS db_swinir (READ_ONLY);
ATTACH 'D:/verification/output_high/alignment_axis_images_high.duckdb' AS db_high (READ_ONLY);
ATTACH 'D:/verification/output_digital/alignment_axis_images_digital.duckdb' AS db_digital (READ_ONLY);
ATTACH 'パス' AS 別名 (READ_ONLY)は、追加の
データベースファイルを現在のセッションに開き、短い別名を
付けるコマンドです。以降のクエリでは、開くファイルをいちいち
切り替える代わりにdb_std.blocksのように書けます。
4つとも読み取り専用で開いているので、このファイルの実行が
検証対象のデータを書き換えることはありません。
SELECT 'std' AS src_model, COUNT(*) AS total_blocks FROM db_std.blocks
UNION ALL
SELECT 'swinir', COUNT(*) FROM db_swinir.blocks
UNION ALL
SELECT 'high', COUNT(*) FROM db_high.blocks
UNION ALL
SELECT 'digital', COUNT(*) FROM db_digital.blocks;
Part 0は定理の検証そのものではなく、単なる前提の確認です:
各モデルのデータベースに何行(noTTA・TTA合計のブロック数)
入っているか。COUNT(*)が行数を数え、4つの
SELECTをUNION ALLで重ねることで、
4回別々の結果を出す代わりに、モデルごとにラベル付きの1行を
まとめて出力します。
SELECT 'std' AS src_model,
COUNT(*) FILTER (WHERE model='notta') AS n_sigma0_notta,
COUNT(*) FILTER (WHERE model='notta' AND ssim_s<>1.0) AS exceptions_notta,
COUNT(*) FILTER (WHERE model='tta') AS n_sigma0_tta,
COUNT(*) FILTER (WHERE model='tta' AND ssim_s<>1.0) AS exceptions_tta
FROM db_std.blocks WHERE sigma_gt = 0
UNION ALL
-- ...同じ4列を、db_swinir・db_high・db_digitalについても繰り返す
これが実際の検証です(sigma_gtについては
用語集を参照)。
WHERE sigma_gt = 0で、ground truthのブロックが
完全に平坦なものだけに絞り込みます。COUNT(*) FILTER
(WHERE ...)は、条件ごとに別のクエリを書かなくても、
追加条件に合う行数を数えられます:n_sigma0_notta
はnoTTAでσgt=0のブロックが何件あるか、
exceptions_nottaはそのうちssim_s <>
1.0(構造項Sが厳密に1でない)の件数です。
この報告書が証明する定理は、どちらの例外件数もどのモデルでも
厳密に0になると予測しており——実際のデータベースに対して
これを実行した結果も、まさにその通りであることを確認して
います。
SELECT 'std' AS src_model,
COUNT(*) AS n,
ROUND(AVG(comp_sharpness_processed_block), 4) AS avg_sharpness,
ROUND(STDDEV(comp_sharpness_processed_block), 4) AS std_sharpness,
ROUND(MAX(comp_sharpness_processed_block), 4) AS max_sharpness
FROM db_std.blocks
WHERE model = 'notta' AND is_comp_zero = FALSE AND sigma_gt = 0
UNION ALL
-- ...同じ4列を、db_swinir・db_high・db_digitalについても繰り返す
こちらは定理そのものではなく、続報的な問いです:ground truthが
平坦なそれらのブロックにおいて、復元結果も常に平坦なのか、
それともモデルが何もないところにディテールを
「幻視」する
ことがあるのか。is_comp_zero = FALSEは、復元結果
自体が完全に退化
している(何も写っていない)ケースを除外する条件です。残った
ブロックにおけるcomp_sharpness_processed_blockの
平均・最大値が、本来何もないはずの領域にモデルがどれだけ
シャープネスを幻視して付け加えたかを測ります。