英文

这个模型是UniDiffuser-v1( original code , original model )检查点的一个版本,与散射器兼容。这是原始UniDiffuser发布的两个模型之一,另一个是 UniDiffuser-v0 。根据原始模型卡:

UniDiffuser是一个统一的扩散框架,可以适应一组多模态数据相关的所有分布,而无需额外的开销。通过设置适当的时间步长,UniDiffuser能够执行图像、文本、文本到图像、图像到文本和图像-文本对生成。

具体而言,UniDiffuser采用了变压器的变体,称为 U-ViT ,该变压器参数化了联合噪声预测网络。其他组件作为不同模态的编码器和解码器,包括来自 Stable Diffusion 的预训练图像自编码器,来自 image ViT-B/32 CLIP encoder 的预训练 text ViT-L CLIP encoder 以及我们自己微调的文本解码器 GPT-2

我们提供两个版本的UniDiffuser:

  • UniDiffuser-v0 :此版本在 LAION-5B 上进行了训练,其中包含文本-图像对的嘈杂网络数据。
  • UniDiffuser-v1 :此版本从UniDiffuser-v0恢复,并在一组噪声较小的内部文本-图像对的基础上进行了进一步训练。它在训练过程中使用一个标志作为其输入来区分网络数据和内部数据。

示例

import requests
import torch
from PIL import Image
from io import BytesIO

from diffusers import UniDiffuserPipeline

device = "cuda"
model_id_or_path = "dg845/unidiffuser-diffusers"
pipe = UniDiffuserPipeline.from_pretrained(model_id_or_path)
pipe.to(device)

# Joint image-text generation. The generation task is automatically inferred.
sample = pipe(num_inference_steps=20, guidance_scale=8.0)
image = sample.images[0]
text = sample.text[0]
image.save("unidiffuser_sample_joint_image.png")
print(text)

# The mode can be set manually. The following is equivalent to the above:
pipe.set_joint_mode()
sample2 = pipe(num_inference_steps=20, guidance_scale=8.0)

# Note that if you set the mode manually the pipeline will no longer attempt
# to automatically infer the mode. You can re-enable this with reset_mode().
pipe.reset_mode()

# Text-to-image generation.
prompt = "an elephant under the sea"

sample = pipe(prompt=prompt, num_inference_steps=20, guidance_scale=8.0)
t2i_image = sample.images[0]
t2i_image.save("unidiffuser_sample_text2img_image.png")

# Image-to-text generation.
image_url = "https://huggingface.co/datasets/hf-internal-testing/diffusers-images/resolve/main/unidiffuser/unidiffuser_example_image.jpg"
response = requests.get(image_url)
init_image = Image.open(BytesIO(response.content)).convert("RGB")
init_image = init_image.resize((512, 512))

sample = pipe(image=init_image, num_inference_steps=20, guidance_scale=8.0)
i2t_text = sample.text[0]
print(text)

# Image variation can be performed with a image-to-text generation followed by a text-to-image generation:
sample = pipe(prompt=i2t_text, num_inference_steps=20, guidance_scale=8.0)
final_image = sample.images[0]
final_image.save("unidiffuser_image_variation_sample.png")

# Text variation can be performed with a text-to-image generation followed by a image-to-text generation:
sample = pipe(image=t2i_image, num_inference_steps=20, guidance_scale=8.0)
final_prompt = sample.text[0]
print(final_prompt)

模型细节

  • 模型类型:基于扩散的多模态生成模型
  • 语言:英语
  • 许可证:agpl-3.0
  • 模型描述:这是一个可以执行图像、文本、文本到图像、图像到文本和图像-文本对生成的模型。它的主要组件是 U-ViT ,该组件参数化了联合噪声预测网络。其他组件作为不同模态的编码器和解码器,包括来自 Stable Diffusion 的预训练图像自编码器,来自 image ViT-B/32 CLIP encoder 的预训练 text ViT-L CLIP encoder ,来自 GPT-2 的自己微调的文本解码器。
  • 更多信息的资源: GitHub Repository Paper

直接使用

注意:本节的大部分内容都来自 Stable Diffusion model card ,但对UniDiffuser适用相同方式。

应根据agpl-3.0许可使用该模型。可能的用途包括:

  • 安全部署可能生成有害内容的模型。
  • 探究和了解生成模型的限制和偏见。
  • 生成艺术作品并在设计和其他艺术过程中使用。
  • 在教育或创作工具中应用。
  • 研究生成模型。

下面描述了不包括在内的用途。

误用、恶意使用和超出范围的使用

不应使用该模型故意创建或传播可能为人们带来敌意或疏远环境的图像。这包括生成人们可以预见会引起不安、苦恼或冒犯的图像;或传播历史或当前的刻板印象的内容。

超出范围的使用

该模型训练的目的不是提供人们或事件的真实或准确的表示,因此使用该模型生成此类内容超出了其能力的范围。

误用和恶意使用

使用该模型生成对个人残酷的内容是对该模型的误用。这包括但不限于:

  • 生成贬低、贬低或以其他方式对人或其环境、文化、宗教等具有伤害性的表现。
  • 故意推广或传播歧视性内容或有害刻板印象。
  • 未经个人同意冒充个人。
  • 未经将可能看到该内容的人的同意的色情内容。
  • 错误和虚假信息
  • 描绘过分的暴力和血腥
  • 共享受版权保护或许可的资料,违反其使用条款。
  • 共享对受版权保护或许可的资料进行更改的内容,违反其使用条款。