kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

M1 MacにStable Diffusion環境を作っていい感じに使えるようにする

はじめに

この記事は、 Makuake Advent Calendar 2023 4日目の記事です。

M1 MacにStable Diffusion Web UIをインストールしていい感じに使っていけるようにします。 Stable Diffusionを構築する方法は色々ありますが、Web UI(AUTOMATIC1111)を使っていくのが現状では一番楽かと思います。

Stable Diffusion Web UIとは

ローカル環境にStable Diffusionを構築し、それをWeb UI経由で操作できるようにしたものです。 Web UIをインストールすることで、Stable Diffusionの環境も一緒に構築されます。 それをブラウザ経由で操作する形になります。

Stable Diffusion Web UIのインストール

事前準備

brew辺りで以下をインストールしておきます。

  • cmake
  • protobuf
  • rust
  • git
  • wget

Stable Diffusion Web UIのインストールと実行

インストールといっても、githubからクローンしてくるだけです。

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

クローンが終わったら、起動します。
初回起動時は色々とダウンロードしたりインストールしたりで、立ち上がるまで時間がかかります。 シェルを叩いたら、ログが流れるのでその中に出てくるURLにアクセスします。 ちゃんと起動できれば、勝手にブラウザが起動して表示してくれるはずです。

$ cd stable-diffusion-webui
$ ./webui.sh

Stable Diffusion Web UIの初期画面

動作確認

とりあえず1枚画像を生成してみます。   画面左上にある Stable Diffusion checkpoint の横にあるリロードマークをクリックすると、 プルダウンで、 v1-5-pruned-emaonly.safetensors が選べるようになります。 txt2img のタブが選択されていることを確認して、その下のテキストボックス(ポジティブプロンプトの入力欄)に適当な文字を入力して、 Generateをクリックします。 すると、画像が作成されるはずです。 以下はサンプルで生成した画像です。

いい感じにしていく

とりあえず、画像生成する環境はできたのですが、さらに使いやすくするためにエクステンションを追加していきます

エクステンションの追加方法

主に2つのやり方があるのでそれぞれ説明します。

  1. すでに用意されているものを選択して追加する方法
  2. githubのurlを指定して追加する方法

すでに用意されているものを選択して追加する方法

  1. Extentions タブをクリック
  2. Availableタブをクリック
  3. Load Fromをクリック

すると、インストールできるもの一覧が出るので、それぞれの右側にあるInstallボタンをクリックする

githubのurlを指定して追加する方法

  1. Extentions タブをクリック
  2. Install From URLタブをクリック
  3. URL for extension's git repository にリポジトリのURLを入力し、Installをクリック

おすすめエクステンション

入れておいて損のない最低限のものを選んでみました

  1. CivitAI Browser+

    • 1の方法で追加
    • civitai でダウンロードできるモデルなどをStable Diffusion Web UI上でダウンロード、管理できるようになります。
    • civitaiを開いてダウンロード、ダウンロードしたファイルをStable Diffusion Web UIの所定の場所に配置という手間を省けます。
    • 各モデルのサンプル画像、その他の情報をStable Diffusion Web UI上で閲覧、使用できるようになります。
  2. Infinite image browsing

    • 1の方法で追加
    • 生成した画像のブラウジングを楽にする
    • 生成した画像から各種情報をtxt2imgなどの生成画面に転送することができる
  3. Umi-AI

    • 2の方法で追加
    • URL: https://github.com/Klokinator/Umi-AI
    • プロンプトの記法を拡張できる
    • { a | b | c} と書くことで、a or b or cのどれかを選択というようなことができるようになる
  4. a1111-sd-webui-tagcomplete

    • 2の方法で追加
    • URL: https://github.com/DominikDoom/a1111-sd-webui-tagcomplete.git
    • プロンプトの入力欄でautocompleteが効くようになる
  5. sd-webui-prompt-all-in-one

    • 2の方法で追加
    • URL: https://github.com/Physton/sd-webui-prompt-all-in-one.git
    • プロンプトの入力関連のall in on。色々な機能があるが、とりあえず入れれば使い方はなんとなくわかる
  6. sd-webui-prompt-format

    • 2の方法で追加
    • URL: https://github.com/Haoming02/sd-webui-prompt-format
    • プロンプトの入力欄をフォーマットしてくれる

kkkw.hatenablog.jp