ControlNetは生成する画像を、様々な条件を与えることで制御できる強力な機能です。ここ最近はControlNetを多用するようになりました。
ControlNetを最新版にしたらエラー
ContolNetは、日々進化しており追加された機能を使うためには、ControlNetのバージョンを指定されたバージョン以上にしておく必要があります。

そんなこともあり、最新版にアップデートしたところ、以下のようなエラーが出て使えなくなってしまいました。
AttributeError: 'NoneType' object has no attribute 'split'
Error running process: /home/studio-lab-user/content/stable-diffusion-webui/extensions/sd-webui-controlnet/scripts/controlnet.py

「Generate」してもControlNetが機能していないような出力画像になっていたので、Jyupyter Notebook(Stable Diffusion web UIを起動するNotebook)に出力されているログを見て気づきました。プリプロセッサだけ動かすと「ERROR」とでました。
エラーの改修
エラー内容の「controlnet.py」の中身を見たりしてみましたが、原因はよくわからなかったです。
原因:
「threadpoolctl」というパッケージのバージョンとの相性が悪い
「threadpoolctl」というパッケージのバージョンとの相性が悪いのではないか?という可能性があり、「threadpoolctl」を最新版にアップデートすることにしました。相性なので、最新版でうまくいくかはわかりません。
threadpoolctlをアップデート
Jyupyter Notebook(Stable Diffusion web UIを起動するNotebook)の、新規のセル(コマンドを入力するところ)で以下のコマンドを実行(再生ボタン)します。「!」を先頭に入れるのを忘れないでください。
!pip install threadpoolctl

ControlNetを再実行
Stable Diffusion web UIを再起動して、ContorolNetの動作を確認してみます。
プロプロセッサ(Preprocessor)を実行し段階で「ERROR」と出ていましたが、正常に動作するようになりました。下の結果画像は、ControlNet「OpenPose」のプリプロセッサーでプレビューしたものです。

「OpenPose」、「Reference Only」、「tile_resample」などを実行してみましたが、正常に動作しているようです。
ControlNet「Tile」の改善
こちらは、Tileで元の画質を4倍に高画質化した結果です。左が改修前の問題ありの出力結果で、タイル化の途中で失敗しているようですが、画像は出力されていました。これはこれで芸術的な気がしますが。
まとめ
アップデートは危険が伴いますので、くれぐれもお気をつけて実施してください。
Stable Diffusionはオープンソースですし、環境にインストールされているPythonライブラリのバージョンによって相性問題は発生する可能性があります。
今後も、情報は共有していきたいと思います






コメント