Diffusers documentation

OmniGenTransformer2DModel

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

OmniGenTransformer2DModel

OmniGen의 이미지를 생성하기 위해 멀티모달 지시를 받는 Transformer 모델입니다.

해당 논문의 초록은 다음과 같습니다:

대형 언어 모델(LLM)의 출현은 언어 생성 작업을 통합하고 인간-기계 상호작용을 혁신했습니다. 그러나 이미지 생성 분야에서는 단일 프레임워크 내에서 다양한 작업을 처리할 수 있는 통합 모델은 아직 크게 탐구되지 않았습니다. 이 작업에서는 통합 이미지 생성을 위한 새로운 확산 모델인 OmniGen을 소개합니다. OmniGen은 다음과 같은 특징을 가집니다. 1) 통합: OmniGen은 텍스트-이미지 생성 능력을 보여줄 뿐만 아니라 이미지 편집, 대상 기반 생성, 시각적 조건 생성과 같은 다양한 하위 작업을 본질적으로 지원합니다. 2) 단순성: OmniGen의 아키텍처는 추가 플러그인의 필요성을 제거하도록 크게 단순화되었습니다. 또한 기존 확산 모델과 비교하여 사용자 친화적이며, 추가적인 중간 단계 없이 지시를 통해 복잡한 작업을 끝에서 끝까지 완료할 수 있어 이미지 생성 워크플로를 크게 단순화합니다. 3) 지식 전이: 통합된 형식으로 학습하는 이점을 통해 OmniGen은 다양한 작업 간에 지식을 효과적으로 전이하고, 보지 못한 작업과 도메인을 관리하며, 새로운 능력을 나타냅니다. 또한 모델의 추론 능력과 체인 오브 스코트 메커니즘의 잠재적 응용을 탐구합니다. 이 작업은 범용 이미지 생성 모델에 대한 첫 번째 시도이며, 향후 발전을 촉진하기 위해 자원을 https://github.com/VectorSpaceLab/OmniGen에서 공개할 것입니다.

import torch
from diffusers import OmniGenTransformer2DModel

transformer = OmniGenTransformer2DModel.from_pretrained("Shitao/OmniGen-v1-diffusers", subfolder="transformer", dtype=torch.bfloat16)

OmniGenTransformer2DModel

class diffusers.OmniGenTransformer2DModel

< >

( in_channels: int = 4patch_size: int = 2hidden_size: int = 3072rms_norm_eps: float = 1e-05num_attention_heads: int = 32num_key_value_heads: int = 32intermediate_size: int = 8192num_layers: int = 32pad_token_id: int = 32000vocab_size: int = 32064max_position_embeddings: int = 131072original_max_position_embeddings: int = 4096rope_base: int = 10000rope_scaling: dict = Nonepos_embed_max_size: int = 192time_step_dim: int = 256flip_sin_to_cos: bool = Truedownscale_freq_shift: int = 0timestep_activation_fn: str = 'silu' )

매개변수

  • in_channels (int, 기본값 4) — 입력의 채널 수입니다.
  • patch_size (int, 기본값 2) — 패치 임베딩 레이어에서 사용할 공간 패치의 크기입니다.
  • hidden_size (int, 기본값 3072) — 모델의 히든 레이어 차원입니다.
  • rms_norm_eps (float, 기본값 1e-5) — RMSNorm 레이어의 Eps 값입니다.
  • num_attention_heads (int, 기본값 32) — 멀티헤드 어텐션에 사용할 헤드의 수입니다.
  • num_key_value_heads (int, 기본값 32) — 멀티 헤드 어텐션에서 키와 값에 사용할 헤드 수입니다.
  • intermediate_size (int, 기본값 8192) — FeedForward 레이어의 숨겨진 레이어 차원입니다.
  • num_layers (int, 기본값 32) — 사용할 transformer 블록의 레이어 수입니다.
  • pad_token_id (int, 기본값 32000) — 패딩 토큰의 id입니다.
  • vocab_size (int, 기본값 32064) — 임베딩 어휘의 크기입니다.
  • rope_base (int, 기본값 10000) — RoPE 생성 시 사용할 기본 theta 값입니다.
  • rope_scaling (dict, 선택 사항) — RoPE의 스케일링 계수입니다. short_factor와 long_factor를 포함해야 합니다.
  • pos_embed_max_size (int, 기본값 192) — 위치 임베딩의 최대 크기입니다.
  • time_step_dim (int, 기본값 256) — timestep 임베딩의 출력 차원입니다.
  • flip_sin_to_cos (bool, 기본값 True) — timestep embeddings를 준비할 때 positional embeddings의 sin과 cos를 반전할지 여부입니다.
  • downscale_freq_shift (int, 기본값 0) — timestep 임베딩을 다운스케일링할 때 사용할 주파수 시프트입니다.
  • timestep_activation_fn (str, 기본값 silu) — timestep 임베딩에 사용할 활성화 함수입니다.

OmniGen(https://huggingface.co/papers/2409.11340)에서 소개된 Transformer 모델입니다.

forward

< >

( hidden_states: Tensortimestep: typing.Union[int, float, torch.FloatTensor]input_ids: Tensorinput_img_latents: listinput_image_sizes: dictattention_mask: Tensorposition_ids: Tensorreturn_dict: bool = True ) → ~models.transformer_2d.Transformer2DModelOutput or tuple

매개변수

  • hidden_states (torch.Tensor, shape (batch_size, in_channels, height, width)) — 입력 hidden_states.
  • timestep (torch.LongTensor) — 디노이징 단계를 나타내는 데 사용됩니다.
  • input_ids (torch.Tensor) — 조건부로 사용되는 멀티모달 텍스트 토큰 ID입니다.
  • input_img_latents (list of torch.Tensor) — 조건부로 사용되는 입력 이미지의 latent 목록.
  • input_image_sizes (dict of int to list of int) — 샘플 인덱스에서 조건부 시퀀스 내에 입력 이미지 임베딩을 배치해야 할 위치로 매핑됩니다.
  • attention_mask (torch.Tensor) — 통합 멀티모달 시퀀스에 대한 어텐션 마스크입니다.
  • position_ids (torch.Tensor) — 위치 임베딩을 계산하는 데 사용되는 위치 ID입니다.
  • return_dict (bool, 선택 사항, 기본값 True) — 단순 tuple 대신 ~models.transformer_2d.Transformer2DModelOutput를 반환할지 여부.

반환값

~models.transformer_2d.Transformer2DModelOutput 또는 tuple

return_dict가 True이면 ~models.transformer_2d.Transformer2DModelOutput이 반환되고, 그렇지 않으면 일반 tuple이 반환됩니다.

OmniGenTransformer2DModel의 forward 메서드입니다.

Update on GitHub