画像のキャプション・タグ編集の定義とツール紹介です。
キャプションとタグ
キャプションとタグの定義
簡単に言うと、文章形式か単語の集まりか、です。
- キャプション(広義)
- キャプション(狭義)
a woman in a short skirt and top hat walking down a street with a handbag - タグ
1girl,thighhighs,city,bag,hat
- キャプション(狭義)
- 初心者にとってはどちらを使用しても、学習品質に大きな影響はありません。
- 例えば、sd-scriptsでの学習時は、「caption + tag」のように足し算してから*1、transformersに受け渡すだけで、「1boy」等がcaptionとtagどちらに書かれていようが関係ない。(厳密には、文頭に存在するcaptionの方が影響力が強いと言えるが、初心者が気にするほどでもない)
- SDXLはキャプション(狭義)の方が得意とされています。
キャプションとタグの効果
タグの影響【参考】
用途別のツール選択
出力結果から選択
用途 | フレームワーク名 |
タグ | deepbooru |
キャプション | BLIP,BLIP2,CLIP |
精度から選択
- ’23/9月時点では、キャプション(BLIP,BLIP2)は識別精度や生成速度が悪く、ツールが少ないです。
- キャプションを使う場合は、ある程度手入力が必要になるでしょう。
- なので、BLIP,BLIP2,CLIPはそれぞれ正確さが違うものの、ツールの入手性から選ぶことになるでしょう。
タグを生成する。
沢山の画像を1枚ずつタグを生成するのは大変なので、
まずは、専用ツールでざっくりと、自動タグ付けをします。
WD1.4 Tagger
Stable Diffusion Web UI版
- 多数の画像を一括編集するのに便利。
- 除外タグ、追加タグを指定できる。
- Stable Diffusion Web UIのExtentionの一つ。
https://github.com/toriato/stable-diffusion-webui-wd14-tagger
誘導→WD1.4 Tagger
sd-scripts内蔵版
公式解説:https://github.com/kohya-ss/sd-scripts/blob/main/docs/wd14_tagger_README-ja.md
- サブフォルダも含めた一括処理が使いやすい。
- 多彩なオプションが使える。pythonのスクリプトを直接指定する形なので、カスタマイズ性に優れる。
膨大なデータセットを扱うユーザーはこれ一択じゃないだろうか。
Stable Diffusion web UI - Trainタブ
- プリセットなので手軽に利用可能。
- WD1.4 Taggerほど高機能ではない。
- deepbooruを用いたタグ生成を行う。
誘導→Stable Diffusion web UI/Train/Preprocess images
キャプションを生成する。
sd-scripts/自動キャプショニング機能
- 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-webui-blip2-captioner
Stable Diffusion web UIのExtensionの一つ。
おそらく最も高速&安定。
- GPUで処理可能。他の方法と比べて超高速。
- BLIP2方式。従来のBLIPよりも優れる。
- サブフォルダも含めた再帰的なキャプション処理はできない。
- 「main.py」を数行改造するだけで可能なので、ChatGPT等と相談すればOK。
大幅アップデート前のweb UI v1.5.1でのみ動作を確認済。それより後は未検証
Stable Diffusion web UI - Trainタブ
- BLIPというフレームワークを用いたキャプショニングができます。
- プリセットなので手軽に利用可能。
- CPUでのみ動作。遅い
- 出力されるキャプションファイルは、教師画像をリネームしたもの。
- 例:「XXX.png」なら「00000-0-XXX.txt」が出力される。
- 他のツールでタグを作る人にとって、この仕様は非常に厄介。
- 出力結果が比較的汚い
- 「black hair and black hair」「with other hand and other hand」
という重複単語が比較的高頻度で出てくる。 - Settings項の設定で多少緩和できはする。
- 「black hair and black hair」「with other hand and other hand」
誘導→Stable Diffusion web UI/Train/Preprocess images
LAVIS
- 公式HP:こちら
- LAVISは、BLIP-2と呼ばれるフレームワークを使用したキャプショニング用ツール。
BLIP-2はBLIPよりも高性能と言われている。 - 導入手順は公式HPを参照のこと。
または「BLIP-2」「インストール」でweb検索すればヒットする。- 挫折しやすいポイントがあるのでオススメはしない
タグやキャプションを細かく編集する。
前項のタグ・キャプション作成しただけでは、過不足が発生する場合があり、
お好みで調整します。
Dataset Tag Editor
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
dataset-tag-editor-standalone
ATOMATIC1111 SD WebUIへの依存をなくし単体で動作可能にされたもの
Gradioのバージョンアップに伴い発生した問題の修正フォーク
https://github.com/NEXTAltair/dataset-tag-editor-standalone/tree/pullreq_gradio5311
sd-tagtool
https://github.com/skiars/sd-tagtool
スタンドアロンアプリケーション(Windows版で起動確認。macOS、Linux対応)
サムネイルでプレビューしつつタグ単位でキャプションを編集できる。
機能的には必要最低限といった感じだが、Intellisenseで多くのdanbooruタグを網羅するなど必要な機能は充分揃っておりちょっとしたところの手触りが同種ツールの中ではかなり良くできている。
なお起動は軽いが学習フォルダを開く際に毎回サムネイル生成処理が走るので大量のデータのあるフォルダを弄ろうとする場合には少し厳しいものがある。
ヒント
- 上のテキストボックスに入力したタグでフィルタ、下のテキストボックスにタグを入力しinsertを押すと選択画像にタグが追加される
- positionに数値を入れた場合、insertを押した際の追加タグがposition番目に挿入される
- edit all tagsをオンにすると選択に関わらず読み込まれた全てのデータに対してタグ付け・削除が行われる。切り忘れて編集してしまうと滅茶苦茶になるので必要な時だけ使おう
- Shift/Ctrl+クリックで複数選択可
- サブディレクトリに含まれた画像データも読み込まれる
- 編集が終わったらFile->Saveで設定したタグをキャプションファイルに書き込む。拡張子はいまのところ.txtのみ
- 閉じる際警告は出るが自動で保存はされないので必ず手動で保存すること