Buckets:
| # AsymmetricAutoencoderKL | |
| KL 손실을 사용하여 인페인팅 작업을 위한 더 큰 변분 오토인코더(VAE) 모델을 개선: Zixin Zhu, Xuelu Feng, Dongdong Chen, Jianmin Bao, Le Wang, Yinpeng Chen, Lu Yuan, Gang Hua의 [Designing a Better Asymmetric VQGAN for StableDiffusion](https://huggingface.co/papers/2306.04632) | |
| 해당 논문의 초록은 다음과 같습니다: | |
| *StableDiffusion은 이미지 생성 및 편집 분야에서 큰 화제를 모으고 있는 혁신적인 텍스트-이미지 생성기입니다. 픽셀 공간에서 확산 모델을 학습하는 기존 방법과 달리, StableDiffusion은 VQGAN을 통해 잠재 공간(latent space)에서 확산 모델을 학습하여 효율성과 품질을 모두 보장합니다. 이미지 생성 작업뿐만 아니라, 이미지 인페인팅과 로컬 편집과 같은 실제 이미지의 편집도 지원합니다. 그러나 StableDiffusion에서 사용된 일반 VQGAN은 상당한 정보 손실을 유발하여, 편집되지 않은 이미지 영역에서도 왜곡 아티팩트를 발생시킨다는 점을 관찰했습니다. 이를 위해 두 가지 간단한 설계를 갖춘 새로운 비대칭 VQGAN을 제안합니다. 첫째, 인코더의 입력 외에도 디코더에는 인페인팅의 경우 마스킹되지 않은 이미지 영역과 같은 작업별 선행 정보(prior)를 통합하는 조건 분기를 포함합니다. 둘째, 디코더는 인코더보다 훨씬 무겁게 설계되어, 전체 추론 비용이 약간 증가하는 것만으로 더 상세한 복원이 가능하도록 합니다. 제안된 비대칭 VQGAN의 학습 비용은 저렴하며, 일반 VQGAN 인코더와 StableDiffusion은 그대로 유지한 채 새로운 비대칭 디코더만 재학습하면 됩니다. 우리의 비대칭 VQGAN은 StableDiffusion 기반 인페인팅 및 로컬 편집 방법론에 널리 활용될 수 있습니다. 광범위한 실험을 통해, 원래의 텍스트-이미지 생성 능력을 유지하면서 인페인팅 및 편집 성능을 크게 향상시킬 수 있음을 입증했습니다. 코드는 https://github.com/buxiangzhiren/Asymmetric_VQGAN에서 확인할 수 있습니다.* | |
| 평가 결과는 원본 논문의 4.1절에서 확인할 수 있습니다. | |
| ## 사용 가능한 체크포인트 | |
| * [https://huggingface.co/cross-attention/asymmetric-autoencoder-kl-x-1-5](https://huggingface.co/cross-attention/asymmetric-autoencoder-kl-x-1-5) | |
| * [https://huggingface.co/cross-attention/asymmetric-autoencoder-kl-x-2](https://huggingface.co/cross-attention/asymmetric-autoencoder-kl-x-2) | |
| ## 사용 예시 | |
| ```python | |
| from diffusers import AsymmetricAutoencoderKL, StableDiffusionInpaintPipeline | |
| from diffusers.utils import load_image, make_image_grid | |
| prompt = "a photo of a person with beard" | |
| img_url = "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/repaint/celeba_hq_256.png" | |
| mask_url = "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/repaint/mask_256.png" | |
| original_image = load_image(img_url).resize((512, 512)) | |
| mask_image = load_image(mask_url).resize((512, 512)) | |
| pipe = StableDiffusionInpaintPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-inpainting") | |
| pipe.vae = AsymmetricAutoencoderKL.from_pretrained("cross-attention/asymmetric-autoencoder-kl-x-1-5") | |
| pipe.to("cuda") # or "mps", "xpu", "cpu" | |
| image = pipe(prompt=prompt, image=original_image, mask_image=mask_image).images[0] | |
| make_image_grid([original_image, mask_image, image], rows=1, cols=3) | |
| ``` | |
| ## AsymmetricAutoencoderKL[[diffusers.AsymmetricAutoencoderKL]] | |
| #### diffusers.AsymmetricAutoencoderKL[[diffusers.AsymmetricAutoencoderKL]] | |
| ```python | |
| diffusers.AsymmetricAutoencoderKL(in_channels: int = 3, out_channels: int = 3, down_block_types: tuple = ('DownEncoderBlock2D',), down_block_out_channels: tuple = (64,), layers_per_down_block: int = 1, up_block_types: tuple = ('UpDecoderBlock2D',), up_block_out_channels: tuple = (64,), layers_per_up_block: int = 1, act_fn: str = 'silu', latent_channels: int = 4, norm_num_groups: int = 32, sample_size: int = 32, scaling_factor: float = 0.18215) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_asym_kl.py#L24) | |
| **매개변수:** | |
| in_channels (int, *선택 사항*, 기본값 3) : 입력 이미지의 채널 수. | |
| out_channels (int, *선택 사항*, 기본값 3) : 출력의 채널 수. | |
| down_block_types (`tuple[str]`, *선택 사항*, 기본값 `("DownEncoderBlock2D",)`) : 다운샘플 블록 유형 튜플. | |
| down_block_out_channels (`tuple[int]`, *선택 사항*, 기본값 `(64,)`) : 다운 블록 출력 채널의 튜플. | |
| layers_per_down_block (`int`, *선택 사항*, 기본값 `1`) : 다운 블록의 레이어 수. | |
| up_block_types (`tuple[str]`, *선택 사항*, 기본값 `("UpDecoderBlock2D",)`) : 업샘플 블록 유형 튜플. | |
| up_block_out_channels (`tuple[int]`, *선택 사항*, 기본값 `(64,)`) : 업 블록 출력 채널의 튜플. | |
| layers_per_up_block (`int`, *선택 사항*, 기본값 `1`) : 업 블록의 레이어 수. | |
| act_fn (`str`, *선택 사항*, 기본값 `"silu"`) : 사용할 활성화 함수입니다. | |
| latent_channels (`int`, *선택 사항*, 기본값 4) : 잠재 공간의 채널 수. | |
| sample_size (`int`, *선택 사항*, 기본값 `32`) : 샘플 입력 크기. | |
| norm_num_groups (`int`, *선택 사항*, 기본값 `32`) : ResNet 블록의 첫 번째 정규화 레이어에 사용할 그룹 수입니다. | |
| scaling_factor (`float`, *선택 사항*, 기본값 0.18215) : 학습 데이터셋의 첫 번째 배치로 계산된 학습된 잠재 공간의 구성 요소별 표준 편차입니다. 이는 diffusion model을 학습할 때 잠재 공간의 분산을 1로 스케일링하는 데 사용됩니다. Latents는 diffusion model에 전달되기 전에 `z = z * scaling_factor` 공식으로 스케일링됩니다. 디코딩 시에는 `z = 1 / scaling_factor * z` 공식으로 원래 스케일로 되돌립니다. 자세한 내용은 [High-Resolution Image Synthesis with Latent Diffusion Models](https://huggingface.co/papers/2112.10752) 논문의 4.3.2절과 D.1절을 참조하세요. | |
| StableDiffusion을 위한 더 나은 비대칭 VQGAN 설계 https://huggingface.co/papers/2306.04632 . KL loss를 사용하여 이미지를 latent로 인코딩하고 latent 표현을 이미지로 디코딩하는 VAE 모델입니다. | |
| 이 모델은 [ModelMixin](/docs/diffusers/main/ko/api/models/overview#diffusers.ModelMixin)에서 상속됩니다. 모든 모델에 대해 구현된 일반적 메서드(다운로드 또는 저장 등)에 대해서는 상위 클래스 문서를 확인하세요. | |
| #### forward[[diffusers.AsymmetricAutoencoderKL.forward]] | |
| ```python | |
| forward(sample: Tensor, mask: typing.Optional[torch.Tensor] = None, sample_posterior: bool = False, return_dict: bool = True, generator: typing.Optional[torch.Generator] = None) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_asym_kl.py#L153) | |
| **매개변수:** | |
| sample (`torch.Tensor`) : 입력 샘플. | |
| mask (`torch.Tensor`, *선택 사항*, 기본값 `None`) : 선택적인 inpainting 마스크. | |
| sample_posterior (`bool`, *선택 사항*, 기본값 `False`) : 사후 분포에서 샘플링할지 여부. | |
| return_dict (`bool`, *선택 사항*, 기본값 `True`) : 일반 튜플 대신 `DecoderOutput`를 반환할지 여부. | |
| generator (`torch.Generator`, *선택 사항*) : 샘플링을 결정적으로 만들기 위한 [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html)입니다. | |
| **반환값:** `DecoderOutput` 또는 `tuple` | |
| `return_dict`가 True이면 `DecoderOutput`가 반환되고, 그렇지 않으면 일반 `tuple`이 반환됩니다. | |
| ## AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]] | |
| #### diffusers.models.modeling_outputs.AutoencoderKLOutput[[diffusers.models.modeling_outputs.AutoencoderKLOutput]] | |
| ```python | |
| diffusers.models.modeling_outputs.AutoencoderKLOutput(latent_dist: DiagonalGaussianDistribution) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/modeling_outputs.py#L7) | |
| **매개변수:** | |
| latent_dist (`DiagonalGaussianDistribution`) : `Encoder`의 인코딩된 출력으로, `DiagonalGaussianDistribution`의 평균(mean)과 logvar로 표현됩니다. `DiagonalGaussianDistribution`을 사용하면 해당 분포에서 latents를 샘플링할 수 있습니다. | |
| AutoencoderKL 인코딩 메서드의 출력. | |
| ## DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]] | |
| #### diffusers.models.autoencoders.vae.DecoderOutput[[diffusers.models.autoencoders.vae.DecoderOutput]] | |
| ```python | |
| diffusers.models.autoencoders.vae.DecoderOutput(sample: Tensor, commit_loss: typing.Optional[torch.FloatTensor] = None) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/vae.py#L49) | |
| **매개변수:** | |
| sample (`torch.Tensor`, shape `(batch_size, num_channels, height, width)`) : 모델의 마지막 레이어에서 디코딩된 출력 샘플. | |
| 디코딩 메서드의 출력. | |
Xet Storage Details
- Size:
- 9.17 kB
- Xet hash:
- 90d9f137dfd2f68fdb8d751e0abbac60096c0d2a6a5817106147ddef850dbde9
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.