見出し画像

Forge Neo / Classicで動作するWD14 Taggerのforkを作りました

タイトルのとおりForge Neo / Classicで動作するWD14 Taggerのforkを作りました。

基本的な情報は上のGitHubリポジトリを見ていただくとして、この記事では開発背景と削除機能の詳細を解説します。


開発の背景

WD14 Taggerの問題

これまでWD14 Taggerに関する記事を二度書いています。

これらの記事で挙げたWD14 Taggerの問題は以下の二つです。

  • Forge Neo / Classicで動作しない

  • WD14 Taggerがインストールするtensorflowと、A1111系WebUIが要求するprotobufのバージョンが競合する

一つ目はForge Neo / Classicのみでの問題ですが、二つ目はA1111系WebUIすべてで抱えている問題です。競合の問題はすぐに不具合となって現れるわけではありませんが、バージョンアップや他の拡張機能の追加等を契機に不具合を引き起こすことがあります。

EasyReforgeにおけるWD14 Tagger問題の解決策

個人的にはWD14 Taggerを頻繁に使っていませんし、WebUI版は使わずにStandalone版やScript版を使えばよいだけと考えていました。
しかし先日公開したEasyReforge-Nextでは、Zuntan03氏オリジナルからWD14 Taggerがインストールされており、protobufのバージョン競合問題を何とかする必要が出てきました。

そもそもreForge本体は、requirements_versions.txtprotobufのバージョンを指定しています。

protobuf==3.20.0

それに対してオリジナルのEasyReforgeは、これを空のrequirements_versions.txtに差し替えるという荒業でreForge本体のprotobufバージョン指定を外しています。そのためEasyReforgeでは、WD14 Taggerなどの拡張機能が要求するバージョンのprotobuf(現時点では4.25.6)がインストールされます。

オリジナルのEasyReforgeはreForge本体と拡張機能のバージョンを固定する方針のためこの対策でもよいのですが、EasyReforge-NextはreForge本体に任せる方針のため、reForge本体のファイルを差し替える対策はよくありません。

そこで少し考えたり調べたりして「protobufのバージョン競合で悩まなくて済むよう、tensorflowを使わないWD14 Taggerのforkを作ろう」と決めました。そしてそれだけでは面白くないので「せっかくなのでForge Neoでも動作するようにしよう」ということにしました。

Forge Neoで動作することを「売り」にしていますが、きっかけはprotobufのバージョン競合に起因するEasyReforge-Nextの問題解決ということです

削除した機能

tensorflowを使わないようにするため、もしかするとPythonネイティブ処理でtensorflowと同等機能を実現しなければならないかもと考えていたのですが、調べてみると「tensorflowってそんなことにしか使ってないの?」ということが分かりました。
そのためtensorflowを使っている二つの機能自体を削除することにしたのですが、それらについて解説します。

Batch処理の「huge batch query」

tensorflowを使う機能の一つ目がBatch処理の「huge batch query」です。

huge batch query

ほとんどの人は使ったことがないはずです。なぜなら "TF 2.10, experimental" という括弧書きされているとおりtensorflow 2.10.xでしか使えず、それ以外のバージョンでは上図のようにマウスカーソルが禁止マーク🚫となりチェックボックスをクリックできないためです。
tensorflowは現在2.21.0までリリースされており、既存のWD14 Taggerでは最新版のtensorflowがインストールされるので基本的に使えません。

削除して問題ないでしょう。

DeepDanbooruInterrogator

tensorflowを使う機能の二つ目がDeepDanbooruInterrogatorです。
既存のWD14 Taggerでは、DeepDanbooruInterrogatorを含めて以下の4種類のInterrogatorモデルを使用することができます。

  • DeepDanbooruInterrogator

  • WaifuDiffusionInterrogator

  • MLDanbooruInterrogator(picobyte版およびそのforkのみ)

  • Z3DInterrogator(67372a版およびそのforkのみ)

そして既存のWD14 Taggerの各forkにおいて、初期状態でリスト (tagger/utils.py) に登録されているモデルの一覧は下表のとおりです。

初期状態での搭載モデル一覧

つまり、DeepDanbooruInterrogatorを使うことはできるものの初期状態ではリストに登録されておらず、ユーザーが任意でtagger/utils.pyを編集して登録する必要があります。

削除して問題ないでしょう。

まとめ

先日公開したWD14 Taggerのforkの開発背景と削除機能の詳細を解説しました。

きっかけはEasyReforge-Nextの問題解決ですが、おまけでForge Neo / Classicでも動作するようにしたので、必要としていた人はぜひ使ってみてください。Stability MatrixでreForgeを使っている人など、protobufが原因で起動不能になった経験がある人にも役立つと思います。
記事で解説したとおり削除した機能も特に問題ないはずです。

なおGitHubリポジトリのREADMEにも記載しましたが、tensorflowは自動でアンインストールされませんので、別のTaggerからこのTaggerに移行した場合はご自身でpip uninstall tensorflowを実行して削除してください。

使ってみて役に立った人はGitHubの「Star」やnoteの「フォロー」「投げ銭」で応援よろしくお願いします。

関連記事

投げ銭エリア

応援用の投げ銭エリアです。購入しなくても問題ありません。

ここから先は

0字

¥ 100

Amazon Payで支払うと最大2%還元のチャンス! 9/30まで

この記事が気に入ったらチップで応援してみませんか?