忘却まとめ

Blenderの中級者・上級者向けの踏み込んだ情報や、アドオン・3DCGに関する情報を記事にします

AIアートの作り方・工程の解説【Stable Diffusion web UI(AUTOMATIC1111版)】

AIアート

更新日:

Web UI(AUTOMATIC1111版)を使ったAIアートの作り方を、覚え書きとしてまとめる。

ワンボタンで絵が作れるとはいえ、AIで自分の意図した絵を作るにはそれなりの工程が必要である。

もくじ

インストール

インストール方法や基本的な操作解説の記事は多くあるので外部リンクを載せる。

画像生成AI「Stable Diffusion」を4GBのGPUでも動作OK&自分の絵柄を学習させるなどいろいろな機能を簡単にGoogle ColaboやWindowsで動かせる決定版「Stable Diffusion web UI(AUTOMATIC1111版)」インストール方法まとめ - GIGAZINE

使い方

画像生成AI「Stable Diffusion」で崩れがちな顔をきれいにできる「GFPGAN」を簡単に使える「Stable Diffusion web UI(AUTOMATIC1111版)」の基本的な使い方 - GIGAZINE

Features · AUTOMATIC1111/stable-diffusion-webui Wiki

としあきdiffusion

AUTOMATIC1111 の便利な機能 - dskjal

NovelAI 5ch Wiki
↑ では指示語一覧だけでなく、既存キャラの生成方法や生成結果画像も紹介されている場合もあるのでわかりやすい。

UIの日本語化

Katsuyuki-Karasawa/stable-diffusion-webui-localization-ja_JP: Stable Diffusion web UI(AUTOMATIC1111版)の日本語化

  1. Extensions > Available > Load From:をクリックする。
    • Extension index URLが下記であることを確認
    • https://raw.githubusercontent.com/wiki/AUTOMATIC1111/stable-diffusion-webui/Extensions-index.md
  2. 「ja_JP Localization」を探し、Installからインストールする。
  3. Installed > Apply and restart UIでUIだけ再起動する。
  4. \extensions\stable-diffusion-webui-localization-ja_JP\localizations\ja_JP.jsonから、内容を手動調整できる。

その他手動で追加

  1. 別途ja_JP.jsonファイルを入手し、/localizationsフォルダ内に入れる。
  2. WebUIを起動し、Setting > 「Localization (requires restart)」内から、先程のja_JPを選ぶ。
  3. WebUIを再起動する。
  4. 気に入らない箇所は自分で修正したり追加したりできる。

Web UIを起動しやすくする

WebUIを起動するには、「webui.bat」を起動する必要があるが、アプリではないためスタートメニューやタスクメニューにピン止めすることができない。
ファイルのショートカットだけでは開きにくいので、レジストリをいじってスタートメニューに無理矢理登録すると、すぐに開けるようになって便利。

1行実行するだけなので難しくはない。

よく使うファイルをスタートメニューから直接開けるようにする裏ワザ - デキる人の使いこなしワザ for PC - 窓の杜

txt2imgから始める

プロンプトという指示テキストを元に画像を生成する機能。
画像生成のメイン機能であり、まずはこれで画像を生成していく。

設定は初期設定でもいいが、自分は下記でやっている。

  • ステップ数:20step
  • サンプラー:DPM++2M
  • サイズ:縦長の512x768(キャラ立ち絵向け)
  • サイズ:縦横の768x512(キャラや背景も魅せる絵向け)
  • サイズ:縦横の1024x512(大人数やダイナミックな広い絵向け)
  • "Highres. fix"を有効にする。
    • あとから高解像度化したい時に後からこれを有効化すると、絵が変わってしまうため。

プロンプト(呪文)を試行錯誤して欲しい絵のベースを出す

指示テキスト(プロンプト)や除外テキスト(ネガティブプロンプト)を試行錯誤する。
試行錯誤しながら、何度も生成することで良い絵を見つける。

最初の段階では大まかに欲しいキャラや構図を出すことを目指す

