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.

Die folgenden Modelle unterstützen das Einfügen von Objekten in ein Bild:

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 Glasgefäßes 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 Glasgefäßes 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

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  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.

    Wählen Sie den Tab aus, der Ihrer geplanten Verwendung der Beispiele auf dieser Seite entspricht:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud Dienste und APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    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.

    1. Installieren Sie die Google Cloud CLI.

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

    3. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto:

      gcloud auth application-default login

      Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.

      Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

    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 einem definierten 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 > Vertex AI Studio auf.

    Zu Vertex AI Studio

  2. Klicken Sie auf Media generieren.

  3. Klicken Sie auf Bild.

  4. Wählen Sie in der Liste Task (Aufgabe) die Option Inpaint-add (Hinzufügen von Inpainting) aus.

  5. Wählen Sie in der Liste Modell das zu verwendende Imagen-Modell aus.

  6. Klicken Sie unter Eingabebild auf Hinzufügen und wählen Sie das Bild aus, das Sie bearbeiten möchten, um es hochzuladen.

  7. Geben Sie im Feld Prompt einen Prompt ein, der beschreibt, wie das Bild bearbeitet werden soll.

  8. Führen Sie einen der folgenden Schritte aus, um eine Maske anzugeben:

    • Eigene Maske hochladen:
      1. Maske auf dem Computer erstellen
      2. Klicken Sie auf Hochladen Maske importieren 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.
  9. Klicken Sie auf Ausführen.

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

Weitere Informationen zur Imagen API finden Sie hier:

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 die 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 > Vertex AI Studio auf.

    Zu Vertex AI Studio

  2. Klicken Sie auf Media generieren.

  3. Klicken Sie auf Bild.

  4. Wählen Sie in der Liste Task (Aufgabe) die Option Inpaint-add (Hinzufügen von Inpainting) aus.

  5. Wählen Sie in der Liste Modell das zu verwendende Imagen-Modell aus.

  6. Klicken Sie unter Eingabebild auf Hinzufügen und wählen Sie das Bild aus, das Sie bearbeiten möchten, um es hochzuladen.

  7. Geben Sie im Feld Prompt einen Prompt ein, der beschreibt, wie das Bild bearbeitet werden soll.

  8. Klicken Sie in der Bearbeitungssymbolleiste auf background_replaceMaske extrahieren.

  9. 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.

  10. Klicken Sie auf Ausführen.

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

Weitere Informationen zur Imagen API finden Sie hier:

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • 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. Wenn ein regionaler API-Endpunkt verwendet wird, wird die Region, in der die Anfrage verarbeitet wird, durch die Region in der URL des Endpunkts bestimmt. Das LOCATION im Ressourcenpfad wird ignoriert, wenn es zu Konflikten kommt.
  • 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. 1.024 × 1.024), 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 anstelle eines fotorealistischen Ergebnisses ein cartoonartiges Ergebnis generiert wird.

Wenn Sie beispielsweise nach einer „gelben Giraffe“ fragen, kann das zu einem cartoonartigen Bild führen, 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: