Filter Mechanics

このページは、adaptive_keyed が内部で何をしているのかを、Research 本文よりも少し実装寄りに説明する補足資料です。ここでは式だけを置いて終わりにせず、各要素が何を意味し、なぜ必要かを順に説明します。

1. まず何が legacy で、何が推奨か

legacy_fixed_pattern_baseline は、固定パターンの実験的 heuristic を後方互換・ablation・回帰確認用に残したものです。推奨モードではありません。現在の main method は adaptive_keyed で、public UI では 標準保護 として表示しています。

2. 方式の全体像

概念式は次の通りです。

δ(I,k)=ProjBudget(M(I)jαj(E(I),k)Bj(k,H,W))\delta(I, k) = \mathrm{ProjBudget}\left(M(I) \odot \sum_j \alpha_j(E(I), k) \cdot B_j(k, H, W)\right)

ここで大事なのは、これは「一つの固定ノイズを足す式」ではないという点です。画像ごとに E(I)E(I) が変わり、seed ごとに kk が変わり、その両方に応じて αj\alpha_jBjB_j が変わります。

3. 各記号の意味

M(I)M(I): perceptual mask

知覚マスクです。texture が多い場所では値が高く、flat な場所では低くなります。実装では、勾配、局所分散、ラプラシアン、平坦さ、中立色らしさ、skin-like らしさをまとめて使っています。結果として、背景の空や壁や肌には予算を使いにくくし、布地や髪や模様には相対的に予算を使いやすくします。

E(I)E(I): image-conditioned feature vector

画像条件付き特徴量です。深い大規模 encoder ではなく、ブラウザへ持ち込みやすい軽量特徴を採用しています。平均輝度、輝度分散、彩度統計、エッジ密度、texture score、暖色 / 寒色偏り、エッジ方向比率などが含まれます。

Bj(k,H,W)B_j(k, H, W): keyed basis patterns

seed と解像度に依存して生成される基底パターンです。各 basis は、向き、基本周波数、二次周波数、位相、包絡、warp、noise mix を持ちます。これらが seed に応じて変化するため、単純な universal pattern subtraction を避けます。

αj(E(I),k)\alpha_j(E(I), k): mixture weights

各 basis をどれくらい混ぜるかを決める重みです。画像特徴だけではなく、seed 由来の key signal も混ぜています。したがって、同じ画像でも seed を変えると、使われる basis の順位と重みが変わります。

ProjBudget

最終差分を知覚予算内へ戻す処理です。Saimaku では global max と local max の両方を使います。local max は mask に応じて縮むため、flat 領域ではさらに変化量が減ります。これが「100%でも見えにくい」主因の一つです。

4. なぜ Oklab を使うのか

単純な RGB 加算は、色差の知覚とズレやすく、特に平坦部や中間調で不自然な色転びを起こしやすいです。Saimaku は Oklab を使い、明るさ方向と色味方向を分離して扱います。これにより、見え方の制御を RGB よりしやすくしています。

ただし、Oklab を使えば自動的に優れた保護になるわけではありません。Oklab は「差分の目立ちやすさを制御しやすくする」道具であり、防御強度を保証するものではありません。

5. 実装フロー

  1. 入力画像から軽量特徴と知覚マスクを計算する
  2. feature hash を作り、seed と解像度と組み合わせて effective seed を導く
  3. basis bank から上位数個の基底を選び、softmax 的に重みを付ける
  4. 各 basis について、向き付き carrier、二次 carrier、warp、包絡、value noise を合成する
  5. Oklab の L / a / b 方向へ別々に差分場を作る
  6. 平滑化する
  7. ProjBudget で local / global budget 内へ投影する
  8. Oklab から RGB へ戻す

6. なぜ fixed sinusoid よりましか

旧 baseline は、画像条件付きではなく、seed も弱く、全画像にほぼ同系統の固定パターンを足していました。これには次の弱点があります。

adaptive_keyed は、この弱点を避けるために、画像条件付き、seed 依存、mask 制御、basis mixture、Oklab 制御を組み合わせています。

7. それでもまだ未解決なこと

この方式は、以前の fixed pattern より筋が良いですが、未解決点は残ります。

8. このページの読み方

このページは mechanism の説明であり、性能保証ではありません。性能の読み方と限界は /research 本文にまとめています。特に smokesurrogate benchProjBudgetpersonalization benchmark の意味は本文で定義しています。先にそちらを読むことを勧めます。