Diffusers documentation
SanaControlNetModel
SanaControlNetModel
ControlNet 모델은 Lvmin Zhang, Anyi Rao, Maneesh Agrawala의 Adding Conditional Control to Text-to-Image Diffusion Models에서 소개되었습니다. 이 모델은 엣지 맵, 깊이 맵, 분할 맵, 자세 감지를 위한 키포인트와 같은 추가 입력을 조건으로 사용하여 텍스트-이미지 생성에 대한 제어 수준을 높여줍니다.
해당 논문의 초록은 다음과 같습니다:
저희는 대규모 사전 학습된 텍스트-이미지 확산 모델에 공간 조건 제어를 추가하는 신경망 아키텍처인 ControlNet을 소개합니다. ControlNet은 프로덕션에 바로 적용 가능한 대규모 확산 모델을 고정(lock)하고, 수십억 장의 이미지로 사전 학습된 깊고 견고한 인코딩 레이어를 강력한 백본으로 재사용하여 다양한 조건 제어 세트를 학습합니다. 이 신경 아키텍처는 “zero convolutions”(제로 초기화 컨볼루션 레이어)로 연결되어, 매개변수를 0에서 점진적으로 증가시키고 유해한 노이즈가 파인튜닝에 영향을 미치지 않도록 보장합니다. Stable Diffusion을 사용하여 엣지, 깊이, 분할, 인간 자세 등 다양한 조건 제어를 단일 또는 복수의 조건, 프롬프트 유무와 함께 테스트했습니다. ControlNet의 학습이 소규모(<50k) 및 대규모(>1m) 데이터셋 모두에서 견고함을 보임을 확인했습니다. 광범위한 결과에 따르면, ControlNet은 이미지 확산 모델에 대한 제어를 가능하게 하여 더 넓은 응용 분야로의 확장을 촉진할 수 있습니다.
이 모델은 ishan24님이 기여했습니다. ❤️ 원본 코드베이스는 NVlabs/Sana에서 찾을 수 있으며, 공식 ControlNet 체크포인트는 Efficient-Large-Model의 Hub 프로필에서 확인할 수 있습니다.
SanaControlNetModel
클래스 diffusers.SanaControlNetModel
< source >( in_channels: int = 32out_channels: int | None = 32num_attention_heads: int = 70attention_head_dim: int = 32num_layers: int = 7num_cross_attention_heads: int | None = 20cross_attention_head_dim: int | None = 112cross_attention_dim: int | None = 2240caption_channels: int = 2304mlp_ratio: float = 2.5dropout: float = 0.0attention_bias: bool = Falsesample_size: int = 32patch_size: int = 1norm_elementwise_affine: bool = Falsenorm_eps: float = 1e-06interpolation_scale: int | None = None )
forward
< source >( hidden_states: Tensorencoder_hidden_states: Tensortimestep: LongTensorcontrolnet_cond: Tensorconditioning_scale: float = 1.0encoder_attention_mask: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneattention_kwargs: dict[str, typing.Any] | None = Nonereturn_dict: bool = True ) → ~models.transformer_2d.Transformer2DModelOutput or tuple
매개변수
- hidden_states (
torch.Tensor, shape(batch_size, channel, height, width)) — 입력hidden_states. - encoder_hidden_states (
torch.Tensor) — 사용할 조건 임베딩(프롬프트와 같은 입력 조건에서 계산된 임베딩). - timestep (
torch.LongTensor) — 디노이징 단계를 나타내는 데 사용됩니다. - controlnet_cond (
torch.Tensor) — ControlNet의 조건부 입력 텐서입니다. - conditioning_scale (
float, 선택 사항, 기본값1.0) — ControlNet 출력에 적용되는 스케일 팩터입니다. - encoder_attention_mask (
torch.Tensor, 선택 사항) —encoder_hidden_states에 적용되는 어텐션 마스크입니다. - attention_mask (
torch.Tensor, 선택 사항) —hidden_states에 적용되는 어텐션 마스크입니다. - attention_kwargs (
dict, 선택 사항) — 지정된 경우 diffusers.models.attention_processor의self.processor에서 정의된AttentionProcessor로 전달되는 kwargs 사전입니다. - return_dict (
bool, 선택 사항, 기본값True) — 단순 tuple 대신~models.transformer_2d.Transformer2DModelOutput를 반환할지 여부.
반환값
~models.transformer_2d.Transformer2DModelOutput 또는 tuple
return_dict가 True이면 ~models.transformer_2d.Transformer2DModelOutput이 반환되고, 그렇지 않으면 일반 tuple이 반환됩니다.
SanaControlNetOutput
클래스 diffusers.models.controlnets.controlnet_sana.SanaControlNetOutput
< source >( controlnet_block_samples: tuple )