From 9f15006fdfe64f2761a8e57b3ee58317a6b7a809 Mon Sep 17 00:00:00 2001 From: kijai <40791699+kijai@users.noreply.github.com> Date: Fri, 31 Jan 2025 01:14:22 +0200 Subject: [PATCH] init --- .gitignore | 11 + __init__.py | 3 + empty_text_embed_delight.pt | Bin 0 -> 159025 bytes nodes.py | 191 +++++++++++ readme.md | 5 + requirements.txt | 2 + stabledelight/__init__.py | 0 stabledelight/controlnetvae.py | 227 +++++++++++++ stabledelight/pipeline_yoso_delight.py | 433 +++++++++++++++++++++++++ 9 files changed, 872 insertions(+) create mode 100644 .gitignore create mode 100644 __init__.py create mode 100644 empty_text_embed_delight.pt create mode 100644 nodes.py create mode 100644 readme.md create mode 100644 requirements.txt create mode 100644 stabledelight/__init__.py create mode 100644 stabledelight/controlnetvae.py create mode 100644 stabledelight/pipeline_yoso_delight.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7c5fc03 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +output/ +*__pycache__/ +samples*/ +runs/ +checkpoints/ +master_ip +logs/ +*.DS_Store +.idea +tools/ +.vscode/ \ No newline at end of file diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..2e96bd6 --- /dev/null +++ b/__init__.py @@ -0,0 +1,3 @@ +from .nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS + +__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"] \ No newline at end of file diff --git a/empty_text_embed_delight.pt b/empty_text_embed_delight.pt new file mode 100644 index 0000000000000000000000000000000000000000..752b1723bd278dae8c6db8c7ebe7b03db0ab4670 GIT binary patch literal 159025 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%0AO76^0n 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 L@T2Me-|zi5ArHha literal 0 HcmV?d00001 diff --git a/nodes.py b/nodes.py new file mode 100644 index 0000000..4731b17 --- /dev/null +++ b/nodes.py @@ -0,0 +1,191 @@ +import os +import torch +import json + +from accelerate import init_empty_weights +from accelerate.utils import set_module_tensor_to_device + +from .stabledelight.pipeline_yoso_delight import YosoDelightPipeline +from .stabledelight.controlnetvae import ControlNetVAEModel + +from diffusers.models import ( + AutoencoderKL, + UNet2DConditionModel, +) + +import folder_paths +import comfy.model_management as mm +from comfy.utils import load_torch_file, ProgressBar + +script_directory = os.path.dirname(os.path.abspath(__file__)) +import logging +log = logging.getLogger(__name__) + +#region Model loading + +class DownloadAndLoadStableXModel: + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "model": (["yoso-delight-v0-4-base", + "yoso-normal-v1-8-1"],), + }, + } + + RETURN_TYPES = ("YOSOPIPE",) + RETURN_NAMES = ("pipeline", ) + FUNCTION = "loadmodel" + CATEGORY = "StableXWrapper" + + def loadmodel(self, model): + device = mm.get_torch_device() + offload_device = mm.unet_offload_device() + + download_path = os.path.join(folder_paths.models_dir,"diffusers") + model_path = os.path.join(download_path, model) + + if not os.path.exists(model_path): + log.info(f"Downloading model to: {model_path}") + from huggingface_hub import snapshot_download + snapshot_download( + repo_id=f"Stable-X/{model}", + #allow_patterns=[f"*{model}*"], + ignore_patterns=["*text_encoder*", "tokenizer*", "*scheduler*"], + local_dir=model_path, + local_dir_use_symlinks=False, + ) + + torch_dtype = torch.float16 + config_path = os.path.join(model_path, 'unet', 'config.json') + unet_ckpt_path_safetensors = os.path.join(model_path, 'unet','diffusion_pytorch_model.fp16.safetensors') + + if not os.path.exists(config_path): + raise FileNotFoundError(f"Config not found at {config_path}") + + with open(config_path, 'r', encoding='utf-8') as file: + config = json.load(file) + + with init_empty_weights(): + unet = UNet2DConditionModel(**config) + + if os.path.exists(unet_ckpt_path_safetensors): + import safetensors.torch + unet_sd = safetensors.torch.load_file(unet_ckpt_path_safetensors) + else: + raise FileNotFoundError(f"No checkpoint found at {unet_ckpt_path_safetensors}") + + for name, param in unet.named_parameters(): + set_module_tensor_to_device(unet, name, device=offload_device, dtype=torch_dtype, value=unet_sd[name]) + + vae = AutoencoderKL.from_pretrained(model_path, subfolder="vae", variant="fp16", device=device, torch_dtype=torch_dtype) + controlnet = ControlNetVAEModel.from_pretrained(model_path, subfolder="controlnet", variant="fp16", device=device, torch_dtype=torch_dtype) + + empty_text_embedding=torch.load(os.path.join(script_directory, 'empty_text_embed_delight.pt'), map_location=device).to(torch_dtype) + + pipeline = YosoDelightPipeline( + unet=unet, + vae = vae, + controlnet = controlnet, + empty_text_embedding=empty_text_embedding, + device=device, + dtype=torch_dtype, + pred_type="normal" if "normal" in model else "delight", + ) + + #pipeline.enable_model_cpu_offload() + return (pipeline,) + +class StableXProcessImage: + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "pipeline": ("YOSOPIPE",), + "image": ("IMAGE", ), + "processing_resolution": ("INT", {"default": 2048, "min": 64, "max": 4096, "step": 16}), + "controlnet_strength": ("FLOAT", {"default": 1.0, "min": 0.01, "max": 10.0, "step": 0.01, "tooltip": "controlnet condition scale"}), + "seed": ("INT", {"default": 42, "min": 0, "max": 0xffffffffffffffff, "tooltip": "Seed only affects normal prediction mode"}), + }, + } + + RETURN_TYPES = ("IMAGE",) + RETURN_NAMES = ("image",) + FUNCTION = "process" + CATEGORY = "StableXWrapper" + + def process(self, pipeline, image, processing_resolution,controlnet_strength, seed): + + device = mm.get_torch_device() + offload_device = mm.unet_offload_device() + + image = image.permute(0, 3, 1, 2).to(device).to(torch.float16) + + pipeline.unet.to(device) + pipeline.vae.to(device) + pipeline.controlnet.to(device) + + pipe_out = pipeline( + image, + controlnet_conditioning_scale=controlnet_strength, + processing_resolution=processing_resolution, + generator = torch.Generator(device=device).manual_seed(seed), + output_type="pt", + ) + pipeline.unet.to(offload_device) + pipeline.vae.to(offload_device) + pipeline.controlnet.to(offload_device) + pipe_out = (pipe_out.prediction.clip(-1, 1) + 1) / 2 + + out_tensor = pipe_out.permute(0, 2, 3, 1).cpu().float() + + return (out_tensor, ) + +class DifferenceExtractorNode: + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "original_image": ("IMAGE",), + "processed_image": ("IMAGE",), + "amplification": ("FLOAT", {"default": 1.0, "min": 0.1, "max": 10.0}), + } + } + + RETURN_TYPES = ("IMAGE",) + FUNCTION = "extract_luminosity_difference" + CATEGORY = "iStableXWrapper" + + def extract_luminosity_difference(self, original_image, processed_image, amplification=1.0): + import torch + + # RGB to luminosity conversion weights + rgb_weights = torch.tensor([0.2126, 0.7152, 0.0722]).to(original_image.device) + + # Convert images to luminosity (shape: B,H,W) + original_lum = torch.sum(original_image * rgb_weights[None, None, None, :], dim=3) + processed_lum = torch.sum(processed_image * rgb_weights[None, None, None, :], dim=3) + + # Calculate luminosity difference + difference = (original_lum - processed_lum) * amplification + + # Normalize and clamp + difference = torch.clamp(difference, 0, 1) + + # Convert back to RGB format (all channels identical) + difference = difference.unsqueeze(3).repeat(1, 1, 1, 3) + + return (difference,) + +NODE_CLASS_MAPPINGS = { + "DownloadAndLoadStableXModel": DownloadAndLoadStableXModel, + "StableXProcessImage": StableXProcessImage, + "DifferenceExtractorNode": DifferenceExtractorNode + + } +NODE_DISPLAY_NAME_MAPPINGS = { + "DownloadAndLoadStableXModel": "(Down)load StableX Model", + "StableXProcessImage": "StableX Process Image", + "DifferenceExtractorNode": "Extract Difference" + + } diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..247b067 --- /dev/null +++ b/readme.md @@ -0,0 +1,5 @@ +#ComfyUI wrapper for StableX models + +https://github.com/Stable-X/StableNormal + +https://github.com/Stable-X/StableDelight \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..01bcfb8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +accelerate +diffusers \ No newline at end of file diff --git a/stabledelight/__init__.py b/stabledelight/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/stabledelight/controlnetvae.py b/stabledelight/controlnetvae.py new file mode 100644 index 0000000..3903066 --- /dev/null +++ b/stabledelight/controlnetvae.py @@ -0,0 +1,227 @@ +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Any, Dict, List, Optional, Tuple, Union + +import torch + + +from diffusers.models.controlnet import ControlNetOutput +from diffusers.models import ControlNetModel + + +class ControlNetVAEModel(ControlNetModel): + def forward( + self, + sample: torch.Tensor, + timestep: Union[torch.Tensor, float, int], + encoder_hidden_states: torch.Tensor, + controlnet_cond: torch.Tensor = None, + conditioning_scale: float = 1.0, + class_labels: Optional[torch.Tensor] = None, + timestep_cond: Optional[torch.Tensor] = None, + attention_mask: Optional[torch.Tensor] = None, + added_cond_kwargs: Optional[Dict[str, torch.Tensor]] = None, + cross_attention_kwargs: Optional[Dict[str, Any]] = None, + guess_mode: bool = False, + return_dict: bool = True, + ) -> Union[ControlNetOutput, Tuple[Tuple[torch.Tensor, ...], torch.Tensor]]: + """ + The [`ControlNetVAEModel`] forward method. + + Args: + sample (`torch.Tensor`): + The noisy input tensor. + timestep (`Union[torch.Tensor, float, int]`): + The number of timesteps to denoise an input. + encoder_hidden_states (`torch.Tensor`): + The encoder hidden states. + controlnet_cond (`torch.Tensor`): + The conditional input tensor of shape `(batch_size, sequence_length, hidden_size)`. + conditioning_scale (`float`, defaults to `1.0`): + The scale factor for ControlNet outputs. + class_labels (`torch.Tensor`, *optional*, defaults to `None`): + Optional class labels for conditioning. Their embeddings will be summed with the timestep embeddings. + timestep_cond (`torch.Tensor`, *optional*, defaults to `None`): + Additional conditional embeddings for timestep. If provided, the embeddings will be summed with the + timestep_embedding passed through the `self.time_embedding` layer to obtain the final timestep + embeddings. + attention_mask (`torch.Tensor`, *optional*, defaults to `None`): + An attention mask of shape `(batch, key_tokens)` is applied to `encoder_hidden_states`. If `1` the mask + is kept, otherwise if `0` it is discarded. Mask will be converted into a bias, which adds large + negative values to the attention scores corresponding to "discard" tokens. + added_cond_kwargs (`dict`): + Additional conditions for the Stable Diffusion XL UNet. + cross_attention_kwargs (`dict[str]`, *optional*, defaults to `None`): + A kwargs dictionary that if specified is passed along to the `AttnProcessor`. + guess_mode (`bool`, defaults to `False`): + In this mode, the ControlNet encoder tries its best to recognize the input content of the input even if + you remove all prompts. A `guidance_scale` between 3.0 and 5.0 is recommended. + return_dict (`bool`, defaults to `True`): + Whether or not to return a [`~models.controlnet.ControlNetOutput`] instead of a plain tuple. + + Returns: + [`~models.controlnet.ControlNetOutput`] **or** `tuple`: + If `return_dict` is `True`, a [`~models.controlnet.ControlNetOutput`] is returned, otherwise a tuple is + returned where the first element is the sample tensor. + """ + # check channel order + + + channel_order = self.config.controlnet_conditioning_channel_order + + if channel_order == "rgb": + # in rgb order by default + ... + elif channel_order == "bgr": + controlnet_cond = torch.flip(controlnet_cond, dims=[1]) + else: + raise ValueError(f"unknown `controlnet_conditioning_channel_order`: {channel_order}") + + # prepare attention_mask + if attention_mask is not None: + attention_mask = (1 - attention_mask.to(sample.dtype)) * -10000.0 + attention_mask = attention_mask.unsqueeze(1) + + # 1. time + timesteps = timestep + if not torch.is_tensor(timesteps): + # TODO: this requires sync between CPU and GPU. So try to pass timesteps as tensors if you can + # This would be a good case for the `match` statement (Python 3.10+) + is_mps = sample.device.type == "mps" + if isinstance(timestep, float): + dtype = torch.float32 if is_mps else torch.float64 + else: + dtype = torch.int32 if is_mps else torch.int64 + timesteps = torch.tensor([timesteps], dtype=dtype, device=sample.device) + elif len(timesteps.shape) == 0: + timesteps = timesteps[None].to(sample.device) + + # broadcast to batch dimension in a way that's compatible with ONNX/Core ML + timesteps = timesteps.expand(sample.shape[0]) + + t_emb = self.time_proj(timesteps) + + # timesteps does not contain any weights and will always return f32 tensors + # but time_embedding might actually be running in fp16. so we need to cast here. + # there might be better ways to encapsulate this. + t_emb = t_emb.to(dtype=sample.dtype) + + emb = self.time_embedding(t_emb, timestep_cond) + aug_emb = None + + if self.class_embedding is not None: + if class_labels is None: + raise ValueError("class_labels should be provided when num_class_embeds > 0") + + if self.config.class_embed_type == "timestep": + class_labels = self.time_proj(class_labels) + + class_emb = self.class_embedding(class_labels).to(dtype=self.dtype) + emb = emb + class_emb + + if self.config.addition_embed_type is not None: + if self.config.addition_embed_type == "text": + aug_emb = self.add_embedding(encoder_hidden_states) + + elif self.config.addition_embed_type == "text_time": + if "text_embeds" not in added_cond_kwargs: + raise ValueError( + f"{self.__class__} has the config param `addition_embed_type` set to 'text_time' which requires the keyword argument `text_embeds` to be passed in `added_cond_kwargs`" + ) + text_embeds = added_cond_kwargs.get("text_embeds") + if "time_ids" not in added_cond_kwargs: + raise ValueError( + f"{self.__class__} has the config param `addition_embed_type` set to 'text_time' which requires the keyword argument `time_ids` to be passed in `added_cond_kwargs`" + ) + time_ids = added_cond_kwargs.get("time_ids") + time_embeds = self.add_time_proj(time_ids.flatten()) + time_embeds = time_embeds.reshape((text_embeds.shape[0], -1)) + + add_embeds = torch.concat([text_embeds, time_embeds], dim=-1) + add_embeds = add_embeds.to(emb.dtype) + aug_emb = self.add_embedding(add_embeds) + + + emb = emb + aug_emb if aug_emb is not None else emb + # 2. pre-process + sample = self.conv_in(sample) + + # 3. down + down_block_res_samples = (sample,) + for downsample_block in self.down_blocks: + if hasattr(downsample_block, "has_cross_attention") and downsample_block.has_cross_attention: + sample, res_samples = downsample_block( + hidden_states=sample, + temb=emb, + encoder_hidden_states=encoder_hidden_states, + attention_mask=attention_mask, + cross_attention_kwargs=cross_attention_kwargs, + ) + else: + sample, res_samples = downsample_block(hidden_states=sample, temb=emb) + + down_block_res_samples += res_samples + + # 4. mid + if self.mid_block is not None: + if hasattr(self.mid_block, "has_cross_attention") and self.mid_block.has_cross_attention: + sample = self.mid_block( + sample, + emb, + encoder_hidden_states=encoder_hidden_states, + attention_mask=attention_mask, + cross_attention_kwargs=cross_attention_kwargs, + ) + else: + sample = self.mid_block(sample, emb) + + # 5. Control net blocks + + controlnet_down_block_res_samples = () + + # NOTE that controlnet downblock is zeroconv, we discard + for down_block_res_sample, controlnet_block in zip(down_block_res_samples, self.controlnet_down_blocks): + down_block_res_sample = down_block_res_sample + controlnet_down_block_res_samples = controlnet_down_block_res_samples + (down_block_res_sample,) + + down_block_res_samples = controlnet_down_block_res_samples + + mid_block_res_sample = sample + + # 6. scaling + if guess_mode and not self.config.global_pool_conditions: + scales = torch.logspace(-1, 0, len(down_block_res_samples) + 1, device=sample.device) # 0.1 to 1.0 + scales = scales * conditioning_scale + down_block_res_samples = [sample * scale for sample, scale in zip(down_block_res_samples, scales)] + mid_block_res_sample = mid_block_res_sample * scales[-1] # last one + else: + down_block_res_samples = [sample * conditioning_scale for sample in down_block_res_samples] + mid_block_res_sample = mid_block_res_sample * conditioning_scale + + if self.config.global_pool_conditions: + down_block_res_samples = [ + torch.mean(sample, dim=(2, 3), keepdim=True) for sample in down_block_res_samples + ] + mid_block_res_sample = torch.mean(mid_block_res_sample, dim=(2, 3), keepdim=True) + + if not return_dict: + return (down_block_res_samples, mid_block_res_sample) + + return ControlNetOutput( + down_block_res_samples=down_block_res_samples, mid_block_res_sample=mid_block_res_sample + ) + + + diff --git a/stabledelight/pipeline_yoso_delight.py b/stabledelight/pipeline_yoso_delight.py new file mode 100644 index 0000000..f2bbe33 --- /dev/null +++ b/stabledelight/pipeline_yoso_delight.py @@ -0,0 +1,433 @@ +# Copyright 2024 Marigold authors, PRS ETH Zurich. All rights reserved. +# Copyright 2024 The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# -------------------------------------------------------------------------- +# More information and citation instructions are available on the +# -------------------------------------------------------------------------- +from dataclasses import dataclass +from typing import Any, Dict, List, Optional, Tuple, Union + +import numpy as np +import torch +from PIL import Image +from tqdm.auto import tqdm + +from diffusers.image_processor import PipelineImageInput +from diffusers.models import ( + AutoencoderKL, + UNet2DConditionModel, + ControlNetModel, +) + +from diffusers.utils import ( + BaseOutput, + logging, + replace_example_docstring, +) + +from diffusers.utils.torch_utils import randn_tensor +from diffusers.pipelines.marigold.marigold_image_processing import MarigoldImageProcessor + +logger = logging.get_logger(__name__) # pylint: disable=invalid-name + + +EXAMPLE_DOC_STRING = """ +Examples: +```py +>>> import diffusers +>>> import torch + +>>> pipe = diffusers.MarigoldNormalsPipeline.from_pretrained( +... "prs-eth/marigold-normals-lcm-v0-1", variant="fp16", torch_dtype=torch.float16 +... ).to("cuda") + +>>> image = diffusers.utils.load_image("https://marigoldmonodepth.github.io/images/einstein.jpg") +>>> normals = pipe(image) + +>>> vis = pipe.image_processor.visualize_normals(normals.prediction) +>>> vis[0].save("einstein_normals.png") +``` +""" + + +@dataclass +class YosoDelightOutput(BaseOutput): + """ + Output class for Marigold monocular normals prediction pipeline. + + Args: + prediction (`np.ndarray`, `torch.Tensor`): + Predicted normals with values in the range [-1, 1]. The shape is always $numimages \times 3 \times height + \times width$, regardless of whether the images were passed as a 4D array or a list. + uncertainty (`None`, `np.ndarray`, `torch.Tensor`): + Uncertainty maps computed from the ensemble, with values in the range [0, 1]. The shape is $numimages + \times 1 \times height \times width$. + latent (`None`, `torch.Tensor`): + Latent features corresponding to the predictions, compatible with the `latents` argument of the pipeline. + The shape is $numimages * numensemble \times 4 \times latentheight \times latentwidth$. + """ + + prediction: Union[np.ndarray, torch.Tensor] + latent: Union[None, torch.Tensor] + gaus_noise: Union[None, torch.Tensor] + + +class YosoDelightPipeline(): + """ Pipeline for monocular normals estimation using the Marigold method: https://marigoldmonodepth.github.io. + Pipeline for text-to-image generation using Stable Diffusion with ControlNet guidance. + + This model inherits from [`DiffusionPipeline`]. Check the superclass documentation for the generic methods + implemented for all pipelines (downloading, saving, running on a particular device, etc.). + + The pipeline also inherits the following loading methods: + - [`~loaders.TextualInversionLoaderMixin.load_textual_inversion`] for loading textual inversion embeddings + - [`~loaders.LoraLoaderMixin.load_lora_weights`] for loading LoRA weights + - [`~loaders.LoraLoaderMixin.save_lora_weights`] for saving LoRA weights + - [`~loaders.FromSingleFileMixin.from_single_file`] for loading `.ckpt` files + - [`~loaders.IPAdapterMixin.load_ip_adapter`] for loading IP Adapters + + Args: + vae ([`AutoencoderKL`]): + Variational Auto-Encoder (VAE) model to encode and decode images to and from latent representations. + text_encoder ([`~transformers.CLIPTextModel`]): + Frozen text-encoder ([clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14)). + tokenizer ([`~transformers.CLIPTokenizer`]): + A `CLIPTokenizer` to tokenize text. + unet ([`UNet2DConditionModel`]): + A `UNet2DConditionModel` to denoise the encoded image latents. + controlnet ([`ControlNetModel`] or `List[ControlNetModel]`): + Provides additional conditioning to the `unet` during the denoising process. If you set multiple + ControlNets as a list, the outputs from each ControlNet are added together to create one combined + additional conditioning. + """ + + model_cpu_offload_seq = "text_encoder->unet->vae" + _callback_tensor_inputs = ["latents", "prompt_embeds", "negative_prompt_embeds"] + + def __init__( + self, + vae: AutoencoderKL, + unet: UNet2DConditionModel, + controlnet: Union[ControlNetModel, List[ControlNetModel], Tuple[ControlNetModel]], + device: torch.device, + dtype: torch.dtype, + empty_text_embedding=None, + t_start: Optional[int] = 401, + pred_type: str = "delight", + ): + + self.vae = vae + self.unet = unet + self.controlnet = controlnet + self.vae_scale_factor = 2 ** (len(self.vae.config.block_out_channels) - 1) + self.image_processor = MarigoldImageProcessor(vae_scale_factor=self.vae_scale_factor) + self.control_image_processor = MarigoldImageProcessor(vae_scale_factor=self.vae_scale_factor) + self.empty_text_embedding = empty_text_embedding + self.t_start= t_start # target_out latents + self.device = device + self.dtype = dtype + self.pred_type = pred_type + + def progress_bar(self, iterable=None, total=None, desc=None, leave=True): + if not hasattr(self, "_progress_bar_config"): + self._progress_bar_config = {} + elif not isinstance(self._progress_bar_config, dict): + raise ValueError( + f"`self._progress_bar_config` should be of type `dict`, but is {type(self._progress_bar_config)}." + ) + + progress_bar_config = dict(**self._progress_bar_config) + progress_bar_config["desc"] = progress_bar_config.get("desc", desc) + progress_bar_config["leave"] = progress_bar_config.get("leave", leave) + if iterable is not None: + return tqdm(iterable, **progress_bar_config) + elif total is not None: + return tqdm(total=total, **progress_bar_config) + else: + raise ValueError("Either `total` or `iterable` has to be defined.") + + @torch.no_grad() + @replace_example_docstring(EXAMPLE_DOC_STRING) + def __call__( + self, + image: PipelineImageInput, + ensemble_size: int = 1, + processing_resolution: Optional[int] = None, + resample_method_input: str = "bilinear", + resample_method_output: str = "bilinear", + batch_size: int = 1, + ensembling_kwargs: Optional[Dict[str, Any]] = None, + latents: Optional[Union[torch.Tensor, List[torch.Tensor]]] = None, + generator: Optional[Union[torch.Generator, List[torch.Generator]]] = None, + controlnet_conditioning_scale: Union[float, List[float]] = 1.0, + output_type: str = "pt", + output_uncertainty: bool = False, + skip_preprocess: bool = False, + ): + """ + Function invoked when calling the pipeline. + + Args: + image (`PIL.Image.Image`, `np.ndarray`, `torch.Tensor`, `List[PIL.Image.Image]`, `List[np.ndarray]`), + `List[torch.Tensor]`: An input image or images used as an input for the normals estimation task. For + arrays and tensors, the expected value range is between `[0, 1]`. Passing a batch of images is possible + by providing a four-dimensional array or a tensor. Additionally, a list of images of two- or + three-dimensional arrays or tensors can be passed. In the latter case, all list elements must have the + same width and height. + num_inference_steps (`int`, *optional*, defaults to `None`): + Number of denoising diffusion steps during inference. The default value `None` results in automatic + selection. The number of steps should be at least 10 with the full Marigold models, and between 1 and 4 + for Marigold-LCM models. + ensemble_size (`int`, defaults to `1`): + Number of ensemble predictions. Recommended values are 5 and higher for better precision, or 1 for + faster inference. + processing_resolution (`int`, *optional*, defaults to `None`): + Effective processing resolution. When set to `0`, matches the larger input image dimension. This + produces crisper predictions, but may also lead to the overall loss of global context. The default + value `None` resolves to the optimal value from the model config. + match_input_resolution (`bool`, *optional*, defaults to `True`): + When enabled, the output prediction is resized to match the input dimensions. When disabled, the longer + side of the output will equal to `processing_resolution`. + resample_method_input (`str`, *optional*, defaults to `"bilinear"`): + Resampling method used to resize input images to `processing_resolution`. The accepted values are: + `"nearest"`, `"nearest-exact"`, `"bilinear"`, `"bicubic"`, or `"area"`. + resample_method_output (`str`, *optional*, defaults to `"bilinear"`): + Resampling method used to resize output predictions to match the input resolution. The accepted values + are `"nearest"`, `"nearest-exact"`, `"bilinear"`, `"bicubic"`, or `"area"`. + batch_size (`int`, *optional*, defaults to `1`): + Batch size; only matters when setting `ensemble_size` or passing a tensor of images. + ensembling_kwargs (`dict`, *optional*, defaults to `None`) + Extra dictionary with arguments for precise ensembling control. The following options are available: + - reduction (`str`, *optional*, defaults to `"closest"`): Defines the ensembling function applied in + every pixel location, can be either `"closest"` or `"mean"`. + latents (`torch.Tensor`, *optional*, defaults to `None`): + Latent noise tensors to replace the random initialization. These can be taken from the previous + function call's output. + generator (`torch.Generator`, or `List[torch.Generator]`, *optional*, defaults to `None`): + Random number generator object to ensure reproducibility. + output_type (`str`, *optional*, defaults to `"np"`): + Preferred format of the output's `prediction` and the optional `uncertainty` fields. The accepted + values are: `"np"` (numpy array) or `"pt"` (torch tensor). + output_uncertainty (`bool`, *optional*, defaults to `False`): + When enabled, the output's `uncertainty` field contains the predictive uncertainty map, provided that + the `ensemble_size` argument is set to a value above 2. + output_latent (`bool`, *optional*, defaults to `False`): + When enabled, the output's `latent` field contains the latent codes corresponding to the predictions + within the ensemble. These codes can be saved, modified, and used for subsequent calls with the + `latents` argument. + return_dict (`bool`, *optional*, defaults to `True`): + Whether or not to return a [`~pipelines.marigold.MarigoldDepthOutput`] instead of a plain tuple. + + Examples: + + Returns: + [`~pipelines.marigold.MarigoldNormalsOutput`] or `tuple`: + If `return_dict` is `True`, [`~pipelines.marigold.MarigoldNormalsOutput`] is returned, otherwise a + `tuple` is returned where the first element is the prediction, the second element is the uncertainty + (or `None`), and the third is the latent (or `None`). + """ + + # 0. Resolving variables. + device = self.device + dtype = self.dtype + + # 4. Preprocess input images. This function loads input image or images of compatible dimensions `(H, W)`, + # optionally downsamples them to the `processing_resolution` `(PH, PW)`, where + # `max(PH, PW) == processing_resolution`, and pads the dimensions to `(PPH, PPW)` such that these values are + # divisible by the latent space downscaling factor (typically 8 in Stable Diffusion). The default value `None` + # of `processing_resolution` resolves to the optimal value from the model config. It is a recommended mode of + # operation and leads to the most reasonable results. Using the native image resolution or any other processing + # resolution can lead to loss of either fine details or global context in the output predictions. + if not skip_preprocess: + image, padding, original_resolution = self.image_processor.preprocess( + image, processing_resolution, resample_method_input, device, dtype + ) # [N,3,PPH,PPW] + else: + padding = (0, 0) + original_resolution = image.shape[2:] + # 5. Encode input image into latent space. At this step, each of the `N` input images is represented with `E` + # ensemble members. Each ensemble member is an independent diffused prediction, just initialized independently. + # Latents of each such predictions across all input images and all ensemble members are represented in the + # `pred_latent` variable. The variable `image_latent` is of the same shape: it contains each input image encoded + # into latent space and replicated `E` times. The latents can be either generated (see `generator` to ensure + # reproducibility), or passed explicitly via the `latents` argument. The latter can be set outside the pipeline + # code. For example, in the Marigold-LCM video processing demo, the latents initialization of a frame is taken + # as a convex combination of the latents output of the pipeline for the previous frame and a newly-sampled + # noise. This behavior can be achieved by setting the `output_latent` argument to `True`. The latent space + # dimensions are `(h, w)`. Encoding into latent space happens in batches of size `batch_size`. + # Model invocation: self.vae.encoder. + image_latent, pred_latent = self.prepare_latents( + image, latents, generator, ensemble_size, batch_size + ) # [N*E,4,h,w], [N*E,4,h,w] + + gaus_noise = pred_latent.detach().clone() + del image + + # 6. obtain control_output + + cond_scale =controlnet_conditioning_scale + down_block_res_samples, mid_block_res_sample = self.controlnet( + image_latent.detach(), + self.t_start, + encoder_hidden_states=self.empty_text_embedding, + conditioning_scale=cond_scale, + guess_mode=False, + return_dict=False, + ) + + # 7. YOSO sampling + latent_x_t = self.unet( + pred_latent, + self.t_start, + encoder_hidden_states=self.empty_text_embedding, + down_block_additional_residuals=down_block_res_samples, + mid_block_additional_residual=mid_block_res_sample, + return_dict=False, + )[0] + + + del ( + pred_latent, + image_latent, + ) + + # decoder + prediction = self.decode_prediction(latent_x_t) + prediction = self.image_processor.unpad_image(prediction, padding) # [N*E,3,PH,PW] + + prediction = self.image_processor.resize_antialias( + prediction, original_resolution, resample_method_output, is_aa=False + ) # [N,3,H,W] + if self.pred_type == "normal": + prediction = self.normalize_normals(prediction) + + if output_type == "np": + prediction = self.image_processor.pt_to_numpy(prediction) # [N,H,W,3] + + return YosoDelightOutput( + prediction=prediction, + latent=latent_x_t, + gaus_noise=gaus_noise, + ) + + # Copied from diffusers.pipelines.marigold.pipeline_marigold_depth.MarigoldDepthPipeline.prepare_latents + def prepare_latents( + self, + image: torch.Tensor, + latents: Optional[torch.Tensor], + generator: Optional[torch.Generator], + ensemble_size: int, + batch_size: int, + ) -> Tuple[torch.Tensor, torch.Tensor]: + def retrieve_latents(encoder_output): + if hasattr(encoder_output, "latent_dist"): + return encoder_output.latent_dist.mode() + elif hasattr(encoder_output, "latents"): + return encoder_output.latents + else: + raise AttributeError("Could not access latents of provided encoder_output") + + image_latent = torch.cat( + [ + retrieve_latents(self.vae.encode(image[i : i + batch_size])) + for i in range(0, image.shape[0], batch_size) + ], + dim=0, + ) # [N,4,h,w] + image_latent = image_latent * self.vae.config.scaling_factor + image_latent = image_latent.repeat_interleave(ensemble_size, dim=0) # [N*E,4,h,w] + + if self.pred_type == "normal": + pred_latent = latents + else: + pred_latent = torch.zeros_like(image_latent) + + if pred_latent is None: + pred_latent = randn_tensor( + image_latent.shape, + generator=generator, + device=image_latent.device, + dtype=image_latent.dtype, + ) # [N*E,4,h,w] + + return image_latent, pred_latent + + def decode_prediction(self, pred_latent: torch.Tensor) -> torch.Tensor: + if pred_latent.dim() != 4 or pred_latent.shape[1] != self.vae.config.latent_channels: + raise ValueError( + f"Expecting 4D tensor of shape [B,{self.vae.config.latent_channels},H,W]; got {pred_latent.shape}." + ) + + prediction = self.vae.decode(pred_latent / self.vae.config.scaling_factor, return_dict=False)[0] # [B,3,H,W] + if self.pred_type == "normal": + prediction = self.normalize_normals(prediction) + + return prediction # [B,3,H,W] + + @staticmethod + def normalize_normals(normals: torch.Tensor, eps: float = 1e-6) -> torch.Tensor: + if normals.dim() != 4 or normals.shape[1] != 3: + raise ValueError(f"Expecting 4D tensor of shape [B,3,H,W]; got {normals.shape}.") + + norm = torch.norm(normals, dim=1, keepdim=True) + normals /= norm.clamp(min=eps) + + return normals + + @staticmethod + def ensemble_normals( + normals: torch.Tensor, output_uncertainty: bool, reduction: str = "closest" + ) -> Tuple[torch.Tensor, Optional[torch.Tensor]]: + """ + Ensembles the normals maps represented by the `normals` tensor with expected shape `(B, 3, H, W)`, where B is + the number of ensemble members for a given prediction of size `(H x W)`. + + Args: + normals (`torch.Tensor`): + Input ensemble normals maps. + output_uncertainty (`bool`, *optional*, defaults to `False`): + Whether to output uncertainty map. + reduction (`str`, *optional*, defaults to `"closest"`): + Reduction method used to ensemble aligned predictions. The accepted values are: `"closest"` and + `"mean"`. + + Returns: + A tensor of aligned and ensembled normals maps with shape `(1, 3, H, W)` and optionally a tensor of + uncertainties of shape `(1, 1, H, W)`. + """ + if normals.dim() != 4 or normals.shape[1] != 3: + raise ValueError(f"Expecting 4D tensor of shape [B,3,H,W]; got {normals.shape}.") + if reduction not in ("closest", "mean"): + raise ValueError(f"Unrecognized reduction method: {reduction}.") + + mean_normals = normals.mean(dim=0, keepdim=True) # [1,3,H,W] + mean_normals = MarigoldNormalsPipeline.normalize_normals(mean_normals) # [1,3,H,W] + + sim_cos = (mean_normals * normals).sum(dim=1, keepdim=True) # [E,1,H,W] + sim_cos = sim_cos.clamp(-1, 1) # required to avoid NaN in uncertainty with fp16 + + uncertainty = None + if output_uncertainty: + uncertainty = sim_cos.arccos() # [E,1,H,W] + uncertainty = uncertainty.mean(dim=0, keepdim=True) / np.pi # [1,1,H,W] + + if reduction == "mean": + return mean_normals, uncertainty # [1,3,H,W], [1,1,H,W] + + closest_indices = sim_cos.argmax(dim=0, keepdim=True) # [1,1,H,W] + closest_indices = closest_indices.repeat(1, 3, 1, 1) # [1,3,H,W] + closest_normals = torch.gather(normals, 0, closest_indices) # [1,3,H,W] + + return closest_normals, uncertainty # [1,3,H,W], [1,1,H,W] +