Diffusion モデルはQRコードの符号化アルゴリズムを模倣できるか?
これはNAISTアドベントカレンダー2022二日目の投稿です。
イントロ
2022年を振り返ると、Stable diffusionを用いたモデルが研究者からイラストレーターまで、その生成精度の高さから様々なインパクトを与えた年でした。特に、Text-to-Imageである点、文字で条件付けができることは、人間の考えとAIの表現のコミュニケーションエラーが格段に縮まったように思います。
突然ですが、1990年代に生まれたText-to-Imageといえば、思い当たるものが一つありませんか?
そう、QRコードです!
QRコードは頑張れば、人間でも計算して描き上げることは可能です。
では、もしかしたらAIもQRコード符号化アルゴリズムを学習することができるのではないでしょうか?(論理の飛躍)
言い換えれば、QRコードの符号化アルゴリズムはdiffusionモデルで模倣可能なのか?というのを、簡単な実験ではありますが、やってみました。
データセット生成
今回、sst2の英語データセットから、pythonのqrcodeライブラリでqrコードを生成し、QRsst2というデータセットを作成しました。
Fine-tuning
事前学習モデルはLudwig Maximilian University of Munich CompVis Groupが公開しているstable-diffusion-v-1-4-originalを使いました。
学習はGoogle Colab Pro+を契約して、A100を使って3エポック学習させました。
結果
promptによるQRコード生成は以下から実行できます。torchやcudaのバージョン周りでエラーが出やすいので、必要に応じてバージョンを確認して合うものを入れ直すなどしてください。(Freeプランでの動作は検証していません。)
https://github.com/gojiteji/text2QR/blob/main/samplecode.ipynb
それっぽいものは生成できますが、スタイル変換として事前学習の影響が出ているのと、過学習気味のように見えます。
prompt: 'How are you?
prompt: https://google.com
(2枚生成)
prompt: Stable diffusion is the best technology in 2022.
(16枚生成)
たまに、iPhoneのカメラアプリでQRコードであると判定してくれるものを生成してくれます。
これはiPhoneはQRコードだとは認識してくれるがなんも出ない pic.twitter.com/K6AmlNW6Du
— Koki Tanaka⚡️ (@gojiteji) November 21, 2022
もし何か読み取れるものが生成されたら教えてください。
所感
だいぶとゴリ押しで学習させたので、トークナイズをcharacter/byte-levelにするなど、もっと”符号化”のプロセスを学習させるやりようがあるように思います。
あと、Fine-tuningの時にpromptにQRcode:
を追加したらよかったかな…🤔?
参考
- テクノロジー/QRコード開発 - Denso WAVE
https://www.denso-wave.com/ja/technology/vol1.html - justinpinkney/stable-diffusion - GitHub
https://github.com/justinpinkney/stable-diffusion