キャプション・タグ編集

Last-modified: 2025-02-16 (日) 10:54:42

画像のキャプション・タグ編集の定義とツール紹介です。

 

簡単に言うと、文章形式か単語の集まりか、です。

 
  • 初心者にとってはどちらを使用しても、学習品質に大きな影響はありません。
    もっと見る
    • 例えば、sd-scriptsでの学習時は、「caption + tag」のように足し算してから*1transformersに受け渡すだけで、「1boy」等がcaptionとtagどちらに書かれていようが関係ない。(厳密には、文頭に存在するcaptionの方が影響力が強いと言えるが、初心者が気にするほどでもない)

出力結果から選択

用途フレームワーク名
タグdeepbooru
キャプションBLIP,BLIP2,CLIP

精度から選択

  • ’23/9月時点では、キャプション(BLIP,BLIP2)は識別精度や生成速度が悪く、ツールが少ないです。
    • キャプションを使う場合は、ある程度手入力が必要になるでしょう。
    • なので、BLIP,BLIP2,CLIPはそれぞれ正確さが違うものの、ツールの入手性から選ぶことになるでしょう。

沢山の画像を1枚ずつタグを生成するのは大変なので、
まずは、専用ツールでざっくりと、自動タグ付けをします。

誘導→WD1.4 Tagger

公式解説:https://github.com/kohya-ss/sd-scripts/blob/main/docs/wd14_tagger_README-ja.md

  • サブフォルダも含めた一括処理が使いやすい。
  • 多彩なオプションが使える。pythonのスクリプトを直接指定する形なので、カスタマイズ性に優れる。
    膨大なデータセットを扱うユーザーはこれ一択じゃないだろうか。

誘導→WD1.4 Tagger/sd-scripts

  • プリセットなので手軽に利用可能。
  • WD1.4 Taggerほど高機能ではない。
  • deepbooruを用いたタグ生成を行う。

誘導→Stable Diffusion web UI/Train/Preprocess images

  • BLIPを使用した方式。
  • sd-scriptsを使う予定がある人は、この方法が一番楽。
  • ユニークな点として、キャプションのクリーニング機能がある。
  • GPUで動作するため軽量。

使い方

1.batファイルを作成。
 下記をメモ帳にコピペして、拡張子をbatに変更する。
 ディレクトリは個人の情報を入力。

コピペする内容

make_captions_by_git.py の実行用batファイル

@echo

rem ここへディレクトリを手入力------------

rem sd-scriptsの絶対パスを入力
set sd_path=C:\(個人のパス)\sd-scripts

rem 教師画像の絶対パスを入力
set image_path="C:\(個人のパスを入力)\sd-scripts\lora_train_data\train_dir\XXX"

rem ---------------------------

rem sd-scriptsのフォルダへ移動し、venvを有効化。
cd %sd_path%
call venv\Scripts\activate.bat

rem caption生成を実施。
python finetune\make_captions_by_git.py --batch_size 8  %image_path% ^
	--caption_extension=".caption" ^
	--recursive

exit /b

補足:

  • 初回実行時は、モデルをローカルPCにDLするため多少時間がかかります。
  • 「--recursive」は指定したパス以下のサブフォルダ含む全画像を対象にするオプションです。
    指定ディレクトリのみの階層で良い場合は外して下さい。
  • venv環境を使用する必要はありません。make_captions_by_git.pyさえあれば、sd-scriptsがなくても動くそうです。

2.batファイルを実行。

Stable Diffusion web UIのExtensionの一つ。
おそらく最も高速&安定。

  • GPUで処理可能。他の方法と比べて超高速。
  • BLIP2方式。従来のBLIPよりも優れる。
  • サブフォルダも含めた再帰的なキャプション処理はできない。
    • 「main.py」を数行改造するだけで可能なので、ChatGPT等と相談すればOK。

