Filter Mechanics
このページは、adaptive_keyed が内部で何をしているのかを、Research 本文よりも少し実装寄りに説明する補足資料です。ここでは式だけを置いて終わりにせず、各要素が何を意味し、なぜ必要かを順に説明します。
1. まず何が legacy で、何が推奨か
- 推奨:
adaptive_keyed - legacy baseline:
legacy_fixed_pattern_baseline
legacy_fixed_pattern_baseline は、固定パターンの実験的 heuristic を後方互換・ablation・回帰確認用に残したものです。推奨モードではありません。現在の main method は adaptive_keyed で、public UI では 標準保護 として表示しています。
2. 方式の全体像
概念式は次の通りです。
ここで大事なのは、これは「一つの固定ノイズを足す式」ではないという点です。画像ごとに が変わり、seed ごとに が変わり、その両方に応じて と が変わります。
3. 各記号の意味
: perceptual mask
知覚マスクです。texture が多い場所では値が高く、flat な場所では低くなります。実装では、勾配、局所分散、ラプラシアン、平坦さ、中立色らしさ、skin-like らしさをまとめて使っています。結果として、背景の空や壁や肌には予算を使いにくくし、布地や髪や模様には相対的に予算を使いやすくします。
: image-conditioned feature vector
画像条件付き特徴量です。深い大規模 encoder ではなく、ブラウザへ持ち込みやすい軽量特徴を採用しています。平均輝度、輝度分散、彩度統計、エッジ密度、texture score、暖色 / 寒色偏り、エッジ方向比率などが含まれます。
: keyed basis patterns
seed と解像度に依存して生成される基底パターンです。各 basis は、向き、基本周波数、二次周波数、位相、包絡、warp、noise mix を持ちます。これらが seed に応じて変化するため、単純な universal pattern subtraction を避けます。
: 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. 実装フロー
- 入力画像から軽量特徴と知覚マスクを計算する
- feature hash を作り、seed と解像度と組み合わせて effective seed を導く
- basis bank から上位数個の基底を選び、softmax 的に重みを付ける
- 各 basis について、向き付き carrier、二次 carrier、warp、包絡、value noise を合成する
- Oklab の L / a / b 方向へ別々に差分場を作る
- 平滑化する
ProjBudgetで local / global budget 内へ投影する- Oklab から RGB へ戻す
6. なぜ fixed sinusoid よりましか
旧 baseline は、画像条件付きではなく、seed も弱く、全画像にほぼ同系統の固定パターンを足していました。これには次の弱点があります。
- 画像に合わない場所でも同じ変化が出る
- 逆解析の対象がほぼ universal pattern になる
- 平坦部で見えやすい
- 「見えるだけで強くない」状態に陥りやすい
adaptive_keyed は、この弱点を避けるために、画像条件付き、seed 依存、mask 制御、basis mixture、Oklab 制御を組み合わせています。
7. それでもまだ未解決なこと
この方式は、以前の fixed pattern より筋が良いですが、未解決点は残ります。
- compact surrogate bench だけでは強い personalization 耐性を十分に主張できない
- 代表的外部手法との同一条件比較が未完了
- purifier や再生成系 attack に対する full benchmark が未完了
- runtime asset のサイズ、画質、保護強度の最適 trade-off はまだ探索余地が大きい
8. このページの読み方
このページは mechanism の説明であり、性能保証ではありません。性能の読み方と限界は /research 本文にまとめています。特に smoke、surrogate bench、ProjBudget、personalization benchmark の意味は本文で定義しています。先にそちらを読むことを勧めます。