4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Stable Diffusion】新学期からはじめる画像生成AI【M1 / M2 Mac】

Last updated at Posted at 2023-04-01

はじめに

画像生成AIに関する知識がゼロである筆者が、Stable Diffusionを動かすための環境を構築し、好きなモデルやVAEを導入するところまで成功したため、手順を記載しておきます。ただし、promptの書き方については触れません

対象者

  • 画像生成AIについて知識がない人(私も無いです)
  • M1 / M2 Macを使用している人

環境

MacBook Air
Apple M2
メモリ 16G
macOS Ventura 13.2.1

環境構築

Homebrewのインストール

以下のQiitaの記事を参考に、Homebrewをインストールします

必要なパッケージのインストール

Homebrewを使ってパッケージをインストールします

brew install git wget

公式の手順では、cmakeprotobufrustpython@3.10git、およびwgetをインストールするように指示されていますが、筆者の環境ではgitwgetだけで十分でした(Pythonはこのあとインストールします)。もし何かしらのエラーが発生した場合は、cmakeprotobuf、およびrustもインストールしてみてください

Python環境の構築

バージョン管理ツールのインストール

Pythonのバージョンによって、動くものと動かないものの差が激しいため、バージョンを自由に切り替えられるように、バージョン管理ツールをインストールします。ここでは、asdfというツールを使用しますが、他のツールでも構いません

asdfのインストール

brew install asdf

.zshrcに次の一行を加える

. /opt/homebrew/opt/asdf/libexec/asdf.sh

.zshrcを直接編集せずとも

echo -e "n. $(brew --prefix asdf)/libexec/asdf.sh" >> ~/.zshrc

と実行することで追加できます

Pythonプラグインのインストール

asdfでPythonを扱えるようにします

asdf plugin-add python

この時点でまだPythonはインストールされていません

Pythonのインストール

asdfを用いてPythonをインストールします。 ここで重要なのは、インストールするバージョン です。

asdf install python latest

と実行することで最新版のPythonがインストールできますが、最新版のPythonではStable Diffusionは動かせないので、 v3.10 をインストールします。

asdf install python 3.10.10

これは2023年4月1日時点での情報です。今後Stable Diffusionのアップデートにより要求されるPythonのバージョンが変更されるおそれがあります

使用するPythonのバージョンの設定

asdf global python 3.10.10
python -v # Python 3.10.10と表示されればOK

stable-diffusion-webuiの環境構築

Stable Diffusionの実行環境を構築する方法には、複数の手段がありますが、今回は最も簡単なstable-diffusion-webuiを使用する方法を紹介します(実は、最初はスクリプトを書いて実行する方法を試みましたが、好きなモデルを指定するところで挫折したため、webuiに切り替えました)

任意のディレクトリに移動したら、以下のコマンドを実行します

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

次に、モデルを用意します。とりあえず最初はオリジナルのモデルを追加してみます

以上のサイトからsd-v1-4.ckptというファイルをダウンロードしましょう。基本的に、AIのモデルなどを落としてくるのはこのHugging Faceというサイトになります。Hugging Faceはアカウント登録が必要なので事前に登録をしてください

AIのモデルは、ckptsafetensorsといった拡張子になっています。また、モデルを落とす際にgit lfsでリポジトリごと落とせと言ってくることもありますが、膨大な時間がかかるのでおすすめしません。目的のファイルだけ直接ダウンロードすれば大丈夫です

Hugging Faceの使い方は、ほとんどGitHubと同じです。File and versionsという欄から目的のモデルファイルをクリックし、This file is stored with Git LFS . It is too big to display, but you can still download it.という文のdownloadをクリックすれば落とせます

落としてきたモデルはstable-diffusion-webui/models/Stable-diffusion配下に置いてください

Pythonの仮想環境を構築

stable-diffusion-webuiを実行する際にさまざまなパッケージ等がインストールされるのですが、なるべくまっさらできれいな状態で行いたいので、仮想環境を構築します。

仮想環境といっても構築はとても簡単です。venvというもので行うのですが、Pythonに標準でついてくるので特にインストールなどは必要ありません

cd stable-diffusion-webui
python -m venv .venv

これで.venvという名前の仮想環境が構築できます。名前はvenv.venvにするのが慣習だそうです

source .venv/bin/activate

これで仮想環境に入れます。もし、仮想環境から出たくなったら

deactivate

で抜けられます

stable-diffusion-webuiの実行

sh webui.sh

初回起動は結構時間がかかります

...

Running on local URL:  http://127.0.0.1:7860

...

という表示が出ていれば起動が完了しています。ブラウザでhttp://127.0.0.1:7860にアクセスしてください。

stable-diffusion-webuiの使い方

ここでは、 txt2img の基本的な使い方について説明します。 txt2img とは、 テキストから画像を生成するための技術 です。

Stable Diffusion checkpoint

使用するAIモデルを選択します

Prompt

画像に表れて欲しい要素をテキストで書きます

Negative prompt

画像に現れて欲しくない要素をテキストで書きます

Sampling method

サンプリングに使用するメソッドを選択する必要がありますが、よくわからない場合は、AI モデルの説明欄にどのメソッドを選択すればよいかが書かれていることがあります。迷った場合は、とりあえずDPM++ 2M KarrasまたはDPM++ SDE Karrasを選択することをおすすめします

Sampling steps

サンプリングの回数を指定します。画像生成AIでは、まず、seedからノイズを生成し、そこからpromptに沿って画像を変化させていきます。その回数をここで指定します。基本は20くらいで、多くて70くらいな気がします。5とかにするとバケモノが生まれます