大幅アップデート前のweb UI v1.5.1でのみ動作を確認済。それより後は未検証

  • BLIPというフレームワークを用いたキャプショニングができます。
  • プリセットなので手軽に利用可能。
  • CPUでのみ動作。遅い
  • 出力されるキャプションファイルは、教師画像をリネームしたもの。
    • 例:「XXX.png」なら「00000-0-XXX.txt」が出力される。
    • 他のツールでタグを作る人にとって、この仕様は非常に厄介。
  • 出力結果が比較的汚い
    • 「black hair and black hair」「with other hand and other hand」
      という重複単語が比較的高頻度で出てくる。
    • Settings項の設定で多少緩和できはする。

誘導→Stable Diffusion web UI/Train/Preprocess images

  • 公式HP:こちら
  • LAVISは、BLIP-2と呼ばれるフレームワークを使用したキャプショニング用ツール。
    BLIP-2はBLIPよりも高性能と言われている。
  • 導入手順は公式HPを参照のこと。
    または「BLIP-2」「インストール」でweb検索すればヒットする。
    • 挫折しやすいポイントがあるのでオススメはしない

前項のタグ・キャプション作成しただけでは、過不足が発生する場合があり、
お好みで調整します。

https://github.com/toshiaki1729/stable-diffusion-webui-dataset-tag-editor
stable diffusion-WebUIのExtentionの一つ。
としあき製。webUI上で学習用データセットキャプションを編集できるようにします。
2024年5月より更新再開

できること

  • タグの除去
    いらないものを選択→複数の画像から一括除去
    例:
    「blue hairが入ってるけど、単なる照明の都合でそう見えるだけでblue hairじゃないから取り除きたい。」
    「1girlは学習対象であってフォルダ名にする予定だから、txtからは除去したい」
  • タグの置換
    元:(1girl
    新:worst quality, low quality, (1girl

ATOMATIC1111 SD WebUIへの依存をなくし単体で動作可能にされたもの
Gradioのバージョンアップに伴い発生した問題の修正フォーク
https://github.com/NEXTAltair/dataset-tag-editor-standalone/tree/pullreq_gradio5311

https://github.com/skiars/sd-tagtool
スタンドアロンアプリケーション(Windows版で起動確認。macOS、Linux対応)
サムネイルでプレビューしつつタグ単位でキャプションを編集できる。
機能的には必要最低限といった感じだが、Intellisenseで多くのdanbooruタグを網羅するなど必要な機能は充分揃っておりちょっとしたところの手触りが同種ツールの中ではかなり良くできている。
なお起動は軽いが学習フォルダを開く際に毎回サムネイル生成処理が走るので大量のデータのあるフォルダを弄ろうとする場合には少し厳しいものがある。

ヒント

  • 上のテキストボックスに入力したタグでフィルタ、下のテキストボックスにタグを入力しinsertを押すと選択画像にタグが追加される
    • positionに数値を入れた場合、insertを押した際の追加タグがposition番目に挿入される
    • edit all tagsをオンにすると選択に関わらず読み込まれた全てのデータに対してタグ付け・削除が行われる。切り忘れて編集してしまうと滅茶苦茶になるので必要な時だけ使おう
  • Shift/Ctrl+クリックで複数選択可
  • サブディレクトリに含まれた画像データも読み込まれる
  • 編集が終わったらFile->Saveで設定したタグをキャプションファイルに書き込む。拡張子はいまのところ.txtのみ
    • 閉じる際警告は出るが自動で保存はされないので必ず手動で保存すること

*1 参照:https://github.com/kohya-ss/sd-scripts/blob/main/library/train_util.py
の中の下記2文参照
elif tags is not None and len(tags) > 0:
caption = caption + ", " + tags

*2 それぞれ識別に使うモデルが違います。キャプション結果を見て判断すると良いでしょう。当wikiでは後者を紹介します。前者は女性を「female」と表現したりする等、ちょっと使いにくい要素があるため。