編輯圖片

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

必填。參考圖片的專屬 ID。不會用於遮蓋編輯。

referenceImage.bytesBase64Encoded

string

必填。Base64 編碼的圖片位元組。接受 PNG、JPEG、GIF 和 BMP 檔案。轉碼為 PNG 後,大小上限為 20 MB。 如果提供遮罩圖片,尺寸必須與基本圖片相同。

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

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: 經過編輯的圖片 (大小上限為 10 MB,並採用 Base64 編碼)。如要進一步瞭解 base64 編碼,請參閱「Base64 編碼及解碼檔案」。
  • B64_MASK_IMAGE: 大小為 10 MB 以下的黑白遮罩圖片,採用 Base64 編碼。
  • MASK_DILATION: 選用。介於 0 和 1 之間的浮點值 (含 0 和 1),代表遮罩要擴大的圖片寬度百分比。使用 dilation 有助於補償不精確的遮罩。建議將這個值設為 0.01
  • EDIT_STEPS: 選用。代表取樣步數的整數。值越高,影像品質越好;值越低,延遲時間越短。

    建議您先嘗試 35 步驟。如果品質不符合需求,建議將值調高至上限 75

  • SAMPLE_COUNT: 選用。整數,用來描述要生成的圖片數量。可接受的值範圍為 14,預設值為 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 cat
8
9
10 綿羊
11 母牛
12 大象
13
14 斑馬
15 長頸鹿
16 動物 (其他)
17 微波爐
18 散熱器
19 烤箱
20 烤麵包機
21 儲存槽
22 輸送帶
23 接收器
24 冰箱
25 洗衣烘乾機
26 風扇
27 洗碗機
28 馬桶
29 浴缸
30 shower (蓮蓬頭)
31 通道
32 橋梁
33 碼頭
34 帳篷
35 建築物
36 取頂
37 筆記型電腦
38 鍵盤
39 老鼠
40 遙控器
41 手機
42 電視
43 floor
44 在此流程的各個階段
45 香蕉
46 apple
47 Sandwich
48 orange
49 綠色花椰菜
50 紅蘿蔔
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 書架
77 計數器 (其他)
78 浴室檯面
79 廚房中島
80
81 光線 (其他)
82 燈具
83 壁燈
84 吊燈
85 鏡子
86 白板
87 專區
88 樓梯
89 電扶梯
90 櫃子
91 壁爐
92 火爐
93 大型電玩機台
94 碎石
95 platform
96 playingfield
97 Railroad
98 道路
99 雪景
100 人行道鋪面
101 跑道
102 地形
103 書籍
104 box
105 clock
106 花瓶
107 剪刀
108 玩具 (其他)
109 玩具熊
110 吹風機
111 牙刷
112 繪畫
113 海報
114 公布欄
115 瓶子
116 杯子
117 酒杯
118 刀子
119 分支
120 湯匙
121 先守
122 托盤
123 抽油煙機
124 盤子
125 使用者圖示
126 rider (other)
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 base
161 雕塑
162
163 Fountain
164 遮篷
165 服飾
166 橫幅
167 旗標
168 毯子
169 窗簾 (其他)
170 浴簾
171 pillow
172 毛巾
173 地毯地墊
174 植被
175 單車
176 汽車
177 autorickshaw
178 摩托車
179 飛機
180 公車
181 訓練
182 卡車
183 預告片
184 船隻
185 緩慢移動的輪狀物體
186 河湖
187 海洋
188 水 (其他)
189 游泳池
190 瀑布
191 Wall
192 窗戶
193 百葉窗簾

後續步驟