この後のクオリティ上げ作業で、絵の微妙なニュアンス(表情・画風・ポーズなど)は変化してしまうので注意。
70%程度の出来の絵を出すつもりで、あまり気張らずにやる。

主に書き込む要素

  • テンプレクオリティ上げ呪文
  • ポーズ・アングル
  • 人物(人数・性別・髪型・体型など)
  • 表情
  • 背景
  • ライティング
  • ネガティブプロンプトのテンプレ呪文
  • 作成途中で邪魔になる要素は、ネガに追加

細かなテクニックの詳細はこちら。

シード値で、好きな絵をより作り込む

シード値を設定することで、大まかな結果を固定することができる。
プロンプトを試行錯誤して大まかに欲しいキャラや構図の絵を出すことができたら、そのシード値を使ってさらに絵を絵を煮詰めていく

シード値はAI画像生成で重要であり、プロンプトや各種設定の影響力を実感しながら調整することができる。

ちなみに、AI画像は、実行時の各種設定がすべて同じならば、必ず全く同じ結果が得られる。
(モデル・embeddings・hypernetworks・setting・ステップ数・シード値・プロンプトなど)

シード値をコピーする

生成結果の情報テキストから手動でコピーしてもいいが、右のアイコンを使うと直前のシード値をコピーできる。

ちなみに、初期設定(-1)だとシード値が毎回変更されるため、毎回違う結果が出るようになっている。

後からシード値を確認する

シード値は画像データに含まれているので後からでも確認できる。
(生成後の画像をPNG Infoタブ内に投げ込む)

txt2imgの設定

基本設定のままでも問題ないが、より作り込みたい時は各種設定をよく理解して扱うとよい

サンプラーの違い

全サンプラーの比較(クリック推奨)。

サンプラーの使い方としては、「最初はDDIMやDPM++2Mなどの早いサンプラーを低解像度で回し、いい構図を見つけたらKarrasをいくつか試してみて好きな絵を見つける……」みたいな感じがよさそう。

特にこだわりがないならEuler系の絵が変わらないサンプラーを1つ決めて使えばよいか。自分はDPM++2Mを使ってみている。

画像の縦横比によって出る絵が違う

画像の縦横比によって、出やすい絵が違う。
欲しい構図にあった縦横比で生成するのは案外重要な模様。

  • 縦長では人物1人を真正面から見た絵、立ち絵などを生成しやすい。
  • 横長では複数人や横に寝ている人物の絵、背景が生成しやすい。
  • さらに横長にすると、より多くの人物がいる絵を生成しやすい。

クオリティを上げる

元画像 512x768
解像度を倍化 1024x1536
プロンプト

high quality, very high resolution, large filesize, original illustration, ultra detailed illustration, resin art,
((serious)),
[[full body shot]], ((dynamic angle)), [[jumping]],
music live, have a mike, singing, girl on the stage, high detailed Background, Large audience and psyllium light,
blue lighting,
[[hatsune miku]], Beautiful face, ((cool girl)),(seriously face), hair ornament, small breasts, slender,
blue hair, very long twintails, fluffy hair, messy hair, floating hair,
beautiful detailed deep eyes,
dress, white dress,very short skirt,Pannier skirt, frill, off shoulder, white sox,detailed clothes, classy and elegant clothes,
dynamic lighting, Rembrandt lighting, hdr, colorful refraction, overexposure, [lens flare], bloom, film Reflection,
((colorful Reflection)),
(beautiful detailed glow), light particles, light diffusion,
[chromatic aberration],
[[cyber effect]], light particles foreground,
Negative prompt: lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name, multiple legs, malformation, close up,
big breasts, photorealistic, ((loli)), ((cute)), ((red))
Steps: 20, Sampler: DPM++ 2M, CFG scale: 7, Seed: 2055406783, Size: 1024x1536, Model hash: 6569e224, Denoising strength: 0.7, Clip skip: 2, ENSD: 31337, First pass size: 0x0

絵がいい感じになってきたら、それをベースに再生成することでクオリティを上げる。
どの方法でも印象は変わってしまう・必ずしもより良い結果になるわけではないので注意。

