Menghapus objek dari gambar menggunakan inpaint

Halaman ini menjelaskan cara menghapus objek dari gambar menggunakan area mask, sebuah proses yang juga dikenal sebagai inpainting. Anda dapat memberikan masker Anda sendiri atau membiarkan Imagen membuatnya untuk Anda.

Contoh penghapusan konten

Contoh berikut menggunakan inpainting dan mask gambar untuk menghapus konten dari gambar yang ada:

Input

Gambar dasar* yang akan diedit

Area mask yang ditentukan menggunakan alat di konsol Google Cloud

Perintah teks

Contoh gambar dasar sofa merah dengan sekantong lemon di sebelah kanan dan bantal dekoratif di sudut kiri. Sofa diletakkan
           pada sudut, dengan satu kaki diletakkan di karpet putih. Di
           depan sofa di atas karpet area terdapat dua buah lemon. Gambar dasar contoh sofa merah ditampilkan, dengan area yang di-masking ditentukan untuk sekantong lemon di sofa dan dua lemon di karpet.

Perintah: Hapus objek yang dipilih dari gambar

* Kredit gambar: Inside Weather di Unsplash.

Output setelah menentukan area mask di konsol Google Cloud

Contoh gambar yang diedit menampilkan sofa dan karpet dalam contoh input
           tanpa lemon Contoh gambar yang diedit menampilkan sofa dan karpet dalam contoh input
           tanpa lemon Contoh gambar yang diedit menampilkan sofa dan karpet dalam contoh input
           tanpa lemon

