시각적 질의 응답(VQA)을 사용하여 이미지 정보 가져오기

시각적 질의 응답(VQA)을 사용하면 모델에 이미지를 제공하고 이미지 콘텐츠에 대해 질문할 수 있습니다. 질문에 대한 응답으로 자연어 답변을 하나 이상 받습니다.

콘솔의 샘플 VQA 이미지, 질문, 답변
이미지 소스(Google Cloud 콘솔에 표시): 샤론 피타웨이(출처: Unsplash)
프롬프트 질문: 이미지에 포함된 객체는 무엇인가요?
답변 1: 구슬
답변 2: 유리 구슬

지원 언어

VQA는 다음 언어로 제공됩니다.

  • 영어(en)

성능 및 제한사항

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

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

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

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

위치

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

이미지에 VQA 사용(짧은 형식 응답)

다음 샘플을 사용하여 질문하고 이미지에 대한 답변을 얻습니다.

콘솔

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

    Vertex AI Studio 탭으로 이동

  2. 하단 메뉴에서 시각적 Q&A를 클릭합니다.

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

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

  5. 프롬프트 필드에 업로드된 이미지에 대한 질문을 입력합니다.

  6. 제출을 클릭합니다.

REST

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

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

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • LOCATION: 프로젝트의 리전입니다. 예를 들면 us-central1, europe-west2, asia-northeast3입니다. 사용 가능한 리전 목록은 Vertex AI의 생성형 AI 위치를 참조하세요.
  • VQA_PROMPT: 이미지에 대한 답변을 받는 질문
    • 이 신발은 무슨 색인가요?
    • 셔츠의 소매 유형은 무엇인가요?
  • B64_IMAGE: 자막을 가져올 이미지입니다. 이미지는 base64 인코딩 바이트 문자열로 지정되어야 합니다. 크기 제한: 10MB
  • RESPONSE_COUNT: 생성하려는 답변의 수. 허용되는 정수 값: 1~3.

HTTP 메서드 및 URL:

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

JSON 요청 본문:

{
  "instances": [
    {
      "prompt": "VQA_PROMPT",
      "image": {
          "bytesBase64Encoded": "B64_IMAGE"
      }
    }
  ],
  "parameters": {
    "sampleCount": RESPONSE_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/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"prompt": "What is this?"가 포함된 요청에 대한 응답입니다. 응답은 예측 문자열 답변 2개를 반환합니다.
{
  "predictions": [
    "cappuccino",
    "coffee"
  ],
  "deployedModelId": "DEPLOYED_MODEL_ID",
  "model": "projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID",
  "modelDisplayName": "MODEL_DISPLAYNAME",
  "modelVersionId": "1"
}

Python

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

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

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


import argparse

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

def get_short_form_image_responses(
    project_id: str, location: str, input_file: str, question: str
) -> list:
    """Get short-form responses to a question about 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.
      question: The question about the contents of the image."""

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

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

    answers = model.ask_question(
        image=source_img,
        question=question,
        # Optional parameters
        number_of_results=1,
    )

    print(answers)

    return answers

VQA 매개변수 사용

VQA 응답을 가져오면 사용 사례에 따라 여러 매개변수를 설정할 수 있습니다.

알림당 결과 수

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

시드 번호

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

다음 단계