いくつか試してみて、より良い結果を見つける。

解像度を上げる

サイズを上げて高解像度で生成する。
高サイズほど細部を細かく書き込んでくれる

毎回高画質生成するのは生成コストが重いので、欲しい印象が固まってきて、いい感じのシード値が当てられたら高画質生成を試してみること。

  • 比率は変えないこと。画像比率も構図が変わる要因になる。
    • 512x768なら、倍の1024x1536。
  • 上げ過ぎると崩れる?
    • 最大の2048にすると、どうもディティール過多で顔が崩れてしまう。

高サイズの生成では、"Highres. fix"を有効にする

高サイズで生成すると、複数人・複数アングルが混ざった絵ができてしまうことがある。

Highres. fixオプションを使うと、大まかな構図を固めてから生成するので、構図が混ざることを回避することができる。
(低いステップで作った絵を元にimg2imgするように生成される)

これの値は低いとボケた絵になるので、初期設定の0.7が安定か。

後から有効化すると構図が変わってしまうので注意。

ステップ数を上げる

ステップ数を上げることで細部を描画させる。
50step程度を試してみる。

ステップ数でのディティール向上を考えるなら、絵が変わらない系サンプラーを利用すること。絵が変わる系ではこの方法は使えない。
(DDIMやDPM++2Mなど。ステップ数の項目を参照)

必ずしも「ステップ数は高ければ高いほどいい」といいうわけではないので注意。

  • 大体20step程度で構図が安定していく。
  • 大体80stepなど高いステップ数になると、それ以降変化が見られないようになる。
    • (結果が収束する)

img2imgで解像度・ステップ数を上げる

Denoising Strengthが低いほど元絵の印象を保ったまま再生成できる。
ただ、単にやるだけではディティールが潰れる。

下記では印象そのままに解像度上げできる。

  1. 転送ボタンから作った画像をimg2imgに転送する。
    • プロンプト・シード値などをそのまま送れる。
  2. Denoising Strengthを0.2程度、解像度を倍の1024x1536・50stepにして出す。
    • (元が512x768・20stepなら)。
    • ただ、これならextraタブでの解像度上げと同じことか?

img2imgで、良い構図から別の絵を再生成する

txt2imgでゼロから作るよりも、img2imgを利用してある程度構図が決まった状態から生成させると意図したものを作りやすい。
特に複雑な構図を作るときは、手書きの下絵の方がうまくいく。

例え絵が下手でも作りたい絵が既に決まっているなら、大雑把なラフ絵を自分で用意してimg2imgで生成していった方がうまくいきやすい

また、txt2imgで生成した良い感じのものを、こちらでさらに再度生成するというやり方もよい。

Denoising Strengthの値について

img2imgでは、元絵にノイズを加えて、AIがそれをベースにノイズを除去するようにして別の絵を出す。
そのため、Denoising Strengthで加えるノイズが低いほど元絵に近く、強いほど別の絵が出やすい

0.2程度にすることで、気に入った元絵の少しだけ違う絵を生成できる?

自分も最適解がよくわかっておらず、どうも値が中途半端だとディティールが潰れた絵になってしまいがち。
ステップ数を上げたり、CFG Scaleを12にしてみたりして色々試してみる。

簡易ペイントツールが使える

デフォルトではないので、自分で有効化することで使用できる。

かなり簡易的なペイントツールだが、すぐに大雑把に修正したい時はよさそう。
ただ、ショートカットキーもないので、外部ペイントツールに慣れているなら外部を使った方が楽だししっかり修正できる。

  1. webui-user.batをテキストエディターで開く。
  2. call webui.batより上に、下記のコマンドを追加する。
    • 外でもset COMMANDLINE_ARGS=を使っているなら、それに続いて「set COMMANDLINE_ARGS=--a --b --c」のように書く。
  3. WebUIを再起動する。
set COMMANDLINE_ARGS=--gradio-img2img-tool=color-sketch

画像範囲の補完オプション

