wd14-taggerの新モデルの追加方法の解説【eva02-large-tagger-v3/vit-large-tagger-v3】
こんにちは!【でんでん】です!
以前にtaggerの新モデルの追加方法について記事を書きましたが、あれからしばらく経ち、新しいモデルをSmilingWolfアニキがリリースしていたので導入方法を解説してきます。
永久保存版にしたいので、これから新しいモデルがリリースされても対応出来るように解説していきますね!
前回の記事(読まなくても大丈夫ッス)
【新作taggerモデル周りのおおまかな解説】
▶そんなのどうでもいい人は、目次の大見出しから【新作taggerモデルを導入する方法】にジャンプ!
新モデルに対応する意義
新モデルの方が検出できるタグの精度が上がるのが基本的な利点です。
それとbooru系タグは日々、使用実態に即した統廃合が進められています。そのため、昔あったタグが今はない……という事がよくあるのです。(例えばbangsタグとか)
そんな中、新作の大型ファインチューニング系モデルを使用するとなると、そのモデルは『新しいタグに即したdanbooruデータセットでトレーニング』されている可能性が高くなります。
なので、新作の大型ファインチューニングモデルを使用する際やそのモデルでのLoRA学習をしたい時は、新しいモデルにしておいた方が学習効率が良いのでは……という事になります。
新モデルの探し方
swinv2モデルの生みの親であるSmilingWolfアニキのhugging faceのリポジトリを監視しておけばOKです!booru系タグならアニキのモデルがやっぱり一番!
今回はwd-eva02-large-tagger-v3とwd-vit-large-tagger-v3が立て続けてにリリースされていたので、それを入れていきましょう。
各モデルの性能はモデルページの中に書いてある以下の部分を見ます。
各モデルごとの性能の見方
これらのスコアは閾値(threshold)とF1スコアというものです。ざっくり言えば、どちらの数値もより値が大きい方が性能のいいモデルです。
閾値が高すぎると誤ったタグ以上に正しいタグを見落とす確率が高くなりますが、F1スコアが高くなればバランスが取れるようになります。なので、現状一番性能がいいモデルはwd-eva02-large-tagger-v3になります。
新モデルの実力を確認しよう!
【タグモデル分析】
wd-eva02-large-tagger-v3では他のモデルが見落としていた多数のタグを検知出来ている。
bodystocking(全身タイツ)やpillar(柱), column(装飾的な柱), vines(蔓)などの柱周りのタグもバッチリ。また単純なchair(椅子)が抜けてthorns(王座)が追加された点も注目。mini crown(小さな王冠)、hand on own face(自分の顔に手を置いている)、cross necklace(十字架のネックレス)などの顔周りの細かい装飾やポーズも拾えている。
【タグモデル分析】
wd-eva02-large-tagger-v3では誤ったタグと正しいタグをどちらもそぎ落とし、さらに他のモデルが見落としていた多数のタグが検知出来ている。
chair, couch(イス、ソファ)の座っている事から来る誤った検知が弾かれた。on floor(床の上)という情報が抜けたのは痛いが、単純なplaid(タータンチェック柄)が抜けてplaid bowtie(タータンチェック柄の蝶ネクタイ)となり、より具体性が増している。sleeveless, sleeveless dress(袖なし、袖なしドレス)だけどうなのこれ感がある。
ちなみに特に注目したいのが、各種トランプの柄を認識出来ている事。画像のトランプは生成AI特有のゴチャりがあるのであれですが、細かい部分を読み解こうという部分の精度がそれなりに上がっています。
【新作taggerモデルを導入する方法】
ではさっそく新作モデルをtaggerに導入していきましょう。
以下の拡張機能が入っている事が前提になります。
extensions\stable-diffusion-webui-wd14-tagger\taggerフォルダ内の、utils.pyというファイルをテキストエディタで開いてください。
コード扱えるエディタなら多分どれでもいける。サクラエディタとか、好きに選んでくだちい。
開いたら、18行目くらいに以下のコードがあります。
interrogators = {
'wd14-convnextv2-v2': WaifuDiffusionInterrogator(
'wd14-convnextv2-v2',
repo_id='SmilingWolf/wd-v1-4-convnextv2-tagger-v2',
revision='v2.0'
),
'wd14-vit-v2': WaifuDiffusionInterrogator(
'wd14-vit-v2',
repo_id='SmilingWolf/wd-v1-4-vit-tagger-v2',
revision='v2.0'
),
'wd14-convnext-v2': WaifuDiffusionInterrogator(
'wd14-convnext-v2',
repo_id='SmilingWolf/wd-v1-4-convnext-tagger-v2',
revision='v2.0'
),
'wd14-swinv2-v2': WaifuDiffusionInterrogator(
'wd14-swinv2-v2',
repo_id='SmilingWolf/wd-v1-4-swinv2-tagger-v2',
revision='v2.0'
),
'wd14-convnextv2-v2-git': WaifuDiffusionInterrogator(
'wd14-convnextv2-v2',
repo_id='SmilingWolf/wd-v1-4-convnextv2-tagger-v2',
),
'wd14-vit-v2-git': WaifuDiffusionInterrogator(
'wd14-vit-v2-git',
repo_id='SmilingWolf/wd-v1-4-vit-tagger-v2'
),
'wd14-convnext-v2-git': WaifuDiffusionInterrogator(
'wd14-convnext-v2-git',
repo_id='SmilingWolf/wd-v1-4-convnext-tagger-v2'
),
'wd14-swinv2-v2-git': WaifuDiffusionInterrogator(
'wd14-swinv2-v2-git',
repo_id='SmilingWolf/wd-v1-4-swinv2-tagger-v2'
),
'wd14-vit': WaifuDiffusionInterrogator(
'wd14-vit',
repo_id='SmilingWolf/wd-v1-4-vit-tagger'),
'wd14-convnext': WaifuDiffusionInterrogator(
'wd14-convnext',
repo_id='SmilingWolf/wd-v1-4-convnext-tagger'
),
}
ここが、モデルを呼び出しするコードです。ここに以下の追記する事で新作モデルを呼び出し可能にします。
interrogators: Dict[str, Interrogator] = {
の後に改行して、以下のコードを貼り付けてください。
'wd-v1-4-moat-tagger-v2': WaifuDiffusionInterrogator(
'WD14 moat tagger v2',
repo_id='SmilingWolf/wd-v1-4-moat-tagger-v2',
),
'wd-ViT-Large-v3': WaifuDiffusionInterrogator(
'WD ViT-Large-v3',
repo_id='SmilingWolf/wd-vit-large-tagger-v3',
),
'wd-EVA02-Large-v3': WaifuDiffusionInterrogator(
'wd-EVA02-Large-v3',
repo_id='SmilingWolf/wd-eva02-large-tagger-v3',
),
全体コードは以下のようになればOKです。(ちょっと整えました)
interrogators: Dict[str, Interrogator] = {
'wd-v1-4-moat-tagger-v2': WaifuDiffusionInterrogator(
'WD14 moat tagger v2',
repo_id='SmilingWolf/wd-v1-4-moat-tagger-v2',
),
'wd-ViT-Large-v3': WaifuDiffusionInterrogator(
'WD ViT-Large-v3',
repo_id='SmilingWolf/wd-vit-large-tagger-v3',
),
'wd-EVA02-Large-v3': WaifuDiffusionInterrogator(
'wd-EVA02-Large-v3',
repo_id='SmilingWolf/wd-eva02-large-tagger-v3',
),
'wd14-convnextv2-v2': WaifuDiffusionInterrogator(
'wd14-convnextv2-v2',
repo_id='SmilingWolf/wd-v1-4-convnextv2-tagger-v2',
revision='v2.0'
),
'wd14-vit-v2': WaifuDiffusionInterrogator(
'wd14-vit-v2',
repo_id='SmilingWolf/wd-v1-4-vit-tagger-v2',
revision='v2.0'
),
'wd14-convnext-v2': WaifuDiffusionInterrogator(
'wd14-convnext-v2',
repo_id='SmilingWolf/wd-v1-4-convnext-tagger-v2',
revision='v2.0'
),
'wd14-swinv2-v2': WaifuDiffusionInterrogator(
'wd14-swinv2-v2',
repo_id='SmilingWolf/wd-v1-4-swinv2-tagger-v2',
revision='v2.0'
),
'wd14-convnextv2-v2-git': WaifuDiffusionInterrogator(
'wd14-convnextv2-v2',
repo_id='SmilingWolf/wd-v1-4-convnextv2-tagger-v2',
),
'wd14-vit-v2-git': WaifuDiffusionInterrogator(
'wd14-vit-v2-git',
repo_id='SmilingWolf/wd-v1-4-vit-tagger-v2'
),
'wd14-convnext-v2-git': WaifuDiffusionInterrogator(
'wd14-convnext-v2-git',
repo_id='SmilingWolf/wd-v1-4-convnext-tagger-v2'
),
'wd14-swinv2-v2-git': WaifuDiffusionInterrogator(
'wd14-swinv2-v2-git',
repo_id='SmilingWolf/wd-v1-4-swinv2-tagger-v2'
),
'wd14-vit': WaifuDiffusionInterrogator(
'wd14-vit',
repo_id='SmilingWolf/wd-v1-4-vit-tagger'
),
'wd14-convnext': WaifuDiffusionInterrogator(
'wd14-convnext',
repo_id='SmilingWolf/wd-v1-4-convnext-tagger'
),
}
上書き保存して起動しなおせば、インタロゲーターの欄に追加したモデルが表示されています。並び順はなんか謎です。
また新モデルが出てきた時の対応方法
コードは以下のような要素で出来ています。
'モデル名': WaifuDiffusionInterrogator(
'モデル名',
repo_id='リポジトリID',
),
以下はwd-eva02-large-tagger-v3のリポジトリです。
モデル名は大体何でもいいので、他と区別が付くように『wd-EVA02-Large-v3』としました。これは二か所共通で使います。
リポジトリIDとは各ページを開いたココの下線の部分の文字列の事を言います。この部分は、〇で囲った四角いアイコンをクリックすると自動でコピーされるので、それをそのまま貼り付けてください。
これからまた新しいモデルが公開されても、この方法で素早く自分の環境に追加出来るよ!やったぜ!!
では、今回は以上になります。良かったらこの記事をイイネしたり、SNSで拡散したりしてくれると嬉しいです!
お時間あるなら、別な記事も読んでいってくださいね✨
この記事が気に入ったらサポートをしてみませんか?