Cyclist | ComfyUI custom nodes
詳細
ファイルをダウンロード
このバージョンについて
モデル説明
サイクリスト 🚴
ComfyUI 用カスタムノード
この拡張機能は、生成された結果を繰り返し再利用できる機能を追加します。このツールを使えば、グリッド作成、フレーム単位のアニメーション、各ステップでの条件変更など、考えられるあらゆる反復処理を自動化できます。
これはミラーページです。メインプロジェクトページおよび最新の更新はこちら:https://github.com/Pos13/comfyui-cyclist。
インストール
オプション1:ComfyUI Manager を使用してください。
オプション2:
- アーカイブをダウンロードする;
- 「.../ComfyUI/custom_nodes/」フォルダに移動する;
- アーカイブを展開し、「comfyui-cyclist」フォルダを作成する。
オプション3:
- git をインストールする;
- 「.../ComfyUI/custom_nodes/」フォルダに移動する;
- そのフォルダ内で
git clone https://github.com/Pos13/comfyui-cyclist/コマンドを実行する。
一般的な使用方法
前回の実行結果を提供したい場所に読み込みノードを配置する;
- (オプション)まだ読み込むものが無い場合(通常は最初の反復時)に備えて、フォールバック入力を接続する。
ワークフローの最後に保存ノードを配置する。
特定の条件が満たされたときに生成を停止したい場合は、Interrupt ノードを配置する。
完了!「Queue Prompt」を押す。そしてまた、また、繰り返し。
(オプション)「Extra options」と「Auto Queue」のチェックボックスをオンにすると、ComfyUIがワークフローを無限に繰り返すようになります。
ループを最初から開始したい場合は、このワークフローで導入された「New Cycle」ボタンを押してください。可能であれば、すべてのファイル名とループIDがインクリメントされます。

非自明な動作については、GitHubページの既知の問題を確認してください。
ノード
Loop Manager:単純に文字列を提供します。この文字列—loop_id—はメモリに保存する変数名やファイル名として使用できます。"increment"値を"by_interrupt_node"に設定すると、Interruptノードが実行された際にloop_idが自動で変更され、最終結果の上書きを防ぎます。"increment"値を"on_any_interrupt"に設定すると、同じ状況でloop_idが変更されるだけでなく、キューを手動でキャンセルしたときにも変更されます。失敗をスキップするのに役立ちます。
Memorize Int/Float/String/Conditioning:これらのシンプルなノードは、メモリに何かを保存します。ComfyUIを再起動すると情報は失われます。変数は指定されたloop IDにのみ関連付けられます。各loop IDに対して、Int、Float、String、Conditioningをそれぞれ1つずつ保存できます。新しいタイプの変数を保存するには、IDを変更してください。
Recall Int/Float/String/Conditioning:これらのノードはメモリから情報を読み込むために使用されます。何も存在しない場合は、_fallback_入力が代わりに使用されます。_fallback_はオプションです。
Convert To:任意の入力を取り、それをint、float、boolean、stringの形式に変換しようとします。booleanとstringは常にキャスト可能ですが、不正なintやfloatはエラーを発生させます。
Compare Anything:任意の2つの入力と比較演算を受け取り、TrueまたはFalseのブール値を出力します。
- 整数は通常通り比較されます。
- 浮動小数点数は1e-9の精度で比較されます。
- 文字列はアルファベット順で比較されます。
- 画像とラテンは、バッチ全体のピクセル総数で比較されます。
- その他のすべてのタイプは比較前に文字列にキャストされます。
- 型が異なる場合、入力をこの順序で同じ型にキャストしようとします:ブール値 → 浮動小数点数 → 文字列。
Int/Float Math:2つの数値間の簡単な算術演算を提供します。
Interrupt:このノードを任意のリンクに配置します。出力は変更されない "any_in" 入力です。このノードがワークフローによって活性化され、"stop" 入力がtrueの場合、ワークフローを停止します。"stop" をウィジェットから入力に変更するには、ノードを右クリックしてください。
Interruptノードの配置場所に注意してください!重い計算を防ぎたいので、その計算に必要なすべての処理のパス上に配置してください。また、"any_in" または "stop" 入力を提供するために使用されるノードの後にのみ配置できます。ComfyUIはループを含むワークフローを実行できません。
Interruptノードの最適な配置場所は、重要な「Reload/Recall」ノードの直後です。
複数のInterruptノードを配置することは可能で、場合によっては望ましいです。
Save Image/Latent/Model (Override):これらのノードはデフォルトのSave Image/Latent/Modelノードと同様に動作しますが、ファイル名はカウンターなしで同じままです。
- 画像は出力フォルダに保存されます。
- ラテンは出力フォルダに保存され、"latent"サブフォルダが作成されます。
- モデルはデフォルトの "models/checkpoints" フォルダに保存されます。
Generation Timer:このノードは生成にかかった時間を測定します。浮動小数点数を出力します。
- タイマーは、ワークフローがチェックされた直前に、各生成前に開始されます。
- タイマーは、ワークフロー内の最後の「Save/Memorize」ノードが実行されたときに停止します。
複数のGeneration Timerノードを使用できますが、異なるループに割り当てることをお勧めします。
Force Timer Stop:このノードは、どの入力が提供されたかに関わらず、いつでもタイマーの停止を指示します。特定のブロックにかかった時間を測定したい場合に使用できますが、開始は常に生成開始時です。
Force Timer Stopノードは、「Save/Memorize」ノードが存在する限り、Generation Timerを使用する上で必須ではありません。
ワークフロー
Civitai(常に最新):
グリッド:
GitHubページ(https://github.com/Pos13/comfyui-cyclist?tab=readme-ov-file#nodes-and-example-workflows)およびGitHubワークフローフォルダ(変更されない)からの例:
- ImageRewardで高スコアを得るまで生成する
- 指定解像度までアップスケールし、必要な回数だけアップスケールする
- メガピクセル数に達するまでアップスケールする
- 人物を背景に切り取り配置する
- LoRAを1つずつ適用する
また、私の関連のないワークフローもご確認ください。