サイズが違う画像を生成しようとする時の補完方法オプションがある。
それぞれ違う。

  • Just resize
    • 生成するサイズに合うように元絵が引き伸ばされた絵になる。
  • Crop and resize
    • 生成した結果に収まらない部分は切り取られる。
  • Resize and fill
    • 余白を補完する。

インペイントで、部分的に修正する

元画像
インペイントで顔と腕修正(手はインペイント後に加筆)

目や手・飾りなど、部分的に気に食わない箇所を修正することができる。
周りの絵を考慮しながら自動で特定の箇所を補完してくれる。

こちらも結果に振れ幅があるので、良い結果が出るまでデノイズ値を調整したり、繰り返し生成すること。

  1. img2img > Inpaint タブに切り替える。
  2. 画像生成に利用したプロンプト・ネガティブプロンプトを貼り付ける。
  3. ブラシモードになるので、修正したい箇所を塗る。
    • 大雑把でも割と問題なく行ける。

元絵にない新しい要素を追加したい場合

元絵に存在しないモノを新規追加しようとしても、自動補完が強く出て元絵のままなにも追加されないことが多い。

要素を追加したい場合は、自分で外部ペイントツールで元絵に追記してからインペイント生成すると、思い通りにいきやすい

良い結果を部分的に手動で合成する

部分的だけでも良い結果が出たなら、そこだけを手動で元絵に合成すればよい。
外部ペイントツールにて、単純にほしい部分だけを手書きでマスクして、良い結果が出た別の画像に重ねる。

AIの機能というわけではないが、様々なパターンが出せるAIの良さを活かせる。

イラストのキャンバスサイズを広げる

「いい絵が生成できたけど画像の縦横比が気に食わない」ということがある。
img2imgのインペイントを使って、存在しないキャンバスサイズを広げる方法を紹介する。

データにないアーティストの画風やキャラの特徴を追加する(embeddings/hypernetworks)

画風ファイルを追加することで、元のモデルにはない画風や概念・キャラの特徴などを追加することができる。

hypernetwork Strengthを調整すれば元のモデルとhypernetworkの絵柄がミックスされるため、元となったアーティストの画風とも異なった絵を作ることができる。

生成画像を管理する

画像ビューアーアドオンを使うと便利

stable-diffusion-webui-images-browser

今まで生成した画像を一覧で見ることができる。
PNG infoと同様に使用したプロンプトの確認や転送がすぐさまでき、データを振り返りやすくて便利。

十字キーで表示画像の変更操作すると、横に表示されるプロンプトが更新されないバグがある。
(サムネの方をクリックすると更新する)

  1. Extensions > Available > Load from: を押す。
  2. 一覧からImage browserを探し、インストールする。

その他の小ネタ

十字キーで設定変更

設定のスライダーは、設定が選択状態なら十字キーの左右でも操作できる。
値を細かく指定したい場合はこれで操作する。

デフォルト設定を変えて使いやすくする(ui-config.json)

プロンプトやネガティブプロンプトでほぼ必ず使う定型文は、最初から追加されるように設定しておくとやりやすい。
サンプリング回数や幅・高さ設定も、自分のよく使う好みの設定にするとよい。

特に、WebUIを開き直したり、タブを再読み込みすると全ての設定が戻ってしまうので、デフォルト設定はなるべくすぐに始められる設定にしておくと楽。

  1. /ui-config.jsonをテキストエディターで開く。
  2. 下記の場所の""内に、好きな文章を追加する。
    • "txt2img/Prompt/value": ""
    • "txt2img/Negative prompt/value": ""
    • "img2img/Prompt/value": ""
    • "img2img/Negative prompt/value": ""
  3. ついでに縦サイズのデフォルト値を768に変えると、人物の生成がしやすくなってよい。
    • "txt2img/Height/value": 768,
    • "img2img/Height/value": 768,
  4. WebUIを再起動する。

NovelAI産プロンプトを変換するアドオン

novelai-2-local-prompt

