banner
lMingyul

lMingyul

记录穿过自己的万物
jike

Stable Diffusion の学習を始める

普段、記事を書く際に画像が必要なので、Stable Diffusion というオープンソースの AI 絵画ツールを学んで記録することにしました。

Stable Diffusion とは#

Prompts(プロンプト / 説明)を通じて、テキスト情報を画像情報に変換します。

Stable Diffusion(SD)は、オープンソースの AIGC 絵画大モデルで、オープンソースであり、速度が速く、更新が迅速です。

使い方#

GUI のインストール#

使いやすくするために、まず SD の WebGUI をインストールする必要があります。
インストールリンク:https://github.com/AUTOMATIC1111/stable-diffusion-webui
インストールは 2 種類あり、一つは Google の google.colab にデプロイする方法(オンライン実行環境)、もう一つは自分のローカルにデプロイして実行する方法です。

ローカルインストール手順#

私のコンピュータは Mac で、Apple Silicon チップを使用しているため、以下の手順はこのタイプの機械の参考用です。

新規インストール
以前にインストールしたことがない場合は、Homebrewを使用してインストールできます。

Homebrew がない場合は、ターミナルにこのコマンドを入力してインストールできます。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

WebUI をインストールする前に、まず実行環境を準備するためにターミナルを開きます。
1. Python 3.10 以上のバージョンをインストール

brew install cmake protobuf rust [email protected] git wget

2. GitHub リポジトリから WebUI のコードを取得

コードを取得することで、SD をより便利にリアルタイムで更新し、最新の機能を使用できます。

任意のディレクトリで、以下のコマンドを実行します。

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

取得後のディレクトリはこのようになります。

CleanShot-2023-07-16-15-15-29@2x

3. Stable Diffusion モデルをダウンロード
私がダウンロードしたのは、現在比較的新しいモデルである 2.1 バージョンです。モデルの一般的な形式はckptsafetensors形式で、ダウンロード先は:https://huggingface.co/stabilityai/stable-diffusion-2-1

CleanShot-2023-07-16-15-38-57@2x

CleanShot-2023-07-16-15-40-24@2x

ダウンロードしたモデルを、先ほど取得した WebUI のstable-diffusion-webui/models/Stable-diffusionディレクトリに置きます。

v2.1 バージョンには設定ファイルも必要なので、設定ファイルのダウンロード方法は以下の通りです:
ダウンロード先:https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon#downloading-stable-diffusion-models

キーボードの option キーを押しながら、マウスでhereをクリックしてダウンロードします。
CleanShot-2023-07-16-15-46-01@2x

ダウンロードしたファイル名はv2-inference-v.yamlです。
次に、このファイルの名前を変更し、ダウンロードしたモデルの名前と一致させる必要があります。私がダウンロードしたモデル名はv2-1_768-ema-pruned.ckptなので、設定ファイル名はv2-1_768-ema-pruned.yamlに変更する必要があります。

CleanShot-2023-07-16-15-59-12@2x

4. スクリプトを実行して Web UI を起動

# ルートディレクトリに移動
cd stable-diffusion-webui

# スクリプトを実行
./webui.sh

スクリプトの実行中に、必要な依存ファイルが自動的にダウンロードされます。時間がかかるので、辛抱強く待ってください。おおよそ 30 分から 2 時間かかります。

CleanShot-2023-07-16-16-09-54@2x

アクセスアドレスが表示されるまで成功です:http://127.0.0.1:7860/
成功した後は、ターミナルを閉じたり停止したりせずに、そのままブラウザでこのアドレスにアクセスしてください:http://127.0.0.1:7860/

CleanShot-2023-07-16-16-58-02@2x

CleanShot-2023-07-16-17-04-10@2x

今後は毎回webui.shスクリプトを実行するだけです。更新したい場合は、ルートディレクトリでgit pullを実行すれば大丈夫です。

特殊な状況の処理#

画像生成を実行する際に、以下のエラーが発生することがあります:

NansException: A tensor with all NaNs was produced in Unet. This could be either because there's not enough precision to represent the picture, or because your video card does not support half type. Try setting the "Upcast cross attention layer to float32" option in Settings > Stable Diffusion or using the --no-half commandline argument to fix this. Use --disable-nan-check commandline argument to disable this check.

