ComfyUIのカスタムノードを作りました
ComfyUIのカスタムノードを作りました
どんなノード?
SlothfulAttention
生成画像の画風というかタッチを変えるノード
SD1.5, sdxl, SSD-1B とかで使える
若干だけ方向修正。利用しているモデル、lora の限界は越えられない
速度はそんなに変わらない
使うとどうなるのか
サンプルなんで強めにかけてますが、こんな感じです。
適用、未適用で seed などは同じ値設定しての生成です
サンプル生成は以下 model 利用させていただきました
アニメ調モデルしか試してないです。
適用すると手とかの細部は基本破綻するので、Detailerで修正してあげる必要がありそうです。
何をしているのか
Self-attention に渡すパラメータのうち、 K, V を間引きます。どうやって間引くかによって絵の細部が変わります。
基本的には Spatial-Reduction Attention です。
なぜ作ったのか
lcm とか sdxl-turbo とか低stepでもそこそこの出力ができるっぽい
1stepにかかる時間がネック
たぶん Self-attentionに時間かかってる
計算量減らせないか調べていたら、 Spatial-Reductionが使えそう
実験してみたらあんまり早くならなかった
生成される絵がスッキリしたとか、いい具合に使えそうな絵に変化
出力画像をコントロールする方向でいろいろ試してみた
そこそこいい具合になったので、せっかくだから公開してみる
参考にした情報
名称とか
K, Vをプーリングしてるんで Pooling Selfattention とかそんな名称で開発してたんですが、 なんかイマイチだなぁと思って改名。
Attention計算サボってるんで、slothful(怠惰な)とかあんまり使われてなさそうな単語を使ってみました。
感想
ComfyUIは推論時に使いやすいかはともかくとして、拡張ノード作るのは楽でした。
最近、Automatic1111's WebUI 使ってないんですが、こっちの拡張ってどうなんでしょ。
あと、サンプル画像って作者の好みがバレますね。
ComfyUI Manager
DB更新の PullRequest送ろうと準備していたら、既にDBに取り込まれていたとか。
GitHubのクロールとかしてるんでしょうか・・・
課題など
構図
構図にも影響してしまうので、構図はあまり変えずに絵のタッチを変えられるようにできると、使い勝手は良くなりそうです。
ただ、構図に関しては(ワークフローが煩雑になりますが)サンプラーを2段以上に分割するとかでも対応できるので、 良いアイディアが浮かぶまでは放置で良いかなぁとも
手などの破綻
手などの細部が破綻しやすくなる点は何とかしたいです。
K, V の間引きを一律に行っているのが問題かも?
手や顔などの特徴量が豊富な箇所を間引かないようにできるとよい?
u-netの深さで強度を変える方法だと、コントロールに限界がある?
ブロック単位で指定させると、パラメータが多すぎてつらそう
パラメータのわかりにくさ
制御方法に対してのパラメータになってますが、使うときには効果に応じたパラメータになっていてほしい。
プリセット+適用率 みたいな感じの簡易ノードも考えたのですが、モデルやLoraによって効果が変わってしまうので、 この方向では無理かなぁと諦めてます