WebUIのTagger拡張機能で画像のタグ付け

スポンサーリンク
Stable Diffusion
スポンサーリンク

Stable Diffusion WebUI、Automatic1111のTagger拡張機能の使用方法をまとめました。LoRAでの学習用データへのタグ付けにも便利な拡張機能です。特にベースをWD14にしているため、WD1.5でのLoRA作成と相性が非常に良いです。

Tagger for Automatic1111’s WebUIのインストール

Taggerは、画像からbooruスタイルのタグ付けをしてくれる拡張機能です。LoRAの学習用データはタグ付けされた画像を準備する必要があるので、そういった学習用データを準備するのに有用だと思います。もし、Automatic1111をインストールしていないなら、過去の記事を参考にインストールをお願いします。(参考記事:WebUIでStable Diffusion1からの手順

Booruは、主にアニメや漫画、ゲームなどの二次元のイラストや画像が投稿されているオンラインコミュニティのことを指します。これらのサイトでは、ユーザーが自分で描いたイラストや、二次創作のイラスト、コミック、小説などを共有し、他のユーザーと交流することができます。Booruにはタグ機能があり、各画像に対して適切なタグをつけることで、検索しやすくすることができます。近年、機械学習技術の進歩により、Booruに投稿された画像をもとに画像生成を行う研究に広く利用され、Stable Diffusionのモデル作成にも使われています。

WebUI用のTigger拡張機能はgithub上にtoriato氏によって公開されています。

Tagger拡張機能をAutomatic1111にインストールには、「Extensions」タグから「Install from URL」から「URL for extension’s git repository」にgithubの配布リポジトリ「https://github.com/toriato/stable-diffusion-webui-wd14-tagger」を指定し、「Install」ボタンを押してインストールします。

インストールしたら、「Installed」のところから追加されていることを確認し、「Aply and restart UI」でWebUIを再起動します。

新しく「Tagger」のメニューが追加されていると思います。うまく更新が反映されない場合、ブラウザを更新します。

Tagger for Automatic1111’s WebUIの画面

Tagger拡張機能は大きく分けて、画面の左半分が画像を読み込んだり、条件を入れたり操作する部分で、右半分が解析結果が表示する部分になっています。また、画像を1枚ずつ解析する「Single process」モードとフォルダのファイルを一度に解析する「Batch from directory」モードを切り替えて使えます。

Single processモード

Single processモードの画面の説明をします。一番上には解析したい画像をドロップなどで設定します。下の「Interrogate」ボタンを押すと解析してタグを抽出してくれます。

Interrogatorはタグ付けをするためのモデルです。2023年時点ではパージョン2(v2)まで公開されていますので、v2のモデルを選べば問題ないです。(モデルの詳しい説明については下の補足をご覧ください。)

「Threshold」では確信度(「Tag confidents」)の閾値を設定します。その値が大きければ、確信度の高いタグしか抽出されなくなります。

「Additional tags」では、生成するタグに自分で設定したいタグを追加できます。例えば、画像のタグが「1girl, solo, smile, holding cup」と生成される場合に、学習用タグには無意味な3文字(例えば、bmaltais氏はshs,sts,scs,cpc,coc,cic,msm,usu,ici,lvl,cic,dii,muk,ori,hru,rik,koo,yos,wny等を例示しています。)を「Additional Tag」に追加します。(詳しくはLoRAの紹介の時に説明します)

「exclude tags」が除外したいタグを指定できます。

その他のオプションの説明をします。
「Sort by alphabetical order」:結果をアルファベット順に並べます。
「Include confident of underscore」:確信度のスコアを追加します。
「Use spaces instead of underscore」:「_」をスペースで置き換えます。
「Excudes」:除外するものを追加します。(デフォルトで顔文字が入っていますが、そのままでOK。)
「Escape brackets」:括弧をはずします。
「Unload model after running」:実行後ダウンロードしたInterrogatorモデルを削除します。

※Interrogatorの補足
2023年3月時点、Tagger拡張機能では最新のものでは以下のtaggerがinterrogatorとして使えます。それぞれ異なるモデルで同じデータセットで学習したものです。
SmilingWolf/wd-v1-4-swinv2-tagger-v2 (P=R: threshold = 0.3771, F1 = 0.6854)
SmilingWolf/wd-v1-4-convnext-tagger-v2 (P=R: threshold = 0.3685, F1 = 0.6810)
SmilingWolf/wd-v1-4-vit-tagger-v2 (P=R: threshold = 0.3537, F1 = 0.6770)
それほど結果には大差がないのでどれを選んでも一緒ですが、微妙に結果が異なるかもしれません。

参考までに、thresholdは、モデルが画像にタグを付ける際に使用する確信度の閾値を示しています。F1は、モデルの全体的な性能を示す指標です。これを見るとswinv版が一番高いF1を持っていることが分かります。それぞれ、Interrogatorは初回実行時にダウンロードしてくれます。

実行結果は右側に表示れます。一番上にはタグ付けの結果が示されています。その下にはtxt2imgやimg2imgのプロンプト欄に送るボタンやそれぞれのタグの確信度などが示されています。

Batch from directoryモード

「Batch from directory」モードで実行するとフォルダの画像ファイルに対して一括してタグ付けを行い、その結果をテキストファイルやJSONファイルで保存することができます。「Batch from directory」モードを使うときはSingle processモードの画像貼付欄に画像を貼っていない状態で行う必要があります。

「Input directory」には画像が保存しているフォルダを直接指定するか、「*」を用いてサブフォルダも含めて一括して処理することができます。例えば、「d:Users\imgs」以下のフォルダすべてを指定する場合は、アスタリスクをワイルドカードにして、「d:Users\imgs\**\*」と指定し、「Use recursive with glob pattern」にチェックを入れると、下の階層の画像まで一気に処理できます。

「Output directory」は空白にしておくと、元の画像ファイルの場所にタグのテキストファイルが生成します。

「Output filename format」は出力するファイル名のフォーマットを指定できます。デフォルトは[name].[output_extension]で例えば元画像ファイルが”pic01.jpeg”なら、”pic01.txt”や”pic01.json”が出力ファイルになります。ファイル名のフォーマットには元のファイル名、生成したファイルの拡張子の他、画像のハッシュ値や拡張子を追加できます。

最後に

今回はWDベースのタグ付け拡張機能を紹介しました。最近、高性能なWD1.5 beta2もリリースされており、WD1.5用の画像生成や学習で非常に参考になる拡張機能です。もし、よろしかったら下の参考記事もご覧ください。

Stable Diffusion
スポンサーリンク
鷹の目週末プログラマー

コメント