見出し画像

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が立て続けてにリリースされていたので、それを入れていきましょう。


 各モデルの性能はモデルページの中に書いてある以下の部分を見ます。

各モデルごとの性能の見方

【wd-eva02-large-tagger-v3のやつ】
Validation results
v1.0: P=R: threshold = 0.5296, F1 = 0.4772

https://huggingface.co/SmilingWolf/wd-eva02-large-tagger-v3

【wd-vit-large-tagger-v3のやつ】
Validation results
v1.0: P=R: threshold = 0.2606, F1 = 0.4674

https://huggingface.co/SmilingWolf/wd-vit-large-tagger-v3

 これらのスコアは閾値(threshold)とF1スコアというものです。ざっくり言えば、どちらの数値もより値が大きい方が性能のいいモデルです。
 閾値が高すぎると誤ったタグ以上に正しいタグを見落とす確率が高くなりますが、F1スコアが高くなればバランスが取れるようになります。なので、現状一番性能がいいモデルはwd-eva02-large-tagger-v3になります。

新モデルの実力を確認しよう!

【WD14-swin-v2-v1
※いつものやつ
1girl, solo, pointy ears, boots, throne, crossed legs, blonde hair, cross-laced footwear, blue eyes, braid, long hair, sitting, gloves, smile, flower, lace-up boots, white gloves, elbow gloves, looking at viewer, crown, knee boots, thigh boots, black footwear, high heels, closed mouth, twin braids, bangs, elf, very long hair, white flower, full body, breasts, cross, chair, hand on own cheek, pantyhose, head rest, high heel boots, artist name, twintails
【wd-v1-4-moat-tagger-v2】
※sweinv2-v1との違い
(twin braids, very long hair, white flowerが抜けている)

1girl, pointy ears, throne, boots, solo, blonde hair, sitting, braid, gloves, long hair, crossed legs, elbow gloves, blue eyes, flower, white gloves, cross-laced footwear, looking at viewer, smile, high heels, high heel boots, knee boots, pantyhose, crown, black footwear, elf, bangs, lace-up boots, closed mouth, breasts, thigh boots, full body
【wd-vit-large-tagger-v3】
※sweinv2-v1との違い

(bangs, chair, artist nameが抜けている。pillar, bodystocking, plant, column, mini crown, signature, hair between eyesが追加された)
1girl, boots, pointy ears, elbow gloves, gloves, sitting, throne, braid, crown, crossed legs, cross-laced footwear, solo, blonde hair, white gloves, looking at viewer, long hair, smile, lace-up boots, flower, high heels, blue eyes, knee boots, black footwear, twintails, high heel boots, white flower, closed mouth, elf, very long hair, pillar, pantyhose, twin braids, breasts, head rest, full body, bodystocking, cross, plant, column, thigh boots, mini crown, signature, hand on own cheek, hair between eyes
【wd-eva02-large-tagger-v3】
※sweinv2-v1との違い
(bangs, chair, pantyhose, artist nameが抜けている。bodystocking, pillar, column, vines, thorns, plant, gold trim, bodysuit, mini crown, hand on own face, jewelry, cross necklace, medium breasts, elbow rest, necklaceが追加された)

1girl, boots, throne, crown, pointy ears, gloves, crossed legs, braid, blonde hair, elbow gloves, solo, long hair, bodystocking, high heel boots, sitting, knee boots, elf, blue eyes, white gloves, high heels, flower, looking at viewer, black footwear, thigh boots, smile, cross-laced footwear, cross, pillar, lace-up boots, column, vines, thorns, breasts, white flower, twin braids, plant, very long hair, gold trim, closed mouth, full body, bodysuit, mini crown, hand on own cheek, hand on own face, twintails, jewelry, head rest, cross necklace, medium breasts, elbow rest, necklace

【タグモデル分析】

 wd-eva02-large-tagger-v3では他のモデルが見落としていた多数のタグを検知出来ている。
 bodystocking(全身タイツ)pillar(柱), column(装飾的な柱), vines(蔓)などの柱周りのタグもバッチリ。また単純なchair(椅子)が抜けてthorns(王座)が追加された点も注目。mini crown(小さな王冠)、hand on own face(自分の顔に手を置いている)、cross necklace(十字架のネックレス)などの顔周りの細かい装飾やポーズも拾えている。

【WD14-swin-v2-v1】
※いつものやつ

1girl, green eyes, solo, card, dress, bow, petals, holding, looking at viewer, blue dress, plaid bow, blush, frills, frilled dress, short sleeves, blue bow, bangs, sitting, black hair, wrist cuffs, holding card, hair ornament, indoors, playing card, checkered floor, long hair, hair bow, closed mouth, bowtie, wariza, puffy sleeves, puffy short sleeves, chair, pinafore dress, couch, carpet, on floor, plaid
【wd-v1-4-moat-tagger-v2】
※sweinv2-v1との違い
(chair, couch, carpetが抜けている。plaid bowtie, shirt, white shirt, apron, plaid ribbonが追加された)

1girl, solo, card, green eyes, bow, dress, plaid bow, blush, holding, looking at viewer, playing card, blue dress, sitting, short sleeves, petals, hair bow, bangs, long hair, black hair, frills, wrist cuffs, blue bow, frilled dress, closed mouth, bowtie, pinafore dress, puffy sleeves, wariza, puffy short sleeves, holding card, hair ornament, plaid, checkered floor, indoors, plaid bowtie, shirt, white shirt, apron, plaid ribbon, on floor
【wd-vit-large-tagger-v3】
※sweinv2-v1との違い
(bangs, chair, pinafore dress, couch, carpet, on floorが抜けている。ace (playing card), ace of hearts, hairclip, spade (shape), plaid bowtie, blue bowtie, ace of spades, club (shape), full body, detached collarが追加された)

1girl, card, dress, green eyes, playing card, solo, looking at viewer, blue dress, hair ornament, bow, frilled dress, petals, plaid bow, black hair, short sleeves, ace (playing card), frills, sitting, blue bow, blush, closed mouth, ace of hearts, hairclip, hair bow, long hair, spade (shape), wrist cuffs, puffy sleeves, bowtie, indoors, wariza, plaid bowtie, checkered floor, puffy short sleeves, holding, blue bowtie, ace of spades, club (shape), full body, holding card, detached collar, plaid
【wd-eva02-large-tagger-v3】
※sweinv2-v1との違い
(bangs, chair, couch, carpet, on floor, plaidが抜けている。ace of hearts, ace (playing card), plaid bowtie, sleeveless, sleeveless dress, circle skirt, white collar, white shirt, club (shape), spade (shape), collar, heart, smile, diamond (shape), blue bowtie, shirtが追加された)

1girl, card, playing card, green eyes, dress, solo, bow, looking at viewer, blue dress, short sleeves, sitting, plaid bow, ace of hearts, checkered floor, blue bow, ace (playing card), hair ornament, black hair, petals, frills, frilled dress, wrist cuffs, holding, blush, closed mouth, long hair, plaid bowtie, wariza, hair bow, puffy sleeves, bowtie, pinafore dress, indoors, sleeveless, sleeveless dress, circle skirt, white collar, puffy short sleeves, holding card, white shirt, club (shape), spade (shape), collar, heart, smile, diamond (shape), blue bowtie, shirt

【タグモデル分析】

 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で拡散したりしてくれると嬉しいです!
 お時間あるなら、別な記事も読んでいってくださいね✨

この記事が気に入ったらサポートをしてみませんか?