Buckets:
| # ControlNetUnionModel | |
| ControlNetUnionModel은 Stable Diffusion XL용 ControlNet의 구현입니다. | |
| ControlNet 모델은 xinsir6에 의해 [ControlNetPlus](https://github.com/xinsir6/ControlNetPlus)에서 소개되었습니다. 계산량을 증가시키지 않고 여러 조건 입력을 지원합니다. | |
| *조건부 텍스트-이미지 생성에서 10개 이상의 제어 유형을 지원하고, Midjourney와 시각적으로 비교할 수 있는 고해상도 이미지를 생성할 수 있는 새로운 아키텍처를 설계했습니다. 이 네트워크는 원래의 ControlNet 아키텍처를 기반으로 하며, 두 가지 새로운 모듈을 제안합니다. 1. 동일한 네트워크 파라미터를 사용하여 다양한 이미지 조건을 지원하도록 원래의 ControlNet을 확장합니다. 2. 계산 오프로드를 증가시키지 않고도 여러 조건 입력을 지원합니다. 이는 이미지를 세밀하게 편집하려는 디자이너에게 특히 중요하며, 서로 다른 조건은 동일한 조건 인코더를 사용하여 추가적인 계산이나 파라미터를 추가하지 않습니다.* | |
| ## 로딩 | |
| 기본적으로 [ControlNetUnionModel](/docs/diffusers/main/ko/api/models/controlnet_union#diffusers.ControlNetUnionModel)은 [from_pretrained()](/docs/diffusers/main/ko/api/models/overview#diffusers.ModelMixin.from_pretrained)로 로드해야 합니다. | |
| ```py | |
| from diffusers import StableDiffusionXLControlNetUnionPipeline, ControlNetUnionModel | |
| controlnet = ControlNetUnionModel.from_pretrained("xinsir/controlnet-union-sdxl-1.0") | |
| pipe = StableDiffusionXLControlNetUnionPipeline.from_pretrained("stabilityai/stable-diffusion-xl-base-1.0", controlnet=controlnet) | |
| ``` | |
| ## ControlNetUnionModel[[diffusers.ControlNetUnionModel]] | |
| #### diffusers.ControlNetUnionModel[[diffusers.ControlNetUnionModel]] | |
| ```python | |
| diffusers.ControlNetUnionModel(in_channels: int = 4, conditioning_channels: int = 3, flip_sin_to_cos: bool = True, freq_shift: int = 0, down_block_types: tuple = ('CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'CrossAttnDownBlock2D', 'DownBlock2D'), only_cross_attention: bool | tuple[bool] = False, block_out_channels: tuple = (320, 640, 1280, 1280), layers_per_block: int = 2, downsample_padding: int = 1, mid_block_scale_factor: float = 1, act_fn: str = 'silu', norm_num_groups: int | None = 32, norm_eps: float = 1e-05, cross_attention_dim: int = 1280, transformer_layers_per_block: int | tuple[int, ...] = 1, encoder_hid_dim: int | None = None, encoder_hid_dim_type: str | None = None, attention_head_dim: int | tuple[int, ...] = 8, num_attention_heads: int | tuple[int, ...] | None = None, use_linear_projection: bool = False, class_embed_type: str | None = None, addition_embed_type: str | None = None, addition_time_embed_dim: int | None = None, num_class_embeds: int | None = None, upcast_attention: bool = False, resnet_time_scale_shift: str = 'default', projection_class_embeddings_input_dim: int | None = None, controlnet_conditioning_channel_order: str = 'rgb', conditioning_embedding_out_channels: tuple[int, ...] | None = (48, 96, 192, 384), global_pool_conditions: bool = False, addition_embed_type_num_heads: int = 64, num_control_type: int = 6, num_trans_channel: int = 320, num_trans_head: int = 8, num_trans_layer: int = 1, num_proj_channel: int = 320) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L85) | |
| **매개변수:** | |
| in_channels (`int`, 기본값 4) : 입력 샘플의 채널 수. | |
| flip_sin_to_cos (`bool`, 기본값 `True`) : 시간 임베딩에서 sin을 cos로 전환할지 여부. | |
| freq_shift (`int`, 기본값 0) : 시간 임베딩에 적용할 주파수 시프트입니다. | |
| down_block_types (`tuple[str]`, 기본값 `("CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "CrossAttnDownBlock2D", "DownBlock2D")`) : 사용할 다운샘플 블록의 튜플입니다. | |
| only_cross_attention (`bool | tuple[bool]`, 기본값은 `False`) -- | |
| block_out_channels (`tuple[int]`, 기본값 `(320, 640, 1280, 1280)`) : 각 블록의 출력 채널 수를 나타내는 튜플입니다. | |
| layers_per_block (`int`, 기본값 2) : 블록당 레이어 수. | |
| downsample_padding (`int`, 기본값 1) : 다운샘플링 컨볼루션에 사용할 패딩입니다. | |
| mid_block_scale_factor (`float`, 기본값 1) : 중간 블록에 사용할 스케일 팩터입니다. | |
| act_fn (`str`, 기본값 "silu") : 사용할 활성화 함수입니다. | |
| norm_num_groups (`int`, *선택 사항*, 기본값 32) : 정규화에 사용할 그룹의 수입니다. None인 경우 후처리에서 정규화 및 활성화 레이어가 건너뜁니다. | |
| norm_eps (`float`, 기본값 1e-5) : 정규화에 사용할 epsilon입니다. | |
| cross_attention_dim (`int`, 기본값 1280) : 크로스 어텐션 특징의 차원입니다. | |
| transformer_layers_per_block (`int` 또는 `tuple[int]`, *선택 사항*, 기본값 1) : `BasicTransformerBlock` 유형의 transformer 블록 수입니다. `~models.unet_2d_blocks.CrossAttnDownBlock2D`, `~models.unet_2d_blocks.CrossAttnUpBlock2D`, `~models.unet_2d_blocks.UNetMidBlock2DCrossAttn`에만 관련이 있습니다. | |
| encoder_hid_dim (`int`, *선택 사항*, 기본값 None) : `encoder_hid_dim_type`가 정의된 경우, `encoder_hidden_states`는 `encoder_hid_dim` 차원에서 `cross_attention_dim`으로 투영됩니다. | |
| encoder_hid_dim_type (`str`, *선택 사항*, 기본값 `None`) : 값이 지정되면 `encoder_hid_dim_type`에 따라 `encoder_hidden_states` 및 기타 임베딩이 `cross_attention` 차원의 텍스트 임베딩으로 다운프로젝트됩니다. | |
| attention_head_dim (`int | tuple[int]`, 기본값 8) : 어텐션 헤드의 차원입니다. | |
| use_linear_projection (`bool`, 기본값은 `False`) -- | |
| class_embed_type (`str`, *선택 사항*, 기본값 `None`) : 최종적으로 time embeddings와 합산되는 class embedding의 유형입니다. None, `"timestep"`, `"identity"`, `"projection"`, `"simple_projection"` 중 하나를 선택합니다. | |
| addition_embed_type (`str`, *선택 사항*, 기본값 `None`) : 시간 임베딩과 합산될 선택적 임베딩을 구성합니다. `None` 또는 "text" 중 하나를 선택합니다. "text"를 선택하면 `TextTimeEmbedding` 레이어가 사용됩니다. | |
| num_class_embeds (`int`, *선택 사항*, 기본값 0) : `class_embed_type`가 `None`인 경우 클래스 조건화를 수행할 때 `time_embed_dim`으로 투영되는 학습 가능한 임베딩 행렬의 입력 차원. | |
| upcast_attention (`bool`, 기본값은 `False`) -- | |
| resnet_time_scale_shift (`str`, 기본값 `"default"`) : ResNet 블록의 시간 스케일 시프트 설정(자세한 내용은 `ResnetBlock2D` 참조). `default` 또는 `scale_shift` 중 하나를 선택합니다. | |
| projection_class_embeddings_input_dim (`int`, *선택 사항*, 기본값 `None`) : `class_embed_type="projection"`일 때 `class_labels` 입력의 차원입니다. `class_embed_type="projection"`일 때 필수입니다. | |
| controlnet_conditioning_channel_order (`str`, 기본값 `"rgb"`) : 조건부 이미지의 채널 순서입니다. `bgr`인 경우 `rgb`로 변환됩니다. | |
| conditioning_embedding_out_channels (`tuple[int]`, *선택 사항*, 기본값 `(48, 96, 192, 384)`) : `conditioning_embedding` 레이어의 각 블록에 대한 출력 채널 튜플입니다. | |
| global_pool_conditions (`bool`, 기본값은 `False`) -- | |
| ControlNetUnion 모델입니다. | |
| #### forward[[diffusers.ControlNetUnionModel.forward]] | |
| ```python | |
| forward(sample: Tensor, timestep: typing.Union[torch.Tensor, float, int], encoder_hidden_states: Tensor, controlnet_cond: list, control_type: Tensor, control_type_idx: list, conditioning_scale: float | list[float] = 1.0, class_labels: typing.Optional[torch.Tensor] = None, timestep_cond: typing.Optional[torch.Tensor] = None, attention_mask: typing.Optional[torch.Tensor] = None, added_cond_kwargs: dict[str, torch.Tensor] | None = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, from_multi: bool = False, guess_mode: bool = False, return_dict: bool = True) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L541) | |
| **매개변수:** | |
| sample (`torch.Tensor`) : 노이즈가 포함된 입력 텐서. | |
| timestep (`torch.Tensor | float | int`) : 입력을 디노이즈할 타임스텝 수. | |
| encoder_hidden_states (`torch.Tensor`) : 인코더 히든 상태입니다. | |
| controlnet_cond (`list[torch.Tensor]`) : 조건부 입력 텐서입니다. | |
| control_type (`torch.Tensor`) : 제어 유형이 사용되는지에 따라 값이 `0` 또는 `1`인, 형태가 `(batch, num_control_type)`인 텐서 | |
| control_type_idx (`list[int]`) : `control_type`의 인덱스입니다. | |
| conditioning_scale (`float`, 기본값 `1.0`) : ControlNet 출력의 스케일 팩터입니다. | |
| class_labels (`torch.Tensor`, *선택 사항*, 기본값 `None`) : 조건부 생성을 위한 선택적 클래스 라벨입니다. 이 라벨의 임베딩은 타임스텝 임베딩과 합산됩니다. | |
| timestep_cond (`torch.Tensor`, *선택 사항*, 기본값 `None`) : timestep에 대한 추가 조건부 임베딩입니다. 제공되면, `self.time_embedding` 레이어를 통해 전달된 timestep_embedding과 합산되어 최종 timestep 임베딩을 얻습니다. | |
| attention_mask (`torch.Tensor`, *선택 사항*, 기본값 `None`) : `(batch, key_tokens)` 모양의 attention mask가 `encoder_hidden_states`에 적용됩니다. `1`인 경우 mask가 유지되고, `0`인 경우 폐기됩니다. Mask는 bias로 변환되어 "폐기" 토큰에 해당하는 attention score에 큰 음의 값을 더합니다. | |
| added_cond_kwargs (`dict`) : Stable Diffusion XL UNet에 대한 추가 조건. | |
| cross_attention_kwargs (`dict[str]`, *선택 사항*, 기본값 `None`) : 지정된 경우 `AttnProcessor`에 전달되는 kwargs 사전입니다. | |
| from_multi (`bool`, 기본값 `False`) : `MultiControlNetUnionModel`에서 호출될 때 표준 스케일링을 사용합니다. | |
| guess_mode (`bool`, 기본값 `False`) : 이 모드에서는 모든 프롬프트를 제거하더라도 ControlNet 인코더가 입력 콘텐츠의 내용을 인식하도록 최선을 다합니다. `guidance_scale`은 3.0에서 5.0 사이로 설정하는 것이 권장됩니다. | |
| return_dict (`bool`, 기본값 `True`) : 일반 튜플 대신 `~models.controlnet.ControlNetOutput`를 반환할지 여부. | |
| **반환값:** `~models.controlnet.ControlNetOutput` **또는** `tuple` | |
| `return_dict`가 `True`인 경우 `~models.controlnet.ControlNetOutput`가 반환되고, 그렇지 않으면 첫 번째 요소가 샘플 텐서인 튜플이 반환됩니다. | |
| [ControlNetUnionModel](/docs/diffusers/main/ko/api/models/controlnet_union#diffusers.ControlNetUnionModel)의 forward 메서드입니다. | |
| #### from_unet[[diffusers.ControlNetUnionModel.from_unet]] | |
| ```python | |
| from_unet(unet: UNet2DConditionModel, controlnet_conditioning_channel_order: str = 'rgb', conditioning_embedding_out_channels: tuple[int, ...] | None = (16, 32, 96, 256), load_weights_from_unet: bool = True) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L389) | |
| **매개변수:** | |
| unet (`UNet2DConditionModel`) : [ControlNetUnionModel](/docs/diffusers/main/ko/api/models/controlnet_union#diffusers.ControlNetUnionModel)에 복사할 UNet 모델 가중치입니다. 적용 가능한 모든 구성 옵션도 함께 복사됩니다. | |
| [UNet2DConditionModel](/docs/diffusers/main/ko/api/models/unet2d-cond#diffusers.UNet2DConditionModel)에서 [ControlNetUnionModel](/docs/diffusers/main/ko/api/models/controlnet_union#diffusers.ControlNetUnionModel)을(를) 초기화합니다. | |
| #### set_attention_slice[[diffusers.ControlNetUnionModel.set_attention_slice]] | |
| ```python | |
| set_attention_slice(slice_size: str | int | list[int]) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L476) | |
| **매개변수:** | |
| slice_size (`str` 또는 `int` 또는 `list(int)`, *선택 사항*, 기본값은 `"auto"`) : `"auto"`인 경우, attention head에 입력되는 값이 절반으로 줄어 attention이 두 단계로 계산됩니다. `"max"`인 경우, 한 번에 하나의 slice만 실행하여 최대의 메모리를 절약합니다. 숫자가 제공되면 `attention_head_dim // slice_size`만큼의 slice를 사용합니다. 이 경우 `attention_head_dim`은 `slice_size`의 배수여야 합니다. | |
| 슬라이스된 어텐션 계산을 활성화합니다. | |
| 이 옵션이 활성화되면 attention 모듈은 입력 텐서를 슬라이스로 분할하여 여러 단계에 걸쳐 attention을 계산합니다. 이는 속도가 약간 감소하는 대신 일부 메모리를 절약하는 데 유용합니다. | |
| #### set_default_attn_processor[[diffusers.ControlNetUnionModel.set_default_attn_processor]] | |
| ```python | |
| set_default_attn_processor() | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/controlnets/controlnet_union.py#L460) | |
| 커스텀 어텐션 프로세서를 비활성화하고 기본 어텐션 구현을 설정합니다. | |
Xet Storage Details
- Size:
- 13.2 kB
- Xet hash:
- 7fe51a726ea7ab53c02e5312c7d4665216ab04cef75d8bd6524be10c9b61bc3e
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.