Menyisipkan objek ke dalam gambar menggunakan inpaint

Halaman ini menjelaskan cara menyisipkan objek ke dalam gambar, sebuah proses yang juga dikenal sebagai inpainting. Imagen di Vertex AI memungkinkan Anda menentukan area mask untuk menyisipkan objek ke dalam gambar. Anda dapat membawa mask sendiri, atau Anda dapat mengizinkan Imagen membuat mask untuk Anda.

Model berikut mendukung penyisipan objek ke dalam gambar:

Contoh penyisipan konten

Dengan inpainting, Anda dapat menggunakan gambar dasar, mask gambar, dan perintah teks untuk menambahkan konten ke gambar yang ada.

Input

Gambar dasar* yang akan diedit Area mask yang ditentukan menggunakan alat di konsol Google Cloud Perintah teks
Contoh gambar dasar. Stoples kaca berisi cairan merah dengan
           irisan lemon di sampingnya dan sedotan yang mencuat. Irisan lemon terlihat di latar depan kiri Gambar dasar botol kaca, kini dengan area mask yang ditentukan di
           konsol Cloud stroberi

* Kredit gambar: Alex Lvrs di Unsplash.

Output setelah menentukan area mask di Google Cloud konsol

Screenshot dari hasil edit yang dihasilkan dari botol kaca berisi cairan merah. Dalam screenshot ini, irisan lemon yang sebelumnya berada di latar depan gambar diganti dengan dua stroberi tepat di depan toples. Screenshot dari hasil edit yang dihasilkan dari stoples kaca berisi cairan merah. Dalam screenshot ini, irisan lemon yang sebelumnya berada di
           latar depan gambar diganti dengan tiga stroberi di sebelah kiri
           stoples. Screenshot dari hasil edit yang dihasilkan dari stoples kaca berisi cairan merah. Dalam screenshot ini, irisan lemon yang sebelumnya berada di latar depan gambar diganti dengan dua stroberi, sedikit di depan dan di sebelah kiri toples.

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 .

Menyisipkan dengan area mask yang ditentukan

Gunakan contoh berikut untuk mengirim permintaan pengeditan gambar menggunakan model Imagen 3.

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 Inpaint-add.

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

  6. Di Input image, klik Add dan pilih gambar yang sedang Anda edit untuk diupload.

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

  8. Lakukan salah satu hal berikut untuk menentukan mask:

    • Mengupload topeng Anda sendiri:
      1. Buat masker di komputer Anda.
      2. Klik upload Impor mask, lalu pilih mask yang akan diupload.
    • Tentukan mask Anda: di toolbar pengeditan, gunakan alat mask (kotak, kuas, atau masked_transitions alat inversi) untuk menentukan area yang akan ditambahi konten.
  9. Klik Run.