Restore faces

顔を綺麗にするためのオプションです

Tiling

画像をタイル状に並べて表示するためのオプションです

Hires. fix

解像度を上げることができるそうですが、使ったことがないので解説できません。すみません!

Width & Height

生成する画像のサイズを指定します。デフォルトは512512で、AIモデルは512512に最適化されていることが多いのであまり動かさないほうがいいです。解像度を上げたい場合は、後述する方法を使います

Batch count & Batch size

どちらも生成する画像の枚数を指定するものですが、Batch countが生成する回数を指定するもので、Batch sizeが一度に生成する枚数を指定するものとなっています。Batch sizeを上げすぎるとパソコンが死にます

CFG Scale

どれだけpromptに忠実にさせるかを指定します。基本は7くらいだそうです

Seed

シード値を指定します。-1にするとランダムになります

AIモデルの追加

せっかくなので別のAIモデルも追加してみましょう

AnythingV4

なんだかたくさん種類がありますね。どうやらprunedとはファイルサイズを抑えたバージョンらしいです。せっかくなのでprunedのものをダウンロードしてみましょう

anything-v4.0-pruned.safetensorsをダウンロードします。落としたファイルはstable-diffusion-webui/models/Stable-diffusion配下に置いてください

とりあえず何か生成してみましょうか。Stable Diffusion checkpointの欄からanythingv4.0を選択してください

生成結果

settings values
Prompt ((masterpiece, best quality)), high-resolution, super high res, 1 girl, character focus, upper body, front view, pink hair, long hair, ((thick eyebrows)), open mouth, (loli, younger), ahoge, smile, laugh, illustration, (cute and kawaii), standing
Negative prompt なし
Sampling method DPM++ 2M Karras
Restore faces on
Width 512
Height 512
CFG scale 7
Seed 3104403533

00031-3104403533.png

割とそれっぽいですが、細部を見ると結構崩れていますね

VAEの導入

VAEを導入すると、画像が鮮明になったり細部の崩れを抑えたりすることができます
VAEには以下の種類があります

  • 汎用的なVAE
  • AIモデルが用意しているそのモデル専用のVAE

AnythingV4には専用のVAEがあるので導入してみましょう

anything-v4.0.vae.ptというファイルをダウンロードしてください。VAEは.vae.ptという拡張子になっていることが多いみたいです

落としてきたVAEはstable-diffusion-webui/models/VAE配下に置いてください

VAEはSettingsの欄のStable Diffusionという欄から設定できます。SD VAEという項目から選択してください

同条件で、VAEだけ変えた結果が以下となります

00032-3104403533.png

比較してみると以下のようになります

vaeなし vaeあり
00031-3104403533.png 00032-3104403533.png

全体的に鮮やかになって、腕の消失などの崩れがなくなっていますね! 背景のバケモノも笑顔になっています

このように、きれいな画像を生成させるにはVAEを設定するのはほぼ必須級となっているので、ぜひ設定しましょう

EasyNegativeの導入

ここまではNegative promptになにも設定していなかったのですが、(worst quality), (missing finger), (extra fingers)などと書くと崩れを抑えることができます。しかし、いちいちこれらを書くのは面倒なので、EasyNegativeという簡単にNegative promptを設定できるものを導入します

上記から、EasyNegative.safetensorsをダウンロードしてください。

落としてきたファイルはstable-diffusion-webui/embeddings配下に置いてください

EasyNegativeを使うには、Negative promptにEasyNegativeと書くだけです。これだけで適用することができます

それでは、EasyNegativeを設定し、他は同条件で生成した結果をご覧ください

00035-3104403533.png

太眉じゃなくなっているのですがそれは……

唇もどこか不気味ですが、まあそれは置いといて、全体的なクオリティはとても上がっていますよね

ちょっと何枚か生成してみましょうか

00036-2125694489.png
00052-2325242937.png
00055-2325242940.png
00058-2325242943.png

😊

別のAIモデルも試す

AnythingV4以外にも試してみましょう。ambientmixというモデルでやってみます

vaeは推奨のorangemixを使います

結果は以下の通りになりました

00008-1897145455.png
00106-3554280944.png
00013-312292687.png
00010-3437696616.png

アニメっぽい作風ですね。こっちのほうが好みかも

高解像度化

今のままでは512*512と解像度が良くないので、高解像度化したいですよね。そこで、Real-ESRGANというものを使用したいと思います

You can download Windows / Linux / MacOS executable files for Intel/AMD/Nvidia GPU.という文章のMacOSからzipファイルをダウンロードします

解凍したら任意のディレクトリに置き、以下のコマンドを実行します

cd realesrgan-ncnn-vulkan-20220424-macos/
chmod u+x realesrgan-ncnn-vulkan
mkdir inputs
mkdir outputs

次に、inputsディレクトリの中に高解像度化したい画像ファイルを置きます。その後に以下のコマンドから実行します

./realesrgan-ncnn-vulkan -i inputs -o outputs -n realesr-animevideov3 -s 2 -f png

実行が完了すると、outputsディレクトリに高解像度化された画像ファイルが生成されています

比較

before after
00052-2325242937.png 68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f313032373836332f34643362333662312d303731632d306363362d313665362d3134646436396166396232642e706e67.png

おわりに

呪文は奥が深いですね。あと、モデルデータは容量がとても大きいのでストレージがすぐ膨れそうでこわいです

この記事はAI知識ゼロの人が書いているので、間違いがあったらコメントで教えて下さい🙇🏻

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?