erosDiffusion / ComfyUI-enricos-nodes

Compositor Node experiments
MIT License
313 stars 10 forks source link

Image collapsed and unable to pass to next node. #63

Closed DreamLoveBetty closed 2 months ago

DreamLoveBetty commented 2 months ago

As shown in the workflow image below, the first run is normal and passes to the next controlnet process, but the second run and the following multiple runs stop when the image is assembled and start the text to image process all over again without entering the controlnet process. 1726944775919

erosDiffusion commented 2 months ago

hi, if you can please provide me the flow i can check where the issue is.

the generations should work as follows:

the normal rules for node caching should work as usual, meaning a node is not re-triggered the inputs have changed. compositor is not your usual node as per default it's supposed to have some human interaction (grab and continue simulates that)

DreamLoveBetty commented 2 months ago

嗨,如果可以,请提供我可以检查问题所在位置的流程。

世代按如下方式工作:

  • 如果 onConfigChanged 开关处于打开状态,则设置了 stop,并且 compositorConfig(或附加到它的任何生成不同输入的内容)发生了变化,则流程将在 compositor 处停止,以便您可以更改合成。这是一个手动操作,因此您需要重新排队/继续
  • 如果设置了 onConfigChanged grabAndContinue,则应停止流程,上传与现有合成对应的图像(或使用当前合成)并重新启动。

节点缓存的正常规则应该照常工作,这意味着 inputs 已更改时不会重新触发节点。 Compositor 不是您通常的节点,默认情况下,它应该有一些人工交互(Grab 和 Continue 模拟)

Ok, I uploaded the workflow now, please help test it, I'm not quite sure if it's the compositor that's the problem. Also it stops and then returns to restart the raw image, this problem is not due to the onconfigchanged parameter switch. workflow.json

erosDiffusion commented 2 months ago

hi, so the node works as intended.

compositor is a bit special as it's the only node in comfy (besides image picker) that requires human intervention during the flow.

I had implemented a threaded pause (which means the flow is momentarily paused and waiting for you to click next) but that was not working well. So at the moment I'm stopping and restarting (queueing a copy) of the flow when "grabAndContinue" is on and completely stopping if on "stop".

As you have two random noise injections on the left of compositor. when compositor restarts the flow (continue is enqueue) the nodes are re-executed as the random values change and you go in a loop. Comfy has a cache of the executed nodes on the left of compositor, this is why usually stuff is not re-executed. However when a random value changes the cache is invaludated and the nodes on the left are re-executed.

To be able to go solve the problem you need to have those on fixed and change the value after the execution of compositor (like with a global seed).

erosDiffusion commented 2 months ago

this simple workflow illustrates the issue and the workaround. check the setup and notes inside.

workflow (46)

erosDiffusion commented 2 months ago

@DreamLoveBetty I will see if I can re-introduce pause as option so the worfklow does not go in a loop in your case added https://github.com/erosDiffusion/ComfyUI-enricos-nodes/issues/65 as enhancement for this

DreamLoveBetty commented 2 months ago

hi,因此 Node 按预期工作。

Compositor 有点特殊,因为它是 Comfy 中唯一一个在流程需要人工干预的节点(除了 Image Picker)。

我实现了一个线程暂停(这意味着流暂时暂停并等待您单击下一步),但这效果不佳。因此,目前我在“grabAndContinue”打开时停止并重新启动(将副本排队)流,如果“停止”则完全停止。

因为您在合成器的左侧有两个随机噪声注入。当 Compositor 重新启动流(Continue 为 Enqueue)时,节点会随着随机值的变化而重新执行,并且您会进入循环。Comfy 在 compositor 的左侧有一个已执行节点的缓存,这就是为什么通常不会重新执行 stuff 的原因。但是,当随机值更改时,缓存将被估价,并且左侧的节点将重新执行。

为了能够解决这个问题,你需要修复它们,并在执行 compositor 更改值(就像使用全局种子一样)。

Ok, thanks for the answer and the hard work, I'll give it a try.