Buckets:

mishig's picture
|
download
raw
6.43 kB

VQModel

VQ-VAE 모델은 Aaron van den Oord, Oriol Vinyals, Koray Kavukcuoglu가 Neural Discrete Representation Learning에서 소개했습니다. 이 모델은 🤗 Diffusers에서 잠재 표현을 이미지로 디코딩하는 데 사용됩니다. AutoencoderKL과 달리 VQModel은 양자화된 잠재 공간에서 동작합니다.

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

지도 없이 유용한 표현을 학습하는 것은 기계 학습의 핵심 과제입니다. 이 논문에서는 이러한 이산 표현을 학습하는 단순하면서도 강력한 생성 모델을 제안합니다. 우리의 모델인 Vector Quantised-Variational AutoEncoder(VQ-VAE)는 VAE와 두 가지 핵심적인 점에서 다릅니다. 인코더 네트워크가 연속적인 코드가 아닌 이산적인 코드를 출력하고, 사전 분포가 정적이 아니라 학습된다는 점입니다. 이산적인 잠재 표현을 학습하기 위해 벡터 양자화(VQ)의 아이디어를 도입했습니다. VQ 방법을 사용하면, 강력한 자기 회귀 디코더와 짝을 이룰 때 잠재 변수가 무시되는 "posterior collapse" 문제와 같은, VAE 프레임워크에서 일반적으로 관찰되는 문제를 우회할 수 있습니다. 이러한 표현을 자기 회귀 사전 분포와 짝을 이룰 경우, 모델은 고품질의 이미지, 비디오, 음성 생성은 물론 고품질의 화자 변환 및 음소(phoneme)의 비지도 학습도 수행할 수 있으며, 이는 학습된 표현의 유용성에 대한 추가적인 증거를 제공합니다.

VQModel[[diffusers.VQModel]]

diffusers.VQModel[[diffusers.VQModel]]

diffusers.VQModel(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple = ('DownEncoderBlock2D',), up_block_types: tuple = ('UpDecoderBlock2D',), block_out_channels: tuple = (64,), layers_per_block: int = 1, act_fn: str = 'silu', latent_channels: int = 3, sample_size: int = 32, num_vq_embeddings: int = 256, norm_num_groups: int = 32, vq_embed_dim: int | None = None, scaling_factor: float = 0.18215, norm_type: str = 'group', mid_block_add_attention = True, lookup_from_codebook = False, force_upcast = False)

소스

매개변수:

in_channels (int, 선택 사항, 기본값 3) : 입력 이미지의 채널 수.

out_channels (int, 선택 사항, 기본값 3) : 출력의 채널 수.

down_block_types (tuple[str], 선택 사항, 기본값 ("DownEncoderBlock2D",)) : 다운샘플 블록 유형 튜플.

up_block_types (tuple[str], 선택 사항, 기본값 ("UpDecoderBlock2D",)) : 업샘플 블록 유형 튜플.

block_out_channels (tuple[int], 선택 사항, 기본값 (64,)) : 블록 출력 채널의 튜플.

layers_per_block (int, 선택 사항, 기본값 1) : 블록당 레이어 수.

act_fn (str, 선택 사항, 기본값 "silu") : 사용할 활성화 함수입니다.

latent_channels (int, 선택 사항, 기본값 3) : 잠재 공간의 채널 수.

sample_size (int, 선택 사항, 기본값 32) : 샘플 입력 크기.

num_vq_embeddings (int, 선택 사항, 기본값 256) : VQ-VAE의 코드북 벡터 수입니다.

norm_num_groups (int, 선택 사항, 기본값 32) : 정규화 레이어의 그룹 수.

vq_embed_dim (int, 선택 사항) : VQ-VAE의 코드북 벡터의 숨겨진 차원.

scaling_factor (float, 선택 사항, 기본값 0.18215) : 학습 세트의 첫 번째 배치로 계산된 학습된 잠재 공간의 구성 요소별 표준 편차입니다. 이는 diffusion model을 학습할 때 잠재 공간의 분산을 1로 스케일링하는 데 사용됩니다. Latents는 diffusion model에 전달되기 전에 z = z * scaling_factor 공식으로 스케일링됩니다. 디코딩 시에는 z = 1 / scaling_factor * z 공식으로 latents를 원래 스케일로 되돌립니다. 자세한 내용은 High-Resolution Image Synthesis with Latent Diffusion Models 논문의 4.3.2절과 D.1절을 참조하세요.

norm_type (str, 선택 사항, 기본값 "group") : 사용할 정규화 레이어의 유형입니다. "group" 또는 "spatial" 중 하나여야 합니다.

잠재 표현을 디코딩하기 위한 VQ-VAE 모델입니다.

이 모델은 ModelMixin에서 상속됩니다. 모든 모델에 대해 구현된 일반적 메서드(다운로드 또는 저장 등)에 대해서는 상위 클래스 문서를 확인하세요.

forward[[diffusers.VQModel.forward]]

forward(sample: Tensor, return_dict: bool = True)

소스

매개변수:

sample (torch.Tensor) : 입력 샘플.

return_dict (bool, 선택 사항, 기본값 True) : 일반 튜플 대신 models.autoencoders.vq_model.VQEncoderOutput를 반환할지 여부.

반환값: VQEncoderOutput 또는 tuple

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

VQModel의 forward 메서드입니다.

VQEncoderOutput[[diffusers.models.autoencoders.vq_model.VQEncoderOutput]]

diffusers.models.autoencoders.vq_model.VQEncoderOutput[[diffusers.models.autoencoders.vq_model.VQEncoderOutput]]

diffusers.models.autoencoders.vq_model.VQEncoderOutput(latents: Tensor)

소스

매개변수:

latents (torch.Tensor, shape (batch_size, num_channels, height, width)) : 모델의 마지막 레이어에서 생성된 인코딩된 출력 샘플입니다.

VQModel 인코딩 메서드의 출력입니다.

Xet Storage Details

Size:
6.43 kB
·
Xet hash:
611753ab54b6f4abb4b832baea688bcd0f4194de2d7e6b7f2232b402bfcfc5d9

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.