Memperluas konten gambar menggunakan perluasan

Halaman ini menjelaskan cara menggunakan outpainting untuk memperluas konten gambar ke area yang lebih besar atau area dengan dimensi yang berbeda.

Model berikut mendukung outpainting:

Contoh outpainting

Outpainting adalah metode pengeditan berbasis mask yang memperluas konten gambar dasar agar sesuai dengan kanvas mask yang lebih besar atau berukuran berbeda.

contoh gambar dasar
Gambar asli dengan padding gambar agar sesuai dengan ukuran gambar mask (target).
Sumber gambar: Kari Shea di Unsplash.
contoh gambar masker
Gambar mask dimensi output target, dengan dimensi dan lokasi piksel gambar asli yang ditandai.
contoh gambar output
Gambar output outpainting (tanpa perintah).

Melihat kartu model Imagen for Editing and Customization

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  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. Siapkan autentikasi untuk lingkungan Anda.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan konsol Google Cloud untuk mengakses layanan Google Cloud dan API, Anda tidak perlu menyiapkan autentikasi.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .

Memperluas konten gambar

Gunakan contoh kode berikut untuk memperluas konten gambar yang sudah ada.

Konsol

  1. Di konsol Google Cloud , buka halaman Vertex AI > Vertex AI Studio .

    Buka Vertex AI Studio

  2. Klik Buat media.

  3. Klik Gambar.

  4. Dari daftar Task, pilih Outpaint.

  5. Dari daftar Model, pilih model Imagen yang akan digunakan.

  6. Di Gambar input, klik Tambahkan dan pilih gambar yang sedang Anda edit untuk diupload.

  7. Di kotak Perintah, masukkan perintah yang menjelaskan cara mengedit gambar.

  8. Di menu rasio aspek, pilih rasio aspek:

    • crop_square Persegi
    • crop_16_9 16:9
    • crop_9_16 9:16
    • crop_landscape 4:3
    • crop_portrait 3:4
    • fullscreen Kustom
  9. Di toolbar pengeditan, pilih penempatan gambar Anda:

    • Rata kiri:
    • Penyejajaran tengah horizontal:
    • Ratakan kanan:
    • Sejajarkan atas:
    • Perataan tengah vertikal:
    • Sejajarkan bawah:
  10. Klik Run.

REST

Untuk mengetahui informasi selengkapnya tentang Imagen API, lihat referensi berikut:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: Project ID Google Cloud Anda.
  • LOCATION: Region project Anda. Misalnya, us-central1, europe-west2, atau asia-northeast3. Untuk mengetahui daftar region yang tersedia, lihat Lokasi AI Generatif di Vertex AI. Saat endpoint API regional digunakan, wilayah dari URL endpoint menentukan tempat permintaan diproses, dan LOCATION di jalur resource ini diabaikan jika bertentangan.
  • prompt: Untuk outpainting gambar, Anda dapat memberikan string kosong untuk membuat gambar yang diedit. Jika Anda memilih untuk memberikan perintah, gunakan deskripsi area yang ditutupi untuk mendapatkan hasil terbaik. Misalnya, "langit biru", bukan "masukkan langit biru".
  • referenceType: ReferenceImage adalah gambar yang memberikan konteks tambahan untuk pengeditan gambar. Gambar referensi mentah RGB normal (REFERENCE_TYPE_RAW) diperlukan untuk kasus penggunaan pengeditan. Maksimal satu gambar referensi mentah dapat ada dalam satu permintaan. Gambar output memiliki tinggi dan lebar yang sama dengan gambar referensi mentah. Gambar referensi mask (REFERENCE_TYPE_MASK) diperlukan untuk kasus penggunaan pengeditan dengan mask. Jika gambar referensi mentah ada, gambar mask harus memiliki tinggi dan lebar yang sama dengan gambar referensi mentah. Jika gambar referensi mask kosong dan maskMode tidak disetel ke MASK_MODE_USER_PROVIDED, mask dihitung berdasarkan gambar referensi mentah.
  • B64_BASE_IMAGE: Gambar dasar yang akan diedit atau di-upscale. Gambar harus ditentukan sebagai string byte berenkode base64. Batas ukuran: 10 MB.
  • B64_OUTPAINTING_MASK: Gambar hitam putih yang ingin Anda gunakan sebagai lapisan mask untuk mengedit gambar asli. Masker harus memiliki resolusi yang sama dengan gambar input. Gambar output akan memiliki resolusi yang sama dengan gambar input. Gambar mask ini harus ditentukan sebagai string byte berenkode base64. Batas ukuran: 10 MB.
  • MASK_DILATION - float. Persentase lebar gambar untuk mendilatasi masker ini. Nilai 0.03 direkomendasikan untuk outpainting. Menetapkan "dilation": 0.0 dapat menghasilkan batas yang jelas di titik ekstensi, atau dapat menyebabkan efek batas putih.
  • EDIT_STEPS - bilangan bulat. Jumlah langkah pengambilan sampel untuk model dasar. Untuk outpainting, mulai dari 35 langkah. Tingkatkan langkah jika kualitasnya tidak memenuhi persyaratan Anda.
  • EDIT_IMAGE_COUNT - Jumlah gambar yang diedit. Nilai bilangan bulat yang diterima: 1-4. Nilai default: 4.

Metode HTTP dan URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict

Meminta isi 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
  }
}

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/imagen-3.0-capability-001: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/imagen-3.0-capability-001:predict" | Select-Object -Expand Content
Contoh respons berikut adalah untuk permintaan dengan "sampleCount": 2. Respons ini menampilkan dua objek prediksi, dengan byte gambar yang dihasilkan berenkode base64.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

Batasan

Jika gambar yang diperluas berukuran 200% atau lebih dari ukuran gambar asli, model mungkin menghasilkan detail yang terdistorsi. Sebagai praktik terbaik, sebaiknya tambahkan langkah pasca-pemrosesan untuk menjalankan alpha blending pada gambar yang diperluas.

Kode berikut adalah contoh pasca-pemrosesan:

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

Langkah berikutnya

Baca artikel tentang Imagen dan produk AI Generatif lainnya di Vertex AI: