Objekte mit Inpainting in ein Bild einfügen

Auf dieser Seite wird beschrieben, wie Sie Objekte in ein Bild einfügen. Dieser Vorgang wird auch als Inpainting bezeichnet. Mit Imagen in Vertex AI können Sie einen Maskenbereich angeben, um Objekte in ein Bild einzufügen. Sie können Ihre eigene Maske verwenden oder Imagen eine Maske für Sie generieren lassen.

Beispiel für das Einfügen von Inhalten

Beim Inpainting können Sie ein Basisbild, eine Bildmaske und einen Text-Prompt verwenden, um einem vorhandenen Bild Inhalte hinzuzufügen.

Eingaben

Basisbild* zum Bearbeiten Mit Tools in der Google Cloud Console angegebener Maskenbereich Text-Prompt
Ein Beispiel für ein Basis-Image. Ein Glas enthält eine rote Flüssigkeit mit einer Zitronenscheibe an der Seite und einem Strohhalm. Im linken Vordergrund sind Zitronenscheiben zu sehen. Das Basisbild eines Glasgefäßes, jetzt mit einem in der Cloud Console angegebenen Maskenbereich Erdbeeren

* Bildnachweis: Alex Lvrs auf Unsplash

Ausgabe nach Angabe eines Maskenbereichs in der Google Cloud -Konsole

Ein Screenshot einer generierten Bearbeitung eines Glasbehälters mit einer roten Flüssigkeit. Auf diesem Screenshot wurden die Zitronenscheiben, die sich zuvor im Vordergrund des Bildes befanden, durch zwei Erdbeeren direkt vor dem Glas ersetzt. Ein Screenshot einer generierten Bearbeitung eines Glasgefäßes mit einer roten Flüssigkeit. Auf diesem Screenshot wurden die Zitronenscheiben, die sich zuvor im Vordergrund des Bildes befanden, durch drei Erdbeeren links neben dem Glas ersetzt. Ein Screenshot einer generierten Bearbeitung eines Glasbehälters mit einer roten Flüssigkeit. Auf diesem Screenshot wurden die Zitronenscheiben, die sich zuvor im Vordergrund des Bildes befanden, durch zwei Erdbeeren ersetzt, die sich leicht vor und links vom Glas befinden.

Modellkarte für Imagen for Editing and Customization ansehen

