見出し画像

Stable Diffusion Web UI のMac用がめちゃくちゃ便利なので紹介してみる

こんにちはkeiです。以前から画像生成のAIモデルである「Stable Diffusion」を公式ページなどを参考にしてプログラムを書いて使っていましたが、Stabele Diffusion をローカルでも動かせる「Stable Diffusion web UI:AUTOMATIC1111」を使いたいなと思っていました。本投稿ではAUTOMATIC1111をM1/ M2 Macのローカル環境で使ってみた感想について書いていこうと思います。


Stable Diffusion web UIについて

元々Stable Diffusion自体はGoogle Colaboratory(以後Colab)を直接使ってコードを実装して使っていました。Stability AI社のサイトや海外のブログなども参考にしながら使っていました。

参考にしたサイト:

Colabを使うと一定の範囲内ではありますがGPUを無料で使えるので、比較的短い時間で画像生成ができるのが利点ですが、コードを直接書き換えたりノートブックをいちいち開いたりするのが面倒になってきました。そこで、ローカルでStable Diffusion モデルを動かせるUIがないかなと思っていたところにStable Diffusion web UI / AUTOMATIC1111を発見しました。

Stable Diffusion Web UIは、Stable Diffusionを簡単に使用するために開発されたWebユーザーインターフェース(UI)です。Stable Diffusionは、機械学習モデルの中で特に画像生成のためのモデルで、拡散生成モデルと呼ばれています。これを使用するにあたって、AIベースの生成モデルの安定性と品質を向上させることを目的としています。

UIのホーム画面


Stable Diffusionは、呪文(プロンプト)に対して画像を生成するAIです。同じ呪文を入力しても異なる結果・品質の画像を生成することがあるので、どんな呪文を入力するのかが重要です。これをより簡単にするためのUIがStable Diffusion Web UIです。
ユーザーは、このUIを介して様々な生成タスクを実行し、より品質の高い結果を得ることができます。
Stable Diffusion Web UIは、安定性と品質を重視するユーザーにとって価値のあるツールです。AIベースの生成モデルの応用範囲が広がることで、さまざまな分野で利用されることが期待されます。
以下のサイトで導入の方法などが紹介されていました。

ただ、ローカルにインストールして使用できるUIはWindows用しかなかったので、Colabを使ってUIを展開するやり方で使っていました。

しかし、これも2023年5月現在でノートブックを実行すると警告がでて使えないようになってしまいました…残念。Mac向けにはDiffusion bee というUIも無料で公開されていましたが、あまり私の好みではなく、AUTOMATIC1111版が最も多機能なUIなので、どうしようかと思っていたところ、なんとM1/M2 Macでも使えるものが公開されていました!これはぜひ使いたいと思いインストールしてみました。

インストールの手順

インストールは以下の手順で行いました。一応先ほどの公式サイトでも英語で記載されています。

githubのリポジトリの説明

日本語に直すとこんな感じです。(Deep Lで翻訳して整理しました)

新規にインストール:
1. Homebrewがインストールされていない場合、https://brew.sh の指示に従ってインストールしてください。ターミナルウィンドウを開いたまま、「次のステップ」の指示に従って、HomebrewをPATHに追加してください。
2. 新しいターミナルウィンドウを開き、brew install cmake protobuf rust python@3.10 git wget を実行します。
3. git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui を実行して、Web UI リポジトリをクローンします。
4. 使用したいStable Diffusionのモデル/チェックポイントをstable-diffusion-webui/models/Stable-diffusionに配置します。使用したいモデルがない場合は、以下の「Stable Diffusionモデルのダウンロード」を参照してください。

5. stable-diffusion-webui をインストールしたディレクトリに cd で移動して、 ターミナルに./webui.sh を入力して実行、ウェブUIを起動します。残りの不足している依存関係は自動的にダウンロードされインストールされます。
6. 後でWeb UIプロセスを再起動するには、もう一度./webui.shを実行します。Web UIを自動更新しないことに注意してください。更新するには、./webui.shを実行する前にgit pullを実行してください。

整理すると、
1)Homebrewをインストール
2)インストール先のディレクトリを設定
3)モデルのckptファイルを準備
4)関連ライブラリのインストール
5)Automatic1111のダウンロード
6)モデルファイルの配置
7)Autoatic1111の起動
が主な手順でしょうか。

Autoatic1111でできること

