修改图片

Imagen 可让您使用文本提示、蒙版和现有图片来引导修改过程,在几秒钟内修改图片。

查看 Imagen for Editing and Customization 模型卡片

支持的模型版本

Imagen API 支持以下模型:

  • imagen-3.0-capability-001

如需详细了解模型支持的功能,请参阅 Imagen 模型

HTTP 请求

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/imagen-3.0-capability-001:predict \

-d '{
  "instances": [
    {
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_RAW",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": string
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_MASK",
          "referenceId": 2,
          "referenceImage": {
            "bytesBase64Encoded": string
          },
          "maskImageConfig": {
            "maskMode": "MASK_MODE_USER_PROVIDED"
          }
        }
      ],
      "prompt": string
    }
  ],
  "parameters": {
    "addWatermark": boolean,
    "baseSteps": integer,
    "editMode": string,
    "guidanceScale": integer,
    "includeRaiReason": boolean,
    "includeSafetyAttributes": boolean,
    "language": string,
    "negativePrompt": string,
    "outputOptions": {
      "mimeType": string,
      "compressionQuality": integer
    },
    "personGeneration": string,
    "safetySetting": string,
    "sampleCount": integer,
    "seed": integer,
    "storageUri": string
  }
}'

实例

实例
prompt

string

可选。图片的文本提示。如果未指定 prompt,模型会填充图片上下文中的内容。

referenceImages

ReferenceImage 对象的列表。

必需。如需进行蒙版修改,只能指定两个参考图片,一个使用 REFERENCE_TYPE_RAW,另一个使用 REFERENCE_TYPE_MASK

referenceImages 对象

referenceImages 对象描述了供 Imagen 修改的图片素材资源。

参数
referenceType

string

必需。参考图片的类型。以下项之一:

  • REFERENCE_TYPE_RAW:要修改的基础图片。
  • REFERENCE_TYPE_MASK:蒙版图片,其非零值指示在何处修改基础图片。
referenceId

integer

必需。参考图片的唯一标识符。不用于蒙版修改。

referenceImage.bytesBase64Encoded

string

必需。Base64 编码的图片字节。接受 PNG、JPEG、GIF 和 BMP 文件。转码为 PNG 后的大小上限为 20MB。 如果您提供蒙版图片,其尺寸必须与基础图片的尺寸相同。

maskImageConfig.maskMode

string

referenceTypeREFERENCE_TYPE_MASK 时为必需。必须是以下其中一项:

  • MASK_MODE_USER_PROVIDED:使用 referenceImage.bytesBase64Encoded 中的蒙版。
  • MASK_MODE_BACKGROUND:使用通过背景分割自动生成的蒙版。
  • MASK_MODE_FOREGROUND:使用通过前景分割自动生成的蒙版。
  • MASK_MODE_SEMANTIC:使用通过语义分割自动生成的蒙版,并指定蒙版类别。
maskImageConfig.dilation

float

可选。范围:[0, 1]。要将蒙版扩大的图片宽度的百分比。这有助于补偿不精确的蒙版。 为获得最佳效果,我们建议采用以下 maskImageConfig.maskMode 设置,建议使用列出的值:

  • EDIT_MODE_INPAINT_INSERTION0.01
  • EDIT_MODE_INPAINT_REMOVAL0.01
  • EDIT_MODE_BGSWAP0.0
  • EDIT_MODE_OUTPAINT0.01-0.03
maskImageConfig.maskClasses

list[integer]

可选。MASK_MODE_SEMANTIC 模式的蒙版类别

参数

参数
addWatermark

bool

可选。向生成的图片添加不可见水印。

默认值为 true

baseSteps

integer

可选。采样步骤数。值越高,图片质量就越高;值越低,延迟时间就越短。默认值为 75

对于较小的蒙版区域或对于移除或插入模式,请使用 16 - 35 步骤来缩短延迟时间,同时返回类似的质量水平。

editMode

string

