StableDiffusionでQRコードアートを作る

# 概要

QRコードというものは、白と黒の色を合わせただけの構造のため、やろうと思えば絵に溶け込ませることもできるはず。。という考えで、以下のようにしてstablediffusionでQRコードアートを作成してみる。

## 実行環境

stablediffusion:Automatic1111
機種：M1promacbookpro
メモリ：16GB

なお、Stable diffusionはすでにインストール済みと想定する。
設定していない人は、以下の手順で設定することが可能である。

https://qiita.com/itohdaigo/items/602b54532ef0f333cc06


# 手順

## QRコードの作成

QRコードを作成するサイトを検索してみて、QRコードを準備する。

https://34qr.com/en/

テキストにURLを貼り、以下のようにQRコードを作成する。

![スクリーンショット 2023-08-06 20.54.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/48ac20b0-9be4-c2ea-c172-422bf73d47a1.png)

そして、ダウンロードのpngを押してDLする。
![スクリーンショット 2023-08-06 20.55.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/8293d9d6-f98a-1552-7cc9-03e2c06fe21a.png)

## 拡張機能の準備

以下のサイトの「Code」からURLをコピーします。

AUTOMATIC1111：https://github.com/AUTOMATIC1111/stable-diffusion-webui
ControlNet：https://github.com/Mikubill/sd-webui-controlnet

URLを、`「Extension」→「Install from URL」→「URL from extension’s git repository」`にペーストし、`install`をクリック

![スクリーンショット 2023-08-06 21.00.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/9cc72422-d3e3-88f5-abd1-1b2850481b58.png)

その後、Installedタブの中の`Apply and restart UI`を押す。

![スクリーンショット 2023-08-06 21.01.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/907e7c27-f708-fd17-60f0-46e434e411bc.png)

すると、 img to imgの下の方に、controllnetの部分が追加されている。
![スクリーンショット 2023-08-06 21.03.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/4b28054b-73b5-cb3c-80cd-36246c1d54c6.png)

## モデルの準備

今回、
- controllnet用のモデル
    - https://huggingface.co/lllyasviel/ControlNet-v1-1/blob/main/control_v11f1e_sd15_tile.pth
- イラスト出力用のモデル
    - https://civitai.com/models/36520/ghostmix

の二つをDLする。
その後、
- controllnet用のモデルはディレクトリの`/stable-diffusion-webui/models/ControlNet/`の中におく。
- イラスト用モデルはディレクトリの`/stable-diffusion-webui/models/Stable-diffusion/`の中におく。


## QRコードの作成

以下のように設定して実行してみる。
### img to imgの設定
1. img to imgの`ここに画像をドロップ`に、QRコードをいれる。
1. 設定項目は以下の通り。
    1. Resize mode：Just resize
    1. Sampling method ：DPM++2M Karras
    1. Sampling steps：50
    1. CFG Scale: 7
    1. Denoising strength：0.75
    1. widtgh,height：512(正方形であること)
1. プロンプトは以下の通りに今回は設定する。
```:positive prompt
a cubism painting of a town with a lot of houses in the snow with a sky background, Andreas Rocha, matte painting concept art, a detailed matte painting
```

```:negative prompt
ugly, disfigured, low quality, blurry, nsfw
```
![スクリーンショット 2023-08-15 10.46.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/e36b0124-bf5a-6ed2-fa64-830f894e6f8f.png)

### controllnetの設定
1. single imageの欄に先ほどのQRコードをアップロードし、設定項目を埋める
1. ControllnetをEnable
1. Prosesser：tile_resample
1. Model：control_v11f1le_sd15_tile
    1. prosser,modelは、ControllTypeをtile,にすると自動的に埋まるような記述が参考サイトでは書いてあったが、自分の環境にはなかった。
1. Control weight：1.6
1. Starting Control step：0.23
1. Ending Control Step：0.9
以下のような形になっているはずである。
![スクリーンショット 2023-08-15 10.49.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/d623c7e2-569c-3301-c4cd-7a2d2286597a.png)

## 生成してみる。
あとは、Geenrateを押すと生成される。
![スクリーンショット 2023-08-15 10.55.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/b0ba210e-91e7-205d-a9ec-f85f6457ff1f.png)

今回の生成でうまくいった画像。今回はたまたま1回でうまくいってくれた。実際に綺麗に読み込めかつ、アートになる絵を生成するには、何枚も生成を試す必要がある。

![00047-1854882894.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1288524/f14368d2-de89-c523-ce38-bbb27ab5d917.png)


## うまく読み込めるQRが作れない時。
何百枚と試してデータが取れているわけではないのだが、以下のサイトによると、

https://bocek.co.jp/media/exercise/stable-diffusion/4891/

- `Control weightの数値が高いほどQRコード寄りの画像が生成される`
- `Denoising strengthの数値が低いほどQRコードが強く反映される`
らしい。上記の2つをうまく調整することで、読みやすくなるとのことである。


以上

# 参考

https://bocek.co.jp/media/exercise/stable-diffusion/4891/

https://stable-diffusion-art.com/qr-code/