제어된 맞춤설정

제어된 맞춤설정을 사용하면 소스 이미지나 소스 이미지 신호(캐니 윤곽선 또는 낙서)를 기반으로 새 이미지를 만들 수 있습니다. 이 페이지에서는 두 가지 유형의 제어된 맞춤설정 요청을 전송하는 방법을 보여줍니다.

  1. Imagen 3 제어된 맞춤설정(GA 기능)

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

  2. Imagen 2 제어된 맞춤설정 - 캐니 윤곽선 또는 낙서 소스 이미지 신호(프리뷰 기능)

사용 사례

Imagen 3 제어된 맞춤설정은 모델이 학습한 것보다 더 많은 작업을 할 수 있다는 인상을 줄 수 있는 자유 형식의 프롬프트를 제공합니다. 다음 섹션에서는 Imagen 3 제어된 맞춤설정의 사용 사례와 예시를 설명합니다.

이 모델은 Google에서 제공하는 사용 사례를 기반으로 학습되었으며, Imagen 3 제어된 맞춤설정을 사용하면 좋은 결과를 기대할 수 있습니다. 모델이 예상치 못한 방식으로 응답하도록 푸시하면 좋은 결과를 기대할 수 없습니다.

의도된 사용 사례의 예시

다음은 Imagen 3 제어된 맞춤설정이 학습하고 좋은 결과를 만들어내는 사용 사례입니다.

  • 프롬프트 및 캐니니지 에지 컨트롤 이미지를 따르는 이미지를 생성합니다.

  • 프롬프트와 낙서 이미지에 따라 이미지를 생성합니다.

  • 얼굴 표정을 유지하면서 사람의 사진에 스타일을 지정합니다.

의도하지 않은 사용 사례의 예시