对于蒙版修改是必需的。

包含以下值之一的枚举:

  • EDIT_MODE_INPAINT_REMOVAL:在蒙版区域中移除对象并填充图片背景。
  • EDIT_MODE_INPAINT_INSERTION:通过给定的提示添加对象。
  • EDIT_MODE_BGSWAP:在蒙版区域中添加背景内容,同时保留未蒙版区域中的对象内容。 适用于产品修改。
  • EDIT_MODE_OUTPAINT:将图片扩展到蒙版区域。与 EDIT_MODE_BGSWAP 不同,这会为图片边界处的部分对象生成对象完成情况。
guidanceScale

integer

可选。控制模型遵循文本提示的程度。 较大的值会增加输出和提示之间的一致性,但可能会降低图片质量。

接受范围:0 - 500

默认值:60(针对插入模式)、75(针对移除、bgswap、扩绘)。

includeRaiReason

boolean

可选。指定是否在回答中包含图片被过滤掉的安全原因。默认值为 false

includeSafetyAttributes

boolean

可选。指定是否在回答中报告每个图片的安全得分。默认值为 false

language

string

可选。与文本提示语言对应的语言代码。支持以下值:

  • "auto":自动检测。如果 Imagen 检测到受支持的语言,会将提示和(可选)反向提示翻译为英语。如果检测到不受支持的语言,Imagen 会按原样使用输入文本,这可能会导致意外输出。系统不会返回错误代码。
  • "en":英语(如果省略,则其为默认值)
  • "zh""zh-CN":中文(简体)
  • "zh-TW":中文(繁体)
  • "hi":印地语
  • "ja":日语
  • "ko":韩语
  • "pt":葡萄牙语
  • "es":西班牙语

language 仅受 imagen-3.0-capability-001 支持。

negativePrompt

string

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

outputOptions

outputOptions

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

personGeneration

string

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

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

对于基于蒙版的修改,personGeneration 默认值为 allow_adult。对于无蒙版修改,personGeneration 默认值为 allow_adult

sampleCount

integer

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

seed

Uint32

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

safetySetting

string

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

  • "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"

safetySetting 仅受 imagen-3.0-capability-001 支持。

storageUri

string

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

输出选项对象

outputOptions 对象描述图片输出。

参数
outputOptions.mimeType

string

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

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

默认值为 "image/png"

outputOptions.compressionQuality

integer

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

示例请求

REST

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

  • REGION:项目所在的区域。如需详细了解支持的区域,请参阅 Vertex AI 上的生成式 AI 位置
  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • TEXT_PROMPT:可选。用于引导模型生成的图片的文本提示。为了获得最佳结果,请使用蒙版区域的说明,并避免使用单个词的提示。例如,请使用“一只可爱的柯基”而不是“柯基”。
  • B64_BASE_IMAGE:被编辑图片的 base64 编码图片,大小不超过 10 MB。如需详细了解 base64 编码,请参阅对文件进行 Base64 编码和解码
  • B64_MASK_IMAGE:base64 编码的黑白蒙版图片,大小不超过 10MB。
  • MASK_DILATION:可选。一个介于 0 和 1 之间的浮点值(含 0 和 1),表示将蒙版扩大的图像宽度的百分比。使用 dilation 有助于补偿不精确的蒙版。我们建议将值设置为 0.01
  • EDIT_STEPS:可选。表示采样步骤数的整数。值越大,图片质量越高;值越小,延迟时间越短。

    建议您先尝试使用 35 个步骤。如果质量不符合您的要求,我们建议您提高此值,但不超过 75

  • SAMPLE_COUNT:可选。一个整数,用于描述要生成的图片数量。接受的值范围为 1-4。默认值为 4

HTTP 方法和网址:

POST https://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/publishers/google/models/imagen-3.0-capability-001:predict