このUIで以下の作業ができるようになります。

・画像のアップロード:
UIを介して画像をアップロードすることができます。アップロードされた画像は、その後の処理や生成タスクに使用されます。
・画像生成:
プロンプトを入力して画像を生成する他、他にWebからダウンロードした画像やオリジナルのイラストや写真から別の画像を生成することもできます。
・テキスト生成:
アップロードされた画像にに対して、AUTOMATIC1111が自動的にテキストを生成します。生成されたテキストは、画像に関連するキャプションやプロンプトとして使用することができます。
テキストのカスタマイズ: 生成されたテキストをカスタマイズすることも可能です。UI上でテキストを編集したり、追加の情報や指示を入力したりすることができます。これにより、生成されたテキストをさらに具体化したり、特定の要件に合わせて調整することができます。
テキストの要約:
AUTOMATIC1111は、与えられたテキストを要約する機能も持っています。長い文章や記事を要約するために使用することができます。生成された要約は、入力テキストの主要なポイントや概要を示す助けとなります。
生成結果の保存:
生成されたテキストや要約を保存することもできます。UI上で結果をダウンロードしたり、クリップボードにコピーしたりすることができます。これにより、生成された情報を他の作業の参照にしたりすることができます。
新しいモデルを作る:
元々あるモデルと別のモデルをマージしたり、LoRAなどの追加学習をして新しいモデルを作ることもできます。

これらは、AUTOMATIC1111を使用する際に行える一般的な操作の例です。具体的な機能や操作は、UIの実装や機能拡張によって異なる場合がありますのでご注意を。

PCのスペック

  • M2 Macbook Pro 14inc

  • RAM:16GB

事前準備:ターミナルの起動

Macのターミナルを起動しておきます。ターミナルの場所がわからない人はDocの中のLaunchpad→その他からターミナルを起動できます。

手順1)Homebrewのインストール

HomebrewはMacでライブラリのバージョン管理をするのに必須のツールです。macOSおよびLinuxベースのオペレーティングシステムで使用されるパッケージ管理システムです。パッケージ管理システムは、ソフトウェアやツールのインストール、アップグレード、削除を容易にするための仕組みです。まずはHomebrewをインストールしておきます。
公式ページにアクセスして、「インストール」の下に記載されているテキストをコピーしてそのままターミナルに貼り付けて実行します。


"インストール"下部のテキストをコピー

一応テキスト自体も貼り付けておきます。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

コピーしたテキストを実行するとインストールが開始されます。途中で管理者パスワードの入力を求められるので入力します。しばらくするとインストールが完了するので、ターミナル上で以下のコマンドを入力してHomebrewのバージョンを確認します。バージョンが表示されればインストールが成功しています。

brew -v

インストール完了後は"brew ~ "のコマンドでバージョン管理やインストールを行います。

手順2)UIのインストール先のフォルダを準備

次にUIをインストールするフォルダを準備しておきます。特にこだわりがなければホームディレクトリでも大丈夫です。私は「Stable_diffusuin」という名前でフォルダを作成しました。フォルダを作ったら、そこに移動しておきましょう。

手順3)StableDiffusion のモデルファイルを準備しておく

次に使いたいモデルのファイルを用意しておきます。好きなモデルをダウンロードしておきます。

モデルの場所:
先ほどのHaggingfaceのモデル一覧から探してもいいですし、civitAIというサイトから探してもいいでしょう。

モデルファイルの種類:
モデルファイルの拡張子の種類にはいくつかありますが、モデルによってその種類が違い、また同じモデルでも多数のファイルが存在します。ckpt(チェックポイント)という拡張子のファイルの他にもSafetensors(セーフテンサーズ)という拡張子のファイルもあります。ckptファイルは「pikle」というpythonのモジュールを用いて保存されたデータに使われる拡張子です。この種類のファイルのSafetensorsファイルとの最大の違いは安全性・安定性でしょう。ckptファイルが悪意を持って作成されていた場合、使用するときに任意コードが実行されるおそれがあります。簡単に言い換えれば、PCが攻撃される可能性がある、ということでしょうか。
一部のモデルでは、ckptファイルではwindowsDefenderなどでアラートが上がったなどという報告も上がっているようなので、安全に運用したい方は、ckptファイルでなくsafetensorsファイルの方を選んだほうが良さそうです。より詳しい内容は今後、別の記事で紹介することにします。以下にざっとまとめておきます。とりあえず今回はsafetensorsファイルを選んでダウンロードしておきます。ファイルサイズがGB以上と大きいので結構時間がかかります。モデルをダウンロードするときはHugging Face のアカウント登録とトークンが必要なので準備しておきます。

  • safetensors:フルサイズの安定版ファイル

  • pruned.safetensors:pruned版(フルサイズから不要なファイルを除いた軽量版。prunedは剪定という意味です。)

  • pruned.ckpt:pruned版のckptファイル

  • pruned-fp32.ckpt:fp32(単精度浮動小数点演算)

  • pruned-fp16.ckpt:fp16(半精度浮動小数点演算)→このファイルサイズが最も小さいです。