もし同じエラーが発生した場合は、次のように解決できます:
ルートディレクトリにあるwebui-user.shファイルを開き、COMMANDLINE_ARGSパラメータを次のように変更します:

COMMANDLINE_ARGS="--lowvram --precision full --no-half --skip-torch-cuda-test"

CleanShot-2023-07-16-21-31-09@2x

  • 再度./webui.shを実行します。
  • 最後に、設定の中の Stable Deffusion -> Upcast cross attention layer to float32 にチェックを入れれば正常に動作します。

CleanShot-2023-07-16-21-34-06@2x


最初の絵を描く#

テキストから画像を生成#

絵を描く前に、まずこのインターフェースの各部分が何であるかを理解します。

CleanShot-2023-07-16-17-15-13@2x

インターフェースで比較的重要なパラメータ

  • ステップ数(Sampling steps): このパラメータは時間と効果に影響し、通常は 30 程度に設定します。主にノイズ除去の程度を制御します。
  • シード(Seed):画像の内容を決定し、主に画像の反復時のランダムノイズに影響します。
  • CFG スケール:画家の自由度を決定します。
    • 2〜6:ランダム生成で、基本的にプロンプトに従わない。
    • 7〜10:最も一般的な設定で、良いバランスがあります。
    • 10〜15:プロンプトが非常に良く、具体的である必要があり、10 以上では飽和度が高くなります。

画像から画像を生成#

プロンプト + 画像に基づいて画像を生成します。

CleanShot-2023-07-16-17-33-57@2x
同様に、このインターフェースのいくつかの設定を見てみましょう。ページの下にスクロールすると設定エリアがあります。
CleanShot-2023-07-16-17-50-33@2x

画像生成の最も一般的な用途は:画像のスタイルを変換することです。

画像拡張#

プロンプト + マスク + 画像に基づいて画像を生成します。
一般的なシーン:ウォーターマークの除去、衣装の変更、画像の境界の拡張。


プロンプトの書き方#

キーワード#

異なる特性はカンマで区切る#

a girl, long hair, twin ponytails
image

類似の特性は | で区切る#

a girl, long black | grey hair, twin ponytails
image

重みの調整#

特定の特性の画面内での比率や重みを調整したい場合は、次のように調整します。
(プロンプト:重み数値)

  • 数値 < 1 :重みを減少させる
  • 数値 > 1 :重みを増加させる
a girl, long hair, (twin ponytails:0.2)
image

グラデーション効果#

画面にグラデーションを持たせたい場合は、次のようにします:
[キーワード 1: キーワード 2: パーセンテージ]

a girl, long [white:black:0.5] hair, (twin ponytails:0.2)
image

交互融合#

画面の半分にこのスタイル、もう半分に別のスタイルを持たせたい場合は、次のようにします。
[キーワード | キーワード]

[cat|dog] in the field 
image

効果の強化#

高品質のキーワードを追加します。例:best quality、masterpiece

best quality, ultra-detailed, masterpiece, finely detail, high res, 8K wallpaper, a girl, long hair, (twin ponytails:0.2)
image 画面が非常に鮮やかになったことがわかります。

逆の言葉を追加#

一般的に使用される逆の言葉:

  • nsfw: 性的暴力的な
  • bad face : 悪い顔

形態の強化#

画面全体の形態を強調することを制御します。例:**full body shot(全身ショット)** など。

    • cinematic lighting(映画の光)
    • dynamic lighting(動的光)
  • 視線
    • looking at viewer
    • looking at another
    • looking away
    • looking back
    • looking up
  • 画風
    • skatch
  • 視点
    • dynamic angle
    • from above
    • from below
    • wide shot
Photo of real life girl, cinematic lighting, peeking from window, vibrant colors, bokeh, movie poster style
image

ChatGPT との組み合わせ#

CleanShot-2023-07-16-22-52-49@2x

Boundless prairies, Verdant meadows, Azure skies and white clouds, Rushing rivers, Wildflowers aplenty, Majestic sunsets

image


上級プレイ#

異なるモデル#

市販されている人々がよく使用するモデル:

これらのモデルをダウンロードして、stable-diffusion-webui/models/Stable-diffusionディレクトリに置き、ページのモデル選択の隣にあるリフレッシュボタンをクリックすれば、これらのモデルを使用できます。

CleanShot-2023-07-17-00-12-22@2x

CleanShot-2023-07-17-00-18-28@2x


参考資料#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。