Diffusers documentation

ConsisIDTransformer3DModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ConsisIDTransformer3DModel

ConsisID의 3D 데이터를 위한 Diffusion Transformer 모델이 Peking University & University of Rochester & etc.의 Identity-Preserving Text-to-Video Generation by Frequency Decomposition에서 소개되었습니다.

다음 코드 스니펫으로 모델을 로드할 수 있습니다.

from diffusers import ConsisIDTransformer3DModel

transformer = ConsisIDTransformer3DModel.from_pretrained("BestWishYsh/ConsisID-preview", subfolder="transformer", dtype=torch.bfloat16).to("cuda")  # or "mps", "xpu", "cpu"

ConsisIDTransformer3DModel

class diffusers.ConsisIDTransformer3DModel

< >

( num_attention_heads: int = 30attention_head_dim: int = 64in_channels: int = 16out_channels: int | None = 16flip_sin_to_cos: bool = Truefreq_shift: int = 0time_embed_dim: int = 512text_embed_dim: int = 4096num_layers: int = 30dropout: float = 0.0attention_bias: bool = Truesample_width: int = 90sample_height: int = 60sample_frames: int = 49patch_size: int = 2temporal_compression_ratio: int = 4max_text_seq_length: int = 226activation_fn: str = 'gelu-approximate'timestep_activation_fn: str = 'silu'norm_elementwise_affine: bool = Truenorm_eps: float = 1e-05spatial_interpolation_scale: float = 1.875temporal_interpolation_scale: float = 1.0use_rotary_positional_embeddings: bool = Falseuse_learned_positional_embeddings: bool = Falseis_train_face: bool = Falseis_kps: bool = Falsecross_attn_interval: int = 2cross_attn_dim_head: int = 128cross_attn_num_heads: int = 16LFE_id_dim: int = 1280LFE_vit_dim: int = 1024LFE_depth: int = 10LFE_dim_head: int = 64LFE_num_heads: int = 16LFE_num_id_token: int = 5LFE_num_querie: int = 32LFE_output_dim: int = 2048LFE_ff_mult: int = 4LFE_num_scale: int = 5local_face_scale: float = 1.0 )

