이미지 캡셔닝을 사용하여 이미지 설명 가져오기

시각적 캡셔닝을 사용하면 이미지와 관련된 설명을 생성할 수 있습니다. 이 정보를 다양한 용도로 사용할 수 있습니다.

  • 저장 및 검색을 위해 이미지에 대한 보다 자세한 메타데이터를 가져옵니다.
  • 접근성 사용 사례를 지원하도록 자동 캡셔닝을 생성합니다.
  • 제품 및 시각적 애셋에 대한 빠른 설명을 확인합니다.
자막 처리된 샘플 이미지

이미지 소스: Unsplash산토시 쿠마르(자르기)

자막(짧은 형식): 흰색 물방울 무늬가 있는 파란색 셔츠가 고리에 걸려 있음

지원 언어

시각적 캡셔닝은 다음 언어로 제공됩니다.

  • 영어(en)
  • 프랑스어(fr)
  • 독일어(de)
  • 이탈리아어(it)
  • 스페인어(es)

성능 및 제한사항

모델을 사용할 때 다음 한도가 적용됩니다.

한도
프로젝트별 분당 최대 API 요청 수(짧은 형식) 500
응답으로 반환되는 최대 토큰 수(짧은 형식) 토큰 64개
요청에 허용되는 최대 토큰 수(VQA 짧은 형식만) 토큰 80개
응답으로 반환되는 최대 토큰 수(긴 형식) 토큰 512개

이 모델을 사용할 때 다음 서비스 지연 시간 추정치가 적용됩니다. 이러한 값은 설명을 위한 것이며 서비스가 보장되지 않습니다.

지연 시간
API 요청(짧은 형식) 1.5초
API 요청(긴 형식) 4.5초

위치

위치는 데이터가 영구 저장되는 위치를 제어하기 위해 요청에서 지정할 수 있는 리전입니다. 사용 가능한 리전 목록은 Vertex AI의 생성형 AI 위치를 참조하세요.

짧은 형식의 이미지 자막 가져오기

다음 샘플을 사용하여 이미지에 짧은 형식의 자막을 생성합니다.

콘솔

  1. Google Cloud 콘솔의 Vertex AI 대시보드에서 Vertex AI Studio > 비전 탭을 엽니다.

    Vertex AI Studio 탭으로 이동

  2. 하단 메뉴에서 자막을 클릭합니다.

  3. 이미지 업로드를 클릭하여 자막을 추가할 로컬 이미지를 선택합니다.

  4. 매개변수 패널에서 자막 수언어를 선택합니다.

  5. 자막 생성을 클릭합니다.

REST

imagetext 모델 요청에 대한 자세한 내용은 imagetext 모델 API 참조를 확인하세요.

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

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • LOCATION: 프로젝트의 리전입니다. 예를 들면 us-central1, europe-west2, asia-northeast3입니다. 사용 가능한 리전 목록은 Vertex AI의 생성형 AI 위치를 참조하세요.
  • B64_IMAGE: 자막을 가져올 이미지입니다. 이미지는 base64 인코딩 바이트 문자열로 지정되어야 합니다. 크기 제한: 10MB.
  • RESPONSE_COUNT: 생성할 이미지 자막의 수입니다. 허용되는 정수 값: 1~3.
  • LANGUAGE_CODE: 지원되는 언어 코드 중 하나입니다. 지원되는 언어는 다음과 같습니다.
    • 영어(en)
    • 프랑스어(fr)
    • 독일어(de)
    • 이탈리아어(it)
    • 스페인어(es)

HTTP 메서드 및 URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagetext:predict

JSON 요청 본문:

{
  "instances": [
    {
      "image": {
          "bytesBase64Encoded": "B64_IMAGE"
      }
    }
  ],
  "parameters": {
    "sampleCount": RESPONSE_COUNT,
    "language": "LANGUAGE_CODE"
  }
}

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

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/imagetext: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/imagetext:predict" | Select-Object -Expand Content
다음은 "sampleCount": 2가 포함된 요청의 샘플 응답입니다. 응답은 예측 문자열 2개를 반환합니다.

영어(en):

{
  "predictions": [
    "a yellow mug with a sheep on it sits next to a slice of cake",
    "a cup of coffee with a heart shaped latte art next to a slice of cake"
  ],
  "deployedModelId": "DEPLOYED_MODEL_ID",
  "model": "projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID",
  "modelDisplayName": "MODEL_DISPLAYNAME",
  "modelVersionId": "1"
}

스페인어(es):

{
  "predictions": [
    "una taza de café junto a un plato de pastel de chocolate",
    "una taza de café con una forma de corazón en la espuma"
  ]
}

Python

이 샘플을 사용해 보기 전에 Vertex AI 빠른 시작: 클라이언트 라이브러리 사용Python 설정 안내를 따르세요. 자세한 내용은 Vertex AI Python API 참고 문서를 참조하세요.

Vertex AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.

이 샘플에서는 load_from_file 메서드를 사용하여 로컬 파일을 기본 Image로 참조해 자막을 가져옵니다. 기본 이미지를 지정한 후 ImageTextModel에서 get_captions 메서드를 사용하고 출력을 인쇄합니다.


import argparse

import vertexai
from vertexai.preview.vision_models import Image, ImageTextModel

def get_short_form_image_captions(
    project_id: str, location: str, input_file: str
) -> list:
    """Get short-form captions for a local image.
    Args:
      project_id: Google Cloud project ID, used to initialize Vertex AI.
      location: Google Cloud region, used to initialize Vertex AI.
      input_file: Local path to the input image file."""

    vertexai.init(project=project_id, location=location)

    model = ImageTextModel.from_pretrained("imagetext@001")
    source_img = Image.load_from_file(location=input_file)

    captions = model.get_captions(
        image=source_img,
        # Optional parameters
        language="en",
        number_of_results=1,
    )

    print(captions)

    return captions

이미지 캡셔닝 매개변수 사용

이미지 자막을 가져오면 사용 사례에 따라 여러 매개변수를 설정할 수 있습니다.

알림당 결과 수

결과 수 매개변수를 사용하여 전송하는 요청마다 반환되는 자막 양을 제한합니다. 자세한 내용은 imagetext(이미지 캡셔닝) 모델 API 참조를 확인하세요.

시드 번호

생성된 설명을 확정하도록 요청에 추가하는 숫자입니다. 요청에 시드 번호를 추가하면 매번 같은 예측(설명)을 가져올 수 있습니다. 그러나 이미지 자막은 반드시 동일한 순서로 반환되지 않습니다. 자세한 내용은 imagetext(이미지 캡셔닝) 모델 API 참조를 확인하세요.

다음 단계