見出し画像

画像生成AI「Stable Diffusion」で画像とQRコードを融合する方法 初級

こんにちは🐾
BashDAOを運営しているあどにゃーです🐾
今回はStable Diffusionで話題のQRコードと画像の生成を記載したいと思います。

成果物

下記の画像レベルのQRが作れるようになります。

スマホで読めます!

話題になったciaochaos氏のQRとは程遠いですが、かんたんな設定変更で実現できる初級編ということで。
これ以上崩してQRとして成り立つ方法は私も勉強していきます。

では早速やり方を説明していきましょう。

前提

Stable Diffusionがすでにインストールされた環境
CPU + グラボの構成で768x768の画像生成ができる環境
Stable Diffusion Web UIがインストールされた環境

ControlNetを導入

Extentions(拡張機能)のURLに下記リンクを入れてInstallをクリック
https://github.com/Mikubill/sd-webui-controlnet.git

インストール完了後、installedタブに移動
Disable all extensions: noneにチェック
Apply and restart UIでStable Diffusionを再起動

ControlNetのDownload

ControlNetは画像生成の際に特定の条件を付与できる制御モデルです。
今回はQRのデータ情報の特徴を残したいので利用します。

https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main

上記URLからControlNetをDownloadします。
ControlNetにも大量に種類があります。
今回使用するのはTileなので下記Tileを落としてください。

Tile:control_v11f1e_sd15_tile.pth
画像の特徴をのこして高精細化するためのネットワークです。
今回はこれを使用します。

※番外
Canny: control_v11p_sd15_canny.pth
輪郭の特徴を残すキャニー法もあります。
試してないですがこちらももしかしたらQRと相性は良いかもです。

models/ControlNetに置く

control_v11f1e_sd15_tile.pthを下記フォルダに置きます。

これでControlNetを使用する準備完了です。

QRコードを作成する

誤り訂正率も変更できるサイトのほうが良いですが、
画像サイズが大きいところがよかったので下記で生成しました
https://qr.quel.jp/url.php

・誤り訂正率は30%の最大設定(上記サイトは設定できません)
・背景色は透明ではなく白
・画像の形はスクエア(のほうが認識されやすい)
・URLは短いものが良い(情報が多いと画像化で壊れやすいため)

Stable Diffusion画像の生成

  1. img2imgタブを選択

  2. checkpointはお好みで選んでください

  3. promptやLoraもお好みで設定いただいてOKです

  4. img2imgのところに先程作ったQRコードを添付

Stable Diffusionの設定

  1. Resize modeはjust resize

  2. Sampling methodは任意でOK

  3. Sampling stepsも任意でOK

  4. Sizeは768x768

  5. Denoising strengthは0.8~1.0 ※ポイント1
    値が大きいほど元画像(QR)がpromptの内容に近づく変化をします。
    変化させすぎるとQRが読めなくなるし、変化させなさすぎるとただのQRになります。

ControlNetの設定

  1. ControlNetを開く

  2. Enable, Pixel Perfect, Allow Previewにチェック

  3. imageとProcessor PreviewにQR画像を挿入

  4. Control TypeでTileを選択

  5. Processorでtile_resampleを選択

  6. Modelで先程DLしたcontrol_v11fle_sd15_tileを選択

  7. Control Weight: 0.8~1.0 ※ポイント2
    ControlNetに入れた画像の特徴をどれだけ重視するかの指標です。値を大きくしすぎると変化が小さくなるので0.9くらいが良さそうです。

  8. Starting Control Step: 0.1~0.2 ※ポイント3
    コントロールを全体生成のどの段階から適用するかの値です。早すぎると変化が小さくただのQRになるし、おそすぎると変化しすぎてQRを保てなくなります。

  9. Ending Control Step: 1

  10. Control Mode: controlNet is more important

まとめ

以上で設定完了です。
あとは生成をすればQRコードとpromptに合わせた絵が出てきます。
スマホで読んでみてQRとして読めれば成功、読めなければ失敗です。

今回は手探りで実現したのでもっと良い方法があればぜひ教えてください。

ポイント変数は3つ
Denoising strength:0.8~1.0
Control Weight: 0.8~1.0

Starting Control Step: 0.1~0.2
ここをうまく調整することで良さげな絵になる設定を探ります
だいたい、QRが読める画像ができる成功率は1~2割程度でした。

ボツ画像

変化しなさすぎた例:QR読めるけど面白くない

変化させすぎた例:QR読めない

QRの背面を白でなく透明にした例:かっこいいけどQR読めない

さいごに

AI画像に吹き出しをつけたり、絵本化したりできる投稿さいと
BashDAOをやっています。
よかったらのぞいてみてください


この記事が気に入ったらサポートをしてみませんか?