REST

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

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • REGION: Region tempat project Anda berada. Untuk mengetahui informasi selengkapnya tentang region yang didukung, lihat Lokasi AI Generatif di Vertex AI.
  • PROJECT_ID: Google Cloud Project ID Anda.
  • TEXT_PROMPT: Opsional. Perintah teks untuk memandu gambar yang dihasilkan model. Untuk hasil terbaik, gunakan deskripsi area yang dimasking dan hindari perintah satu kata. Misalnya, gunakan "corgi lucu", bukan "corgi".
  • B64_BASE_IMAGE: Gambar yang sedang diedit yang dienkode base64 dan berukuran 10 MB atau kurang. Untuk mengetahui informasi selengkapnya tentang encoding base64, lihat Mengenkode dan mendekode file base64.
  • B64_MASK_IMAGE: Gambar mask hitam putih berenkode base64 yang berukuran 10 MB atau kurang.
  • MASK_DILATION: Opsional. Nilai float antara 0 dan 1, inklusif, yang merepresentasikan persentase lebar gambar untuk memperbesar mask. Penggunaan dilation membantu mengimbangi mask yang tidak akurat. Sebaiknya gunakan nilai 0.01.
  • EDIT_STEPS: Opsional. Bilangan bulat yang mewakili jumlah langkah pengambilan sampel. Nilai yang lebih tinggi menawarkan kualitas gambar yang lebih baik, nilai yang lebih rendah menawarkan latensi yang lebih baik.

    Sebaiknya coba 35 langkah untuk memulai. Jika kualitasnya tidak memenuhi persyaratan Anda, sebaiknya naikkan nilai ke batas atas 75.

  • SAMPLE_COUNT: Opsional. Bilangan bulat yang menjelaskan jumlah gambar yang akan dibuat. Rentang nilai yang diterima adalah 1-4. Nilai defaultnya adalah 4.

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT",
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_RAW",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_MASK",
          "referenceImage": {
            "bytesBase64Encoded": "B64_MASK_IMAGE"
          },
          "maskImageConfig": {
            "maskMode": "MASK_MODE_USER_PROVIDED",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_INPAINT_INSERTION",
    "sampleCount": SAMPLE_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://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/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://REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/publishers/google/models/imagen-3.0-capability-001:predict" | Select-Object -Expand Content
Contoh respons berikut adalah untuk permintaan dengan "sampleCount": 2. Respons menampilkan dua objek prediksi, dengan byte gambar generatif berenkode base64.
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

Menyisipkan dengan deteksi masker otomatis

Gunakan contoh berikut untuk menentukan inpainting guna menyisipkan konten. Dalam contoh ini, Anda menentukan gambar dasar dan perintah teks. Imagen secara otomatis mendeteksi dan membuat area mask untuk mengubah gambar dasar.

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 Inpaint-add.

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

  6. Di Input image, klik Add dan pilih gambar yang sedang Anda edit untuk diupload.

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

  8. Di toolbar pengeditan, klik background_replaceEkstrak mask.

  9. Pilih salah satu opsi ekstraksi mask:

    • Elemen latar belakang: mendeteksi elemen latar belakang dan membuat masker di sekitarnya.

    • Elemen latar depan: mendeteksi objek latar depan dan membuat mask di sekitarnya.

    • background_replace Orang: mendeteksi orang dan membuat mask di sekelilingnya.

  10. Klik Run.

REST

Untuk mengetahui informasi selengkapnya tentang Imagen API, lihat bagian 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.
  • TEXT_PROMPT: Perintah teks memandu gambar yang dihasilkan model. Saat Anda menggunakan perintah untuk penyisipan inpainting, gunakan deskripsi area yang disamarkan untuk mendapatkan hasil terbaik. Hindari perintah satu kata. Misalnya, gunakan "corgi yang lucu", bukan "corgi".
  • B64_BASE_IMAGE: Gambar dasar yang akan diedit atau ditingkatkan skalanya. Gambar harus ditentukan sebagai string byte berenkode base64. Batas ukuran: 10 MB.
  • MASK_MODE - String yang menetapkan jenis pembuatan mask otomatis yang digunakan model. Nilai yang tersedia:
    • MASK_MODE_BACKGROUND: Membuat mask secara otomatis menggunakan segmentasi latar belakang.
    • MASK_MODE_FOREGROUND: Otomatis membuat mask menggunakan segmentasi latar depan.
    • MASK_MODE_SEMANTIC: Secara otomatis membuat mask menggunakan segmentasi semantik berdasarkan segmentasi kelas yang Anda tentukan dalam array maskImageConfig.maskClasses. Contoh:
                "maskImageConfig": {
                  "maskMode": "MASK_MODE_SEMANTIC",
                  "maskClasses": [175, 176], // bicycle, car
                  "dilation": 0.01
                }
              
  • MASK_DILATION - float. Persentase lebar gambar untuk memperluas masker ini. Nilai 0.01 direkomendasikan untuk mengompensasi mask input yang tidak sempurna.
  • EDIT_STEPS - bilangan bulat. Jumlah langkah pengambilan sampel untuk model dasar. Untuk penyisipan inpainting, mulai dari 35 langkah. Tingkatkan langkah ke batas atas 75 jika kualitasnya tidak memenuhi persyaratan Anda. Meningkatkan langkah juga akan meningkatkan latensi permintaan.
  • 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": "TEXT_PROMPT",
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_RAW",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_MASK",
          "referenceId": 2,
          "maskImageConfig": {
            "maskMode": "MASK_MODE",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_INPAINT_INSERTION",
    "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

Bagian berikut menjelaskan batasan fitur hapus objek Imagen.

Piksel yang dimodifikasi

Model ini menghasilkan piksel pada resolusinya sendiri (misalnya, 1024x1024), yang mungkin berbeda dengan resolusi gambar input. Artinya, gambar yang dihasilkan mungkin memiliki sedikit perubahan yang tidak ada pada gambar aslinya.

Untuk mempertahankan gambar dengan sempurna, sebaiknya gabungkan gambar yang dihasilkan dengan gambar input menggunakan mask. Biasanya, jika resolusi gambar input adalah 2K atau lebih tinggi, gambar generatif dan gambar input harus digabungkan.

Batasan penyisipan

Meskipun objek yang disisipkan biasanya cocok dengan gaya gambar dasar, beberapa kata kunci dapat menghasilkan hasil seperti kartun, bukan output fotorealistik.

Misalnya, perintah untuk "jerapah kuning" dapat menghasilkan gambar kartun karena jerapah secara alami berwarna cokelat dan krem. Membuat gambar fotorealistis dengan warna yang tidak alami bisa jadi sulit.

Langkah berikutnya

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