見出し画像

Stable Diffusion Img2Img一括変換ツール

概要

本ツールは、Stable Dissufionでtxt2imgで出力した複数の画像データを、Img2Imgで一括変換をかけて、スケールアップするためのツールです。
Stable Diffusion Web UI(AUTOMATIC1111版)で生成された、PNG形式の複数の画像を変換することができます。

インストール&セットアップ

本ツールを動作させるには、Stable Diffusion Web UI(AUTOMATIC1111版)が動作する環境が必要となります。また、Python3のインストール環境も必要となりますが、Stable Diffusion Web UIを動作環境に含まれていると思いますので、別途インストールする必要はありません。

一括変換ツールのダウンロードファイル

下記の添付から「img2img_100.zip」をダウンロードしてください。
次に、ダウンロードしたファイルを任意のフォルダに展開してください。
Img2Img.py」「Img2Img.bat」の2ファイルが展開されます。

バッチファイルの格納と設定

デスクトップに、上記で展開した「Img2Img.bat」のバッチファイルのショートカットを作成してください。変換したい複数のPNGファイルが含まれるフォルダをショートカットにドラッグ&ドロップすることで、フォルダ内のPNGファイルをImg2Imgで一括変換することができます。
※ ショートカットを作成せず、バッチファイルを直接デスクトップに配置する場合は、バッチ内の「Img2Img.py」をフルパスで指定してください。

出力フォルダの指定
「Img2Img.bat」の既定では、実行フォルダ配下の「output」フォルダを既定の出力フォルダとしています。出力先フォルダを変更する場合は、バッチファイルの最後の行にある「.\output」の表記を出力先のフルパスで指定してください。
※ 相対パスで指定した場合、変換前ファイルのフォルダ下からの相対パスで出力フォルダが設定されます。

python Img2Img.py "%1" ".\output"

Img2Img.bat内の変更箇所

※ バッチファイルの入力フォルダも固定する場合は、「%1」の部分を入力フォルダのフルパスに変更してください。

Stable Diffusion Web UI(Automatic1111版)の設定

Img2Img一括変換ツールでは、Web UIをAPI経由で操作するため、Web UIでAPI経由のアクセスを許可する必要があります。
WebUIの起動バッチファイル「webui-user.bat」内に記述されている「COMMANDLINE_ARGS」パラメータに、下記のように「--api」の引数を追加します。(既存のコマンドライン記述がある場合は、後ろに追記してください)

set COMMANDLINE_ARGS= --api

sdwebuiapiのインストール

Web UIを操作するためのAPIクライアントをインストールします。
Stable Dissufionが動作する環境で、コマンドラインから下記のコマンドを実行します。

pip install webuiapi

ここまでの処理で、動作のためのセットアップは完了です。

一括変換ツールの実行方法

デスクトップにショートカットを作成している場合

変換元のファイル群が入っているフォルダを、一括変換ツール(Img2Img.bat)のショートカットにドラッグ&ドロップしてください。
コマンドラインプロンプトが表示され、変換処理が起動します。

コマンドラインからバッチファイルを直接実行する場合

バッチファイルの第一引数に指定したフォルダもしくはファイルを変換します。下記のコマンドのようにバッチファイルを実行してください。
※ 出力フォルダも第二引数で指定したい場合は、次に記載のPythonファイルを直接実行する方法を試した方が良いです。

Usage: Img2Img.bat <PNG file or PNG folder>

コマンドラインから、バッチファイルを使わずPythonファイルを直接実行する場合

バッチファイルを使わず、直接Img2Img.pyを実行する場合は、以下の形式で実行できます。

Usage: python Img2Img.py <PNG file or PNG folder> [<output base folder>]

入力は、1つのPNGファイル、もしくは複数のPNGファイルが含まれたフォルダを第1引数、出力フォルダのベースフォルダを第2引数で指定します。
第2引数が省略された場合は、「.\output」が既定で指定されます。

Img2Img変換時の設定について

Img2Img変換時は、下記の設定などで変換されます。
pythonのソースコードをいじれば、変換パラメータを変更できます。
その他注意点などについても、以下に記載します。

  • 変換後のPNGファイルは、指定出力フォルダ下に「YYYY-MM-DD」形式の日付フォルダを作成し、そのフォルダ下に出力されます。

  • 変換後のファイル名は「変換前のファイル名_4x.PNG」のように末尾に「_4x」のファイル名が追加されます。

  • 元画像の2倍のサイズにアップスケールされます。

  • プロンプトとネガティブプロンプトは、txt2img作成時のものが使用されます。

  • img2imgの「サンプリング方法」「CFGスケール」「サンプリングステップ数」は、txt2Img実行時に使用された値が使用されます。

  • Tiled Diffusion / Tiled VAEを使ってアップスケールを行います。

  • Tiled Diffusionのアップスケーラは、Hires.fixで使用されたアップスケーラを利用します。

  • Noise Inversionは既定で無効となっていますが、後述の設定変更で設定を変更可能です。

  • ノイズ除去強度「Denoising strength」は「0.4」で設定されています。設定を変更したい場合は、ソースコード中の「denoising_strength」の値を直接変更してください。

  • モデルは、Automatic1111 WebUIで設定されているモデルを使用します。txt2imgで作成されたモデルが必ずしも利用されるとは限りません。

  • ControlNetには対応していません。

  • PNGファイル内のPNG Infoに情報がない場合は、変換に失敗します。Lama Cleanerやその他ペイントツールで編集した場合、PNG Infoの情報が無くなっている場合がありますので、注意してください。

  • Automatic1111 WebUIと同時に本ツールで一括変換処理を行った場合の動作評価は行っていません。

変換設定の変更

  • 上記記載以外の「Tiled Diffusion / Tiled VAE」の詳細な設定は、Pythonファイル内(prepare_high_res_settings)に記述があるので、これらを書き換えることで、好きな設定に変更可能です。

  • i2i_generateの関数内の「noise_inverse」の値を変更することで、Noise Inversionの有効・無効を切り替えることができます。

  • i2i_generateの関数内の「Scale_Factor」の値を変更することで、画像の倍率を変更することができます。既定では「2」(縦横2倍)になっています。

  • i2i_generateの関数内の「encoder_size」「decoder_size」でTiled VAEの「エンコーダタイルのサイズ」と「デコーダーのタイルサイズ」を変更できます。

  • 変換時にメモリ不足が発生する場合は、「tile_batch_size」の値を設定値の「4」から、より小さい値に変更してください。この設定は「Latentタイル バッチサイズ」に相当します。

ライセンス

参照元に準じて、MIT Licenseとします。

参考文献・謝辞

本ツールは、下記ソースを参照して開発しています。開発者の方々に感謝です。
Hires-Tiled-Diffusion-ControlNet-Tile-
https://github.com/kotaro5487/Hires-Tiled-Diffusion-ControlNet-Tile-sdwebuiapi
https://github.com/mix1009/sdwebuiapi/tree/main

Twitter…もとい𝕏では、上部のイラストに描かれている、りりむちゃん(青髪の子)と、あみち(ピンク髪の子)を中心にAIイラストを投稿してます。よろしかったら、こちらも御覧ください。
https://twitter.com/ARIKA_AICG

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