다음은 Imagen 3 제어된 맞춤설정이 학습되지 않았으며 좋지 않은 결과를 생성하는 사용 사례입니다.

  • 프롬프트에 지정된 스타일을 사용하여 이미지를 생성합니다.

  • 참조 이미지에서 제공하는 특정 스타일을 따르는 텍스트에서 이미지를 생성하고, 제어 이미지를 사용하여 이미지 구성을 어느 정도 제어합니다.

  • 참조 이미지에서 제공하는 특정 스타일을 따르는 텍스트에서 이미지를 생성하고 컨트롤 낙서를 사용하여 이미지 구성을 어느 정도 제어합니다.

  • 참조 이미지에서 제공하는 특정 스타일을 따르는 텍스트에서 이미지를 생성하고, 제어 이미지를 사용하여 이미지 구성을 어느 정도 제어합니다. 이미지 속 인물은 특정 표정을 짓고 있습니다.

  • 2명 이상의 인물 사진을 스타일링하고 얼굴 표정을 보존합니다.

  • 반려동물 사진을 스타일화하여 그림으로 변환하세요. 이미지의 구성을 보존하거나 지정합니다(예: 수채화).

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Enable the API

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

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    REST

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

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

    맞춤설정 프롬프트 작성

    Imagen 3 맞춤설정에 사용하는 프롬프트는 생성된 이미지의 품질에 영향을 줄 수 있습니다. 다음 프롬프트 템플릿을 맞춤설정 프롬프트 작성을 위한 시작점으로 사용하세요. 타겟팅된 출력을 얻으려면 여러 요청을 전송해야 할 수 있습니다.

    사용 사례 참조 이미지 프롬프트 템플릿
    제어된 맞춤설정 낙서 지도(1) 다음 설명과 일치하도록 scribble map [1]에 맞춰 이미지 생성: ${STYLE_PROMPT} ${PROMPT}. 다음 설명과 일치하도록 scribble map [1]에 맞춰 이미지 생성: 이미지는 편안한 붓 터치가 있는 인상주의 유화 스타일이어야 합니다. 자연광이 비치는 분위기와 눈에 띄는 붓놀림이 특징입니다. 자동차의 사이드뷰입니다. 그의 차는 도시의 불빛이 웅덩이에 반사되는 젖은 반사 노면에 주차되어 있습니다.
    제어된 맞춤설정 캐니 컨트롤 이미지(1) 다음 설명과 일치하도록 edge map [1]에 맞춰 이미지 생성: ${STYLE_PROMPT} ${PROMPT} 다음 설명과 일치하도록 edge map [1]에 맞춰 이미지 생성. 이미지는 편안한 붓 터치가 있는 인상주의 유화 스타일이어야 합니다. 자연광이 비치는 분위기와 눈에 띄는 붓놀림이 특징입니다. 자동차의 사이드뷰입니다. 그의 차는 도시의 불빛이 웅덩이에 반사되는 젖은 반사 노면에 주차되어 있습니다.
    FaceMesh 입력을 통한 사람 이미지 스타일 지정 피사체 이미지(1-3)

    얼굴 메시 대조 이미지(1)
    설명과 일치하는 CONTROL_IMAGE [2]의 포즈로 SUBJECT_DESCRIPTION [1]에 관한 이미지를 만들어 줘: SUBJECT_DESCRIPTION [1]의 초상화 ${PROMPT} 다음 설명과 일치하도록 a woman with short hair [1] 이미지 생성: control image [2]의 포즈를 취한 a woman with short hair [1]의 초상화로 배경이 흐리게 처리된 3D 만화 스타일 카메라를 향하고 있으며, 미소 짓는 얼굴을 가진 귀엽고 사랑스러운 캐릭터, 파스텔 색조, 고품질, 4K, 걸작, 슈퍼 디테일, 피부 질감, 텍스처 매핑, 부드러운 그림자, 부드럽고 사실적인 조명, 생생한 색상
    FaceMesh 입력을 통한 사람 이미지 스타일 지정 피사체 이미지(1-3)

    얼굴 메시 대조 이미지(1)
    설명과 일치하도록 CONTROL_IMAGE [2]의 포즈로 SUBJECT_DESCRIPTION [1]에 관한 ${STYLE_PROMPT} 이미지 생성: SUBJECT_DESCRIPTION [1]의 초상화 ${PROMPT} 설명과 일치하는 control image [2]의 포즈를 취한 a woman with short hair [1]에 관한 3D 만화 스타일 이미지 생성: a woman with short hair [1]의 초상화로 배경이 흐리게 처리된 3D 만화 스타일 카메라를 향하고 웃는 얼굴을 한 귀엽고 사랑스러운 캐릭터, 파스텔 색조, 고품질, 4K, 걸작, 슈퍼 디테일, 피부 질감, 텍스처 매핑, 부드러운 그림자, 부드럽고 사실적인 조명, 생생한 색상

    Imagen 3 제어된 맞춤설정 요청 전송

    다음 샘플을 사용하여 Imagen 3 제어된 맞춤설정 요청을 전송합니다.

    REST

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

    • PROJECT_ID: Google Cloud 프로젝트 ID
    • LOCATION: 프로젝트의 리전입니다. 예를 들면 us-central1, europe-west2, asia-northeast3입니다. 사용 가능한 리전 목록은 Vertex AI의 생성형 AI 위치를 참조하세요.
    • TEXT_PROMPT: 모델이 생성하는 이미지를 안내하는 텍스트 프롬프트입니다. Imagen 3 제어된 맞춤설정을 사용하려면 제공한 컨트롤 참고 이미지의 referenceId[$referenceId] 형식으로 포함합니다. 예를 들면 다음과 같습니다.
      • 설명과 일치하도록 낙서 지도 [1]에 맞는는 이미지를 생성합니다. [image description].
    • BASE64_CONTROL_IMAGE: 기본 컨트롤 이미지(스케치)입니다. 이미지는 base64 인코딩 바이트 문자열로 지정되어야 합니다.
      CONTROL_TYPE_SCRIBBLE의 경우 예상되는 낙서 컨트롤 이미지에는 검은색 배경과 흰색 낙서 선이 있습니다. 샘플 낙서 컨트롤 이미지
      CONTROL_TYPE_CANNY의 경우 예상되는 캐니 윤곽선 컨트롤 이미지에는 검은색 배경과 흰색 캐니 윤곽선이 있습니다. 샘플 캐니 윤곽선 컨트롤 이미지
    • CONTROL_TYPE: 컨트롤 신호의 유형입니다. 캐니 윤곽선에 CONTROL_TYPE_CANNY를 사용합니다. 낙서에 CONTROL_TYPE_SCRIBBLE을 사용합니다.
    • enableControlImageComputation: 자체 컨트롤 이미지를 제공하는 경우 false로 설정합니다. 이 경우 B64_BASE_IMAGE는 컨트롤 신호 이미지여야 합니다. Imagen이 컨트롤 이미지에서 참고 이미지를 계산하도록 하려면 true로 설정합니다. 이 경우 B64_BASE_IMAGE는 원시 RGB 이미지여야 합니다.
    • 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_CONTROL",
              "referenceId": 1,
              "referenceImage": {
                "bytesBase64Encoded": "BASE64_CONTROL_IMAGE"
              },
              "controlImageConfig": {
                "controlType": "CONTROL_TYPE",
                "enableControlImageComputation": false
              }
            }
          ]
        }
      ],
      "parameters": {
        "sampleCount": 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"
        }
      ]
    }
    

    Python

    자유곡선

    from google import genai
    from google.genai.types import ControlReferenceConfig, ControlReferenceImage, EditImageConfig, Image
    
    client = genai.Client()
    
    # TODO(developer): Update and un-comment below line
    # output_gcs_uri = "gs://your-bucket/your-prefix"
    
    # Create a reference image out of an existing scribble image signal
    # using https://storage.googleapis.com/cloud-samples-data/generative-ai/image/car_scribble.png
    control_reference_image = ControlReferenceImage(
        reference_id=1,
        reference_image=Image(gcs_uri="gs://cloud-samples-data/generative-ai/image/car_scribble.png"),
        config=ControlReferenceConfig(control_type="CONTROL_TYPE_SCRIBBLE"),
    )
    
    image = client.models.edit_image(
        model="imagen-3.0-capability-001",
        prompt="an oil painting showing the side of a red car[1]",
        reference_images=[control_reference_image],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_CONTROLLED_EDITING",
            number_of_images=1,
            seed=1,
            safety_filter_level="BLOCK_MEDIUM_AND_ABOVE",
            person_generation="ALLOW_ADULT",
            output_gcs_uri=output_gcs_uri,
        ),
    )
    
    # Example response:
    # gs://your-bucket/your-prefix
    print(image.generated_images[0].image.gcs_uri)

    캐니 에지

    from google import genai
    from google.genai.types import ControlReferenceConfig, ControlReferenceImage, EditImageConfig, Image
    
    client = genai.Client()
    
    # TODO(developer): Update and un-comment below line
    # output_gcs_uri = "gs://your-bucket/your-prefix"
    
    # Create a reference image out of an existing canny edge image signal
    # using https://storage.googleapis.com/cloud-samples-data/generative-ai/image/car_canny.png
    control_reference_image = ControlReferenceImage(
        reference_id=1,
        reference_image=Image(gcs_uri="gs://cloud-samples-data/generative-ai/image/car_canny.png"),
        config=ControlReferenceConfig(control_type="CONTROL_TYPE_CANNY"),
    )
    
    image = client.models.edit_image(
        model="imagen-3.0-capability-001",
        prompt="a watercolor painting of a red car[1] driving on a road",
        reference_images=[control_reference_image],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_CONTROLLED_EDITING",
            number_of_images=1,
            seed=1,
            safety_filter_level="BLOCK_MEDIUM_AND_ABOVE",
            person_generation="ALLOW_ADULT",
            output_gcs_uri=output_gcs_uri,
        ),
    )
    
    # Example response:
    # gs://your-bucket/your-prefix
    print(image.generated_images[0].image.gcs_uri)

    Imagen 2 제어된 맞춤설정 요청 전송

    입력 이미지 기타 매개변수 출력 이미지
    체스 입력
    입력 이미지. 이미지 출처: UnsplashAlec Cutter

    프롬프트: '디지털 아트 버전'

    부정 프롬프트: '흑백'

    가이드 이미지 유형: 표준 RGB

    제어 조건: 캐니 윤곽선

    Imagen 제어 스케일: 0.95

    스타일이 지정된 출력
    체스 입력
    입력 이미지. 이미지 출처: UnsplashAlec Cutter
    (캐니 윤곽선 감지 적용).

    프롬프트: '디지털 아트 버전'

    부정 프롬프트: '흑백'

    가이드 이미지 유형: 캐니 윤곽선

    Imagen 제어 스케일: 0.95

    스타일이 지정된 출력

    다음 샘플을 사용하여 Imagen 2 제어된 맞춤설정 요청을 전송합니다.

    콘솔

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

      Media Studio로 이동

    2. 하단 태스크 패널에서 이미지 수정을 클릭합니다.

    3. 업로드를 클릭하여 로컬에 저장된 이미지를 선택해 수정합니다.

    4. 파라미터 패널의 모드 섹션에서 제어를 클릭합니다.

    5. 선택사항. 결과 수를 수정하거나 부정 프롬프트를 제공하거나 고급 옵션 > 리전을 수정합니다.

    6. 고급 옵션 섹션에서 가이드 이미지 유형(표준 RGB, 캐니 윤곽선 또는 낙서)을 선택합니다.

    7. 고급 옵션 섹션에서 조건 제어(캐니 윤곽선 또는 낙서)를 선택합니다.

    8. 프롬프트 필드(프롬프트 작성...)에 텍스트 프롬프트를 입력합니다.

    9. 생성을 클릭합니다.

    REST

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

    • PROJECT_ID: Google Cloud 프로젝트 ID
    • TEXT_PROMPT: 모델이 생성하는 이미지를 안내하는 텍스트 프롬프트. 이 필드는 생성 및 수정 모두에서 필요합니다.
    • B64_BASE_IMAGE: 수정하거나 확대할 기본 이미지. 이미지는 base64 인코딩 바이트 문자열로 지정되어야 합니다. 크기 제한: 10MB.
    • EDIT_IMAGE_COUNT: 수정된 이미지의 수. 기본값: 4
    • NEGATIVE_PROMPT: 이미지를 생성하는 데 도움이 되는 네거티브 프롬프트입니다. 예를 들면 '동물'(동물 제거), '흐림'(이미지 선명화), '텍스트'(텍스트 제거) 또는 '자르기'(잘린 이미지 제거) 등입니다.
    • CONDITION: string. 제공된 제어 이미지 신호의 유형입니다. 값: cannyEdges 또는 scribble.
    • CONTROL_SCALE: float. 제어 이미지 신호 강도입니다. 값: 0.0~1.0 기본값은 0.95입니다. 권장 범위: 0.9~1.0
    • SAMPLING_STEPS: integer. 샘플링 단계 수입니다. 값: 1~30 기본값: 16
    • COMPUTE_CONDITION_MAP: boolean. 기본 입력 이미지에서 조건 맵을 계산할지 여부입니다. false로 설정하면 서비스는 입력 이미지로 낙서나 캐니 윤곽선을 예상하며 이미지가 모델에 직접 제공됩니다. true로 설정하면 서비스는 입력 이미지로 RGB 이미지를 예상하고 conditionName을 기반으로 입력 이미지에서 캐니 윤곽선 또는 낙서 정보를 계산합니다. 그런 다음 서비스는 이미지 편집을 위해 처리된 조건 맵을 모델에 제공합니다. 낙서 이미지를 제공하는 경우 배경은 검은색이어야 하며 생성할 객체를 흰색 선으로 묘사해야 합니다. 기본값은 false입니다.

    HTTP 메서드 및 URL:

    POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagen-2.0-edit-preview-0627:predict

    JSON 요청 본문:

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
          "image": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        }
      ],
      "parameters": {
        "sampleCount": EDIT_IMAGE_COUNT,
        "negativePrompt": "NEGATIVE_PROMPT",
        "controlPluginConfig":  {
          "conditions": [
            {
              "conditionName": "CONDITION",
              "controlScale": CONTROL_SCALE,
              "samplingSteps": SAMPLING_STEPS,
              "computeConditionMap": COMPUTE_CONDITION_MAP
            }
          ]
        }
      }
    }
    

    요청을 보내려면 다음 옵션 중 하나를 선택합니다.

    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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagen-2.0-edit-preview-0627: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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagen-2.0-edit-preview-0627:predict" | Select-Object -Expand Content
    다음은 "sampleCount": 2 요청에 대한 샘플 응답입니다. 응답은 생성된 이미지 바이트를 base64로 인코딩한 두 개의 예측 객체를 반환합니다.
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        }
      ]
    }
    

    제품 사용량

    Vertex AI 기반 Imagen과 관련된 사용량 표준과 콘텐츠 제한을 보려면 사용 가이드라인을 참조하세요.

    모델 버전

    사용할 수 있는 이미지 생성 모델은 여러 가지가 있습니다. 자세한 내용은 Imagen 모델을 참조하세요.

    다음 단계

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