ComfyUI-Advanced-ControlNet
カスタムの重みとアテンション マスクを適用するだけでなく、タイムステップおよびバッチ化された潜在全体にわたって ControlNet の強度をスケジュールするためのノード。ここの ControlNet ノードは、ComfyUI-AnimateDiff-Evolved ノードで使用されているものと同様、スライディング コンテキスト サンプリングを完全にサポートしています。現在、ControlNets、T2IAdapters、ControlLoRAs、ControlLLLite、SparseCtrls、SVD-ControlNets、および Reference をサポートしています。
カスタム ウェイトを使用すると、Auto1111 の sd-webui ControlNet 拡張機能の「プロンプトがより重要である」機能をソフト ウェイト経由で複製でき、「ControlNet がより重要である」機能は、同じソフト ウェイトの uncond_multiplier を変更することで細かく制御できます。
ControlNet プリプロセッサは、comfyui_controlnet_aux ノードを通じて利用できます。
特徴
- タイムステップと潜在強度のスケジュール設定
- アテンションマスク
- Soft Weightsを介して sd-webui-controlnet 拡張機能から「プロンプトがより重要です」機能を複製し、 base_multiplierを介して柔らかさを調整できるようにします
- ソフト ウェイトのuncond_multiplierを介して sd-webui-controlnet 拡張機能から「ControlNet がより重要です」機能を複製します。
- uncond_multiplier=0.0 は auto1111 の機能と同じ結果をもたらしますが、設定を細かく制御するために 0.0 から 1.0 までの値を問題なく使用できます。
- ControlNet、T2IAdapter、および ControlLoRA によるスライディング コンテキスト ウィンドウのサポート
- ControlLLLite のサポート
- SparseCtrl のサポート
- SVD-ControlNetのサポート
- CiaraRowlesによってトレーニングされた安定したビデオ拡散コントロールネット: 深度、線画
- リファレンスサポート
reference_attn
、 reference_adain
、およびrefrence_adain+attn
モードをサポートします。 style_fidelity
とref_weight
それぞれ Auto1111 の style_fidelity と control_weight に相当し、Apply ControlNet の強度は、ref の影響を受けた結果と ref のない結果のバランスです。 attn と adain の style_fidelity、weight、強さを個別に調整できる Reference ControlNet (Finetune) ノードもあります。
目次:
- スケジュールの説明
- ノード
- 使用方法 (すぐに記入します)
スケジュールの説明
スケジューリングの 2 つの中心的な概念は、タイムステップ キーフレームと潜在キーフレームです。
タイムステップ キーフレームは、コントロールネットの設定をガイドする値を保持し、サンプリング プロセスのパーセンテージに対応する start_percent に基づいて有効になり始めます。これらには、各潜在の強度、control_net_weights、および latetent_keyframes (各潜在の特定の強度) のマスクを含めることができます (すべてオプション)。
潜在キーフレームは、特定の潜在に対するコントロールネットの強度を決定します。これに含まれるのは、潜在のバッチインデックスと、コントロールネットがその潜在に適用する強度だけです。概念として、潜在キーフレームは、選択された強度値を持つ均一マスクと同じ効果を実現します。
ノード
ここで提供される ControlNet ノードは、 Apply Advanced ControlNet ノードとLoad Advanced ControlNet Model (または diff) ノードです。バニラの ControlNet ノードにも互換性があり、ほぼ同じように使用できます。唯一の違いは、Advanced バージョンの ControlNet を使用するには、これらのノードの少なくとも 1 つを使用する必要があることです (AnimateDiff-Evolved などのスライディング コンテキスト サンプリングにとって重要です)。 。
鍵:
- ? - 必須入力
- ? - オプションの入力
- ? - ウィジェットとして開始し、入力に変換可能
- ? - オプションの入出力ですが、必要な場合を除いて使用することはお勧めしません。
- ? - 出力
高度な ControlNet を適用する
Advanced ControlNet 機能が追加されている点を除き、バニラの [Apply Advanced ControlNet (Advanced)] ノードと同じ機能です。 ControlNet ローダーの ControlNet を Advanced バージョンに自動的に変換します。
入力
- ?ポジティブ:コンディショニング(ポジティブ)。
- ?ネガティブ:条件付け(ネガティブ)。
- ? control_net : ロードされたコントロールネット;サポートされているタイプであれば、このノードによって自動的に Advanced バージョンに変換されます。
- ? image : コントロールネットをガイドするためのイメージ - ロードされたコントロールネットがそれを必要とする場合、イメージを前処理する必要があります。 1 つの画像が提供された場合は、すべての潜在画像に使用されます。さらに多くの画像が提供された場合、潜在ごとに各画像が個別に使用されます。潜在カウントを満たすのに十分なイメージがない場合、標準の ControlNet 機能に合わせてイメージを最初から繰り返します。
- ? Mask_optional : コントロールネットに適用するアテンション マスク。基本的に、コントロールネットを画像のどの部分に適用するかを決定します (マスクがバイナリでない場合は相対的な強度も決定します)。画像入力と同様に、複数のマスクを指定すると、それぞれが異なる潜在に適用できます。
- ? timestep_kf : サンプリング ステップ全体にわたってコントロールネット効果をガイドするためのタイムステップ キーフレーム。
- ? latent_kf_override : 潜在キーフレームのオーバーライド。タイムステップ キーフレームの他の機能が必要ない場合に便利です。注: この潜在キーフレームは、接続されているタイムステップ キーフレームに他の潜在キーフレームがアタッチされているかどうかに関係なく、すべてのタイムステップに適用されます。
- ? Weights_override : ウェイトのオーバーライド。タイムステップ キーフレームの他の機能が必要ない場合に便利です。注: 接続されたタイムステップ キーフレームに他のウェイトがアタッチされているかどうかに関係なく、このウェイトはすべてのタイムステップに適用されます。
- ?強度: コントロールネットの強度。 1.0 は最大強度、0.0 はまったく効果がありません。
- ? start_percent : controlnet の適用を開始するサンプリング ステップのパーセンテージ。タイムステップ キーフレームに start_percent が設定されていても、この start_percent に達するまでは有効になりません。
- ? stop_percent : controlnet の適用を停止するサンプリング ステップのパーセンテージ。タイムステップ キーフレームに start_percent が設定されていても、この end_percent に達すると有効になりません。
出力
- ?ポジティブ: 適用されたコントロールネットによるコンディショニング (ポジティブ)
- ? negative : 適用されたコントロールネットによるコンディショニング (ネガティブ)
高度な ControlNet モデルをロードする
ControlNet モデルをロードし、このリポジトリ内のすべての機能をサポートする高度なバージョンに変換します。 apply Advanced ControlNetノードで使用する場合、このノードで timestep_keyframe 入力を使用する理由はありません。代わりに、Apply ノードで timestep_kf を使用してください。
入力
- ? timestep_keyframe : ControlNet に選択された timestep_keyframe を使用させるためのオプションであり、おそらく不要な入力です。必要な場合を除き、使用しないでください。このノードが[Apply Advanced ControlNet]ノードにアタッチされていないが、タイムステップ キーフレームを使用する場合、または同じシナリオで ControlWeights からの TK_SHORTCUT 出力を使用する場合に便利です。この値は、 Apply Advanced ControlNetノードで timestep_kf 入力が提供されている場合、その入力によってオーバーライドされます。
- ? model : ノードの差分バージョンにプラグインするモデル。一部のコントロールネットはモデルを受信するように設計されています。これが何をするのかわからない場合は、おそらく、ノードの差分バージョンを使用したくないでしょう。
出力
- ? CONTROL_NET : ロードされた Advanced ControlNet
タイムステップのキーフレーム
設定された start_percent に基づいて、タイムステップ (サンプリング ステップ) 全体でノードをスケジュールします。タイムステップ キーフレームをチェーンすると、タイムステップ キーフレーム スケジュールを通じて、サンプリング ステップ全体 (パーセンテージ単位) で ControlNet をスケジュールできるようになります。
入力
- ? prev_timestep_kf : タイムステップ キーフレームをチェーンしてスケジュールを作成するために使用されます。順序は重要ではありません。タイムステップ キーフレームは、start_percent によって自動的に並べ替えられます。タイムステップ キーフレームと同じ start_percent を含む prev_timestep_keyframe に含まれるタイムステップ キーフレームはすべて上書きされます。
- ? cn_weights : このタイムステップ キーフレームが有効な間にコントロールネットに適用する重み。ロードされたコントロールネットと互換性がある必要があります。互換性がない場合は、どの重みタイプが互換性があるかを説明するエラーがスローされます。 Inherit_missing が True の場合、control_net_weight が渡されない場合は、タイムステップ キーフレーム スケジュールで最後に使用されたウェイトを再利用しようとします。 「Apply Advanced ControlNet」ノードにweight_overrideがある場合、サンプリング中にcontrol_net_weightの代わりにweight_overrideが使用されます。
- ? latent_keyframe : このタイムステップ キーフレームが有効な間にコントロールネットに適用される潜在キーフレーム。 Inherit_missing が True の場合、latent_keyframe が渡されない場合、タイムステップ キーフレーム スケジュールで最後に使用されたウェイトを再利用しようとします。 [Apply Advanced ControlNet] ノードに latent_kf_override がある場合、サンプリング中に latetent_keyframe の代わりに latetent_lf_override が使用されます。
- ? Mask_optional : コントロールネットに適用するアテンション マスク。基本的に、コントロールネットを画像のどの部分に適用するかを決定します (マスクがバイナリでない場合は相対的な強度も決定します)。 [Apply Advanced ControlNet] ノードの [mask_optional] と同じで、1 つのマスクをすべてのレイテントに適用するか、各レイテントに個別のマスクを適用できます。 Inherit_missing が True の場合、mask_optional が渡されない場合、タイムステップ キーフレーム スケジュールで最後に使用された Mask_optional の再利用が試行されます。これは、Apply Advanced ControlNet ノードの Mask_optional によってオーバーライドされません。併用することになります。
- ? start_percent : このタイムステップ キーフレームが使用できるサンプリング ステップ パーセンテージ。タイムステップ キーフレーム スケジュール内のタイムステップ キーフレームの「キー」として機能します。
- ?強度: コントロールネットの強度。基本的に、ControlNet にこの値を乗算し、Apply ControlNet ノードの強さと並行して適用されます。 0.0 に設定すると、このタイムステップ キーフレームの効果が継続している間は何の効果もなく、何も作業を行わないことでサンプリング速度が向上します。
- ? null_latent_kf_strength : 渡された latetent_keyframes で考慮されていないレイテントに割り当てる強度。 latent_keyframes が渡されない場合、またはサンプリング中に latent_keyframes で考慮されていない batch_indeces がない場合は、効果はありません。
- ? assign_missing : この TimestepKeyframe に含まれていないオプションの値 (control_net_weights、latent_keyframe、mask_option) に対して、以前のタイムステップ キーフレームの値を再利用するかどうかを決定します。特定の入力のみを継承するには、デフォルトの入力を使用します。
- ?保証_ステップ: 1 以上の場合、スケジュール内でこのタイムステップ キーフレームより前のタイムステップ キーフレームの start_percent が現在のサンプリング パーセンテージに近い場合でも、このタイムステップ キーフレームは、次の選択されたタイムステップ キーフレームに進む前に、指定されたステップ量の間引き続き使用されます。次のステップ。タイムステップ キーフレームが使用されているかどうかに関係なく、その入力は継承_欠落の目的で考慮されます。
出力
- ? TIMESTEP_KF : 作成されたタイムステップ キーフレーム。別のタイムステップ キーフレーム入力またはタイムステップ キーフレーム入力にリンクできます。
タイムステップのキーフレーム補間
指定されたパーセント範囲で補間された強度値を使用してタイムステップ キーフレームを作成できます。 (最初に生成されたキーフレームは保証ステップ = 1 を持ち、その後に続く残りのキーフレームは保証ステップ = 0 になります)。
入力
- ? prev_timestep_kf : タイムステップ キーフレームをチェーンしてスケジュールを作成するために使用されます。順序は重要ではありません。タイムステップ キーフレームは、start_percent によって自動的にソートされます。タイムステップ キーフレームと同じ start_percent を含む prev_timestep_keyframe に含まれるタイムステップ キーフレームはすべて上書きされます。
- ? cn_weights : このタイムステップ キーフレームが有効な間にコントロールネットに適用する重み。ロードされたコントロールネットと互換性がある必要があります。互換性がない場合は、どの重みタイプが互換性があるかを説明するエラーがスローされます。 Inherit_missing が True の場合、control_net_weight が渡されない場合は、タイムステップ キーフレーム スケジュールで最後に使用されたウェイトを再利用しようとします。 「Apply Advanced ControlNet」ノードにweight_overrideがある場合、サンプリング中にcontrol_net_weightの代わりにweight_overrideが使用されます。
- ? latent_keyframe : このタイムステップ キーフレームが有効な間にコントロールネットに適用される潜在キーフレーム。 Inherit_missing が True の場合、latent_keyframe が渡されない場合、タイムステップ キーフレーム スケジュールで最後に使用されたウェイトを再利用しようとします。 [Apply Advanced ControlNet] ノードに latent_kf_override がある場合、サンプリング中に latetent_keyframe の代わりに latetent_lf_override が使用されます。
- ? Mask_optional : コントロールネットに適用するアテンション マスク。基本的に、コントロールネットを画像のどの部分に適用するかを決定します (マスクがバイナリでない場合は相対的な強度も決定します)。 [Apply Advanced ControlNet] ノードの [mask_optional] と同じで、1 つのマスクをすべてのレイテントに適用するか、各レイテントに個別のマスクを適用できます。 Inherit_missing が True の場合、mask_optional が渡されない場合、タイムステップ キーフレーム スケジュールで最後に使用された Mask_optional の再利用が試行されます。これは、Apply Advanced ControlNet ノードの Mask_optional によってオーバーライドされません。併用することになります。
- ? start_percent : 最初に生成されたタイムステップ キーフレームが使用できるサンプリング ステップ パーセンテージ。
- ? end_percent : 最後に生成されたタイムステップ キーフレームが使用できるサンプリング ステップ パーセンテージ。
- ? length_start : 範囲の開始時のタイムステップ キーフレームの強度。
- ? length_end : 範囲の終了時のタイムステップ キーフレームの強度。
- ? interpolation : 補間の方法。
- ? Intervals : 生成するキーフレームの合計量。最初のキーフレームの start_percent は start_percent に等しく、最後のキーフレームの start_percent は end_percent に等しくなります。
- ? null_latent_kf_strength : 渡された latetent_keyframes で考慮されていないレイテントに割り当てる強度。 latent_keyframes が渡されない場合、またはサンプリング中に latent_keyframes で考慮されていない batch_indeces がない場合は、効果はありません。
- ? assign_missing : この TimestepKeyframe に含まれていないオプションの値 (control_net_weights、latent_keyframe、mask_option) に対して、以前のタイムステップ キーフレームの値を再利用するかどうかを決定します。特定の入力のみを継承するには、デフォルトの入力を使用します。
- ? print_keyframes : True の場合、デバッグ目的でこのノードによって生成されたタイムステップ キーフレームを印刷します。
出力
- ? TIMESTEP_KF : 作成されたタイムステップ キーフレーム。別のタイムステップ キーフレーム入力またはタイムステップ キーフレーム入力にリンクできます。
リストからのタイムステップ キーフレーム
ComfyUI_FizzNodes ノードからのバッチ値スケジュールなどを使用して、フロートのリストを介してタイムステップ キーフレームを作成できるようにします。 (最初に生成されたキーフレームは、guarantee_steps=1 を持ち、その後に続く残りのキーフレームは、guarantee_steps=0 を持ちます)。
入力
- ? prev_timestep_kf : タイムステップ キーフレームをチェーンしてスケジュールを作成するために使用されます。順序は重要ではありません。タイムステップ キーフレームは、start_percent によって自動的に並べ替えられます。タイムステップ キーフレームと同じ start_percent を含む prev_timestep_keyframe に含まれるタイムステップ キーフレームはすべて上書きされます。
- ? cn_weights : このタイムステップ キーフレームが有効な間にコントロールネットに適用する重み。ロードされたコントロールネットと互換性がある必要があります。互換性がない場合は、どの重みタイプが互換性があるかを説明するエラーがスローされます。 Inherit_missing が True の場合、control_net_weight が渡されない場合、タイムステップ キーフレーム スケジュールで最後に使用されたウェイトを再利用しようとします。 「Apply Advanced ControlNet」ノードにweight_overrideがある場合、サンプリング中にcontrol_net_weightの代わりにweight_overrideが使用されます。
- ? latent_keyframe : このタイムステップ キーフレームが有効な間にコントロールネットに適用される潜在キーフレーム。 Inherit_missing が True の場合、latent_keyframe が渡されない場合、タイムステップ キーフレーム スケジュールで最後に使用されたウェイトを再利用しようとします。 [Apply Advanced ControlNet] ノードに latent_kf_override がある場合、サンプリング中に latetent_keyframe の代わりに latetent_lf_override が使用されます。
- ? Mask_optional : コントロールネットに適用するアテンション マスク。基本的に、コントロールネットを画像のどの部分に適用するかを決定します (マスクがバイナリでない場合は相対的な強度も決定します)。 [Apply Advanced ControlNet] ノードの [mask_optional] と同じで、1 つのマスクをすべてのレイテントに適用するか、各レイテントに個別のマスクを適用できます。 Inherit_missing が True の場合、mask_optional が渡されない場合、タイムステップ キーフレーム スケジュールで最後に使用された Mask_optional の再利用が試行されます。これは、Apply Advanced ControlNet ノードの Mask_optional によってオーバーライドされません。併用することになります。
- ? float_strengths : 各タイムステップ キーフレームの強度に対応する float のリスト。最初は start_percent に割り当てられ、最後は end_percent に割り当てられ、残りはその間に線形に広がります。
- ? start_percent : 最初に生成されたタイムステップ キーフレームが使用できるサンプリング ステップ パーセンテージ。
- ? end_percent : 最後に生成されたタイムステップ キーフレームが使用できるサンプリング ステップ パーセンテージ。
- ? null_latent_kf_strength : 渡された latetent_keyframes で考慮されていないレイテントに割り当てる強度。 latent_keyframes が渡されない場合、またはサンプリング中に latent_keyframes で考慮されていない batch_indeces がない場合は、効果はありません。
- ? assign_missing : この TimestepKeyframe に含まれていないオプションの値 (control_net_weights、latent_keyframe、mask_option) に対して、以前のタイムステップ キーフレームの値を再利用するかどうかを決定します。特定の入力のみを継承するには、デフォルトの入力を使用します。
- ? print_keyframes : True の場合、デバッグ目的でこのノードによって生成されたタイムステップ キーフレームを印刷します。
出力
- ? TIMESTEP_KF : 作成されたタイムステップ キーフレーム。別のタイムステップ キーフレーム入力またはタイムステップ キーフレーム入力にリンクできます。
潜在キーフレーム
単一の潜在キーフレームは、特定のbatch_indexの強度を選択します。サンプリング中にbatch_indexが存在しない場合、単に効果がありません。他の潜在キーフレーム タイプのノードとチェーンして、潜在キーフレーム スケジュールを作成できます。
入力
- ? prev_latent_kf : 潜在キーフレームをチェーンしてスケジュールを作成するために使用されます。 prev_latent_keyframes に含まれる潜在キーフレームがこの潜在キーフレームと同じバッチインデックスを持つ場合、それらはこのノードの値よりも優先されます。
- ? batch_index : コントロールネット強度を適用するバッチ内の潜在のインデックス。潜在キーフレーム スケジュール内の潜在キーフレームの「キー」として機能します。
- ? length : 対応する潜在に適用するコントロールネットの強度。
出力
- ? LATENT_KF : 作成された潜在キーフレーム。別の潜在キーフレーム入力または潜在キーフレーム入力にリンクできます。
潜在キーフレーム グループ
個々のインデックスまたは Python スタイルの範囲を介して潜在キーフレームを作成できます。
入力
- ? prev_latent_kf : 潜在キーフレームをチェーンしてスケジュールを作成するために使用されます。 prev_latent_keyframes に含まれる潜在キーフレームがこの潜在キーフレームと同じバッチインデックスを持つ場合、それらはこのノードのバージョンよりも優先されます。
- ? latent_optional : サンプリングのために渡されることが期待される潜在。負のインデックスを使用する場合にのみ必要です (実数値に自動的に変換されます)。
- ? Index_strengths : 強度を割り当てるインデックスの文字列リストまたは Python スタイルのインデックス範囲。 latent_optional が渡される場合、負のインデックスまたは負の数を含む範囲を Python スタイルで含めることができます。異なるインデックスはカンマで区切る必要があります。個々の潜在は、
0=0.9
のように、 batch_index=strength
で指定できます。範囲は0:8=strength
のように、 start_index_inclusive:end_index_exclusive=strength
で指定できます。 latetents_optional に0,-4=0.25
などの文字列を入力する場合、負のインデックスが可能です。 - ? print_keyframes : True の場合、デバッグ目的でこのノードによって生成された潜在キーフレームを印刷します。
出力
- ? LATENT_KF : 作成された潜在キーフレーム。別の潜在キーフレーム入力または潜在キーフレーム入力にリンクできます。
潜在キーフレーム補間
範囲内の補間値を使用して潜在キーフレームを作成できます。
入力
- ? prev_latent_kf : 潜在キーフレームをチェーンしてスケジュールを作成するために使用されます。 prev_latent_keyframes に含まれる潜在キーフレームがこの潜在キーフレームと同じバッチインデックスを持つ場合、それらはこのノードのバージョンよりも優先されます。
- ? batch_index_from : 範囲の開始バッチインデックス (含まれます)。
- ? patch_index_to : 範囲の終了batch_index、除外されます(Pythonスタイルの範囲)。
- ? length_from : 補間の開始強度。
- ? length_to : 補間の終了強度。
- ? interpolation : 補間の方法。
- ? print_keyframes : True の場合、デバッグ目的でこのノードによって生成された潜在キーフレームを印刷します。
出力
- ? LATENT_KF : 作成された潜在キーフレーム。別の潜在キーフレーム入力または潜在キーフレーム入力にリンクできます。
リストからの潜在キーフレーム
ComfyUI_FizzNodes ノードからのバッチ値スケジュールなど、フロートのリストを介して潜在キーフレームを作成できるようにします。
入力
- ? prev_latent_kf : 潜在キーフレームをチェーンしてスケジュールを作成するために使用されます。 prev_latent_keyframes に含まれる潜在キーフレームがこの潜在キーフレームと同じバッチインデックスを持つ場合、それらはこのノードのバージョンよりも優先されます。
- ? float_strengths : 各潜在キーフレームの強度に対応する float のリスト。 batch_index は、リスト内の各 float 値のインデックスです。
- ? print_keyframes : True の場合、デバッグ目的でこのノードによって生成された潜在キーフレームを印刷します。
出力
- ? LATENT_KF : 作成された潜在キーフレーム。別の潜在キーフレーム入力または潜在キーフレーム入力にリンクできます。
使用法を文書化して表示するノードは他にもあります。これはすぐに追加します。 TODO