SD-webui-blip2 を利用して blip2 のキャプションを生成する手順を紹介します。
Stable Diffusion WebUI を起動しページを表示します。上部のタブの[Extensions]をクリックして選択します。
下図の画面が表示されます。
[Extensions]タブ内の[Install from URL]のタブをクリックします。下図の画面に切り替わります。
[URL for extension's git repository]のテキストボックスに、次のSD-webui-blip2リポジトリのURLを入力します。
入力後[Install]ボタンをクリックします。
https://github.com/Tps-F/sd-webui-blip2.git
インストールが完了した旨のメッセージが表示されます。
Stable Diffusion WebUI を再起動します。上部のタブに[BLIP2]のタブが追加されています。クリックしてタブを選択すると下図の画面が表示されます。
新しいStable Diffusio WebUIの場合、BLIP2タブが表示されない場合があります。
対処法として以下のファイルを修正します。
(Stable Diffusion WebUIの配置ディレクトリ)\stable-diffusion-webui\extensions\sd-webui-blip2\scripts\main.py
ファイルの冒頭に import modules.infotext_utils
を追加します。
from modules import script_callbacks
import modules.scripts as scripts
import modules.ui
import modules.infotext_utils # 追加
modules.generation_parameters_copypaste
を modules.infotext_utils
に変更します。
output_text = gr.Textbox(label="Answer", lines=5, interactive=False)
with gr.Row():
send_to_buttons = (
modules.generation_parameters_copypaste.create_buttons(
["txt2img", "img2img", "extras"]
)
)
modules.generation_parameters_copypaste.bind_buttons(
send_to_buttons, "", output_text
)
output_text = gr.Textbox(label="Answer", lines=5, interactive=False)
with gr.Row():
send_to_buttons = (
modules.infotext_utils.create_buttons(
["txt2img", "img2img", "extras"]
)
)
modules.infotext_utils.bind_buttons(
send_to_buttons, "", output_text
)
ファイルを変更後にWebUIを再起動して、[BLIP2] タブが表示されることを確認します。
[model list]のドロップダウンリストボックスをクリックします。下図のモデルのリストがドロップダウン表示されます。
リストから[pretrain_flant5xxl]の項目をクリックして選択します。
選択後[Load model]ボタンをクリックします。
初回はモデルのダウンロードが実行されます。ダウンロード後にモデルの読み込みが実行されます。
読み込みが完了すると、Finish loading model (モデル名)
のメッセージが表示されます。
BLIP2のキャプションを求めたい画像を読み込みます。画像をドラッグ&ドロップするか、画像の枠をクリックしてファイル選択ダイアログで画像を選択します。
画像が設定された状態が下図です。
[Generate Caption]ボタンをクリックします。処理が始まります。
処理が完了すると、[Answer]のテキストボックスにBLIP2のキャプションが表示されます。
下図の画像の結果は an anime character with blue hair and white dress
となります。
別の画像でも試してみます。下図の画像ではharry potter and the order of the phoenix
が結果となります。
なおダウンロードしたBLIP2のモデルファイルは以下のディレクトリに配置されます。
C:\Users\(ユーザー名)\.cache\huggingface\hub\models--google--flan-t5-xxl\snapshots\(ハッシュ文字列)\
バッチ処理で複数画像のblip2キャプションをまとめて制せする手順を紹介します。
下図の複数画像ファイルを準備します。
Stable Diffusion WebUIを起動します。[BLIP2]のタブをクリックして選択します。下図の画面が表示されます。
[Process type]の枠の[Batch process]のラジオボタンをクリックしてチェックをつけます。
右側のタブの[batch process]のタブをクリックして切り替えます。下図の画面に切り替わります。
右側のタブの[batch process]のタブの[Input Directory]に画像を配置したディレクトリのパスを入力します。
[Output Directory]にBLIP2の結果を出力するディレクトリのパスを指定します。今回は画像のあるディレクトリと同じディレクトリに設定します。
[model list]のドロップダウンリストからモデルを選択し、[Load model]ボタンをクリックします。今回もデルは"pretrain_flant5xxl"を選択しています。
モデルの読み込み完了後、[Generate caption]ボタンをクリックします。画像を読み込みBLIP2キャプションを生成する処理が始まります。
処理が完了すると、出力先のディレクトリに"blip2_caption.csv"ファイルが出力されます。
ファイルを開くと、ファイル名とファイル名に対応するBLIP2キャプションが記述されています。
バッチ処理でBLIP2キャプションを生成できました。