Penyesuaian Terkontrol

Penyesuaian Terkontrol memungkinkan Anda membuat gambar baru berdasarkan gambar sumber atau sinyal gambar sumber (tepi canny atau coretan). Halaman ini menunjukkan cara mengirim dua jenis permintaan Penyesuaian Terkontrol:

  1. Penyesuaian Terkontrol Imagen 3 (fitur GA)

    Melihat kartu model Imagen untuk Pengeditan dan Penyesuaian

  2. Penyesuaian Terkontrol Imagen 2 - sinyal gambar sumber tepi canny atau coretan (Fitur pratinjau)

Kasus penggunaan

Penyesuaian Terkontrol Imagen 3 menawarkan perintah gaya bebas, yang dapat memberi Anda kesan bahwa model dapat melakukan lebih dari yang dilatih untuk dilakukan. Bagian berikut menjelaskan kasus penggunaan dan contoh untuk Penyesuaian Terkontrol Imagen 3.

Model ini telah dilatih untuk kasus penggunaan yang kami berikan, dan kami mengharapkan hasil yang baik saat Anda menggunakan Penyesuaian Terkontrol Imagen 3. Jika Anda mendorong model untuk merespons dengan cara yang tidak terduga, kami tidak mengharapkan hasil yang baik.

Contoh kasus penggunaan yang dimaksudkan

Berikut adalah kasus penggunaan yang dilatih untuk dilakukan oleh Penyesuaian Kustom yang Dikontrol Imagen 3 dan menghasilkan hasil yang baik:

  • Buat gambar yang mengikuti perintah dan gambar kontrol tepi canny.

  • Buat gambar yang mengikuti perintah dan gambar coretan.

  • Menata gaya foto seseorang sambil mempertahankan ekspresi wajah.

Contoh kasus penggunaan yang tidak diinginkan