プロンプト内の{}を、()に変換するボタンを追加する。
ネットで公開されているNovelAI産プロンプトを流用する時に地味に便利。

  1. Extensions > Available > Load from: を押す。
  2. 一覧からnovelai-2-localを探し、インストールする。

メニューデザインはユーザーCSSで調整できる

user.cssを使って、利用しない機能のメニューを非表示にしたり、レイアウトを多少調整することができる。
特に上項目の方法でヘッダメニューを増やすと画面半分にした時に占有率が高いので、ノートパソコンのような狭い画面では調整するとよい。

Extrasで、単純に画質を上げる

Extrasタブから、画像を単純に高解像度にすることができる。
各設定ごとに画質の上げ方に違いがある模様。

生成した画像の呪文を再度確認する(PNG Info)

いい感じの絵を生成できても、その呪文を忘れてしまうことがある。
PNG Info タブで画像を渡せば、生成した時の呪文と設定を確認することができる。

シード値を調べるのにも使える。

これは、ネットからDLしたAIアートのファイルでも確認できることがある。
(アップロード時に画像が変換されるサイトだと、埋め込まれた情報がなくなってしまうので確認できない)

ノートパソコンでは電源接続してやること

ノートパソコンのバッテリー駆動では生成しない方がいい。
電力を多く消費するし、低電力モードでは生成が遅くなる。
自分もノートパソコン環境なので、たまに生成が遅い原因が電源刺し忘れだったということがある。

ノートパソコンで生成する場合は、電源接続した状態で行う。

生成結果が黒画像になる

SDアップスケールなどで高解像度指定すると(?)、部分的に黒くなったり全部が黒画像になる問題。
いつかのアプデから起きる問題の模様。

下記の方法で解決する場合がある。

  1. webui-user.batファイルを、テキストエディターで開く。
  2. 「set COMMANDLINE_ARGS=」の後に、「 --no-half-vae」を追加する。

修正前
set COMMANDLINE_ARGS=

修正後
set COMMANDLINE_ARGS=--no-half-vae

Maybe hint for black image bug · Issue #2830 · AUTOMATIC1111/stable-diffusion-webui

十字キー上下での(テキスト:1.0)設定機能を無効化する

テキスト選択しながらShift + ↑↓キーで、選択範囲のテキストを囲って値設定ができる。

しかし、このキーマップは通常のテキスト編集操作でも普通に使う操作なので誤爆してしまう上、やり直しできない。

この機能を無効化するには、下記ファイル内のテキストを削除か、「// 」でコメントアウトする。

\stable-diffusion-webui\javascript\edit-attention.js

見切れている絵の範囲を拡張する(Outpainting mk2)

うまく生成できた絵でも、脚が見切れていたり、頭頂が見切れてしまった場合がある。
これは、Outpainting mk2を使うことで、画面の外側の領域を生成することができる。

ただ、これではうまくいかないことも多いので、後述のように手動で拡張してインペイントした方が楽かもしれない。

  • img2img >一番下の Script > Noneから、Outpainting mk2 に変更する
  • 作った時と同じ呪文を使って生成する。

アプリのアップデート

git pull を使う

  1. アプリのフォルダーを右クリック > git bash here
  2. 開いた画面に、"git pull"と入力してエンターを押す。

Source Treeを使ってマージする

上記方法のgit pull ではエラーが出て失敗する場合は、Git管理アプリを使ってマージするとよい。
自分でWebUIのデータを変更した時にもマージする必要がある。

  1. Source Treeをインストールする。
  2. WebUIのフォルダーをSource Treeに追加する。
  3. "フィッチ"で、新しい更新内容だけを取得する。
  4. "マージ"で、追加された更新内容の最も上の項目を選択し、OKを実行する。
  5. もしコンクリフト(競合)が起きたら、適宜必要な方を優先して、更新内容を解決する。
    • 自分がアプリの内容を編集しているとこのコンクリフトが起きる。
    • 問題なければ自分の更新内容を優先してもよい。

リンク

感想についてはこちら。

-AIアート

Copyright© 忘却まとめ , 2022 All Rights Reserved Powered by STINGER.