Hintergrund eines Bilds ersetzen

Auf dieser Seite wird beschrieben, wie Sie den Hintergrund eines Bildes ersetzen. Mit Imagen on Vertex AI können Sie die automatische Objektsegmentierung verwenden, um diese Inhalte beizubehalten, während andere Bildinhalte geändert werden. Mit Imagen 3 können Sie auch einen eigenen Maskenbereich angeben, um mehr Kontrolle bei der Bearbeitung zu haben.

Die folgenden Modelle unterstützen das Ersetzen von Bildhintergründen:

Modellkarte für Imagen for Editing and Customization ansehen

Beispiel für die Bearbeitung von Produktbildern

Im folgenden Anwendungsfall wird ein Produktbild optimiert, indem der Hintergrund eines Bildes geändert wird, das Aussehen des Produkts im Bild aber erhalten bleibt.

Beispielgeneriertes Bild in der Console
Bild, das mit der Imagen-Produktbildbearbeitungsfunktion über den Prompt generiert wurde: auf einem Tisch in einem Boutique-Geschäft sein. Originalbildquelle: Irene Kredenets auf Unsplash.

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 einer automatisch erkannten Hintergrundmaske bearbeiten

Folgen Sie der Anleitung unten, um die Bearbeitung von Produktbildern mit automatischer Hintergrunderkennung zu aktivieren und zu verwenden.

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 Aufgabe die Option Product-background-editing (Produkt-Hintergrund bearbeiten) 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. Wählen Sie eine der folgenden 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.
  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/suitcase.png"),
    reference_id=0,
)
mask_ref = MaskReferenceImage(
    reference_id=1,
    reference_image=None,
    config=MaskReferenceConfig(
        mask_mode="MASK_MODE_BACKGROUND",
    ),
)

image = client.models.edit_image(
    model="imagen-3.0-capability-001",
    prompt="A light blue suitcase in front of a window in an airport",
    reference_images=[raw_ref, mask_ref],
    config=EditImageConfig(
        edit_mode="EDIT_MODE_BGSWAP",
    ),
)

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 finden Sie in der API-Referenz unter Bilder bearbeiten.

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: Der Text-Prompt, der bestimmt, welche Bilder das Modell generiert. Dieses Feld ist sowohl zum Erstellen als auch zum Bearbeiten erforderlich.
  • referenceType: Ein ReferenceImage ist ein Bild, das zusätzlichen Kontext für die Bildbearbeitung liefert. Für Bearbeitungsanwendungsfälle ist ein normales RGB-Rohreferenzbild (REFERENCE_TYPE_RAW) erforderlich. Eine Anfrage darf höchstens ein unbearbeitetes Referenzbild enthalten. Das Ausgabebild hat dieselbe Höhe und Breite wie das RAW-Referenzbild. Für Anwendungsfälle mit maskierter Bearbeitung ist ein Maskenreferenzbild (REFERENCE_TYPE_MASK) erforderlich.
  • referenceId: Die Ganzzahl-ID des Referenzbilds. In diesem Beispiel haben die beiden Referenzbildobjekte unterschiedliche Typen und daher unterschiedliche referenceId-Werte (1 und 2).
  • 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.
  • maskImageConfig.maskMode: Der Maskierungsmodus für die Maskenbearbeitung. MASK_MODE_BACKGROUND wird verwendet, um den Hintergrund automatisch zu maskieren, ohne dass eine vom Nutzer bereitgestellte Maske erforderlich ist.
  • MASK_DILATION – Gleitkommazahl. Der Prozentsatz der Bildbreite, um die Maske zu erweitern. Ein Wert von 0.00 wird empfohlen, um eine Verlängerung des Vordergrundprodukts zu vermeiden. Minimum: 0, Maximum: 1. Standard: 0,03.
  • EDIT_STEPS – Ganzzahl. Die Anzahl der Stichprobenschritte für das Basismodell. Wenn Sie Produktbilder bearbeiten möchten, beginnen Sie mit 75.
  • 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_BACKGROUND",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_BGSWAP",
    "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 zum Bearbeiten des Produkthintergrunds. Die Antwort gibt vier 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"
    },
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    }
  ]
}

