Mikubill / sd-webui-controlnet

WebUI extension for ControlNet
GNU General Public License v3.0
16.41k stars 1.9k forks source link

Fix ControlNet batch #2909

Closed huchenlei closed 1 month ago

huchenlei commented 1 month ago

Closes #2886.

The root cause of this issue is that both img2img script instance and txt2img script instance has access to the same group of enabled_units objects, and each batch iteration, batch_tab_process_each on both img2img script and txt2img script are invoked to advance the iterator on the same unit.

Previously units are copied on each call to Script.get_enabled_units, which is costly, but maintains the correctness. This PR solves the issue by distinguish txt2img and img2img script, which resolves the issue more fundamentally, and also avoiding copy cost of ControlNetUnit.

fastjhone0 commented 1 month ago

Closes #2886.

The root cause of this issue is that both img2img script instance and txt2img script instance has access to the same group of enabled_units objects, and each batch iteration, batch_tab_process_each on both img2img script and txt2img script are invoked to advance the iterator on the same unit.

Previously units are copied on each call to Script.get_enabled_units, which is costly, but maintains the correctness. This PR solves the issue by distinguish txt2img and img2img script, which resolves the issue more fundamentally, and also avoiding copy cost of ControlNetUnit.

Thank you so much for this fix