WD1.4 Tagger/sd-scripts

Last-modified: 2025-03-03 (月) 18:16:06

概要

アプリについて

Stable Diffusion WebUI版との違い

メリット

  • Stable Diffusionのバージョンに依存せず使用できる。
    たとえば、ComfyUI専用ユーザーの場合、不必要なアプリの導入を減らせる。
  • Tagger用モデルの最新版を使える*1
    • sd-scripts版ではモデルを指定できる。モデルは定期的に更新され、次第に判定精度が向上している。
      最新版の方が、新しい作品のキャラ名タグを生成できるかもしれない。
  • カスタマイズ性がある。
    • こちらはpythonのスクリプトで直接動かすため、他のスクリプトと連携しやすい。
      • スクリプト実行時時にundesired tagを別途テキストファイル等で読み込む、複数のフォルダに対して連続実行、etc

インストール

sd-scriptsをインストール

 誘導→LoRA

onnxライブラリのインストール

公式ドキュメントを参照してインストールする。
https://github.com/kohya-ss/sd-scripts/blob/main/docs/wd14_tagger_README-ja.md

使い方

画像の準備

教師画像を任意のフォルダに置く。

Tagger実行

  • sd-scriptsのfinetunieフォルダ内のpythonのコードを実行。
    • 下記はbatファイルの場合の実行例。
      python finetune/tag_images_by_wd14_tagger.py ^
      --onnx ^
      --repo_id <モデルのrepo id> ^
      --batch_size <バッチサイズ> <教師データフォルダ>
    • 下記はPythonコードでの実行例
      各行の2列目の変数の代わりに、数値または文字列を書いてください。
        import subprocess
      
          #(中略)
      
          subprocess.run([
              "python", scripts_code,
              "--onnx",
              "--repo_id", "SmilingWolf/wd-swinv2-tagger-v3",
              "--model_dir", model_dir,
              "--character_tags_first",
              "--undesired_tags", undesired_tags,
              "--tag_replacement", replacement_tags,
              "--batch_size", "10",
              "--thresh", str(thresh),
              "--character_threshold", str(character_threshold),
              "--recursive",
              "--frequency_tags",
              "--always_first_tags", always_first_tags,
             image_path
          ], check=True)
  • オプションなどで除外タグや判定しきい値の設定が可能です。
    公式ドキュメントを参照のこと

オプションについて

公式ドキュメントに説明がない情報の補足です。

use_rating_tags/use_rating_tags_as_last_tag

  • レーティングタグを追加する。例えば、
    questionable, explicit , sensitive
  • このオプションを使う意味はあまりない。
    個人利用では、年齢制限について考慮する必要性が薄いし、
    そもそもNSFWなワードを別途使ってしまうと、意味がなかった。

モデルのダウンロード(任意)

  • 初回実行時は、デフォルトで
    SmilingWolf/wd-swinv2-tagger-v3
    がダウンロードされる。
  • これを変更したい場合は、
    --repo_id "SmilingWolf/wd-swinv2-tagger-v3"
    の部分を変更すると良い。
    huggingfaceに実在する「ユーザー名/モデル名」を代入すれば、
    Tagger実行時に自動でダウンロードされる。

モデルの選び方

  • 同じカテゴリのモデルならば、
    • 最新Ver.を選ぶ。
    • F1スコアが高いほうが良い。
  • モデルによって、確実なタグだけを生成するか、可能性のあるタグをできるだけ生成するか、という違いがある。
  • 自分の持っているデータセットによって、最適なモデルは異なる。
    • それぞれどのようなタグが生成されるかは、ネット上に多くの検証があるので探してみてください。
  • モデルの種類
    カテゴリ特徴
    wd-v1-4-swinv2-tagger偏りのあるマニアックな情報への対応力が高い
    wd-vit-large-tagger大規模のデータセットに対する速度が早い。
    wd-v1-4-moat-taggerswinvよりも速度早め、ただし、更新頻度遅い?
    ※雰囲気で書いているので、違う場合は修正をお願いします。
  • どのモデルでも正答率100%ではないことに留意する。
    • 企業レベルの場合は、別途タグ修正を行うことが前提
    • 個人レベルの場合は、除外タグリストを作ってundesired tagsオプションで除去する、誤検知は放置しつつ沢山のデータセットを準備することで誤答の影響を下げる、などの方法で誤検知による対策を行うと良い。

Tips


*1 厳密に言うと「導入しやすい」。webui版でも改造次第で対応はできる