Hinweise

  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. Richten Sie die Authentifizierung für Ihre Umgebung ein.

    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

    Wenn Sie die Python -Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten Sie dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.

      Installieren Sie die Google Cloud CLI.

      Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

      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.

    Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter ADC für eine lokale Entwicklungsumgebung einrichten.

    REST

    Wenn Sie die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, verwenden Sie die Anmeldedaten, die Sie der gcloud CLI bereitstellen.

      Installieren Sie die Google Cloud CLI.

      Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

    Weitere Informationen finden Sie in der Dokumentation zur Google Cloud -Authentifizierung unter Für die Verwendung von REST authentifizieren.

    Mit definiertem Maskenbereich einfügen

    Verwenden Sie die folgenden Beispiele, um eine Inpainting-Anfrage mit dem Imagen 3-Modell zu senden.

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Vertex AI > Media Studio auf.

    <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. Klicken Sie auf Hochladen und wählen Sie eine Datei aus, die Sie hochladen möchten.

    2. Klicken Sie auf Inpaint.

      Führen Sie einen der folgenden Schritte aus:

      • Eigene Maske hochladen:

        1. Erstellen Sie eine Maske auf Ihrem Computer.

        2. Klicken Sie auf Maske hochladen und wählen Sie eine Maske zum Hochladen aus.

      • Maske definieren: Verwenden Sie in der Bearbeitungssymbolleiste die Maskentools (Feld, Pinsel oder masked_transitions-Invertierungstool), um den Bereich oder die Bereiche anzugeben, in denen Inhalte hinzugefügt werden sollen.

    3. Optional: Passen Sie im Bereich Parameter die folgenden Optionen an:

      • Modell: Das zu verwendende Imagen-Modell.

      • Anzahl der Ergebnisse: Die Anzahl der zu generierenden Ergebnisse.

      • Negativer Prompt: Beschreiben Sie, was Sie aus den generierten Bildern ausschließen möchten.

    4. Geben Sie im Prompt-Feld einen Prompt zum Ändern des Bildes ein.

    5. Klicken Sie auf Erstellen.

    Python

    Installieren

    pip install --upgrade google-genai

    Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

    Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

    # 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="A plate of cookies",
        reference_images=[raw_ref, mask_ref],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_INPAINT_INSERTION",
        ),
    )
    
    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

    Ersetzen Sie diese Werte in den folgenden Anfragedaten:

    • REGION: Die Region, in der sich Ihr Projekt befindet. Weitere Informationen zu unterstützten Regionen finden Sie unter Generative AI in Vertex AI-Standorten.
    • PROJECT_ID: Ihre Google Cloud -Projekt-ID.
    • TEXT_PROMPT: Optional. Ein Text-Prompt, der die vom Modell generierten Bilder steuert. Die besten Ergebnisse erzielen Sie, wenn Sie eine Beschreibung des maskierten Bereichs verwenden und Prompts mit nur einem Wort vermeiden. Verwenden Sie beispielsweise „ein süßer Corgi“ anstelle von „Corgi“.
    • B64_BASE_IMAGE: Ein base64-codiertes Bild des bearbeiteten Bildes mit einer Größe von maximal 10 MB. Weitere Informationen zur Base64-Codierung finden Sie unter Dateien mit Base64 codieren und decodieren.
    • B64_MASK_IMAGE: Ein base64-codiertes Schwarz-Weiß-Maskenbild mit einer Größe von maximal 10 MB.
    • MASK_DILATION: Optional. Ein Gleitkommawert zwischen 0 und 1 (einschließlich), der den Prozentsatz der Bildbreite angibt, um den die Maske vergrößert werden soll. Die Verwendung von dilation kann ungenaue Masken ausgleichen. Wir empfehlen einen Wert von 0.01.
    • EDIT_STEPS: Optional. Eine Ganzzahl, die die Anzahl der Stichprobenschritte darstellt. Ein höherer Wert bietet eine bessere Bildqualität, ein niedrigerer Wert eine bessere Latenz.

      Wir empfehlen, zuerst 35 Schritte auszuprobieren. Wenn die Qualität nicht Ihren Anforderungen entspricht, empfehlen wir, den Wert auf ein oberes Limit von 75 zu erhöhen.

    • SAMPLE_COUNT: Optional. Eine Ganzzahl, die die Anzahl der zu generierenden Bilder angibt. Der zulässige Wertebereich ist 14. Der Standardwert ist 4.

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

    {
      "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
      }
    }
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $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
    Die folgende Beispielantwort bezieht sich auf eine Anfrage mit "sampleCount": 2. Die Antwort gibt zwei Vorhersageobjekte zurück, wobei die generierten Bildbyte base64-codiert sind.
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        }
      ]
    }
    

    Einfügen mit automatischer Maskenerkennung

    Verwenden Sie die folgenden Beispiele, um ein Inpainting zum Einfügen von Inhalten anzugeben. In diesen Beispielen geben Sie ein Basis-Image und einen Text-Prompt an. Imagen erkennt und erstellt automatisch einen Maskenbereich, um das Ausgangsbild zu verändern.

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Vertex AI > Media Studio auf.

    <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. Klicken Sie auf Hochladen und wählen Sie eine Datei aus, die Sie hochladen möchten.

    2. Klicken Sie auf Inpaint.

    3. Klicken Sie in der Bearbeitungssymbolleiste auf background_replaceMaske extrahieren.

    4. Wählen Sie eine der Optionen zum Extrahieren von Masken aus:

      • Hintergrundelemente: Erkennt die Hintergrundelemente und erstellt eine Maske um diese Elemente.

      • Vordergrundelemente: Erkennt die Objekte im Vordergrund und erstellt eine Maske um diese herum.

      • background_replace Personen: Erkennt Personen und erstellt eine Maske um sie herum.

    5. Optional: Passen Sie im Bereich Parameter die folgenden Optionen an:

      • Modell: Das zu verwendende Imagen-Modell.

      • Anzahl der Ergebnisse: Die Anzahl der zu generierenden Ergebnisse.

      • Negativer Prompt: Beschreiben Sie, was Sie aus den generierten Bildern ausschließen möchten.

    6. Geben Sie im Prompt-Feld einen Prompt zum Ändern des Bildes ein.

    7. Klicken Sie auf SendenGenerieren.

    Python

    Installieren

    pip install --upgrade google-genai

    Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

    Umgebungsvariablen für die Verwendung des Gen AI SDK mit Vertex AI festlegen:

    # 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",
            mask_dilation=0.1,
        ),
    )
    
    image = client.models.edit_image(
        model="imagen-3.0-capability-001",
        prompt="A small white ceramic bowl with lemons and limes",
        reference_images=[raw_ref, mask_ref],
        config=EditImageConfig(
            edit_mode="EDIT_MODE_INPAINT_INSERTION",
        ),
    )
    
    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

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie folgende Werte:

    • PROJECT_ID: Ihre Google Cloud Projekt-ID.
    • LOCATION: Die Region Ihres Projekts. Beispiel: us-central1, europe-west2 oder asia-northeast3. Eine Liste der verfügbaren Regionen finden Sie unter Generative AI an Vertex AI-Standorten.
    • TEXT_PROMPT ist der Text-Prompt, der bestimmt, welche Bilder das Modell generiert. Wenn Sie einen Prompt für das Einfügen durch Inpainting verwenden, sollten Sie den maskierten Bereich beschreiben, um die besten Ergebnisse zu erzielen. Vermeiden Sie Prompts, die nur aus einem Wort bestehen. Verwenden Sie beispielsweise „ein süßer Corgi“ anstelle von „Corgi“.
    • B64_BASE_IMAGE: Das Basisbild, das bearbeitet oder hochskaliert werden soll. Das Bild muss als base64-codierter Bytestring angegeben werden. Größenbeschränkung: 10 MB.
    • MASK_MODE: Ein String, der den Typ der automatischen Maskenerstellung festlegt, die vom Modell verwendet wird. Verfügbare Werte:
      • MASK_MODE_BACKGROUND: Generiert automatisch eine Maske mithilfe der Hintergrundsegmentierung.
      • MASK_MODE_FOREGROUND: Generiert automatisch eine Maske mithilfe der Vordergrundsegmentierung.
      • MASK_MODE_SEMANTIC: Generiert automatisch eine Maske mithilfe der semantischen Segmentierung basierend auf den Segmentierungsklassen, die Sie im maskImageConfig.maskClasses-Array angeben. Beispiel:
                  "maskImageConfig": {
                    "maskMode": "MASK_MODE_SEMANTIC",
                    "maskClasses": [175, 176], // bicycle, car
                    "dilation": 0.01
                  }
                
    • MASK_DILATION – Gleitkommazahl. Der Prozentsatz der Bildbreite, um die Maske zu erweitern. Ein Wert von 0.01 wird empfohlen, um unvollkommene Eingabemasken auszugleichen.
    • EDIT_STEPS – Ganzzahl. Die Anzahl der Stichprobenschritte für das Basismodell. Für das Einfügen durch Inpainting beginnen Sie bei 35 Schritten. Erhöhen Sie die Anzahl der Schritte auf das obere Limit von 75, wenn die Qualität nicht Ihren Anforderungen entspricht. Wenn Sie die Anzahl der Schritte erhöhen, steigt auch die Anfragelatenz.
    • EDIT_IMAGE_COUNT: Die Anzahl der bearbeiteten Bilder. Zulässige Ganzzahlwerte: 1–4. Standardwert: 4

    HTTP-Methode und URL:

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

    JSON-Text der Anfrage:

    {
      "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
      }
    }
    

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

    $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
    Die folgende Beispielantwort bezieht sich auf eine Anfrage mit "sampleCount": 2. Die Antwort gibt zwei Vorhersageobjekte zurück, wobei die generierten Bildbyte base64-codiert sind.
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        }
      ]
    }
    

    Beschränkungen

    In den folgenden Abschnitten werden die Einschränkungen der Funktion „Objekte entfernen“ von Imagen erläutert.

    Geänderte Pixel

    Das Modell generiert Pixel in seiner eigenen Auflösung (z. B. 1024 × 1024), die sich von der Auflösung des Eingabebildes unterscheiden kann. Das bedeutet, dass das generierte Bild möglicherweise kleine Änderungen aufweist, die nicht im Originalbild enthalten waren.

    Damit das Bild perfekt erhalten bleibt, empfehlen wir, das generierte Bild mithilfe der Maske mit dem Eingabebild zu verschmelzen. Wenn die Auflösung des Eingabebilds in der Regel 2K oder höher ist, muss das generierte Bild mit dem Eingabebild verschmolzen werden.

    Einschränkung einfügen

    Das eingefügte Objekt entspricht in der Regel dem Stil des Basisbildes. Bei einigen Keywords kann es jedoch sein, dass das Ergebnis eher wie eine Karikatur aussieht als fotorealistisch.

    Wenn Sie beispielsweise nach einer „gelben Giraffe“ fragen, erhalten Sie möglicherweise ein Comicbild, da Giraffen von Natur aus braun und hellbraun sind. Das Generieren fotorealistischer Bilder mit unnatürlichen Farben kann schwierig sein.

    Nächste Schritte

    Artikel zu Imagen und anderen Produkten für generative KI in Vertex AI: