当前位置:   article > 正文

AIGC笔记--Stable Diffusion源码剖析之FrozenCLIPEmbedder

AIGC笔记--Stable Diffusion源码剖析之FrozenCLIPEmbedder

1--前言

        以论文《High-Resolution Image Synthesis with Latent Diffusion Models》  开源的项目为例,剖析Stable Diffusion经典组成部分,巩固学习加深印象。

2--FrozenCLIPEmbedder

        在默认提供的 txt2img.py 中,使用固定权重的 CLIP 模型来将文本条件编码成Embedding,源代码如下:

  1. class FrozenCLIPEmbedder(AbstractEncoder):
  2. """Uses the CLIP transformer encoder for text (from Hugging Face)"""
  3. def __init__(self, version="openai/clip-vit-large-patch14", device="cuda", max_length=77):
  4. super().__init__()
  5. self.tokenizer = CLIPTokenizer.from_pretrained(version)
  6. self.transformer = CLIPTextModel.from_pretrained(version)
  7. self.device = device
  8. self.max_length = max_length
  9. self.freeze()
  10. def freeze(self):
  11. self.transformer = self.transformer.eval()
  12. for param in self.parameters():
  13. param.requires_grad = False
  14. def forward(self, text):
  15. batch_encoding = self.tokenizer(text, truncation=True, max_length=self.max_length, return_length=True,
  16. return_overflowing_tokens=False, padding="max_length", return_tensors="pt")
  17. tokens = batch_encoding["input_ids"].to(self.device)
  18. outputs = self.transformer(input_ids=tokens)
  19. z = outputs.last_hidden_state
  20. return z
  21. def encode(self, text):
  22. return self(text)

        在具体使用中,会利用上述代码生成 无条件Embedding 有条件embedding,用于 Classifier-Free Diffusion Guidance 来预测无条件噪声和有条件噪声。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/708311
推荐阅读
相关标签
  

闽ICP备14008679号