Spaces:
Runtime error
Runtime error
| from scripts.external_code import ControlNetUnit | |
| from scripts.logging import logger | |
| from modules.processing import StableDiffusionProcessing | |
| from modules import shared | |
| def add_animate_diff_batch_input( | |
| p: StableDiffusionProcessing, unit: ControlNetUnit | |
| ) -> ControlNetUnit: | |
| """AnimateDiff + ControlNet batch processing.""" | |
| assert unit.is_animate_diff_batch | |
| batch_parameters = unit.batch_images.split("\n") | |
| batch_image_dir = batch_parameters[0] | |
| logger.info( | |
| f"AnimateDiff + ControlNet {unit.module} receive the following parameters:" | |
| ) | |
| logger.info(f"\tbatch control images: {batch_image_dir}") | |
| for ad_cn_batch_parameter in batch_parameters[1:]: | |
| if ad_cn_batch_parameter.startswith("mask:"): | |
| unit.batch_mask_dir = ad_cn_batch_parameter[len("mask:") :].strip() | |
| logger.info(f"\tbatch control mask: {unit.batch_mask_dir}") | |
| elif ad_cn_batch_parameter.startswith("keyframe:"): | |
| unit.batch_keyframe_idx = ad_cn_batch_parameter[len("keyframe:") :].strip() | |
| unit.batch_keyframe_idx = [ | |
| int(b_i.strip()) for b_i in unit.batch_keyframe_idx.split(",") | |
| ] | |
| logger.info(f"\tbatch control keyframe index: {unit.batch_keyframe_idx}") | |
| batch_image_files = shared.listfiles(batch_image_dir) | |
| for batch_modifier in getattr(unit, "batch_modifiers", []): | |
| batch_image_files = batch_modifier(batch_image_files, p) | |
| unit.batch_image_files = batch_image_files | |
| unit.image = [] | |
| for idx, image_path in enumerate(batch_image_files): | |
| mask_path = None | |
| if getattr(unit, "batch_mask_dir", None) is not None: | |
| batch_mask_files = shared.listfiles(unit.batch_mask_dir) | |
| if len(batch_mask_files) >= len(batch_image_files): | |
| mask_path = batch_mask_files[idx] | |
| else: | |
| mask_path = batch_mask_files[0] | |
| unit.image.append( | |
| { | |
| "image": image_path, | |
| "mask": mask_path, | |
| } | |
| ) | |
| return unit | |