手順4)関連ライブラリのインストール

必要なライブラリに関してはAUTOMATIC1111のインストール実行時に自動的に行われます。途中で管理者パスワードが要求されるので、PCのログインパスワードを入力します。以下のコマンドをターミナルに入力して必要なプログラムをインストールしておきます。

brew install cmake protobuf rust python@3.10 git wget

手順5)Automatic1111のダウンロード

ではAutomatic1111のダウンロードです。インストール先のフォルダに移動したら、git を使って StableDiffusion をクローンします。

cd "インストール先のディレクトリのPATH"
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

すると指定したディレクトリにstable-diffusion-webui というフォルダが作成されます。

手順6)モデルファイルの配置

作成されたstable-diffusion-webuiフォルダの中にダウンロードしておいたモデルファイルを設置します。設置する場所は、
stable-diffusion-webui > models > Stable-diffusion 
です。

手順7)Autoatic1111の起動

これで準備ができました。stable-diffusion-webui に移動して以下のコマンドを実行します。

./webui.sh

初回起動時に必要なライブラリのインストールが行われるので少々時間がかかります。気長に待ちましょう。以下のメッセージがターニなる上に表示されれば起動完了です。

### 省略 ###
eights to model: 5.9s, apply half(): 1.2s, move model to device: 0.4s).
Running on local URL:  http:// " ローカルのURL "

To create a public link, set `share=True` in `launch()`.

Running on local URL: の後のURLをブラウザに入力してWebuiにアクセスすると、以下のWebUIが表示されます。

ついでに stable-diffusion-webui をアップデートする場合は、stable-diffusion-webui に移動してから、以下のコマンドを実行します。

git pull

その他、追加の設定がある場合は一度web-uiを終了させ、再起動させてください。うまく起動しない場合も、stable-diffusion-webui フォルダ>repositories フォルダ> venv フォルダを削除し、上記のコマンドを実行してから再起動してみてください。

試しに画像を生成してみる

では試しに画像を生成してみます。私が使うモデルはCounterfeitというモデルのV2.5です。safetensorsファイルとCounterfeit -V2.5.vae.ptというファイルがあるので両方ダウンロードしておき、safetensorsファイルをmodels > stable-diffusion 内に、Counterfeit -V2.5.vae.pt はVAE というフォルダにそれぞれ設置します。vaeの役割については後ほど書きたいと思います。
このモデルでは、プロンプトが公開されているものがあるので、それを使ってみます。このときNegativePromptというものがありますが、画像の要素として加えて欲しくないものをここに入力します。

数十秒くらいすると%の表示が出て、プログレスバーが更新されていきます。だいたい1分弱で画像が生成されます。

結構いい感じですね。プロンプトは「女子高生」「制服」「赤いスカーフ」みたいな言葉をいくつも入力して画像を生成します。短い単語や文でもいいのですが、「綺麗な画像」「写真っぽい」みたいな画質やテイストに関する言葉を英語で入力することでクオリティや質感の良い画像が生成されます。以下のサイトも参考になるので覗いてみるといいでしょう。

いくつか参考になりそうな書籍もありますので、興味のある方は読んでみて色々と研究してみると面白みがグッと増すのではないかと思います。


まとめ

今回は簡単便利にStable Diffusion が利用できる「Stable Diffusion web ui」の導入についてご紹介しました。プロンプトからの画像生成、画像からプロンプトを生成する、画像のテイストを変える、モデルの学習やマージと全部入りの便利ツールなのでぜひ使ってみることをおすすめします。今後、いろんなモデルやプロンプトについて、細かな使い方などについての記事も挙げていこうと思います。

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