はじめに
オートステレオグラム生成器を作りました.
「マジカルアイ」の方が言葉として有名ですが「オートステレオグラム」が正式名称らしいです.
仕組み
処理はすべてクライアント側(ブラウザ上)で完結しており,サーバーに画像が送信されることはありません.
まずは,1 枚の画像から深度情報を計算します.
モデルには Depth Anything V2 を採用し,@huggingface/transformers を使ってブラウザ上で直接推論を回しています.
約 40MB の INT8 量子化モデルを使用しています.
次に,推定された深度マップをもとに,オートステレオグラムを生成します. オートステレオグラムの生成のためには,深度に応じて横方向にどれだけずらすかを計算する必要があります. Disjoint Set Union(Union-Find)を使って,どのピクセル同士が同じ色となるかを計算し,その結果をもとにパターンを生成しています.
おわりに
これは既出です. 作り終わった後に適当に調べてみたら見つけてしまった,しかも複数.
考えることは皆同じということですね.悔しい. ですが,次に生きるはず. これまでは機械学習系であっても,自前で訓練したのを無理やり TypeScript 移植して動かしていたのですが(小さかったし),ONNX 形式のモデルをブラウザ上で WebGPU や WebAssembly で動かせるのは便利ですね.
何か思いついたら再挑戦します.