아웃페인팅을 사용하여 이미지 콘텐츠 확장

이 페이지에서는 아웃페인팅을 사용하여 이미지 콘텐츠를 더 큰 영역이나 다른 크기의 영역으로 확장하는 방법을 설명합니다.

다음 모델은 아웃페인팅을 지원합니다.

아웃페인팅 예시

아웃페인팅은 기본 이미지 콘텐츠를 더 크거나 크기가 다른 마스크 캔버스에 맞게 확장하는 마스크 기반 수정 방법입니다.

샘플 기본 이미지
마스크 이미지(타겟) 크기와 일치하도록 이미지 패딩이 있는 원본 이미지.
이미지 출처: Unsplash의 카리 셰어
샘플 마스크 이미지
원본 이미지 픽셀 크기와 위치를 표시하여 타겟 출력 크기를 이미지에 마스킹합니다.
샘플 출력 이미지
아웃페인팅 출력 이미지(프롬프트 없음)

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

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  8. 환경에 대한 인증을 설정하세요.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스하는 경우 인증을 설정할 필요가 없습니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치합니다.

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

    자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참조하세요.

이미지 콘텐츠 확장

다음 코드 샘플을 사용하여 기존 이미지 콘텐츠를 확장합니다.

콘솔

  1. Google Cloud 콘솔에서 Vertex AI > Vertex AI Studio 페이지로 이동합니다.

    Vertex AI Studio로 이동

  2. 미디어 생성을 클릭합니다.

  3. 이미지를 클릭합니다.

  4. 작업 목록에서 아웃페인팅을 선택합니다.

  5. 모델 목록에서 사용할 Imagen 모델을 선택합니다.

  6. 입력 이미지에서 추가를 클릭하고 수정 중인 이미지를 선택하여 업로드합니다.

  7. 프롬프트 상자에 이미지를 어떻게 수정할지 설명하는 프롬프트를 입력합니다.

  8. 가로세로 비율 메뉴에서 가로세로 비율을 선택합니다.

    • crop_square 정사각형
    • crop_16_9 16:9
    • crop_9_16 9:16
    • crop_landscape 4:3
    • crop_portrait 3:4
    • 전체 화면 맞춤
  9. 편집 툴바에서 이미지의 위치를 선택합니다.

    • 왼쪽 정렬:
    • 가로 중앙 정렬:
    • 오른쪽 정렬:
    • 상단 정렬:
    • 세로 중앙 정렬:
    • 하단 정렬:
  10. 실행을 클릭합니다.

REST

Imagen API에 대한 자세한 내용은 다음을 참조하세요.

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

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • LOCATION: 프로젝트의 리전. 예를 들면 us-central1, europe-west2, asia-northeast3입니다. 사용 가능한 리전 목록은 Vertex AI의 생성형 AI 위치를 참조하세요. 리전 API 엔드포인트를 사용하는 경우 엔드포인트의 URL에 있는 리전이 요청이 처리되는 위치를 결정하며, 충돌하는 경우 리소스 경로의 이 LOCATION는 무시됩니다.
  • prompt: 이미지 아웃페인팅의 경우 빈 문자열을 제공하여 수정된 이미지를 만들 수 있습니다. 프롬프트를 제공하도록 선택한 경우 최상의 결과를 얻으려면 마스크 처리된 영역의 설명을 사용하세요. 예를 들어 '파란 하늘 삽입' 대신 '파란 하늘'을 사용합니다.
  • referenceType: ReferenceImage는 이미지 수정을 위한 추가 컨텍스트를 제공하는 이미지입니다. 사용 사례 수정에는 일반 RGB 원시 참고 이미지(REFERENCE_TYPE_RAW)가 필요합니다. 한 요청에 최대 1개의 원시 참고 이미지가 있을 수 있습니다. 출력 이미지의 높이와 너비는 원시 참고 이미지와 같습니다. 마스크 수정 사용 사례에는 마스크 참고 이미지(REFERENCE_TYPE_MASK)가 필요합니다. 원시 참고 이미지가 있는 경우 마스크 이미지는 원시 참고 이미지와 높이와 너비가 같아야 합니다. 마스크 참고 이미지가 비어 있고 maskMode가 MASK_MODE_USER_PROVIDED로 설정되지 않은 경우 마스크는 원시 참고 이미지를 토대로 계산됩니다.
  • B64_BASE_IMAGE: 수정하거나 확대할 기본 이미지. 이미지는 base64 인코딩 바이트 문자열로 지정되어야 합니다. 크기 제한: 10MB.
  • B64_OUTPAINTING_MASK: 원본 이미지를 수정하기 위해 마스크 레이어로 사용할 흑백 이미지. 마스크 해상도는 입력 이미지 해상도와 같아야 합니다. 출력 이미지 해상도는 입력 이미지 해상도와 같습니다. 이 마스크 이미지는 base64로 인코딩된 바이트 문자열로 지정되어야 합니다. 크기 제한: 10MB
  • MASK_DILATION - 부동 소수점 수. 이 마스크를 확장할 이미지 너비의 비율입니다. 아웃페인팅에는 0.03 값이 권장됩니다. "dilation": 0.0으로 설정하면 확장 지점에 명확한 테두리가 생기거나 흰색 테두리 효과가 발생할 수 있습니다.
  • EDIT_STEPS - 정수. 기본 모델의 샘플링 단계 수입니다. 아웃페인팅의 경우 35 단계에서 시작합니다. 품질이 요구사항을 충족하지 않으면 단계를 늘립니다.
  • 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": "",
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_RAW",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_MASK",
          "referenceId": 2,
          "referenceImage": {
            "bytesBase64Encoded": "B64_OUTPAINTING_MASK"
          },
          "maskImageConfig": {
            "maskMode": "MASK_MODE_USER_PROVIDED",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_OUTPAINT",
    "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
다음은 "sampleCount": 2 요청에 대한 샘플 응답입니다. 응답은 생성된 이미지 바이트를 base64로 인코딩한 두 개의 예측 객체를 반환합니다.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

제한사항

아웃페인팅된 이미지를 원본 이미지 크기의 200% 이상으로 확장하면 모델이 왜곡된 세부정보를 생성할 수 있습니다. 권장사항에 따라 아웃페인팅된 이미지에 알파 블렌딩을 수행하는 후처리 단계를 추가하는 것이 좋습니다.

다음 코드는 후처리의 예시입니다.

parameters = {
   "editConfig": {
       "outpaintingConfig": {
         "blendingMode": "alpha-blending",
         "blendingFactor": 0.01,
       },
   },
}

다음 단계

Imagen 및 Vertex AI의 기타 생성형 AI 제품 관련 문서 읽기: