生成图片

Imagen API 使用文本提示来引导生成过程,可让您在几秒钟内创建高品质图片。您还可以使用 Imagen API 放大图片。

查看 Imagen for Generation 模型卡片

支持的模型

模型 代码
图片生成 imagen-3.0-generate-002
imagen-3.0-generate-001
imagen-3.0-fast-generate-001
imagegeneration@006
imagegeneration@005
imagegeneration@002

如需详细了解每个模型支持的功能,请参阅模型版本控制

示例语法

用于通过文本提示创建图片的语法。

语法

用于生成图片的语法。

RESTPython
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_VERSION}:predict \
-d '{
  "instances": [
    {
      "prompt": "..."
    }
  ],
  "parameters": {
    "sampleCount": ...
  }
}'
generation_model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-001")

response = generation_model.generate_images(
    prompt="...",
    negative_prompt="...",
    aspect_ratio=...,
)
response.images[0].show()

参数列表

如需了解实现详情,请参阅示例

生成图片

RESTPython
参数
prompt

必需:string

图片的文本提示。

imagen-3.0-generate-002 模型支持高达 480 个词元。

imagen-3.0-generate-001 模型支持高达 480 个词元。

imagen-3.0-fast-generate-001 模型支持高达 480 个词元。

imagegeneration@006 模型支持最多 128 个词元。

imagegeneration@005 模型支持最多 128 个词元。

imagegeneration@002 模型支持最多 64 个词元。

sampleCount

必需:int

要生成的图片数量。默认值为 4。

imagen-3.0-generate-002 模型支持 1 到 4 的值。

imagen-3.0-generate-001 模型支持 1 到 4 的值。

imagen-3.0-fast-generate-001 模型支持 1 到 4 的值。

imagegeneration@006 模型支持 1 到 4 的值。

imagegeneration@005 模型支持 1 到 4 的值。

imagegeneration@002 模型支持 1 到 8 的值。

seed

可选:Uint32

用于生成图片的随机种子。当 addWatermark 设置为 true 时,此参数不可用。

如果 enhancePrompt 设置为 trueseed 参数将无法正常工作,因为 enhancePrompt 会生成一个新的提示,从而导致生成新的或不同的图片。

enhancePrompt

可选:boolean

一个可选参数,用于使用基于 LLM 的提示重写功能来提供更高质量的图片,以便更好地反映原始提示的意图。停用此功能可能会影响图片质量和提示遵循度。

imagen-3.0-generate-002 支持此字段。默认值:true

imagen-3.0-generate-001 不支持此字段。

imagen-3.0-fast-generate-001 不支持此字段。

imagegeneration@006 不支持此字段。

imagegeneration@005 不支持此字段。

imagegeneration@002 不支持此字段。

negativePrompt

可选:string

用于说明在生成的图片中不建议的内容。

imagen-3.0-generate-002 不支持此字段。

imagen-3.0-generate-001 模型支持高达 480 个词元。

imagen-3.0-fast-generate-001 模型支持高达 480 个词元。

imagegeneration@006 模型支持最多 128 个词元。

imagegeneration@005 模型支持最多 128 个词元。

imagegeneration@002 模型支持最多 64 个词元。

aspectRatio

可选:string

图片的宽高比。默认值为“1:1”。

imagen-3.0-generate-002 模型支持“1:1”“9:16”“16:9”“3:4”或“4:3”。

imagen-3.0-generate-001 模型支持“1:1”“9:16”“16:9”“3:4”或“4:3”。

imagen-3.0-fast-generate-001 模型支持“1:1”“9:16”“16:9”“3:4”或“4:3”。

imagegeneration@006 模型支持“1:1”“9:16”“16:9”“3:4”或“4:3”。

imagegeneration@005 模型支持“1:1”或“9:16”。

imagegeneration@002 模型支持“1:1”。

outputOptions

可选:outputOptions

outputOptions 对象中描述输出图片格式。

sampleImageStyle

