画像の中で必要なものだけを抽出できるSegment Anythingという手法をComfyUIで使ったときにエラーが出たので、
この記事ではその原因と対策と紹介する。
エラーの内容
エラーのメインの文章は以下。
Error occured when wxecuting GroundingDinoSamSegment (segment anything):
‘Sam’ object has no attribute ‘image size’
正直、この文章からは何も分からなかった。
原因が分かってから考えるとエラー画面の下の方にヒントがあった気もする。
エラーの原因
結局のところ、カスタムノードでConflicted Nodesのカスタムノードが入っていることが原因だった。要するにカスタムノードが競合してしまっていた。
Segment Anythingは以下の画像のように、普通のsegment anythingカスタムノードとConfyUI SAM2(Segment Anything 2)カスタムノードがある。
この二つはConflicts列にマークが表示されていて、クリックすると以下の画面が出て同時に使用できないカスタムノードが表示されている。この同時に使用できないカスタムノードがインストールされていたことが原因だった。
ComfyUIでは、他の人が作ったワークフローを入れられて、足りないカスタムノードはInstall Missing Custom Nodesで一括インストールができるので、いつのまにか競合するカスタムノードが入っているということもありえなくない。
エラーの対策
このエラーを解消するには使わない方のカスタムノードを無効にする必要がある。
今回使いたかったのは以下の画像のようにsegment anythingカスタムノードの方なので、ConfyUI SAM2(Segment Anything 2)カスタムノードを無効にする必要がある。
無効にするには、無効にしたいカスタムノードのチェックボックスをチェックする。
チェックすると、画面下の方にボタンが表示されるので、その中のDisableボタンを押す。
以下の画像の画面のようになったら、ComfyUIを再起動する。
Google colaboratoryで実行している場合は、実行されているセルを中断して、実行し直す。
ComfyUIが起動し直したら、カスタムノードが無効になっているか確認する。
無効にしたカスタムノードのInstall列のボタンでDisableが消えて、Enableボタンが出ていたら無効になっている。
まとめ
ComfyUIは手軽にカスタムノードがインストールできるが、カスタムノードには同時に使用できないものもあったりする。
その時出るエラーは必ずしもカスタムノードが競合していることを教えてはくれないので、よくわからないエラーが出た時は競合するカスタムノードを使用していないか確認して見てもいいかもしれない。
ComfyUIの他の記事
Inpaintするときに一度に複数枚の画像生成をする方法
CivitaiのCheckpointを使ってエラーが出た時の対処
Colabでやるときの注意点
コメント