2023年6月初旬ごろ以下のような画像が話題になりました。
引用元:https://mp.weixin.qq.com/s/i4WR5ULH1ZZYl8Watf3EPw
普通のイラストですが、QRコードリーダーをかざすとQRコードとして読み取ることができます。
これは中国のIsle of ChaosさんがStable Diffusionを使って作成したものです。
この記事では、Stable Diffusion web UI(AUTOMATIC1111)を使って、このようにQRコードとして読み取れるイラストをつくる方法を紹介します。
Stable DiffusionでQRコードを作る方法
本家のQRコードのイラストは、独自に訓練されたControlNetを使って生成されているそうです。
しかし、ControlNetモデルを訓練しなくても、もっと簡単な方法でこのようなQRコードを作ることができます。
この記事では、ControlNetを訓練することなくQRコード入りイラストを生成する方法を紹介します。
QRコードを用意する
まずはイラストに組み込むQRコードを用意します。
URLを含んだQRコードはオンラインで無料で提供されているツールで簡単に作成できます。
Goolgeで「QRコード 作成」と検索して使いやすそうなサイトを使いましょう。
おすすめは、誤り訂正レベルが「レベルH(復元能力が約30%)」のQRコードを作成できるサイトを使うことです。
QRコードには、コードの一部が汚れたり損傷したりしてもデータを復元する機能があります。
誤り訂正レベルが高いほど、この復元能力が高くなります。
Stable Diffusionによる変換でQRコードの一部の情報が失われる可能性があるため、最もレベルが高い「レベルH」でQRコードを作成しておくと成功率が高くなります。
また、QRコードの周りには余白を作り、QRコードの画像サイズが512x512pxになるようにします。
今回は、このブログのURLを埋め込んだQRコードを用意しました。
QRコードを用意したら、念のためQRコードがきちんと読み取れることを確認しておきましょう
事前準備
続いてQRコードを生成する準備をします。
ExtensionsタブのInstall from URLを開き、以下のリンクを入力してInstallボタンを押します。
その後、Apply and restart UIボタンを押してUIを更新します。
それから、以下のリンクからcontrol_v11f1e_sd15_tile_fp16.safetensorsをダウンロードします。
ダウンロードしたモデルを Stable Diffusion web UIのフォルダの stable-diffusion-webui/extensions/sd-webui-controlnet/models
の中におきます。
これで事前準備は完了です。
img2imgの設定
次に、img2imgの設定をします。モデルは好きなものを使用してください。
img2imgの画面でQRコードの画像をドラッグアンドドロップし、プロンプトを入力します。
ここでプロンプトは「cat」と入力しました。
その他、img2imgの設定は以下にします。
- Resize Modeを「Just Resize」に
- Sampling Methodを「DPM++ SDE Karras」
- Sampling stepを「20」に
- Denoising strengthを「0.75」に
ControlNetの設定
続いてControlNetを設定します。
設定には様々なやり方があると思いますが、ここでは上手くいった例を紹介します。
- ControlNetを開き「Enable」にチェックを入れる
- Control Typeは「Tile」を選択
- Preprocessorを「tile_resample」に設定
- Modelを「control_v11f1e_sd15_tile_fp16」に設定
- Starting Control Stepを「0.15」に設定
特に重要なのはStarting Control Stepです。
Starting Control Stepの値を大きくするほど、QRコードは壊れやすくなりますが、プロンプトがよく反映されます。画像の生成を繰り返して、この値を調整します。
以上の設定ができたらControlNetのドロップエリアにQRコードをドラッグアンドドロップします。
QRコード画像を生成する
さて、いよいよQRコードの画像を生成しましょう。
Generateボタンを押して画像を生成します。
猫っぽいQRコードの画像が生成されました。
しかし、試してみるとQRコードとしては読み取れません。
ここでControlNetのStarting Control Stepの値を0.1に下げてみます。
また、このときSeedを固定します。
それから画像を再生成すると以下のようになりました。
これならぎりぎりQRコードとして認識できます。
美しくはないですが、かろうじてイラスト入りのQRコードですね。
このように、最初はStarting Control Stepを「0.15」に設定して画像を生成します。
生成した画像がQRコードとして読みとれない場合はStarting Control Stepの値を徐々に小さくします。
反対に、QRコードとしては読みとれるけどプロンプトの反映が弱い場合はStarting Control Stepの値を徐々に大きくします。
また、いい画像が生成されたらSeedをいったん固定して画像が変わらないようにするのもポイントです。
いろんなQRコード画像を生成してみよう
上記でコツをつかめたら、いろんな画像・プロンプトを使ったり、微調整を繰り返してお気に入りのQRコードを作りましょう。
色付きのQRコードを使っても問題なくQRコードを作ることができます。
まとめ
今回はStable Diffusionを使ってQRコード入りのイラストを生成する方法を紹介しました。
うまく使えばイラストの中に自然にQRコードを埋め込めるので広告などにも使えそうです。
いろいろ試行錯誤してお気に入りのQRコードを作ってみてください。
記事の内容にわからないことがある方は以下のアカウントに気軽にDMしてください!
また、最新の技術の活用方法など役に立つツイートを心がけているので、ぜひフォローしてもらえると嬉しいです!
QRコードの生成で困ったことなどあればツイッターでメンションしてもらえれば可能なかぎり回答します。