Mit einem definierten Maskenbereich bearbeiten

Sie können den Bereich, der ersetzt wird, maskieren, anstatt die Maske automatisch von Imagen erkennen zu lassen.

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 Aufgabe die Option Product-background-editing (Produkt-Hintergrund bearbeiten) 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/suitcase.png"),
    reference_id=0,
)
mask_ref = MaskReferenceImage(
    reference_id=1,
    reference_image=Image.from_file(location="test_resources/suitcase_mask.png"),
    config=MaskReferenceConfig(
        mask_mode="MASK_MODE_USER_PROVIDED",
        mask_dilation=0.0,
    ),
)

image = client.models.edit_image(
    model="imagen-3.0-capability-001",
    prompt="A light blue suitcase in an airport",
    reference_images=[raw_ref, mask_ref],
    config=EditImageConfig(
        edit_mode="EDIT_MODE_BGSWAP",
    ),
)

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:

  • Methode: endpoints.predict
  • VisionGenerativeModelInstance
  • VisionGenerativeModelParams
  • VisionGenerativeModelResult

    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: Der Text-Prompt, der bestimmt, welche Bilder das Modell generiert. Dieses Feld ist sowohl zum Erstellen als auch zum Bearbeiten erforderlich.
    • referenceId: Die Ganzzahl-ID des Referenzbilds. In diesem Beispiel haben die beiden Referenzbildobjekte unterschiedliche Typen und daher unterschiedliche referenceId-Werte (1 und 2).
    • 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.
    • B64_MASK_IMAGE: Das Schwarz-Weiß-Bild, das Sie als Maskenebene zum Bearbeiten des Originalbilds verwenden möchten. Das Bild muss als base64-codierter Bytestring angegeben werden. Größenbeschränkung: 10 MB.
    • MASK_DILATION – Gleitkommazahl. Der Prozentsatz der Bildbreite, um die Maske zu erweitern. Ein Wert von 0.00 wird empfohlen, um eine Verlängerung des Vordergrundprodukts zu vermeiden. Minimum: 0, Maximum: 1. Standard: 0,03.
    • EDIT_STEPS – Ganzzahl. Die Anzahl der Stichprobenschritte für das Basismodell. Wenn Sie Produktbilder bearbeiten möchten, beginnen Sie mit 75.
    • 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": [
            {
              "referenceType": "REFERENCE_TYPE_RAW",
              "referenceId": 1,
              "referenceImage": {
                "bytesBase64Encoded": "B64_BASE_IMAGE"
              }
            },
            {
              "referenceType": "REFERENCE_TYPE_MASK",
              "referenceId": 2,
              "referenceImage": {
                "bytesBase64Encoded": "B64_MASK_IMAGE"
              },
              "maskImageConfig": {
                "maskMode": "MASK_MODE_USER_PROVIDED",
                "dilation": MASK_DILATION
              }
            }
          ]
        }
      ],
      "parameters": {
        "editConfig": {
          "baseSteps": EDIT_STEPS
        },
        "editMode": "EDIT_MODE_BGSWAP",
        "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 zum Bearbeiten des Produkthintergrunds.
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        },
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        }
      ]
    }
    

Beschränkungen

Da Masken manchmal unvollständig sind, versucht das Modell möglicherweise, das Vordergrundobjekt zu vervollständigen, wenn an der Grenze extrem kleine Teile fehlen. In seltenen Fällen kann es vorkommen, dass das Modell das Vordergrundobjekt leicht erweitert, wenn es bereits vollständig ist.

Als Problemumgehung können Sie die Modellausgabe segmentieren und dann zusammenführen. Das folgende Python-Snippet zeigt ein Beispiel für eine Problemumgehung:

blended = Image.composite(out_images[0].resize(image_expanded.size), image_expanded, mask_expanded)

Nächste Schritte

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