File size: 2,125 Bytes
7bda6d1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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())