AI画像生成ソフト Stable Diffusion Web UIでハニセレ画像を2次元イラストやフォトリアルな実写に加工して遊ぶためのチュートリアルです。 AI画像生成については情報が氾濫しててどこから手を付けて良いか分からず苦労すると思います。全体の流れをまとめたつもりなので興味がある人は是非お試しを。

2023年5月現在の情報です。AI画像生成は日々進歩しているため情報が古い可能性があります。
(2023/05/02) v0.1 ページ公開
(2023/05/11) v0.2 高解像度化の手順を追加


  • はじめに

    AI画像生成ソフトStable diffusionをPCで動かしハニーセレクト等のスタジオの画像を加工する手順を説明します。
    ローカルPCにセットアップしなくてもAI画像生成のWebサービスを借りて遊ぶことも出来ますが、 性癖を解き放った生成指示を行うと利用制限されたりアカウント停止されてしまう可能性もあるので私は自前でセットアップすることにしました。

    ちょっと試してみたいとか健全に遊ぶだけなら面倒ならWebサービスを使った方が楽です。

  • 全体の流れ

    Stable DiffusionをセットアップしてAIに画像加工の指示(人物の特徴、ポーズ、構図等)を出すプロンプトの使い方を覚える必要があります。
    勉強の順序
    1. プロンプトから画像を生成するtext2imgで画像生成の手順を覚える
    2. 画像から画像を生成するimg2imgを試す
    3. モデルの入れ替えやプロンプトの調整するポイントを把握する
    4. 画像を完成させるための高解像度化や破綻した部分の補正を行う

  • 前提条件
    • Windowsでソフトのインストール・ファイルのコピー等の基本操作が出来ること。(ハニーセレクトのMOD導入が出来るなら大丈夫です)
    • 中学生レベルの英単語力(プロンプトは英語です)
    • 2023年4月時点でミドルエンド以上のnVidia製グラフィックボードを搭載していること。(Radeon系では動作しません。VRAM6GBのグラフィックボードはギリギリ動くくらい。処理に長い時間がかかります。)
      ※PCスペックが無くてもGoogleのクラウドコンピューティングを使って処理を行うことも出来ますが(月額1500円くらい)エロ系やロリはアカウント停止の危険が伴います。
  1. ステップ1 Stable Diffusion Web UIをインストールする

    ローカルPCで動作するAI画像生成を行うことが出来るツールです。インストール手順はネットに溢れているので、ご自身が理解しやすいところを参照してください。

    としあきdiffusion Wiki*
    AUTOMATIC1111版Stable Diffusion web UIローカル導入方法
    としあきdiffusion Wiki ローカル版導入
    ※手順「1. モデルデータをダウンロードする 」は次で解説します。

  2. ステップ2 モデルデータ(AIの学習データ)を入手する

    AI画像生成にはベースとなる学習データが必要です。学習データによってリアル系・アニメ系等の画風が変わります。

    モデルデータは大まかに3種に分類出来ます。
    • Checkpoint・・・基本となる学習モデル
    • LoRa, Texture Inversion, Hypernetworks・・・人物・衣装・構図等のプラグイン的学習データ
    • VAE・・・画像の補正機能(鮮やかさやシャープさ等)
    1. 学習データを入手します。
      • Checkpoint

        学習モデルのアップローダー civitai.comで18禁コンテンツ表示するため、ログインしてから右上のAccountSettingsから「Explicit Adult Content」をオンにしてください。

        この説明ではリアル系のモデルBRAを使用します。 BRA(Beautiful Realistic Asians) V4

        ダウンロードした*.safetensors ファイルを\webui\models\Stable-diffusionに保存してください。
        ページ内の画像を1枚ダウンロードして[checkpointと同名].pngに名前を変更し同フォルダに保存してください。
        (WebUIでサムネイル画像として表示されます)

      • LoRa, Texture Inversion, Hypernetworks

        追記予定です。プラグイン的なものなので今は使いません。

      • VAE

        vae-ft-mse-840000
        vae-ft-mse-840000-ema-pruned.safetensorsをダウンロードして\webui\models\VAEに保存してください。
        ※vae-ft-mse-840000はリアル系では定番のVAEです。アニメ系はCheckpoint毎に推奨するVAEがあるのでそれぞれの説明を読んでください。

    2. [Extensions]>[Installed]の[Aply and restart UI]でWebUIを再起動してください。
    3. WebUIの[Settings]>[Stable diffusion]を開き、「SD VAE」からvae-ft-mse-840000-ema-prunedを選択して「Apply settings」ボタンを押してください。
    4. WebUIの[text2img]タブを開き左上の[Stable Diffusion checkpoint]から、1でダウンロードしたCheckpointを選択して下さい
      ※[Generate]ボタン下の花札マークを押すとCheckpointの一覧が表示されるのでここからでも指定可能です。1で保存したサムネイルはここで表示されます
    5. プロンプト(上の段)に以下を入力して Generateを押してください
      1 girl, solo
    6. 女の子が出力されれば成功です。
  3. ステップ3 テキストから画像生成するtext2imgでプロンプトの使い方を把握する

    txext2imgはキャラや背景・構図をプロンプト(テキスト)で指定して画像を生成する機能です。
    画像を元に加工する機能(img2img)でもプロンプトを併用するためここで慣れて下さい。AIに何も指示を与えないとAIの裁量が大きくなってイメージ通りの結果を得られません。 逆にプロンプトを指定し過ぎると一部の要素しか使用しなくなったりと非常に調整が難しいポイントです。

    プロンプトには、AIに注目して欲しい要素を書くプロンプトと、含んで欲しくない要素を書くネガティブプロンプトの2種類があります。

    1. WebUIの[txt2img]タブを開いてください。
    2. プロンプト(テキストエリア上段)を入力してください。
      Prompt:
      best quality, (photorealistic,realistic:1.2), 1girl, solo, detailed face,  black hair, bangs, side ponytail, japanese idol, (large breasts,breasts out:1.3, 18-years-old, slender), black eyes,  lips,  standing, (looking at viewer:1.5), nude,
    3. ネガティブプロンプト(テキストエリア下段)を入力してください。
      NegativePrompt:
      paintings, sketches, (worst quality:2), (low quality:2), (normal quality:2), lowres, normal quality, ((monochrome)), ((grayscale)), skin spots, acnes, skin blemishes, age spot, glans,bad hand,
    4. [Generate]ボタンを押して、指示通りの人物が出力されることを確認してください。
    プロンプト解説:
    best quality, (photorealistic,realistic:1.2) 必ず入れるおまじない。高品質出力。
    1girl, solo 出力する人物の数 ※複数人は難しいので当分は1girlで練習してください
    detailed face, black hair, bangs, side ponytail, japanese idol, (large breasts,18-years-old, slender), black eyes, lips, 人物の特徴
    日本人顔はjapanese idol, japanese actoress, japanese を使ってください。(asianだと東南アジア系になる)
    年齢は18-years-oldのように数字か teen を使って下さい。(私はあまり効果を感じられませんでした)
    使う学習データによって効果の有無があるので
    standing, (looking at viewer:1.5), nude, ポーズの指示(この例は「裸で立ってカメラを見ている」)
    ()カッコ書き AIに注目して欲しプロンプトを指定します。複数(())で囲うと注目度が高くなります。(カッコ一つで1.1倍)
    :コロン書き その要素の注目度を上げます(例;realistic:1.2は1.2倍となります)
    ネガティブプロンプト解説
    paintings, sketches, (worst quality:2), ~ 低クオリティ出力を抑止するためのおまじないが書いてあります。今の段階ではコピペして使用して下さい。
    ※特定の要素が強く出る場合はここに入力すると生成されにくくなります。例えばスカートを履かせたくないのに頻繁に生成されるならここにskirtと書きます。
    ※学習データによっては推奨するネガティブプロンプトがあります。ダウンロードするページの説明をよく読んでください。

    プロンプトのキーワードを覚える必要はありません。 ここでは画風、ライティング、構図・ポーズ、人物の特徴等、何を指定する必要があるか把握してもらえれば大丈夫です。
    画像を解析してプロンプトを生成する方法もあります。(後述)

  4. ステップ4 画像を生成する流れを把握する

    同じプロンプトでも[Generate]ボタンを押度に生成時時のシード値(乱数)変わるので生成結果は変化します。
    高解像度の画像を出力するには長い処理時間が必要なので、低解像度でプロンプトを調整して出力を繰り返し最適なシード値(乱数)を決め最後に高解像度出力というのが流れとなります。

    1. WebUIの[txt2img]タブを開いて、下部の設定の意味を把握して下さい。

      まずは必要なものだけ書きます。
      詳細はとしあきdiffusion Wiki* txt2img 項目解説を参照してください。
      Sampling method AIの計算方法 これを変えると結果が変わります。
      DDIMが高速と言われているが好みで選ぶ。(Eular a, DPM++2M Kraasが多い)
      Sampling steps 計算回数 20でOK
      Restore faces 顔がくずれたらチェックを入れてください
      Tiling 使いません(模様やテクスチャを作りたい時に使う)
      Hires.fix 画像を高解像度で出力します。後で使うので今はチェックしないでください。
      width, height 512×512, 512×768, 512×832 いずれか。縦横方向はは変えてもOK。
      Batch count 1固定
      Batch size 1固定
      CFG Scale 5~9(デフォルト値7で良い)
    2. 何度か[Generate]ボタンを押して良い画像が出力されたらその画像の元となったシード値(乱数)を固定します。
      Seedの値の横にあるリサイクルマークを押してください。-1(ランダム)から現在の画像のシード値に変わります。
    3. この状態でプロンプトの balck hairを blond hairに変えて[Generate]ボタンを押してください。
      シード値を固定したので前回出力と大きく変わらない画像が生成されるはずです。
    4. 画像が決まったら高解像度で出力をします。Hires.fixにチェックを入れてください。
      Upscaler Latent・・・高品質だけど遅い(VRAM8Mではテスト出力から結果が変わってしまうのでおススメしません)
      ESGRAN_4x・・・早い(私はこれを使ってます)
      Denoising strength 高解像度変換時のAIの裁量度合です 0.4~0.6
      この値が大きいとテスト出力からかけ離れた結果になります。
    5. [Generate]ボタンを押してください。テスト出力の10~20倍の時間がかかります。
    6. 画像が出力されたら画像下の[Save]ボタンを押してください。 画像が\log\images に保存されます。

      【はまりポイント】

      • Hires.fix前の画像と雰囲気が変ってしまった!
        高解像度化は単純なスケールアップでは無くAIが補正を加えながら変換を徐々に解像度を上げています。 元画像から大きく離れた画像になってしまったらDenoising strengthやHires stepsの回数を下げてください。

    7. 尚、出力した画像はすべて\outputs\txt2img-imagesに保存されています。

    【補足情報】
    StableDiffusionで生成した画像には生成時に使用したプロンプトが埋め込まれています。
    [PNG Info]タブを開いて\outputs\txt2img-imagesの画像をドロップしてください。設定を確認することができます。
    ※アップロードされている画像のオリジナルがダウンロードできるPixv等のサービスであれば作者のプロンプトを見ることが出来るかもしれません。

    civitai.comでは投稿画像のプロンプトを見ることが出来ます。

  5. ステップ5 スタジオの画像を元にAI画像を生成する

    画像をAIに解析してもらって学習モデルを元に画像生成します。 ただし何も指示しないとAIの裁量が大きくなってしまうので上で覚えたプロンプトを使用します。

    1. WebUIの[img2img]タブを開きます。
    2. img2imgエリアに画像をドロップします。
    3. [Interrogate DeepBooru]ボタンを押します。画像が解析されてプロンプトが出力されます。
    4. プロンプトから不要なテキストを削除してください。
      私は日本人の若い子を生成したいのでjapanese idol, japanese actoress, japanese, teen, 18-years-old を追加しています。
      リアルな人物を作るなら (8k),best quality, photorealistic, realistic を追加すると良いかもしれません。
    5. ネガティブプロンプトにステップ3で使用したものを入力して下さい。
    6. Width, heightを変更すると画像のプレビュー画面に赤枠で表示されます。画像全体が覆われるように調整して下さい。
      VRAM8GB以下は縦横1024px以上の解像度はメモリ不足でエラーが発生します。画像生成時にエラーが起きたらwidth, heightを下げてください。
    7. Denoising strengthを0.5以下に設定して下さい。
      AIの裁量度合で0.5を超えると元画像とかけ離れた画像が生成されます。img2imgでは特にこの値の加減が重要です。私は0.3~0.45くらいの範囲を使用しています。
    8. [Generate]を押して画像を確認してください。
      text2imgと同様にシード値があるので生成するたびに結果が変わります。ある程度気に入った結果を得られたらシード値を固定してプロンプトを調整して下さい。

      【試行錯誤ポイント】
      調整するポイントを挙げるので変更してみてください。人それぞれ好みがあるので定番の設定はありません・・・。

      • モデルを変える
        2次元系とリアル系は元より得意な人種(アジア系や白人系など)もモデル(Checkpoint)によって異なります。いろいろなモデルを試してみて下さい。
        Googleで検索すれば定番のモデルを紹介するサイトが沢山出てきます。civitai.comではCheckpointのタグが付いています。
        今回は私のイメージよりもリアルになってしまうためモデルをBRAから国风3 GuoFeng3に変更しました。
      • Sampling methodを変える
        Sampling methodによって雰囲気が大きく変わることが多いです。モデル推奨のSampling methodに限らず変えてみるのも手です。
        今回はSampling methodを「Eular a」からモデルが推奨する「DPM ++ 2M Karras」に変更しました。
      • プロンプトの注目度を上げる
        AIの注目が弱いプロンプトにはxxxxxx:1.2のようにコロンの後に注目度を上げてください。xxxxxx:0.8のように下げることも出来ます。
      • 年齢のプロンプトを追加する
        リアル系のモデルは年齢と人種に関するプロンプトを使うと変化があります。今回は((japanese idol:1.2,japanese, teen:1.4, 16-years-old)) と注目するようにしました。
        2次元系のモデルはあまり効果を感じたことはありません。
      • ネガティブプロンプトを追加する
        ポシティブプロンプトにばかり注目しがちですが、ネガティブ側に参照して欲しくないプロンプトを入れると結果が変化します。
      • プロンプトの順序を変える
        シード値が同じでもプロンプトの順序によって結果が変わります。作風を維持して変化させたい時に使ってみて下さい。
        先に書いた方がAIが注目してくれるという話も聞きますが確証はありません。
      • AIの影響度 Denoising strengthを増減する
        今回は元のキャラの雰囲気を残したいのでDenoising strengthを0.4から0.36に下げました。
        0.5以上にしてまったく違う画像を生成するのも面白いですよ。
      • プロンプトを減らす
        Denoising strengthが低いならプロンプトを沢山指定しても意味が無いかもしれません。指示を多く出して余分な要素を追加されるよりもimg2imgはシンプルなプロンプトの方が良いことがあります。
      • 出力解像度を変える
        解像度や縦横比を変えるだけで結果が変化します。 今回は顔が破綻しやすいので解像度を512×648から632×784に上げました。
        ※AIは高解像度出力してから縮小するのでは無く指定された解像度にいきなり顔を描画するため低い解像度では顔が破綻しがちです。画像全体の5分の1以上が顔になるようにした方が安定しました。
      • VAEを変える
        VAEをNone、又はリアル系・2次元系のVAEに変えると違った質感が出ます。
      • inpaintで画像の一部を補正する
        後述(~~~追記中~~~)
      試行錯誤の末かなり雰囲気が近くなってきました。

      【モデルサンプル】
      3種類のモデルを使って変換してみました。プロンプトは画像をダウンロードしてPNG Infoを見て下さい。
      元ファイル
      meinamix_meinaV9
      BRA (braBeautifulRealistic_v40)
      3Guofeng3_v33

  6. ステップ6 img2imgで高解像度出力をする

    高解像度化は単純に画像を引き延ばしてシャープフィルタをかけるのでは無く、AIが細部を書き込みながら高解像度化を行います。解像度を上げる過程で結果が変わってしまうため、アップスケーラーの選択も重要になります。

    (2023/05/26) 以下の記事は古い情報です。2023/05現在はTiled DiffusionかControlNet Tileが使われています。

    StableDiffusionで解像度を上げる方法
    • 出力時の解像度を上げる・・・大量のVRAMが必要。VRAM8GBでは1024px以上はまず無理。
    • HiresFix・・・text2imgのみ。画像を加工するimg2imgでは使えません。
    • LoopbackScaler・・・私の環境ではイマイチ動作が安定せず。
    • Ultimate SD upscale・・・【今回説明する手順】元画像をある程度維持して高解像度化が可能。VRAMが少なくても停止しずらい(らしい)

    1. Ultimate SD upscaleをインストールします
      いろいろなサイトに説明があるので、自身の理解しやすいページを参照してください。
      例: ジコログ Ultimate SD Upscale【拡張機能のアップスケーラー】
    2. シャープフィルタの付いたアップスケーラーをインストールします
      https://upscale.wiki/wiki/Model_Databaseから4x-UltraSharp.pthと4x-AnimeSharp.pthをダウンロードしてください。
      ダウンロードしたファイルを\models\ESRGAN に保存して下さい。
      Extensions>Installed>[Apply and restart UI]ボタンを押してください。
    3. ステップ5で出力した画像を高解像度で出力します
      img2imgで元画像を出力します。
      [Script]で[Ultimate SD upscale]を選択して下さい。
      target size type・・・Custom sizeを選択して下さい。(例では元画像の出力解像度の2倍を指定しています。元画像の解像度から引き延ばしたければ scale from image sizeにしてください。)
      Upscaler・・・4x-UltraSharpまたは4x-AnimeSharpを選択して下さい。

      [Generate]ボタンを押してください。高解像度化した画像が出力されます。
    4. 高解像度化の過程で画像が変ってしまった場合はMask blurかPaddingを増やしてください。元画像に近くなります。今回はMask blurを8から32に増やしました。

      胸の部分に装飾が増えてしまいましたが、こういったケースはDenoising strengthと後述のinpaintの部分補正で調整してください。
  7. ステップ7 inpaintで画像を部分的に補正する
    (~~~追記中~~~)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です