| | from diffusers.modular_pipelines import SequentialPipelineBlocks |
| | from diffusers.modular_pipelines.modular_pipeline_utils import InsertableDict |
| | from diffusers.modular_pipelines.wan.decoders import WanDecodeStep |
| |
|
| | from before_denoise import ChronoEditPrepareLatentStep, ChronoEditSetTimestepsStep |
| | from denoise import ChronoEditDenoiseStep |
| | from inputs import ChronoEditImageInputStep, ChronoEditInputStep |
| | from encoders import ChronoEditImageEncoderStep, ChronoEditProcessImageStep, ChronoEditTextEncoderStep |
| | from decoders import ChronoEditDecodeStep |
| |
|
| |
|
| | class ChronoEditBeforeDenoiseStep(SequentialPipelineBlocks): |
| | block_classes = [ |
| | ChronoEditInputStep, |
| | ChronoEditSetTimestepsStep, |
| | ChronoEditImageInputStep, |
| | ChronoEditImageEncoderStep, |
| | ChronoEditProcessImageStep, |
| | ChronoEditPrepareLatentStep, |
| | ] |
| | block_names = [ |
| | "input", |
| | "set_timesteps", |
| | "image_input_resolution", |
| | "encode_image", |
| | "process_image_for_latent_prep", |
| | "prepare_latent", |
| | ] |
| |
|
| | @property |
| | def description(self): |
| | return ( |
| | "Before denoise step that prepare the inputs for the denoise step.\n" |
| | + "This is a sequential pipeline blocks:\n" |
| | + " - `ChronoEditSetTimestepsStep` is used to set timesteps\n" |
| | + " - `ChronoEditImageInputStep` is used to set the image resolution\n" |
| | + " - `ChronoEditImageEncoderStep` is used to derive image embeddings for conditioning\n" |
| | + " - `ChronoEditProcessImageStep` is used to process the image for latent preparation\n" |
| | + " - `ChronoEditPrepareLatentStep` is used to prepare the latents" |
| | ) |
| |
|
| |
|
| | EDIT_BLOCKS = InsertableDict( |
| | [ |
| | ("text_encoder", ChronoEditTextEncoderStep), |
| | ("before_denoise", ChronoEditBeforeDenoiseStep), |
| | ("denoise", ChronoEditDenoiseStep), |
| | ("decode", ChronoEditDecodeStep), |
| | ] |
| | ) |
| |
|
| | ALL_BLOCKS = {"img2img": EDIT_BLOCKS} |
| |
|
| |
|
| | class ChronoEditBlocks(SequentialPipelineBlocks): |
| | block_classes = list(EDIT_BLOCKS.copy().values()) |
| | block_names = list(EDIT_BLOCKS.copy().keys()) |
| |
|