매개변수

  • num_attention_heads (int, 기본값 30) — 멀티헤드 어텐션에 사용할 헤드의 수입니다.
  • attention_head_dim (int, 기본값 64) — 각 헤드당 채널 수입니다.
  • in_channels (int, 기본값 16) — 입력의 채널 수입니다.
  • out_channels (int, 선택 사항, 기본값 16) — 출력의 채널 수입니다.
  • flip_sin_to_cos (bool, 기본값 True) — 시간 임베딩에서 sin을 cos로 전환할지 여부.
  • time_embed_dim (int, 기본값 512) — timestep 임베딩의 출력 차원입니다.
  • text_embed_dim (int, 기본값 4096) — 텍스트 인코더에서 생성된 텍스트 임베딩의 입력 차원입니다.
  • num_layers (int, 기본값 30) — 사용할 Transformer 블록의 레이어 수입니다.
  • dropout (float, 기본값 0.0) — 사용할 dropout 확률입니다.
  • attention_bias (bool, 기본값 True) — Attention projection layer에 bias를 사용할지 여부입니다.
  • sample_width (int, 기본값 90) — 입력 latents의 너비입니다.
  • sample_height (int, 기본값 60) — 입력 latents의 높이입니다.
  • sample_frames (int, 기본값 49) — 입력 latents의 프레임 수입니다. ConsisID의 기본 및 권장 설정에서 13개의 latent 프레임을 한 번에 처리했기 때문에 이 파라미터는 13이 아닌 49로 잘못 초기화되었습니다. 다만, 하위 호환성을 보장하기 위해 올바른 값으로 변경할 수 없습니다. K개의 latent 프레임을 가진 transformer를 생성하려면 여기에 전달해야 할 올바른 값은 ((K - 1) * temporal_compression_ratio + 1)입니다.
  • patch_size (int, 기본값 2) — 패치 임베딩 레이어에서 사용할 패치의 크기입니다.
  • temporal_compression_ratio (int, 기본값 4) — 시간 차원에서의 압축 비율입니다. sample_frames의 문서를 참조하세요.
  • max_text_seq_length (int, 기본값 226) — 입력 텍스트 임베딩의 최대 시퀀스 길이입니다.
  • activation_fn (str, 기본값 "gelu-approximate") — 피드포워드에서 사용할 활성화 함수입니다.
  • timestep_activation_fn (str, 기본값 "silu") — timestep 임베딩을 생성할 때 사용할 활성화 함수입니다.
  • norm_elementwise_affine (bool, 기본값 True) — 정규화 레이어에서 elementwise affine을 사용할지 여부입니다.
  • norm_eps (float, 기본값 1e-5) — 정규화 레이어에서 사용할 epsilon 값입니다.
  • spatial_interpolation_scale (float, 기본값 1.875) — 공간 차원에 걸쳐 3D 위치 임베딩에 적용할 스케일링 계수입니다.
  • temporal_interpolation_scale (float, 기본값 1.0) — 시간 차원에 걸쳐 3D 위치 임베딩에 적용할 스케일링 계수입니다.
  • is_train_face (bool, 기본값 False) — 학습 과정에서 identity-preserving 모듈을 활성화할지 여부입니다. True로 설정하면 모델은 identity-preserving 작업에 집중합니다.
  • is_kps (bool, 기본값 False) — 전체 얼굴 추출기에 keypoint를 활성화할지 여부입니다. True인 경우 모델에 keypoints가 포함됩니다.
  • cross_attn_interval (int, 기본값 2) — Transformer 아키텍처에서 크로스 어텐션 레이어 사이의 간격입니다. 값이 클수록 크로스 어텐션 계산의 빈도가 줄어들어 계산 오버헤드를 낮추는 데 도움이 될 수 있습니다.
  • cross_attn_dim_head (int, optional, 기본값 128) — Transformer 아키텍처의 cross-attention 레이어에서 각 attention head의 차원입니다. 값이 클수록 더 복잡한 패턴에 대한 attention 처리 능력이 높아지지만, 메모리와 계산 비용도 증가합니다.
  • cross_attn_num_heads (int, optional, 기본값 16) — 크로스 어텐션 레이어의 어텐션 헤드 수입니다. 헤드가 많을수록 다양한 병렬 어텐션 메커니즘을 사용할 수 있어 입력의 서로 다른 구성 요소 간의 다양한 관계를 포착할 수 있지만, 계산 요구 사항도 증가할 수 있습니다.
  • LFE_id_dim (int, optional, 기본값 1280) — Local Facial Extractor(LFE)에서 사용되는 identity 벡터의 차원입니다. 이 벡터는 얼굴의 identity 특성을 나타내며, 얼굴 인식 및 다양한 프레임 간 identity 보존과 같은 작업에서 중요합니다.
  • LFE_vit_dim (int, optional, 기본값 1024) — Local Facial Extractor(LFE)에서 사용되는 Vision Transformer(ViT) 출력의 차원입니다. 이 값은 얼굴 특징 추출을 위해 처리될 Transformer 생성 특징 벡터의 크도를 결정합니다.
  • LFE_depth (int, optional, 기본값 10) — Local Facial Extractor(LFE)의 레이어 수입니다. 깊이를 늘리면 얼굴 특징의 더 복잡한 표현을 포착할 수 있지만, 계산 부하도 증가합니다.
  • LFE_dim_head (int, optional, 기본값 64) — Local Facial Extractor(LFE)의 각 attention head 차원입니다. 이 파라미터는 추출 과정에서 모델이 얼굴 특징의 서로 다른 부분을 얼마나 세밀하게 처리하고 집중할 수 있는지에 영향을 미칩니다.
  • LFE_num_heads (int, optional, 기본값 16) — Local Facial Extractor(LFE)의 attention head 수입니다. head 수가 많을수록 다양한 얼굴 특징을 포착하는 모델의 능력이 향상될 수 있지만, 계산 복잡도가 증가하는 비용이 발생합니다.
  • LFE_num_id_token (int, optional, 기본값 5) — Local Facial Extractor(LFE)에서 사용되는 identity token의 수입니다. 이는 feature extraction 과정에서 얼굴 identity 보존을 보장하기 위해 모델이 처리할 identity 관련 token의 수를 정의합니다.
  • LFE_num_querie (int, optional, 기본값 32) — Local Facial Extractor(LFE)에서 사용되는 쿼리 토큰의 수입니다. 이러한 토큰은 정확한 얼굴 특징 추출을 돕는 고주파 얼굴 관련 정보를 포착하는 데 사용됩니다.
  • LFE_output_dim (int, optional, 기본값 2048) — Local Facial Extractor(LFE)의 출력 차원입니다. 이 차원은 LFE 모듈이 생성하는 특징 벡터의 크기를 결정하며, 얼굴 인식이나 추적과 같은 후속 작업에 사용됩니다.
  • LFE_ff_mult (int, optional, 기본값 4) — Local Facial Extractor(LFE)의 피드포워드 네트워크 히든 레이어 크기에 적용되는 곱셈 계수입니다. 값이 높을수록 모델이 더 복잡한 얼굴 특징 변환을 학습할 수 있는 용량이 증가하지만, 계산 및 메모리 요구량도 함께 증가합니다.
  • LFE_num_scale (int, 선택 사항, 기본값 5) — 시각 기능의 서로 다른 스케일 수입니다. 값이 높을수록 모델이 더 복잡한 얼굴 기능 변환을 학습할 수 있는 능력이 증가하지만, 계산 및 메모리 요구 사항도 함께 증가합니다.
  • local_face_scale (float, 기본값 1.0) — 모델에서 국소적인 얼굴 특징의 중요도를 조정하는 데 사용되는 스케일링 계수입니다. 이는 모델이 고주파 얼굴 관련 콘텐츠에 얼마나 강하게 초점을 맞추는지에 영향을 미칠 수 있습니다.