Melihat kartu model Imagen untuk Pengeditan dan Penyesuaian

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. 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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Siapkan autentikasi untuk lingkungan Anda.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    Python

    Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      Instal Google Cloud CLI.

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

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan pengembangan lokal dalam dokumentasi autentikasi Google Cloud .

    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 .

    Menghapus dengan area mask yang ditentukan

    Gunakan contoh berikut untuk menentukan inpainting guna menghapus konten. Dalam contoh ini, Anda menentukan gambar dasar, perintah teks, dan area mask untuk mengubah gambar dasar.

    Konsol

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

    <a href="https://console.cloud.google.com/vertex-ai/studio/media/generate;tab=image" class="button button-primary"
    target="console" track-name="consoleLink" track-type="task">Go to Media
    Studio</a>
    
    1. Klik Upload. Di dialog file yang ditampilkan, pilih file yang akan diupload.

    2. Klik Perbaiki.

    3. Di panel Parameter, klik Inpaint (Hapus).

    4. Lakukan salah satu hal berikut:

      • Mengupload topeng Anda sendiri:

        1. Buat masker di komputer Anda.

        2. Klik Upload mask. Pada dialog yang ditampilkan, pilih masker untuk diupload.

      • Tentukan mask Anda sendiri: di toolbar pengeditan, gunakan alat mask (kotak, kuas, atau alat inversi masked_transitions) untuk menentukan area yang akan ditambahi konten.

    5. Opsional: Di panel Parameters, sesuaikan opsi berikut:

      • Model: model Imagen yang akan digunakan

      • Jumlah hasil: jumlah hasil yang akan dihasilkan

      • Perintah negatif: item yang harus dihindari saat membuat gambar

    6. Pada kolom perintah, masukkan perintah untuk mengubah gambar.

    7. Klik Generate.

    Python

    Instal

    pip install --upgrade google-genai

    Untuk mempelajari lebih lanjut, lihat dokumentasi referensi SDK.

    Tetapkan variabel lingkungan untuk menggunakan Gen AI SDK dengan Vertex AI:

    # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
    # with appropriate values for your project.
    export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
    export GOOGLE_CLOUD_LOCATION=us-central1
    export GOOGLE_GENAI_USE_VERTEXAI=True

    from google import genai
    from google.genai.types import (
        RawReferenceImage,
        MaskReferenceImage,
        MaskReferenceConfig,
        EditImageConfig,
    )
    
    client = genai.Client()
    
    # TODO(developer): Update and un-comment below line
    # output_file = "output-image.png"
    
    raw_ref = RawReferenceImage(
        reference_image=Image.from_file(location="test_resources/fruit.png"),
        reference_id=0,
    )
    mask_ref = MaskReferenceImage(
        reference_id=1,
        reference_image=Image.from_file(location="test_resources/fruit_mask.png"),
        config=MaskReferenceConfig(
            mask_mode="MASK_MODE_USER_PROVIDED",
            mask_dilation=0.01,
        ),
    )
    
    image = client.models.edit_image(
        model="imagen-3.0-capability-001",
        prompt="",
        reference_images=[raw_ref, mask_ref],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_INPAINT_REMOVAL",
        ),
    )
    
    image.generated_images[0].image.save(output_file)
    
    print(f"Created output image using {len(image.generated_images[0].image.image_bytes)} bytes")
    # Example response:
    # Created output image using 1234567 bytes
    

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: Project ID Anda. Google Cloud
    • 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.
    • prompt: Untuk perluasan 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 ada gambar referensi mentah, 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 memperlebar masker ini. Nilai 0.03 direkomendasikan untuk perluasan gambar. 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"
        }
      ]
    }
    

    Menghapus dengan deteksi masker otomatis

    Gunakan contoh berikut untuk menentukan inpainting guna menghapus 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 > Media Studio.

    <a href="https://console.cloud.google.com/vertex-ai/studio/media/generate;tab=image" class="button button-primary"
    target="console" track-name="consoleLink" track-type="task">Go to Media
    Studio</a>
    
    1. Klik Upload. Di dialog file yang ditampilkan, pilih file yang akan diupload.

    2. Klik Perbaiki.

    3. Di panel Parameter, klik Inpaint (Hapus).

    4. Di toolbar pengeditan, klik background_replaceEkstrak.

      Pilih salah satu opsi ekstraksi mask:

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

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

      • background_replaceOrang: mendeteksi orang dan membuat mask di sekelilingnya.

    5. Opsional: Di panel Parameters, sesuaikan opsi berikut:

      • Model: model Imagen yang akan digunakan

      • Jumlah hasil: jumlah hasil yang akan dihasilkan

      • Perintah negatif: item yang harus dihindari saat membuat gambar

    6. Pada kolom perintah, masukkan perintah baru untuk mengubah gambar.

    7. Klik sendGenerate.

    Python

    Instal

    pip install --upgrade google-genai

    Untuk mempelajari lebih lanjut, lihat dokumentasi referensi SDK.

    Tetapkan variabel lingkungan untuk menggunakan Gen AI SDK dengan Vertex AI:

    # Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
    # with appropriate values for your project.
    export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
    export GOOGLE_CLOUD_LOCATION=us-central1
    export GOOGLE_GENAI_USE_VERTEXAI=True

    from google import genai
    from google.genai.types import (
        RawReferenceImage,
        MaskReferenceImage,
        MaskReferenceConfig,
        EditImageConfig,
    )
    
    client = genai.Client()
    
    # TODO(developer): Update and un-comment below line
    # output_file = "output-image.png"
    
    raw_ref = RawReferenceImage(
        reference_image=Image.from_file(location="test_resources/fruit.png"),
        reference_id=0,
    )
    mask_ref = MaskReferenceImage(
        reference_id=1,
        reference_image=None,
        config=MaskReferenceConfig(
            mask_mode="MASK_MODE_FOREGROUND",
        ),
    )
    
    image = client.models.edit_image(
        model="imagen-3.0-capability-001",
        prompt="",
        reference_images=[raw_ref, mask_ref],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_INPAINT_REMOVAL",
        ),
    )
    
    image.generated_images[0].image.save(output_file)
    
    print(f"Created output image using {len(image.generated_images[0].image.image_bytes)} bytes")
    # Example response:
    # Created output image using 1234567 bytes
    

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: Project ID Anda. Google Cloud
    • 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.
    • prompt: Untuk hasil terbaik, hilangkan perintah dan negativePrompt saat Anda menggunakan inpainting untuk penghapusan.
    • B64_BASE_IMAGE: Gambar dasar yang akan diedit atau di-upscale. Gambar harus ditentukan sebagai string byte berenkode base64. Batas ukuran: 10 MB.
    • MASK_MODE - String yang menetapkan jenis pembuatan masker otomatis yang digunakan model. Nilai yang tersedia:
      • MASK_MODE_BACKGROUND: Membuat mask secara otomatis menggunakan segmentasi latar belakang. Gunakan setelan ini untuk mengubah konten latar belakang.
      • MASK_MODE_FOREGROUND: Membuat mask secara otomatis menggunakan segmentasi latar depan. Gunakan setelan ini untuk mengubah konten latar depan, seperti menghapus objek latar depan ini (penghapusan menggunakan inpainting).
      • 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 memperlebar 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 penghapusan inpainting, mulai dari 12 langkah. Tingkatkan langkah ke batas atas 75 jika kualitas 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": "",
          "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_REMOVAL",
        "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

    Piksel yang dihasilkan oleh model yang tidak ada dalam mask dihasilkan pada resolusi model (misalnya, 1024x1024) dan tidak dijamin identik dengan input. Hal ini dapat menyebabkan sedikit perubahan pada gambar yang dihasilkan.

    Untuk mempertahankan kualitas gambar yang sempurna, sebaiknya gabungkan gambar yang dibuat dengan gambar input menggunakan mask. Pencampuran biasanya diperlukan jika resolusi gambar input adalah 2K atau lebih tinggi.

    Batasan penghapusan

    Objek kecil yang berdekatan dengan mask juga dapat dihapus. Untuk hasil terbaik, buat masker seakurat mungkin.

    Menghapus area langit yang luas dalam gambar luar ruangan dapat menyebabkan artefak yang tidak diinginkan. Untuk hasil terbaik, sebaiknya berikan perintah.

    Langkah berikutnya

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