画像生成AI Stable Diffusionを触ってみた

# 環境
- Windows11
- Python 環境構築の済み(anaconda)

# ダウンロード
次のGithubのリポジトリからStableDiffusionWebUIを```code > Download ZIP``` でコードをダウンロードして展開する。

https://github.com/AUTOMATIC1111/stable-diffusion-webui

# 起動
展開して作成された ```stable-diffusion-webui-master``` フォルダにある ```webui.bat``` (Windows)/ ```webui.sh``` (Mac)を実行する(約5分)。

## 補足: Windowsのセキュリティ
次のウィンドウが表示される場合がある。不安な場合、Windows Difenderでチェックされたい。

[詳細情報] をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2844961/3db4c785-d031-1c0f-582a-d526ab6c5c5b.png)

次に、[実行] をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2844961/e2706064-0af2-76f8-19d9-ea277b7e1ad0.png)

## 補足1: 起動失敗 ```exit code: 9009```
次のエラーが表示されることがある。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2844961/d8b8bb2d-53d9-99a7-fd05-61bd9e9fcaa0.png)

このエラーはPythonの起動に失敗したことを意味する。

```
Couldn't launch python

exit code: 9009

stderr:
Python
Launch unsuccessful. Exiting.
続行するには何かキーを押してください . . .
```

まず、```コントロールパネル > システムとセキュリティ > システム```から```システムの詳細設定```を選択し、```システムのプロパティ``` ウィンドウにある ```環境変数(N)...``` をクリックする。

次に、```環境変数``` ウィンドウにある ```システム環境変数(S)``` 欄で ```Path``` / ```PATH``` を選択して ```編集(E)...``` をクリックする。

そして、```環境変数名の編集``` ウィンドウで ```新規(N)``` で次のパスを追加する
（```YourUsername``` はご自身のユーザー名に変更されたい）。


- Python 単体をインストールした場合
    ```
    C:\Users\YourUsername\AppData\Local\Programs\Python\Python39
    ```

- Anaconda をインストールした場合
    ```
    C:\Users\YourUsername\anaconda3
    ```

追加後、```環境変数名の編集``` ウィンドウで ```OK``` をクリック、```環境変数``` ウィンドウで ```OK``` をクリック、```システムのプロパティ``` ウィンドウで ```OK``` をクリックする。そして、変更後にターミナルを再起動されたい。

## 補足2: 起動失敗 ```Error code: 1```
次のエラーが出力される場合がある。
```
RuntimeError: Couldn't fetch Stable Diffusion.
Command: "git" -C "パス\stable-diffusion-webui-master\repositories\stable-diffusion-stability-ai" fetch --refetch --no-auto-gc
Error code: 1
```
これは ```git``` コマンドが正常に実行できなかったことを示す。

### インストール
https://qiita.com/fehde/items/321c939825f133c6cb3b

次のサイトで Git をインストールする。

https://git-scm.com/download/win

インストール完了後にターミナルを再起動されたい。

# 実行
```
python launch.py
```

# エラー
オープンソースの機械学習ライブラリ PyTorch が GPU を使用できないことが原因である。
```
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
Python 3.11.3 | packaged by Anaconda, Inc. | (main, Apr 19 2023, 23:46:34) [MSC v.1916 64 bit (AMD64)]
Version: 1.7.0
Commit hash: <none>
Traceback (most recent call last):
  File "C:\Users\takum\Desktop\stable-diffusion-webui-master\launch.py", line 48, in <module>
    main()
  File "C:\Users\takum\Desktop\stable-diffusion-webui-master\launch.py", line 39, in main
    prepare_environment()
  File "C:\Users\takum\Desktop\stable-diffusion-webui-master\modules\launch_utils.py", line 384, in prepare_environment
    raise RuntimeError(
RuntimeError: Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check
```

次のようにオプションを追加して実行されたい(約7分)。

- 低性能なGPUで実行する
```
python launch.py --lowvram --xformers
```

- CPUで実行する
```
python launch.py --skip-torch-cuda-test
```

次のエラーが出る場合がある。

```sh
RuntimeError: "LayerNormKernelImpl" not implemented for 'Half
```

その場合、次のコマンドで実行されたい。

```
python launch.py --skip-torch-cuda-test --no-half --precision full
```

- コマンドのオプション記入を省略する方法
webui.batを変更することでコマンドへのオプションを省略できる。

```
@REM 以下、自分で追加
set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.6, max_split_size_mb:64
set COMMANDLINE_ARGS=--lowvram --xformers --no-half --precision full
```

ブラウザで次のページが自動的に開かれる

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2844961/b1229a45-0368-6e28-fad2-522c78c89c70.png)

# 実行結果
最近、ポートフォリオのWebページ画面を生成するように試みた。次に入力したプロンプトを示す。

```
A portfolio web page that introduces works created by students aiming to become engineers.
```




10枚の画像を生成するのに合計1時間30分ほどかかった。



![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2844961/49d4ea38-0316-3e5c-2955-2f4099eae783.png)

webページのデザイン
https://huggingface.co/dhanushkaha/web-model

ログイン
https://huggingface.co/kiftekhar/d-designer2
# 応用
- モデルファイル Checkpoint
    - Hugging Face
        - https://huggingface.co/
    - Civitai
        - https://civitai.com/
- 追加学習モデルLoRA
    - Civitai / Hugging Face からダウンロード
    - 画像データからオリジナルの LoRA ファイルの作成
- SDXL
    - https://soroban.highreso.jp/article/article-042
- VAE
    - https://soroban.highreso.jp/article/article-043




https://nuco.co.jp/blog/article/fN5yKeGc#index_KGw6Cjh3

https://github.com/AUTOMATIC1111/stable-diffusion-webui

https://github.com/openvinotoolkit/stable-diffusion-webui/wiki/Installation-on-Intel-Silicon

https://soroban.highreso.jp/article/article-040#651d3601d90c7102d4621e0a-6d1d2befd6b2e9cc7f422a16