이 페이지에서는 이미지 배경을 바꾸는 방법을 설명합니다. Vertex AI 기반 Imagen을 사용하면 자동 객체 세분화를 통해 주요 콘텐츠를 유지하면서 이미지의 다른 부분을 수정할 수 있습니다. 또한 Imagen 3에서는 사용자가 직접 마스크 영역을 지정하여, 수정 시 더 많은 제어 권한을 가질 수 있습니다.
다음 모델은 이미지 배경 바꾸기를 지원합니다.
제품 이미지 수정 예시
다음 사용 사례에서는 제품의 외형은 유지하면서 이미지의 배경을 수정하여 제품 이미지를 향상시키는 방법을 보여줍니다.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
환경에 대한 인증을 설정하세요.
이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.
콘솔
Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스하는 경우 인증을 설정할 필요가 없습니다.
Python
로컬 개발 환경에서 이 페이지의 Python 샘플을 사용하려면 gcloud CLI를 설치하고 초기화한 후 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정합니다.
-
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
로컬 셸을 사용하는 경우 사용자 계정에 대한 로컬 인증 사용자 인증 정보를 만듭니다.
gcloud auth application-default login
Cloud Shell을 사용하는 경우 이 작업을 수행할 필요는 없습니다.
인증 오류가 반환되고 외부 ID 공급업체(IdP)를 사용하는 경우 제휴 ID로 gcloud CLI에 로그인했는지 확인합니다.
자세한 내용은 Google Cloud 인증 문서의 로컬 개발 환경의 ADC 설정을 참고하세요.
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.
Google Cloud CLI를 설치합니다.
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참조하세요.
-
자동으로 감지된 배경 마스크로 수정
다음 안내에 따라 자동 배경 감지를 이용해서 제품 이미지 수정을 사용 설정하고 사용합니다.
콘솔
Google Cloud 콘솔에서 Vertex AI > Vertex AI Studio 페이지로 이동합니다.
미디어 생성을 클릭합니다.
이미지를 클릭합니다.
작업 목록에서 Product-background-editing을 선택합니다.
모델 목록에서 사용할 Imagen 모델을 선택합니다.
입력 이미지에서 추가를 클릭하고 수정할 이미지를 선택하여 업로드합니다.
프롬프트 상자에 이미지를 어떻게 수정할지 설명하는 프롬프트를 입력합니다.
다음 마스크 추출 옵션 중 하나를 선택합니다.
- 백그라운드 요소: 백그라운드 요소를 감지하고 요소 주위에 마스크를 만듭니다.
- 포그라운드 요소: 포그라운드 객체를 감지하고 객체 주위에 마스크를 만듭니다.
- background_replace사람: 사람을 감지하고 사람 주위에 마스크를 만듭니다.
실행을 클릭합니다.
Python
설치
pip install --upgrade google-genai
자세한 내용은 SDK 참고 문서를 참고하세요.
Vertex AI에서 생성형 AI SDK를 사용하도록 환경 변수를 설정합니다.
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
REST
자세한 내용은 이미지 수정 API 참조를 확인하세요.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID
- LOCATION: 프로젝트의 리전. 예를 들면
us-central1,europe-west2,asia-northeast3입니다. 사용 가능한 리전 목록은 Vertex AI의 생성형 AI 위치를 참조하세요. 리전 API 엔드포인트를 사용하면 엔드포인트의 URL에 있는 리전에 따라 요청이 처리되는 위치가 결정되며, 충돌하는 경우 리소스 경로의 이LOCATION는 무시됩니다. - TEXT_PROMPT: 모델이 생성하는 이미지를 안내하는 텍스트 프롬프트. 이 필드는 생성 및 수정 모두에서 필요합니다.
referenceType:ReferenceImage는 이미지 수정을 위한 추가 컨텍스트를 제공하는 이미지입니다. 사용 사례 수정에는 일반 RGB 원시 참고 이미지(REFERENCE_TYPE_RAW)가 필요합니다. 한 요청에 최대 1개의 원시 참고 이미지가 있을 수 있습니다. 출력 이미지의 높이와 너비는 원시 참고 이미지와 같습니다. 마스크 수정 사용 사례에는 마스크 참고 이미지(REFERENCE_TYPE_MASK)가 필요합니다.referenceId: 참고 이미지의 정수 ID입니다. 이 예시에서 두 참고 이미지 객체는 유형이 다르므로 고유한referenceId값(1및2)을 갖습니다.- B64_BASE_IMAGE: 수정하거나 확대할 기본 이미지. 이미지는 base64 인코딩 바이트 문자열로 지정되어야 합니다. 크기 제한: 10MB.
maskImageConfig.maskMode: 마스크 수정을 위한 마스크 모드입니다.MASK_MODE_BACKGROUND는 사용자 제공 마스크 없이 배경을 자동으로 마스킹하기 위해 사용됩니다.- MASK_DILATION - 부동 소수점 수. 이 마스크를 확장할 이미지 너비의 비율입니다. 전경 제품을 확장하지 않도록
0.00값을 사용하는 것이 좋습니다. 최소: 0, 최대: 1. 기본값: 0.03 - EDIT_STEPS - 정수. 기본 모델의 샘플링 단계 수입니다. 제품 이미지 수정을 위해
75단계에서 시작합니다. - EDIT_IMAGE_COUNT: 수정된 이미지의 수. 허용되는 정수 값: 1~4. 기본값: 4.
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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",
"referenceId": 2,
"maskImageConfig": {
"maskMode": "MASK_MODE_BACKGROUND",
"dilation": MASK_DILATION
}
}
]
}
],
"parameters": {
"editConfig": {
"baseSteps": EDIT_STEPS
},
"editMode": "EDIT_MODE_BGSWAP",
"sampleCount": EDIT_IMAGE_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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict" | Select-Object -Expand Content
{
"predictions": [
{
"bytesBase64Encoded": "BASE64_IMG_BYTES",
"mimeType": "image/png"
},
{
"mimeType": "image/png",
"bytesBase64Encoded": "BASE64_IMG_BYTES"
},
{
"bytesBase64Encoded": "BASE64_IMG_BYTES",
"mimeType": "image/png"
},
{
"bytesBase64Encoded": "BASE64_IMG_BYTES",
"mimeType": "image/png"
}
]
}
정의된 마스크 영역으로 수정
Imagen이 마스크를 자동으로 감지하도록 두는 대신, 교체할 영역을 사용자가 직접 마스크로 지정할 수 있습니다.
콘솔
Google Cloud 콘솔에서 Vertex AI > Vertex AI Studio 페이지로 이동합니다.
미디어 생성을 클릭합니다.
이미지를 클릭합니다.
작업 목록에서 Product-background-editing을 선택합니다.
모델 목록에서 사용할 Imagen 모델을 선택합니다.
입력 이미지에서 추가를 클릭하고 수정할 이미지를 선택하여 업로드합니다.
프롬프트 상자에 이미지를 어떻게 수정할지 설명하는 프롬프트를 입력합니다.
다음 중 하나를 수행하여 마스크를 지정합니다.
- 자체 마스크를 업로드합니다.
- 컴퓨터에서 마스크를 만듭니다.
- 업로드 마스크 가져오기를 클릭하고 업로드할 마스크를 선택합니다.
- 마스크 정의: 수정 툴바에서 마스크 도구(상자, 브러시 또는 masked_transitions 반전 도구)를 사용하여 콘텐츠를 추가할 영역을 지정합니다.
- 자체 마스크를 업로드합니다.
실행을 클릭합니다.
Python
설치
pip install --upgrade google-genai
자세한 내용은 SDK 참고 문서를 참고하세요.
Vertex AI에서 생성형 AI SDK를 사용하도록 환경 변수를 설정합니다.
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
REST
Imagen API에 대한 자세한 내용은 다음을 참고하세요.
- 메서드:
endpoints.predict VisionGenerativeModelInstanceVisionGenerativeModelParams-
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID
- LOCATION: 프로젝트의 리전. 예를 들면
us-central1,europe-west2,asia-northeast3입니다. 사용 가능한 리전 목록은 Vertex AI의 생성형 AI 위치를 참조하세요. 리전 API 엔드포인트를 사용하면 엔드포인트의 URL에 있는 리전에 따라 요청이 처리되는 위치가 결정되며, 충돌하는 경우 리소스 경로의 이LOCATION는 무시됩니다. - TEXT_PROMPT: 모델이 생성하는 이미지를 안내하는 텍스트 프롬프트. 이 필드는 생성 및 수정 모두에서 필요합니다.
referenceId: 참고 이미지의 정수 ID입니다. 이 예시에서 두 참고 이미지 객체는 유형이 다르므로 고유한referenceId값(1및2)을 갖습니다.- B64_BASE_IMAGE: 수정하거나 확대할 기본 이미지. 이미지는 base64 인코딩 바이트 문자열로 지정되어야 합니다. 크기 제한: 10MB.
- B64_MASK_IMAGE: 원본 이미지를 수정하기 위해 마스크 레이어로 사용할 흑백 이미지. 이미지는 base64 인코딩 바이트 문자열로 지정되어야 합니다. 크기 제한: 10MB.
- MASK_DILATION - 부동 소수점 수. 이 마스크를 확장할 이미지 너비의 비율입니다. 전경 제품을 확장하지 않도록
0.00값을 사용하는 것이 좋습니다. 최소: 0, 최대: 1. 기본값: 0.03 - EDIT_STEPS - 정수. 기본 모델의 샘플링 단계 수입니다. 제품 이미지 수정을 위해
75단계에서 시작합니다. - EDIT_IMAGE_COUNT: 수정된 이미지의 수. 허용되는 정수 값: 1~4. 기본값: 4.
HTTP 메서드 및 URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict
JSON 요청 본문:
{ "instances": [ { "prompt": "TEXT_PROMPT": [ { "referenceType": "REFERENCE_TYPE_RAW", "referenceId": 1, "referenceImage": { "bytesBase64Encoded": "B64_BASE_IMAGE" } }, { "referenceType": "REFERENCE_TYPE_MASK", "referenceId": 2, "referenceImage": { "bytesBase64Encoded": "B64_MASK_IMAGE" }, "maskImageConfig": { "maskMode": "MASK_MODE_USER_PROVIDED", "dilation": MASK_DILATION } } ] } ], "parameters": { "editConfig": { "baseSteps": EDIT_STEPS }, "editMode": "EDIT_MODE_BGSWAP", "sampleCount": EDIT_IMAGE_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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict" | Select-Object -Expand Content{ "predictions": [ { "bytesBase64Encoded": "BASE64_IMG_BYTES", "mimeType": "image/png" }, { "mimeType": "image/png", "bytesBase64Encoded": "BASE64_IMG_BYTES" }, { "bytesBase64Encoded": "BASE64_IMG_BYTES", "mimeType": "image/png" }, { "bytesBase64Encoded": "BASE64_IMG_BYTES", "mimeType": "image/png" } ] }
제한사항
마스크가 불완전한 경우, 경계에서 매우 작은 부분이 누락되면 모델이 전경 객체를 완성하려고 시도할 수 있습니다. 드물게는, 전경 객체가 이미 완전한 경우에도 모델이 약간 확장된 형태를 생성할 수 있습니다.
이를 해결하기 위한 방법으로, 모델 출력을 세그먼트화한 후 혼합하는 우회 방법이 있습니다. 다음은 이 우회 방법을 보여주는 Python 스니펫의 예시입니다.
blended = Image.composite(out_images[0].resize(image_expanded.size), image_expanded, mask_expanded)
다음 단계
Imagen 및 Vertex AI의 기타 생성형 AI 제품 관련 문서 읽기:
- Vertex AI에서 Imagen 3 시작을 위한 개발자 가이드
- 크리에이터를 위해 제작된 새로운 생성형 미디어 모델 및 도구
- Gemini의 새로운 기능: Imagen 3의 커스텀 젬 및 향상된 이미지 생성
- Google DeepMind: Imagen 3 - 최고 품질의 텍스트 이미지 변환 모델