Berikut adalah kasus penggunaan yang tidak dilatih oleh Penyesuaian Kustom yang Dikontrol Imagen 3 dan menghasilkan hasil yang buruk:

  • Buat gambar menggunakan gaya yang ditentukan dalam perintah.

  • Membuat gambar dari teks yang mengikuti gaya tertentu yang disediakan oleh gambar referensi, dengan tingkat kontrol tertentu pada komposisi gambar menggunakan gambar kontrol.

  • Buat gambar dari teks yang mengikuti gaya tertentu yang disediakan oleh gambar referensi, dengan beberapa tingkat kontrol pada komposisi gambar menggunakan coretan kontrol.

  • Buat gambar dari teks yang mengikuti gaya tertentu yang disediakan oleh gambar referensi, dengan beberapa tingkat kontrol pada komposisi gambar menggunakan gambar kontrol. Orang dalam gambar memiliki ekspresi wajah tertentu.

  • Menata gaya foto dua orang atau lebih, dan mempertahankan ekspresi wajah mereka.

  • Menata gaya foto hewan peliharaan, dan mengubahnya menjadi gambar. Pertahankan atau tentukan komposisi gambar (misalnya, cat air).

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.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    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.

    REST

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

      Menginstal Google Cloud CLI. Setelah penginstalan, lakukan inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      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 .

    Penulisan perintah penyesuaian

    Perintah yang Anda gunakan dengan Penyesuaian Imagen 3 dapat memengaruhi kualitas gambar yang dihasilkan. Gunakan template perintah berikut sebagai titik awal untuk menulis perintah penyesuaian. Anda mungkin perlu mengirim beberapa permintaan untuk mendapatkan output yang ditargetkan.

    Kasus penggunaan Gambar referensi Template perintah Contoh
    Penyesuaian terkontrol Peta coretan (1) Buat gambar yang sesuai dengan scribble map [1] agar cocok dengan deskripsi: ${STYLE_PROMPT} ${PROMPT}. Buat gambar yang sesuai dengan scribble map [1] agar cocok dengan deskripsi: Gambar harus bergaya lukisan cat minyak impresionistik dengan sapuan kuas yang santai. Karya ini memiliki suasana yang diterangi cahaya alami dan goresan kuas yang terlihat jelas. Tampilan samping mobil. Mobil diparkir di permukaan jalan yang basah dan memantulkan cahaya, dengan pantulan lampu kota di genangan air.
    Penyesuaian terkontrol Gambar kontrol yang cerdas (1) Buat gambar yang sesuai dengan edge map [1] agar cocok dengan deskripsi: ${STYLE_PROMPT} ${PROMPT} Buat gambar yang selaras dengan edge map [1] agar sesuai dengan deskripsi: Gambar harus bergaya lukisan cat minyak impresionis, dengan sapuan kuas yang santai. Memiliki suasana yang diterangi cahaya alami dan goresan kuas yang terlihat jelas. Tampilan samping mobil. Mobil diparkir di permukaan jalan yang basah dan memantulkan cahaya, dengan pantulan cahaya lampu kota di genangan air.
    Penataan gaya gambar orang dengan input FaceMesh Gambar subjek (1-3)

    Gambar kontrol FaceMesh (1)
    Buat gambar tentang SUBJECT_DESCRIPTION [1] dalam pose CONTROL_IMAGE [2] agar sesuai dengan deskripsi: potret SUBJECT_DESCRIPTION [1] ${PROMPT} Buat gambar tentang a woman with short hair [1] dalam pose control image [2] agar sesuai dengan deskripsi: potret a woman with short hair [1] dalam gaya kartun 3D dengan latar belakang yang diblur. Karakter yang imut dan menggemaskan, dengan wajah tersenyum, menghadap kamera, nuansa warna pastel, kualitas tinggi, 4k, mahakarya, detail super, tekstur kulit, pemetaan tekstur, bayangan lembut, pencahayaan realistis yang lembut, warna-warna cerah
    Penataan gaya gambar orang dengan input FaceMesh Gambar subjek (1-3)

    Gambar kontrol FaceMesh (1)
    Buat gambar ${STYLE_PROMPT} tentang SUBJECT_DESCRIPTION [1] dalam pose CONTROL_IMAGE [2] agar sesuai dengan deskripsi: potret SUBJECT_DESCRIPTION [1] ${PROMPT} Buat gambar gaya kartun 3D tentang a woman with short hair [1] dalam pose control image [2] agar sesuai dengan deskripsi: potret a woman with short hair [1] dalam gaya kartun 3D dengan latar belakang yang diburamkan. Karakter yang imut dan menawan dengan wajah tersenyum, menghadap kamera, nuansa warna pastel, kualitas tinggi, 4K, mahakarya, detail super, tekstur kulit, pemetaan tekstur, bayangan lembut, pencahayaan realistis lembut, warna cerah

    Mengirim permintaan Penyesuaian Terkontrol Imagen 3

    Gunakan contoh berikut untuk mengirim permintaan Penyesuaian Terkontrol Imagen 3:

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: Google Cloud Project ID 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.
    • TEXT_PROMPT: Perintah teks memandu gambar yang dihasilkan model. Untuk menggunakan Penyesuaian Terkontrol Imagen 3, sertakan referenceId dari gambar referensi kontrol yang Anda berikan dalam format [$referenceId]. Contoh:
      • Buat gambar yang sesuai dengan peta coretan [1] agar cocok dengan deskripsi: [image description].
    • BASE64_CONTROL_IMAGE: Gambar kontrol dasar (sketsa). Gambar harus ditentukan sebagai string byte berenkode base64.
      Untuk CONTROL_TYPE_SCRIBBLE: Gambar kontrol coretan yang diharapkan memiliki latar belakang hitam dan garis coretan putih. Contoh gambar kontrol coretan
      Untuk CONTROL_TYPE_CANNY: Gambar kontrol tepi Canny yang diharapkan memiliki latar belakang hitam dan tepi Canny putih. Contoh gambar kontrol tepi canny
    • CONTROL_TYPE: Jenis sinyal kontrol. Gunakan CONTROL_TYPE_CANNY untuk tepi canny. Gunakan CONTROL_TYPE_SCRIBBLE untuk coretan.
    • enableControlImageComputation: Tetapkan ke false jika Anda memberikan gambar kontrol Anda sendiri. Dalam hal ini, B64_BASE_IMAGE harus berupa gambar sinyal kontrol. Setel ke true jika Anda ingin Imagen menghitung gambar kontrol dari gambar referensi. Dalam hal ini, B64_BASE_IMAGE harus berupa gambar RGB mentah.
    • IMAGE_COUNT: Jumlah gambar yang dihasilkan. 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

    Isi JSON permintaan:

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
          "referenceImages": [
            {
              "referenceType": "REFERENCE_TYPE_CONTROL",
              "referenceId": 1,
              "referenceImage": {
                "bytesBase64Encoded": "BASE64_CONTROL_IMAGE"
              },
              "controlImageConfig": {
                "controlType": "CONTROL_TYPE",
                "enableControlImageComputation": false
              }
            }
          ]
        }
      ],
      "parameters": {
        "sampleCount": 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"
        }
      ]
    }
    

    Python

    Coret-coret

    from google import genai
    from google.genai.types import ControlReferenceConfig, ControlReferenceImage, EditImageConfig, Image
    
    client = genai.Client()
    
    # TODO(developer): Update and un-comment below line
    # output_gcs_uri = "gs://your-bucket/your-prefix"
    
    # Create a reference image out of an existing scribble image signal
    # using https://storage.googleapis.com/cloud-samples-data/generative-ai/image/car_scribble.png
    control_reference_image = ControlReferenceImage(
        reference_id=1,
        reference_image=Image(gcs_uri="gs://cloud-samples-data/generative-ai/image/car_scribble.png"),
        config=ControlReferenceConfig(control_type="CONTROL_TYPE_SCRIBBLE"),
    )
    
    image = client.models.edit_image(
        model="imagen-3.0-capability-001",
        prompt="an oil painting showing the side of a red car[1]",
        reference_images=[control_reference_image],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_CONTROLLED_EDITING",
            number_of_images=1,
            seed=1,
            safety_filter_level="BLOCK_MEDIUM_AND_ABOVE",
            person_generation="ALLOW_ADULT",
            output_gcs_uri=output_gcs_uri,
        ),
    )
    
    # Example response:
    # gs://your-bucket/your-prefix
    print(image.generated_images[0].image.gcs_uri)

    Tepi Canny

    from google import genai
    from google.genai.types import ControlReferenceConfig, ControlReferenceImage, EditImageConfig, Image
    
    client = genai.Client()
    
    # TODO(developer): Update and un-comment below line
    # output_gcs_uri = "gs://your-bucket/your-prefix"
    
    # Create a reference image out of an existing canny edge image signal
    # using https://storage.googleapis.com/cloud-samples-data/generative-ai/image/car_canny.png
    control_reference_image = ControlReferenceImage(
        reference_id=1,
        reference_image=Image(gcs_uri="gs://cloud-samples-data/generative-ai/image/car_canny.png"),
        config=ControlReferenceConfig(control_type="CONTROL_TYPE_CANNY"),
    )
    
    image = client.models.edit_image(
        model="imagen-3.0-capability-001",
        prompt="a watercolor painting of a red car[1] driving on a road",
        reference_images=[control_reference_image],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_CONTROLLED_EDITING",
            number_of_images=1,
            seed=1,
            safety_filter_level="BLOCK_MEDIUM_AND_ABOVE",
            person_generation="ALLOW_ADULT",
            output_gcs_uri=output_gcs_uri,
        ),
    )
    
    # Example response:
    # gs://your-bucket/your-prefix
    print(image.generated_images[0].image.gcs_uri)

    Mengirim permintaan Penyesuaian Terkontrol Imagen 2

    Gambar input Parameter lainnya Output gambar
    input catur
    Gambar input. Sumber gambar: Alec Cutter di Unsplash.

    Perintah: "versi seni digital"

    Perintah negatif: "hitam putih"

    Jenis gambar panduan: RGB Standar

    Kondisi kontrol: tepi canny

    Skala Kontrol Imagen: 0,95

    output bergaya
    input catur
    Gambar input. Sumber gambar: Alec Cutter di Unsplash
    (deteksi tepi Canny diterapkan).

    Perintah: "versi seni digital"

    Perintah negatif: "hitam putih"

    Jenis gambar panduan: canny edge

    Skala Kontrol Imagen: 0,95

    output bergaya

    Gunakan contoh berikut untuk mengirim permintaan Penyesuaian Terkontrol Imagen 2:

    Konsol

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

      Buka Media Studio

    2. Di panel tugas di bagian bawah, klik Edit gambar.

    3. Klik Upload untuk memilih gambar yang disimpan secara lokal yang akan diedit.

    4. Di bagian Mode pada panel Parameter, klik Kontrol.

    5. Opsional. Ubah Jumlah hasil, berikan Perintah negatif, atau ubah Opsi lanjutan > Wilayah.

    6. Di bagian Opsi lanjutan, pilih Jenis gambar panduan: RGB standar, Canny edge, atau Scribble.

    7. Di bagian Opsi lanjutan, pilih Kondisi kontrol: Canny edge atau Scribble.

    8. Di kolom perintah (Tulis perintah Anda...), berikan perintah teks.

    9. Klik Generate.

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: Google Cloud Project ID Anda.
    • TEXT_PROMPT: Perintah teks yang memandu gambar yang dihasilkan model. Kolom ini wajib diisi untuk pembuatan dan pengeditan.
    • B64_BASE_IMAGE: Gambar dasar yang akan diedit atau di-upscale. Gambar harus ditentukan sebagai string byte berenkode base64. Batas ukuran: 10 MB.
    • EDIT_IMAGE_COUNT: Jumlah gambar yang diedit. Nilai default: 4.
    • NEGATIVE_PROMPT: Perintah negatif untuk membantu membuat gambar. Misalnya: "hewan" (menghapus hewan), "blur" (memperjelas gambar), "teks" (menghapus teks), atau "terpangkas" (menghapus gambar yang dipangkas).
    • CONDITION: string. Jenis sinyal gambar kontrol yang diberikan. Nilai: cannyEdges atau scribble.
    • CONTROL_SCALE: float. Kekuatan sinyal gambar kontrol. Nilai: 0.0 - 1.0. Nilai default: 0.95. Rentang yang direkomendasikan: 0.9 - 1.0.
    • SAMPLING_STEPS: integer. Jumlah langkah pengambilan sampel. Nilai: 1 - 30. Default: 16.
    • COMPUTE_CONDITION_MAP: boolean. Apakah akan menghitung peta kondisi dari gambar input dasar Anda. Jika disetel ke false, layanan mengharapkan gambar input berupa coretan atau tepi canny, dan gambar diberikan langsung ke model. Jika disetel ke true, layanan mengharapkan gambar input berupa gambar RGB, dan layanan dapat menghitung tepi canny atau informasi coretan dari gambar input Anda berdasarkan conditionName. Kemudian, layanan ini menyediakan peta kondisi yang diproses ke model untuk pengeditan gambar. Saat Anda memberikan gambar coretan, gambar tersebut harus memiliki latar belakang hitam dan garis putih menggambarkan objek yang akan dibuat. Default: false.

    Metode HTTP dan URL:

    POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagen-2.0-edit-preview-0627:predict

    Isi JSON permintaan:

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
          "image": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        }
      ],
      "parameters": {
        "sampleCount": EDIT_IMAGE_COUNT,
        "negativePrompt": "NEGATIVE_PROMPT",
        "controlPluginConfig":  {
          "conditions": [
            {
              "conditionName": "CONDITION",
              "controlScale": CONTROL_SCALE,
              "samplingSteps": SAMPLING_STEPS,
              "computeConditionMap": COMPUTE_CONDITION_MAP
            }
          ]
        }
      }
    }
    

    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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagen-2.0-edit-preview-0627: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://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/imagen-2.0-edit-preview-0627: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"
        }
      ]
    }
    

    Penggunaan produk

    Untuk melihat standar penggunaan dan batasan konten yang terkait dengan Imagen di Vertex AI, lihat panduan penggunaan.

    Versi model

    Ada beberapa model pembuatan gambar yang dapat Anda gunakan. Untuk mengetahui informasi selengkapnya, lihat Model Imagen.

    Langkah berikutnya

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