Gunakan Visual Question Answering (VQA) untuk mendapatkan informasi gambar

Dengan Visual Question Answering (VQA), Anda dapat memberikan gambar ke model dan mengajukan pertanyaan tentang konten gambar. Sebagai jawaban atas pertanyaan Anda, Anda akan mendapatkan satu atau lebih jawaban dengan bahasa yang wajar.

Contoh gambar, pertanyaan, dan jawaban VQA di konsol
Sumber gambar (ditampilkan di Konsol Google Cloud): Sharon Pittaway di Unsplash
Pengajuan pertanyaan: Objek apa yang ada dalam gambar?
Jawaban 1: kelereng
Jawaban 2: kelereng kaca

Bahasa yang didukung

VQA tersedia dalam bahasa berikut:

  • Inggris (en)

Performa dan batasan

Batas berikut berlaku saat Anda menggunakan model ini:

Batas Nilai
Jumlah maksimum permintaan API (format pendek) per menit per project 500
Jumlah maksimum token yang ditampilkan sebagai respons (format pendek) 64 token
Jumlah maksimum token yang diterima dalam permintaan (khusus video pendek VQA) 80 token
Jumlah maksimum token yang ditampilkan sebagai respons (format panjang) 512 token

Estimasi latensi layanan berikut berlaku saat Anda menggunakan model ini. Nilai ini dimaksudkan sebagai ilustrasi dan bukan merupakan jaminan layanan:

Latensi Nilai
Permintaan API (format pendek) 1,5 detik
Permintaan API (berdurasi panjang) 4,5 detik

Lokasi

Lokasi adalah region yang dapat Anda tentukan dalam permintaan untuk mengontrol tempat data disimpan dalam penyimpanan. Untuk mengetahui daftar region yang tersedia, lihat AI Generatif di lokasi Vertex AI.

Menggunakan VQA pada gambar (respons bentuk pendek)

Gunakan contoh berikut untuk mengajukan pertanyaan dan mendapatkan jawaban tentang gambar.

Konsol

  1. Di konsol Google Cloud, buka tab Vertex AI Studio > Vision di dasbor Vertex AI.

    Buka tab Vertex AI Studio

  2. Di menu bawah, klik Tanya Jawab Visual.

  3. Klik Upload gambar untuk memilih gambar lokal Anda untuk diberi teks.

  4. Di panel Parameters, pilih Jumlah teks dan Language.

  5. Pada kolom perintah, masukkan pertanyaan tentang gambar yang Anda upload.

  6. Klik Submit.

REST

Untuk mengetahui informasi selengkapnya tentang permintaan model imagetext, lihat referensi API model imagetext.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project Google Cloud Anda.
  • LOCATION: Region project Anda. Misalnya, us-central1, europe-west2, atau asia-northeast3. Untuk mengetahui daftar region yang tersedia, lihat Generative AI di lokasi Vertex AI.
  • VQA_PROMPT: Pertanyaan tentang gambar yang jawabannya ingin Anda peroleh.
    • Apa warna sepatu ini?
    • Lengan jenis apa yang digunakan di kemeja ini?
  • B64_IMAGE: Gambar yang akan diberi teks. Gambar harus ditentukan sebagai string byte berenkode Base64. Batas ukuran: 10 MB.
  • RESPONSE_COUNT: Jumlah jawaban yang ingin Anda hasilkan. Nilai bilangan bulat yang diterima: 1-3.

Metode HTTP dan URL:

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

Isi JSON permintaan:

{
  "instances": [
    {
      "prompt": "VQA_PROMPT",
      "image": {
          "bytesBase64Encoded": "B64_IMAGE"
      }
    }
  ],
  "parameters": {
    "sampleCount": RESPONSE_COUNT
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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
Contoh respons berikut adalah untuk permintaan dengan "sampleCount": 2 dan "prompt": "What is this?". Tanggapannya akan menampilkan dua jawaban string prediksi.
{
  "predictions": [
    "cappuccino",
    "coffee"
  ]
}

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Dalam contoh ini, Anda menggunakan metode load_from_file untuk mereferensikan file lokal sebagai Image dasar untuk mendapatkan informasi. Setelah menentukan image dasar, Anda dapat menggunakan metode ask_question pada ImageTextModel dan mencetak jawabannya.


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

Menggunakan parameter untuk VQA

Saat mendapatkan respons VQA, ada beberapa parameter yang dapat Anda tetapkan, bergantung pada kasus penggunaan Anda.

Jumlah hasil

Gunakan parameter jumlah hasil untuk membatasi jumlah respons yang ditampilkan untuk setiap permintaan yang Anda kirim. Untuk mengetahui informasi selengkapnya, lihat referensi API model imagetext (VQA).

Nomor seed

Angka yang Anda tambahkan ke permintaan untuk membuat respons yang dihasilkan menjadi deterministik. Menambahkan nomor seed dengan permintaan Anda adalah cara untuk memastikan bahwa Anda mendapatkan prediksi (respons) yang sama setiap kali. Namun, jawabannya tidak harus dikembalikan dalam urutan yang sama. Untuk mengetahui informasi selengkapnya, lihat referensi API model imagetext (VQA).

Langkah selanjutnya