ConsisID의 비디오 유사 데이터용 Transformer 모델.

forward

< >

( hidden_states: Tensorencoder_hidden_states: Tensortimestep: typing.Union[int, float, torch.LongTensor]timestep_cond: typing.Optional[torch.Tensor] = Noneimage_rotary_emb: tuple[torch.Tensor, torch.Tensor] | None = Noneattention_kwargs: dict[str, typing.Any] | None = Noneid_cond: typing.Optional[torch.Tensor] = Noneid_vit_hidden: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True )

매개변수

  • hidden_states (torch.Tensor, shape (batch_size, num_frames, channels, height, width)) — 입력 hidden_states.
  • encoder_hidden_states (torch.Tensor, shape (batch_size, sequence_len, embed_dims)) — 사용할 조건 임베딩(프롬프트와 같은 입력 조건에서 계산된 임베딩).
  • timestep (torch.LongTensor) — 디노이징 단계를 나타내는 데 사용됩니다.
  • timestep_cond (torch.Tensor, 선택 사항) — timestep에 대한 조건부 임베딩입니다. 제공된 경우, 해당 임베딩은 self.time_embedding 레이어를 통과한 샘플과 합산되어 최종 timestep 임베딩을 생성합니다.
  • image_rotary_emb (tuple of torch.Tensor, 선택 사항) — 사전 계산된 회전 위치 임베딩입니다.
  • attention_kwargs (dict, 선택 사항) — 지정된 경우 diffusers.models.attention_processor의 self.processor에서 정의된 AttentionProcessor로 전달되는 kwargs 사전입니다.
  • id_cond (torch.Tensor, 선택 사항) — ID 조건화에 사용되는 로컬 얼굴 추출기로 추출된 얼굴 임베딩입니다.
  • id_vit_hidden (torch.Tensor, 선택 사항) — ID 조건부 생성에 사용되는 얼굴 이미지에서 추출한 ViT hidden states입니다.
  • return_dict (bool, 선택 사항, 기본값 True) — 단순 tuple 대신 ~models.transformer_2d.Transformer2DModelOutput를 반환할지 여부.

ConsisIDTransformer3DModel의 forward 메서드입니다.

Transformer2DModelOutput

클래스 diffusers.models.modeling_outputs.Transformer2DModelOutput

< >

( sample: torch.Tensor )

매개변수

  • sample (torch.Tensor, shape (batch_size, num_channels, height, width) 또는 Transformer2DModel이 discrete인 경우 (batch size, num_vector_embeds - 1, num_latent_pixels)) — encoder_hidden_states 입력에 조건부인 hidden states 출력입니다. discrete인 경우, 노이즈가 제거된 latent 픽셀에 대한 확률 분포를 반환합니다.

Transformer2DModel의 출력입니다.

Update on GitHub