可选:string(仅限 imagegeneration@002

描述生成的图片的风格。支持以下值:

  • "photograph"
  • "digital_art"
  • "landscape"
  • "sketch"
  • "watercolor"
  • "cyberpunk"
  • "pop_art"
personGeneration

可选:string(仅限 imagen-3.0-generate-002imagen-3.0-generate-001imagen-3.0-fast-generate-001imagegeneration@006

允许模型生成人物。支持以下值:

  • "dont_allow":禁止在图片中包含人物或人脸。
  • "allow_adult":仅允许生成成人。
  • "allow_all":允许生成任何年龄的人。

默认值为 "allow_adult"

safetySetting

可选:string(仅限 imagen-3.0-generate-002imagen-3.0-generate-001imagen-3.0-fast-generate-001imagegeneration@006

为安全性过滤策略添加过滤级别。支持以下值:

  • "block_low_and_above":最强的过滤级别,采用最严苛的屏蔽策略。值已弃用:"block_most"
  • "block_medium_and_above":屏蔽部分有问题的提示和回答。值已弃用:"block_some"
  • "block_only_high":减少因安全性过滤机制而被屏蔽的请求数量。Imagen 生成的不良内容的数量可能会增加。值已弃用:"block_few"
  • "block_none":屏蔽极少数有问题的提示和回答。此功能的使用是有一定限制的。 之前的字段值:"block_fewest"

默认值为 "block_medium_and_above"

addWatermark

可选:bool

向生成的图片添加不可见水印。imagegeneration@002imagegeneration@005 模型的默认值为 falseimagen-3.0-generate-002imagen-3.0-generate-001imagen-3.0-fast-generate-001imagegeneration@006 模型的默认值为 true

storageUri

可选:string

用于存储生成的图片的 Cloud Storage URI。

输出选项对象

outputOptions 对象描述图片输出。

参数
outputOptions.mimeType

可选:string

输出应另存为的图片格式。支持以下值:

  • "image/png":另存为 PNG 图片
  • "image/jpeg":另存为 JPEG 图片

默认值为 "image/png"

outputOptions.compressionQuality

可选:int

如果输出类型为 "image/jpeg",则为压缩级别。可接受 0 到 100 之间的值。默认值为 75。

响应

REST 请求的响应正文。

参数
predictions

VisionGenerativeModelResult 对象的数组,每个对象对应一个请求的 sampleCount。如果有任何图片被 Responsible AI 过滤掉,则不包括这些图片,除非 includeRaiReason 被设置为 true

视觉生成模型结果对象

模型结果的相关信息。

参数
bytesBase64Encoded

base64 编码的生成图片。如果输出图片未通过 Responsible AI 的过滤机制,则不存在该参数。

mimeType

生成的图片的类型。如果输出图片未通过 Responsible AI 的过滤机制,则不存在该参数。

raiFilteredReason

Responsible AI 过滤原因。仅在启用了 includeRaiReason 且该图片被过滤掉的情况下才会返回该参数。

safetyAttributes.categories

安全性属性的名称。仅在启用了 includeSafetyAttributes 且输出图片通过了 Responsible AI 的过滤机制的情况下才会返回该参数。

safetyAttributes.scores

安全性属性的得分。仅在启用了 includeSafetyAttributes 且输出图片通过了 Responsible AI 的过滤机制的情况下才会返回该参数。

参数
prompt

必需:string

图片的文本提示。

imagen-3.0-generate-001 模型支持高达 480 个词元。

imagen-3.0-fast-generate-001 模型支持高达 480 个词元。

imagegeneration@006 模型支持最多 128 个词元。

imagegeneration@005 模型支持最多 128 个词元。

imagegeneration@002 模型支持最多 64 个词元。

number_of_images

必需:int

要生成的图片数量。默认值为 1。

imagen-3.0-generate-001 模型支持 1 到 8 的值。

imagen-3.0-fast-generate-001 模型支持 1 到 8 的值。

imagegeneration@006 模型支持 1 到 4 的值。

imagegeneration@005 模型支持 1 到 4 的值。

imagegeneration@002 模型支持 1 到 8 的值。

seed

可选:int

用于生成图片的随机种子。当 addWatermark 设置为 true 时,此参数不可用。

如果 enhancePrompt 设置为 trueseed 将无法正常运行,因为 enhancePrompt 会生成一个新的提示,从而生成新的或不同的图片。

negative_prompt

可选:string

用于说明在生成的图片中不建议的内容。

imagen-3.0-generate-001 模型支持高达 480 个词元。

imagen-3.0-fast-generate-001 模型支持高达 480 个词元。

imagegeneration@006 模型支持最多 128 个词元。

imagegeneration@005 模型支持最多 128 个词元。

imagegeneration@002 模型支持最多 64 个词元。

aspect_ratio

可选:string

图片的宽高比。默认值为“1:1”。

imagen-3.0-generate-001 模型支持“1:1”“9:16”“16:9”“3:4”或“4:3”。

imagen-3.0-fast-generate-001 模型支持“1:1”“9:16”“16:9”“3:4”或“4:3”。

imagegeneration@006 模型支持“1:1”“9:16”“16:9”“3:4”或“4:3”。

output_mime_type

可选:string(仅限 imagen-3.0-generate-001imagen-3.0-fast-generate-001imagegeneration@006

输出应另存为的图片格式。支持以下值:

  • "image/png":另存为 PNG 图片
  • "image/jpeg":另存为 JPEG 图片

默认值为 "image/png"

compression_quality

可选:int

如果输出 MIME 类型为 "image/jpeg",则为压缩级别。默认值为 75。

language

可选:string

图片的文本提示采用的语言。支持以下值:

  • "en":英语
  • "hi":印地语
  • "ja":日语
  • "ko":韩语
  • "auto":自动检测语言

默认值为 "auto"

output_gcs_uri

可选:string

用于存储生成的图片的 Cloud Storage URI。

add_watermark

可选:bool

为生成的图片添加水印。imagegeneration@002imagegeneration@005 模型的默认值为 falseimagen-3.0-fast-generate-001imagen-3.0-generate-001imagegeneration@006 模型的默认值为 true

safety_filter_level

可选:string

为安全性过滤策略添加过滤级别。支持以下值:

  • "block_low_and_above":最强的过滤级别,采用最严苛的屏蔽策略。值已弃用:"block_most"
  • "block_medium_and_above":屏蔽部分有问题的提示和回答。值已弃用:"block_some"
  • "block_only_high":屏蔽少数有问题的提示和回答。值已弃用:"block_few"
  • "block_none":屏蔽极少数有问题的提示和回答。值已弃用:"block_fewest"

默认值为 "block_medium_and_above"

person_generation

可选:string(仅限 imagen-3.0-generate-001imagen-3.0-fast-generate-001imagegeneration@006

允许模型生成人物。支持以下值:

  • "dont_allow":禁止生成人物
  • "allow_adult":允许生成成人,但不允许生成儿童
  • "allow_all":允许生成成人和儿童

默认值为 "allow_adult"

提高图片的分辨率

REST
参数
mode

必需:string

对于分辨率提升请求,必须设置为 "upscale"

upscaleConfig

必需:UpscaleConfig

UpscaleConfig 对象

outputOptions

可选:OutputOptions

outputOptions 对象中描述输出图片格式。

storageUri

可选:string

用于存储生成的图片的 Cloud Storage URI。

分辨率提升配置对象

参数
upscaleConfig.upscaleFactor

必需:string

分辨率提升系数。支持的值为 "x2""x4"

响应

REST 请求的响应正文。

参数
predictions

VisionGenerativeModelResult 对象的数组,每个对象对应一个请求的 sampleCount。如果有任何图片被 Responsible AI 过滤掉,则不包括这些图片,除非 includeRaiReason 被设置为 true

示例

以下示例展示了如何使用 Imagen 模型生成图片。

生成图片

RESTPython

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • MODEL_VERSION:要使用的 imagegeneration 模型版本。可用的值:
    • Imagen 3:
      • imagen-3.0-generate-002(最新模型)
      • imagen-3.0-generate-001
      • imagen-3.0-fast-generate-001 - 低延迟模型版本。
    • 默认模型版本:
      • imagegeneration - 使用默认模型版本 v.006。最佳实践是应始终指定模型版本,尤其是在生产环境中。

    如需详细了解模型版本和功能,请参阅模型版本

  • LOCATION:您的项目的区域。 例如 us-central1europe-west2asia-northeast3。如需查看可用区域的列表,请参阅 Vertex AI 上的生成式 AI 位置
  • TEXT_PROMPT:用于指导模型生成什么图片的文本提示。生成和修改都需要此字段。
  • IMAGE_COUNT:生成的图片数量。 接受的整数值:1-8 (imagegeneration@002)、1-4(所有其他模型版本)。 默认值:4。
  • 根据您的应用场景,使用以下可选变量。在 "parameters": {} 对象中添加以下部分或全部参数。 此列表显示了常见的可选参数,但并非详尽无遗。如需详细了解可选参数,请参阅 Imagen API 参考文档:生成图片

    "parameters": {
      "sampleCount": IMAGE_COUNT,
      "addWatermark": ADD_WATERMARK,
      "aspectRatio": "ASPECT_RATIO",
      "enhancePrompt": ENABLE_PROMPT_REWRITING,
      "includeRaiReason": INCLUDE_RAI_REASON,
      "includeSafetyAttributes": INCLUDE_SAFETY_ATTRIBUTES,
      "outputOptions": {
        "mimeType": "MIME_TYPE",
        "compressionQuality": COMPRESSION_QUALITY
      },
      "personGeneration": "PERSON_SETTING",
      "safetySetting": "SAFETY_SETTING",
      "seed": SEED_NUMBER,
      "storageUri": "OUTPUT_STORAGE_URI"
    }
    
    • ADD_WATERMARK:布尔值。可选。是否为生成的图片启用水印。 将该字段设置为 true 时生成的任何图片都包含数字 SynthID,您可以使用该数字 SynthID 来验证带水印的图片。如果您省略此字段,则系统会使用默认值 true;您必须将其值设置为 false 才能停用此功能。仅当此字段设置为 false 时,您才可以使用 seed 字段来获取确定性输出。
    • ASPECT_RATIO:字符串。可选。用于控制宽高比的生成模式参数。支持的宽高比值及其预期用途:
      • 1:1(默认,方形)
      • 3:4(广告、社交媒体)
      • 4:3(电视、摄影)
      • 16:9(横向)
      • 9:16(纵向)
    • ENABLE_PROMPT_REWRITING:布尔值。可选。一个参数,用于使用基于 LLM 的提示重写功能来提供更高质量的图片,以便更好地反映原始提示的意图。停用此功能可能会影响图片质量和提示遵循度。默认值:true
    • INCLUDE_RAI_REASON:布尔值。可选。是否在输入或输出被屏蔽的回答中启用 Responsible AI 过滤的原因代码。默认值:false
    • INCLUDE_SAFETY_ATTRIBUTES:布尔值。可选。是否针对未经过滤的输入和输出在回答中启用安全属性列表的四舍五入 Responsible AI 分数。安全属性类别:"Death, Harm & Tragedy""Firearms & Weapons""Hate""Health""Illicit Drugs""Politics""Porn""Religion & Belief""Toxic""Violence""Vulgarity""War & Conflict"。默认值为 false
    • MIME_TYPE:字符串。可选。图片内容的 MIME 类型。可用的值:
      • image/jpeg
      • image/gif
      • image/png
      • image/webp
      • image/bmp
      • image/tiff
      • image/vnd.microsoft.icon
    • COMPRESSION_QUALITY:整数。可选。仅适用于 JPEG 输出文件。模型为以 JPEG 文件格式生成的图片保留的细节级别。值:0100,数字越大表示压缩越大。默认值:75
    • PERSON_SETTING:字符串。可选。控制模型允许的人物类型或面部生成的安全设置。可用的值:
      • allow_adult(默认):仅允许生成成年人(名人除外)。不允许针对任何设置生成名人。
      • dont_allow:禁止在生成的图片中包含人物或人脸。
    • SAFETY_SETTING:字符串。可选。用于控制生成的图片的安全过滤器阈值的设置。可用的值:
      • block_low_and_above:最高安全阈值,会导致被滤除的生成图片数量最多。旧值:block_most
      • block_medium_and_above(默认值):中等安全阈值,可平衡潜在有害内容和安全内容的过滤设置。旧值:block_some
      • block_only_high:安全阈值,可减少因安全性过滤机制而被屏蔽的请求数量。此设置可能会增加 Imagen 生成的不良内容。 旧值:block_few
    • SEED_NUMBER:整数。可选。您提供的任何非负整数,以使输出图片具有确定性。提供相同的种子编号会生成相同的输出图片。如果您使用的模型支持数字水印,则必须设置 "addWatermark": false 才能使用此字段。接受的整数值:1 - 2147483647
    • OUTPUT_STORAGE_URI:字符串。可选。用于存储输出图片的 Cloud Storage 存储桶。如果未提供,回答中会返回 base64 编码的图片字节。示例值:gs://image-bucket/output/

HTTP 方法和网址:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_VERSION:predict

请求 JSON 正文:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT"
    }
  ],
  "parameters": {
    "sampleCount": IMAGE_COUNT
  }
}

如需发送请求,请选择以下方式之一:

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_VERSION:predict"

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_VERSION:predict" | Select-Object -Expand Content
以下示例响应适用于包含 "sampleCount": 2 的请求。响应返回两个预测对象,其中生成的图片字节采用 base64 编码。
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

如果您使用的是支持提示增强功能的模型,回答中还会包含一个 prompt 字段,其中包含用于生成的增强型提示:

{
  "predictions": [
    {
      "mimeType": "MIME_TYPE",
      "prompt": "ENHANCED_PROMPT_1",
      "bytesBase64Encoded": "BASE64_IMG_BYTES_1"
    },
    {
      "mimeType": "MIME_TYPE",
      "prompt": "ENHANCED_PROMPT_2",
      "bytesBase64Encoded": "BASE64_IMG_BYTES_2"
    }
  ]
}

在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Python 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Python API 参考文档

如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

在此示例中,您将对 ImageGenerationModel@006 版本)调用 generate_images 方法,并在本地保存生成的图片。然后,您可以选择使用笔记本中的 show() 方法显示生成的图片。如需详细了解模型版本和功能,请参阅模型版本


import vertexai
from vertexai.preview.vision_models import ImageGenerationModel

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# output_file = "input-image.png"
# prompt = "" # The text prompt describing what you want to see.

vertexai.init(project=PROJECT_ID, location="us-central1")

model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-002")

images = model.generate_images(
    prompt=prompt,
    # Optional parameters
    number_of_images=1,
    language="en",
    # You can't use a seed value and watermark at the same time.
    # add_watermark=False,
    # seed=100,
    aspect_ratio="1:1",
    safety_filter_level="block_some",
    person_generation="allow_adult",
)

images[0].save(location=output_file, include_generation_parameters=False)

# Optional. View the generated image in a notebook.
# images[0].show()

print(f"Created output image using {len(images[0]._image_bytes)} bytes")
# Example response:
# Created output image using 1234567 bytes

提高图片的分辨率

REST

在使用任何请求数据之前,请先进行以下替换:

  • LOCATION:您的项目的区域。例如 us-central1europe-west2asia-northeast3。如需查看可用区域的列表,请参阅 Vertex AI 上的生成式 AI 位置
  • PROJECT_ID:您的 Google Cloud 项目 ID
  • B64_BASE_IMAGE:要修改或放大的基础图片。图片必须指定为 base64 编码的字节字符串。大小上限:10 MB。
  • IMAGE_SOURCE:您要修改或放大的图片的 Cloud Storage 位置。例如:gs://output-bucket/source-photos/photo.png
  • UPSCALE_FACTOR:可选。图片的放大系数。如果未指定,系统将根据输入图片的较长边和 sampleImageSize 确定放大系数。可用值:x2x4

HTTP 方法和网址:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict

请求 JSON 正文:

{
  "instances": [
    {
      "prompt": "",
      "image": {
        // use one of the following to specify the image to upscale
        "bytesBase64Encoded": "B64_BASE_IMAGE"
        "gcsUri": "IMAGE_SOURCE"
        // end of base image input options
      },
    }
  ],
  "parameters": {
    "sampleCount": 1,
    "mode": "upscale",
    "upscaleConfig": {
      "upscaleFactor": "UPSCALE_FACTOR"
    }
  }
}

如需发送请求,请选择以下方式之一:

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict"

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:

{
  "predictions": [
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "iVBOR..[base64-encoded-upscaled-image]...YII="
    }
  ]
}

后续步骤