自前PCにStable Diffusion環境を構築し、画像生成をしてみる

# はじめに
今回は自前PC環境に画像生成AIの代名詞であるStable Diffusion環境を構築し、AIを使用しての画像生成を行っていきます。

### 対象者
・NVIDIA製のGPUを所持している方
・ある程度のスペックが担保されている方


細かい説明などは省略していきます。

# 使用するStable Diffusion
Stable Diffusionは2年程前から急速に流行り出した画像生成AIサービスになります。
現在色々な構築方法が存在しますが今回は **AUTOMATIC1111/stable-diffusion-webui**
で構築をしていきます。

### Python3.10.6のインストール
今回のStable DiffusionはPython3.10.6が対応しています。
公式サイトからPython3.10.6をインストールしてください。

https://www.python.org/downloads/release/python-3106/

### Gitのインストール

https://git-scm.com/

### clone前の準備
cloneする前に、自身のC:直下などにStable Diffusion用のフォルダを作成します。
日本語が入るような所(デスクトップなど)には作成しないように注意しましょう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/21c5a735-ca3d-4808-ad8b-61d8f6c8da53.png)

作成したら、コマンドプロンプトを開き作成した階層まで行きましょう。


次にGithubからcloneをします。

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

上記URLからGithubに行き、URLをコピーします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/16257618-a046-4832-88eb-ff3a4e4b462b.png)

コピーしたらコマンドプロンプトに
```cmd:git command
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
```
を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/b7adcaa1-08b7-418d-8471-976b0b62d3e9.png)
cloneが完了すると、先程作成したファイルないにフォルダが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/647e45cb-1b23-462c-92a5-0af737f52023.png)

中身を確認すると色々フォルダが存在していますが、その中のwebui-user.batを確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/603ea678-0ede-45e7-8a17-74a209e67e3e.png)

webui-user.batを起動するとStable Diffusionに必要なものがインストールされますが、その過程で画像生成に必要なモデルがインストールされます **(Check pointという)** がこのCheck pointは使用しませんので、先にCheck pointをダウンロードしておきます。

モデルのダウンロードができるサイトは様々ありますが、ここではCivitAIというサイトからダウンロードしてきます。

https://civitai.com/

モデルには大きく分けてcheck pointとLoRAという2つが存在しますが今回はcheck pointをダウンロードしてください。(画像のマークをよく確認)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/ac185792-aab4-4446-9a4f-fa3d4e0b5a91.png)

モデルには様々あり、リアルな質感のものに特化したモデル、アニメ調、風景など様々あります。自分の好きなものをダウンロードしましょう。
使いたいモデルを見つけたらダウンロードしましょう。ファイルはそこそこ大きいので注意しましょう。
**また、モデルにはSD1.5とSDXLというものがありますが、さいｓｙはSD1.5がおすすめです。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/4e2a598d-afeb-4bac-93db-b53248dfda5f.png)

ダウンロードしてきたモデルはcloneして生成されたフォルダ内の **models/stable-diffusion**に格納します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/4f7c79a9-a7ee-45cf-8c53-1696380d9014.png)

モデルを格納したら、webui-user.batを起動しますが、その前にwebui-user.batをメモ帳などで開きオプションを追加しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/3bd27c3d-f639-494f-bd19-fd8302774be5.png)
```
set COMMANDLINE_ARGS= --xformers
```
今回はこのオプションをつけます。簡単に言うと画像の生成が少し早くなります。
オプションには様々種類がありますので、お好きなものを追加してください。
### 参考
https://supplepentan.com/programming/stable-diffusion-web-ui_04_command_option/

オプションを書いたらwebui-user.batを起動します。
起動すると依存関係のあるパッケージなどのインストールが始まります。
なかなか時間がかかるので気長に待ちましょう。

# 画像生成をしてみる
インストールなどが終わると自動的に、Web上でStable Diffusionのサービスが立ち上がります。
今回はプロンプト以外の部分に関しては説明をしません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/1cece565-bda5-4778-b11e-c66ad9a2e2f8.png)

画像のマーク部分に先ほどダウンロードしたCheck pointを選択することができます。先ほどダウンロードした物が選択できなければ、指定した階層に正しく入っていないなど確認してみましょう。一度再起動すると治ることもあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/9b1ea2e9-3202-4b5d-a23a-79300bd9a9c2.png)

プロンプトを入力して、画像を生成してみましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/6093e055-303e-46b1-9c50-49b7aab5acab.png)

画像の上段が **ポジティブプロンプト(生成して欲しい物)**
下段が **ネガティブプロンプト(生成して欲しく無い物)**
になります。

今回はテストなので
ポジティブプロンプトに
```
image of a girl, 
masterpice,
best quality,
```
ネガティブプロンプトに
```
worst quality,
```
と入力します。
image of a girlは女性の画像
masterpice,best quality,は高品質系のプロンプトです。
worst quality,は低品質を表します。
プロンプトを細かく指定すれば、ポーズや表情、背景なども細かく指定できます。
プロンプトを入力したら、画像生成を開始します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/83e49470-b7d7-40a4-b20f-6415b4761bde.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/e3f3ad13-2d04-4c65-9ada-6327aca00ddb.png)

出力された画像は **自分の作成したディレクトリ\stable-diffusion-webui\outputs**内に保存されます。

### 終了方法
終了するには起動した際のwebui-user.batを閉じれば終了します。
webブラウザを閉じるだけでは起動しっぱなしなので注意してください。

以上がStable Diffusionを用いての画像生成の一連の流れになります。
お疲れ様でした！
![00000-546945538.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4100625/bbfca3b1-0f9c-48be-bc31-ce2e38d49a03.png)

# おわりに
Stable Diffusionはまだまだ色々なことができLoRAを使用して更に生成される画像に特徴をもたせるようにできたりもします。
次はその辺の説明や、Stable Diffusionの機能を細かく説明する記事がかければいいなと思います。

:::note warn
補足
Stable Diffusionで生成した画像などを例えば商用利用などする際は、CivitAIなどに公開されているモデルをダウンロードするときに商用利用可能かどうかの記載があるのでよく確認して使用しましょう。
:::

# 株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】
ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。

https://onewedge.co.jp/