请求 JSON 正文:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT",
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_RAW",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_MASK",
          "referenceImage": {
            "bytesBase64Encoded": "B64_MASK_IMAGE"
          },
          "maskImageConfig": {
            "maskMode": "MASK_MODE_USER_PROVIDED",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_INPAINT_INSERTION",
    "sampleCount": SAMPLE_COUNT
  }
}

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

curl

将请求正文保存在名为 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://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/publishers/google/models/imagen-3.0-capability-001:predict"

PowerShell

将请求正文保存在名为 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://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/publishers/google/models/imagen-3.0-capability-001:predict" | Select-Object -Expand Content
以下示例响应适用于包含 "sampleCount": 2 的请求。响应返回两个预测对象,其中生成的图片字节采用 base64 编码。
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

类别 ID

使用以下对象类别 ID,根据特定对象自动创建图片遮罩。

类别 ID (class_id) 对象
0 背包
1 雨伞
2
3 领带
4 手提箱
5 箱子
6
7
8
9
10 绵羊
11 奶牛
12 大象
13
14 斑马
15 长颈鹿
16 动物(其他)
17 微波炉
18 散热器
19 烤箱
20 吐司炉
21 存储箱
22 传送带
23 接收器
24 冰箱
25 洗衣机
26 风扇
27 洗碗机
28 卫生间
29 浴缸
30 淋浴喷头
31 隧道
32
33 码头
34 帐篷
35 建筑物
36 天花板
37 笔记本电脑
38 键盘
39 鼠标
40 遥控器
41 手机
42 电视机
43 楼层
44 舞台
45 香蕉
46 苹果
47 三明治
48 橙色
49 西兰花
50 carrot
51 热狗
52 披萨
53 甜甜圈
54 蛋糕
55 水果(其他)
56 食品(其他)
57 椅子(其他)
58 扶手椅
59 转椅
60 凳子
61 席位
62 长沙发
63 垃圾桶
64 盆栽植物
65 床头柜
66
67 表格
68 台球
69
70 办公桌
71 软垫凳
72 衣柜
73 婴儿床
74 篮子
75 抽屉柜
76 bookshelf
77 柜台(其他)
78 浴室柜
79 厨房岛台
80
81 灯具(其他)
82
83 壁灯台
84 枝形吊灯
85 镜子
86 白板
87 架子
88 楼梯
89 自动扶梯
90 柜子
91 壁炉
92 火炉
93 街机
94 碎石
95 平台
96 运动场
97 铁路
98 道路
99
100 人行道
101 跑道
102 地形
103
104 盒子
105 时钟
106 花瓶
107 剪刀
108 玩具(其他)
109 泰迪熊
110 吹风机
111 牙刷
112 绘画
113 海报
114 布告栏
115 瓶子
116 茶杯
117 葡萄酒杯
118
119 叉子
120 勺子
121
122 托盘
123 油烟机
124 盘子
125
126 骑乘人员(其他)
127 骑自行车的人
128 摩托车手
129 纸张
130 路灯
131 路障
132 邮箱
133 闭路电视摄像头
134 接线盒
135 交通标志
136 红绿灯
137 消防栓
138 停车计时器
139 长椅
140 自行车架
141 广告牌
142 天空
143
144 篱笆
145 栏杆
146 护栏
147 山丘
148 岩石
149 飞盘
150 双板滑雪板
151 滑雪板
152 运动球类
153 风筝
154 棒球棍
155 棒球手套
156 滑板
157 冲浪板
158 网球拍
159
160 底座
161 雕塑
162
163 喷泉
164 遮篷
165 服饰
166 横幅
167 旗帜
168 毯子
169 窗帘(其他)
170 浴帘
171 pillow
172 毛巾
173 地毯
174 植被
175 自行车
176 汽车
177 三轮车
178 摩托车
179 飞机
180 公交车
181 火车
182 卡车
183 拖车
184 船只
185 慢速物体
186 河湖
187 大海
188 水体(其他)
189 游泳池
190 瀑布
191
192 窗户
193 百叶窗

后续步骤