이미지 수정

Imagen을 사용하면 텍스트 프롬프트, 마스크, 기존 이미지를 활용해 몇 초 만에 이미지를 수정할 수 있습니다.

수정 및 맞춤설정을 위한 Imagen 모델 카드 보기

지원되는 모델 버전

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로 지정된 참고 이미지 1개와 REFERENCE_TYPE_MASK로 지정된 참고 이미지 1개를 정확히 지정해야 합니다.

referenceImages 객체

referenceImages 객체는 Imagen이 수정할 이미지 애셋을 정의합니다.

파라미터
referenceType

string

필수. 참조 이미지의 유형입니다. 다음 중 하나입니다.

  • REFERENCE_TYPE_RAW: 수정할 기본 이미지입니다.
  • REFERENCE_TYPE_MASK: 마스크 이미지로, 0이 아닌 값이 있는 영역이 기본 이미지에서 수정할 위치를 나타냅니다.
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_INSERTION: 0.01
  • EDIT_MODE_INPAINT_REMOVAL: 0.01
  • EDIT_MODE_BGSWAP: 0.0
  • EDIT_MODE_OUTPAINT: 0.01-0.03
maskImageConfig.maskClasses

list[integer]

선택사항. MASK_MODE_SEMANTIC 모드에서 사용할 마스크 클래스입니다.

파라미터

파라미터
addWatermark

bool

선택사항. 보이지 않는 워터마크를 생성된 이미지에 추가합니다.

기본값은 true입니다.

baseSteps

integer

선택사항. 샘플링 단계 수입니다. 값이 높을수록 이미지 품질이 우수하고 값이 낮을수록 지연 시간이 짧습니다. 기본값은 75입니다.

마스크 영역이 더 작거나 삭제 또는 삽입 모드의 경우 16~35단계를 사용하여 비슷한 수준의 품질을 반환하면서 지연 시간을 줄입니다.

editMode

string

마스크 수정에 필요합니다.

다음 값 중 하나를 갖는 enum입니다.

  • EDIT_MODE_INPAINT_REMOVAL: 객체를 삭제하고 마스크 영역의 이미지 배경을 채웁니다.
  • EDIT_MODE_INPAINT_INSERTION: 지정된 프롬프트에서 객체를 추가합니다.
  • EDIT_MODE_BGSWAP: 마스크 영역에 배경 콘텐츠를 추가하면서 마스크가 적용되지 않은 영역의 객체 콘텐츠는 유지합니다. 제품 수정에 유용합니다.
  • EDIT_MODE_OUTPAINT: 마스크 영역으로 이미지를 확장합니다. EDIT_MODE_BGSWAP와 달리 이미지 경계에 있는 부분 객체를 위한 객체 완성을 생성합니다.
guidanceScale

integer

선택사항. 모델에서 텍스트 프롬프트를 준수하는 정도를 제어합니다. 값이 클수록 출력 및 프롬프트 정렬이 증가하지만 이미지 품질이 저하될 수 있습니다.

허용되는 범위: 0~500

기본값: 삽입 모드의 경우 60, 삭제, bgswap, 아웃페인트의 경우 75

includeRaiReason

boolean

선택사항. 필터링된 이미지의 안전 관련 이유를 응답에 포함할지 여부입니다. 기본값은 false입니다.

includeSafetyAttributes

boolean

선택사항. 응답에서 각 이미지의 안전 점수를 보고할지 여부입니다. 기본값은 false입니다.

language

string

선택사항. 텍스트 프롬프트 언어에 해당하는 언어 코드입니다. 다음과 같은 값이 지원됩니다.

  • "auto": 자동 감지. Imagen이 지원되는 언어를 감지하면 프롬프트와 선택적 부정 프롬프트가 영어로 번역됩니다. 감지된 언어가 지원되지 않으면 Imagen이 입력 텍스트를 그대로 사용하므로 예기치 않은 출력이 발생할 수 있습니다. 오류 코드는 반환되지 않습니다.
  • "en": 영어(생략된 경우 기본값)
  • "zh" 또는 "zh-CN": 중국어(간체)
  • "zh-TW": 중국어(번체)
  • "hi": 힌디어
  • "ja": 일본어
  • "ko": 한국어
  • "pt": 포르투갈어
  • "es": 스페인어

languageimagen-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

선택사항. 이미지 생성에 사용되는 무작위 시드입니다. addWatermarktrue로 설정된 경우에는 사용할 수 없습니다.

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"입니다.

safetySettingimagen-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"인 경우의 압축 수준입니다. 허용되는 값은 0 ~ 100입니다. 기본값은 75입니다.

샘플 요청

REST

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • REGION: 프로젝트가 있는 리전입니다. 지원되는 리전에 대한 자세한 내용은 Vertex AI 위치의 생성형 AI를 참조하세요.
  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • TEXT_PROMPT: 선택사항. 모델이 생성하는 이미지를 안내하는 텍스트 프롬프트입니다. 최상의 결과를 얻으려면 마스킹된 영역의 설명을 사용하고 한 단어 프롬프트는 피하세요. 예를 들어 '코기' 대신 '귀여운 코기'를 사용하세요.
  • B64_BASE_IMAGE: 수정 대상 이미지를 base64로 인코딩한 이미지로, 크기는 10MB 이하여야 합니다. base64 인코딩에 대한 자세한 내용은 Base64 인코딩 및 디코딩 파일을 참조하세요.
  • B64_MASK_IMAGE: base64로 인코딩된 흑백 마스크 이미지로, 크기는 10MB 이하여야 합니다.
  • MASK_DILATION: 선택사항. 마스크를 확대할 이미지 너비의 비율을 나타내는 0과 1 사이의 부동 소수점 값입니다. dilation을 사용하면 부정확한 마스크를 보정하는 데 도움이 됩니다. 권장 값은 0.01입니다.
  • EDIT_STEPS: 선택사항. 샘플링 단계 수를 나타내는 정수입니다. 값이 클수록 이미지 품질이 우수하고 값이 작을수록 지연 시간이 짧습니다.

    처음에는 35 단계를 사용하는 것이 좋습니다. 품질이 요구사항에 미치지 못하면 최대 75가지 값을 늘리는 것이 좋습니다.

  • SAMPLE_COUNT: 선택사항. 생성할 이미지 수를 나타내는 정수입니다. 허용되는 값의 범위는 1~4입니다. 기본값은 4입니다.

HTTP 메서드 및 URL:

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 apple
47 샌드위치
48 주황색
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 bookshelf
77 카운터(기타)
78 세면대
79 아일랜드 키친
80
81 조명(기타)
82 램프
83 촛대
84 샹들리에
85 거울
86 화이트보드
87 선반
88 계단
89 에스컬레이터
90 캐비닛
91 벽난로
92 레인지
93 아케이드 머신
94 자갈
95 platform
96 운동장
97 철도
98 도로
99
100 보행자 포장도로
101 런웨이
102 지형
103
104 box
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 CCTV 카메라
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 베개
172 수건
173 러그 바닥매트
174 초목
175 자전거
176 자동차
177 오토 릭샤
178 오토바이
179 비행기
180 버스
181 기차
182 트럭
183 트레일러
184
185 느린 바퀴의 객체
186 강, 호수
187 바다
188 물(기타)
189 수영장
190 폭포
191
192 window
193 창 블라인드

다음 단계