QR Code Montsterとは何者か?どうやって作るのか?
https://gyazo.com/354fe28b54bb0ec99a3a07afc3d1dcc8
https://learn.thinkdiffusion.com/hidden-faces-and-text-with-control-net-qr-code-monster/参考画像
https://huggingface.co/monster-labs/control_v1p_sd15_qrcode_monster/discussions/100The Creation of the dataset used for training the model (and tricks used, if there are any)
https://civitai.com/models/137638ControlNet Mysee - Light and Dark - Squint Illusions Hidden Symbols Subliminal Text QR Codes
Target画像は特に選別しない
Target画像から、輝度差を使ってガイドを作る
Target → Luminanceでグレースケール化 → Blurで強くぼかす → ポスタライズで白黒2値(or 白灰黒3値)へ
https://gyazo.com/89835de86ce886c75ddd0ac437a7c6e4https://gyazo.com/1c55446ddf860525c7ab0c5c4e4d441chttps://gyazo.com/ecafa81bcfa66611311c6dd91df59d8e
この画像セットで学習させれば、任意の白黒ガイド画像(QRCode、テキスト、幾何画像 etc.)から自然に見える画像が生成できるのでは?
できない(少なくともFlux.2 kleinでは)nomadoor.icon 
できないことは無いが、成功率が非常に低い
Flux.2がガイドよりもテキストへの忠実度+画像として自然に見えることを優先する特性がある(気がする)
また、QR Code Monsterがやっていることはガイドの形と生成画像の内容に全く関係がないこと
ガイドは顔の形だったとして、生成される画像はただの森だったり街の雑踏だったりしないといけない
のだが、ControlNet Canny的な挙動をしてしまい、つまりガイドの形と生成画像の意味を繋げてしまうことがあった
例えば椅子の形のガイドを入力し、プロンプトは未来都市とすると、未来っぽい椅子になってしまう
これもしかして、distilledモデルだったのと、単純に学習がへたくそだけだっただけかもしれないnomadoor.icon
FLUX.2 Klein 360 ERP Outpaint LoRAを作って分かったが、Flux.2 はめちゃめちゃ癖ある
もう一回やってみるか
Hybrid imageというものを知り、同一のものでは?と疑うnomadoor.icon
https://gyazo.com/72a52753d465a8baf21a8a5e36cab07c
https://en.wikipedia.org/wiki/Hybrid_imageHybrid image
錯視の一つで、近くで見れば画像Aが、遠くから細目で見れば画像Bが
作り方は比較的簡単で
$ C = \text{HP}(A) + \lambda \text{LP}(B)
フーリエ変換やらラプラシアンピラミッドで、画像を周波数で表現
画像Aは高周波のみ残し、画像Bは低周波のみ残し合成する
QR Code Monsterと致命的に違うことに気づく
Hybrid Imageは、入力する二枚の画像は先に決まっている
QR Code Monsterはガイドを元に自然画像として成立する解を“生成”するもので、入力する画像は1枚のみ
「A(ガイド)だけが固定で、Bは“画像”ではなく“生成分布(プロンプト+ノイズ)”として自由度が巨大」です。この整理が一番しっくり来ます。
QR Code Monsterは定義し直す by ChatGPT.icon
Hybrid image(古典):
$ 「2枚の入力画像が固定」+「周波数帯域で合成」+「人間視覚のLPFで知覚が切り替わる」
(新しい)ガイド制約型錯視(仮):
$ 「ガイド画像Gが固定」+「生成側は自由度が大きい」+「観測オペレータ O を通すとGが現れる」
ちょっと待て、これControlNet全部そうじゃね?nomadoor.icon
パレイドリア!nomadoor.icon
これじゃん。
e.g. 雲の形が動物に見える / コンセントの穴が驚いた顔に見える / 月の模様がウサギに見える
パレイドリアを引き起こす条件
曖昧さ
引きで見る/縮小される/視野で小さくなる
→ 細部が消えて、大局だけが残る
ゲシュタルト法則
閉合:欠けていても形として閉じる
良い連続:滑らかな流れとしてつなぐ
近接・類同:まとまりとして束ねる
図地:対象と背景を分ける
ただまあ、これらは錯視・デザイン一般に活用されていること
というか、QR Code Monsterは白黒のガイドを埋め込むもので = パレイドリアではない。
基本的に生成画像は明暗でガイドを表現している
が、人間はパレイドリアを見た時、明暗以外にも様々な効果で形を見出す。
もう欲が出てきたので、QR Code Monsterの後追いではなく、より自然なパレイドリア生成モデルを作りたいnomadoor.icon
典型的ControlNetの“学習データ生成”
1. 自然画像X
2. そこから ガイド = O(X) を機会的に作る(OpenPose/Depth ... etc.)
3. (G, X)のペアを学習
パレイドリアはOを作るのが難しい
(A) 工学的O
OpenPose / 深度推定 / Canny など
入力の何を保持して、何を捨てるかが比較的明確
(B) 知覚的O
パレイドリア
「何が見えるか」は観測者依存(経験、期待、時間、視野)
同じ画像でも、見える/見えないが揺れる
“手掛かり”が閾値を超えたときにだけ立ち上がる(非線形・離散的に感じる)
Oが“単一の固定関数”として作りにくい
パレイドリアはゲシュタルト法則によって引き起こされるため、Oは人間の認知を使うしかないが、ひっっじょうに曖昧なので学習出来ない可能性が高い
そのため、いくつかの工学的Oで近似する
Squint
$ O_squint(X) = Normalize( Blur( Downsample( Luma(X), s ), σ ) )
一番最初にやった、GaussianBlur + Binarizeは、これに近い
Blob
$ O_blob(X) = Normalize( DoG( Downsample(Luma(X)), σ1, σ2 ) )
HOG
$ O_orient(X) = HOG( Downsample(Luma(X)) )
作りたいモデルは何か?
入力 : S (埋め込みたい元画像)
出力 : P (一見すると別の自然写真だが、引き・縮小・薄目などの条件でSが“見えてしまう”)
観測オペレーターO : "見えてしまう”を工学的に近似して比較する
つまり、 O(P) ≈ O(S) になるような P を作るモデル
ただ、これだけだとAIに取っては同じ画像を作るほうが簡単になってしまうので制約を設ける
形の一致
shape( O(P), O(S) )を小さくする
逆に一致し過ぎも防ぐ
edge(P) と edge(control) が一致しすぎるものを落とす
写真として自然さ
natural(P) を小さくする
Pが意味的にSに引っ張られないようにする
PはSに“見えてしまう”が、写真としての意味はSと無関係 (にしないとパレイドリアとして意味がない)
意味の近さをsim_sem(P, S)に上限をもたせる
S, Pの画像セットを作ればいいが…
パレイドリアではない
パレイドリアは、ランダムなものに、人間が勝手に意味を見出してしまうものであって、QR Code Monsterの様に任意の形状を埋め込むのは違うnomadoor.icon
embedded figure image の方が正しいのでは?
http://www.bobolinkbooks.com/Gestalt/EmbeddedFigures.htmlRevisiting Gottschaldt
e.g.
ヴォルテールの見えない胸像 (サルバドール・ダリ)
All is Vanity (Charles Allan Gilbert)
https://gyazo.com/bcf52537f03a5f04c583d7f4c3e98194
ChatGPT.iconembedded figure は「形を隠す」ではなく、「形としてまとまらないように、別の全体へ所属させる」こと
つまり、「QRのように参照形をなぞる」でも「物体を背景に溶かす」でもない
ある形の構成線・構成面を、別の図像体系の部品として誤分類させることに近い
ターゲット形状の各部品が、別の局所 gestalt に所属している画像。
たとえば猫を埋め込むなら、猫の輪郭線を描くのではない。
猫の耳に相当する線は、家の屋根の一部として見える。
背中の曲線は、丘の稜線として見える。
尻尾は、木の枝として見える。
目の位置は、窓や石として見える。
全部が猫の部品なのに、最初は猫に所属していない。
いや、この中でも色々分けられるな
ルビンの壺や婦人と老婆は、どの距離でみても両方の解釈が行ったり来たりする
対して、All is Vanityは遠くで見た時出てくる。つまり周波数によって任意の画像を呼び出せる
結局最初のQR Code Monsterに帰ってきてない?nomadoor.icon
そんでこれを画像編集として、学習させるとして、データセットはどうすりゃいいんだ?