Objekte mit Inpainting aus einem Bild entfernen

Auf dieser Seite wird beschrieben, wie Sie Objekte aus einem Bild entfernen. Dazu verwenden Sie einen Maskierungsbereich. Dieser Vorgang wird auch als Inpainting bezeichnet. Sie können Ihre eigene Maske verwenden oder Imagen eine für Sie generieren lassen.

Die folgenden Modelle unterstützen das Entfernen von Objekten aus einem Bild:

Beispiel für die Entfernung von Inhalten

Im folgenden Beispiel werden Inpainting und eine Bildmaske verwendet, um Inhalte aus einem vorhandenen Bild zu entfernen:

Eingaben

Basisbild* zum Bearbeiten

Mit Tools in der Google Cloud Console angegebener Maskenbereich

Text-Prompt

Beispielbild einer roten Couch mit einer Tüte Zitronen auf der rechten Seite und einem Kissen in der linken Ecke. Das Sofa steht schräg, wobei ein Fuß auf einem weißen Teppich steht. Vor dem Sofa auf dem Teppich liegen zwei Zitronen. Das Beispiel-Basisbild des roten Sofas wird dargestellt, wobei maskierte Bereiche für die Tüte mit Zitronen auf dem Sofa und zwei Zitronen auf dem Teppich definiert sind.

Prompt: Entferne ausgewählte Objekte aus dem Bild

* Bildnachweis: Inside Weather auf Unsplash

Ausgabe nach Angabe eines Maskenbereichs in der Google Cloud Console

Ein bearbeitetes Beispielbild zeigt das Sofa und den Teppich aus dem Eingabebeispiel ohne Zitronen. Ein Beispiel für ein bearbeitetes Bild zeigt das Sofa und den Teppich aus dem Eingabebeispiel ohne Zitronen. Ein Beispiel für ein bearbeitetes Bild zeigt die Couch und den Teppich aus dem Eingabebeispiel ohne Zitronen.

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 einfach 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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  8. Richten Sie die Authentifizierung für Ihre Umgebung ein.

    Wählen Sie den Tab für die geplante Verwendung der Beispiele auf dieser Seite aus:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud -Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht 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.

Entfernen mit einem definierten Maskenbereich

Verwenden Sie die folgenden Beispiele, um ein Inpainting zum Entfernen von Inhalten anzugeben. In diesen Beispielen geben Sie ein Basisbild, einen Text-Prompt und einen Maskenbereich an, um das Basisbild zu ä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 Aufgabe die Option Inpaint-remove aus.

  5. Wählen Sie in der Liste Modell das Imagen-Modell aus, das Sie verwenden möchten.

  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.

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 URL des Endpunkts bestimmt. Das LOCATION im Ressourcenpfad wird ignoriert, wenn es zu Konflikten kommt.
  • prompt: Beim Inpainting von Bildern können Sie einen leeren String angeben, um die bearbeiteten Bilder zu erstellen. Wenn Sie einen Prompt angeben, verwenden Sie am besten eine Beschreibung des maskierten Bereichs. Beispiel: „ein blauer Himmel“ statt „füge einen blauen Himmel ein“.
  • 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 maximal ein rohes 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. Wenn ein Rohreferenzbild vorhanden ist, muss das Maskenbild dieselbe Höhe und Breite wie das Rohreferenzbild haben. Wenn das Maskenreferenzbild leer ist und maskMode nicht auf MASK_MODE_USER_PROVIDED gesetzt ist, wird die Maske anhand des Rohreferenzbilds berechnet.
  • 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_OUTPAINTING_MASK: Das Schwarz-Weiß-Bild, das Sie als Maskenebene zum Bearbeiten des Originalbilds verwenden möchten. Die Maske muss dieselbe Auflösung wie das Eingabebild haben. Das Ausgabebild hat dieselbe Auflösung wie das Eingabebild. Dieses Maskenbild muss als base64-codierter Bytestring angegeben werden. Größenbeschränkung: 10 MB.
  • MASK_DILATION: Gleitkommazahl. Der Prozentsatz der Bildbreite, um den diese Maske erweitert werden soll. Für die Funktion „Outpainting“ wird ein Wert von 0.03 empfohlen. Wenn Sie "dilation": 0.0 festlegen, kann das zu sichtbaren Rändern am Erweiterungspunkt oder zu einem weißen Randeffekt führen.
  • EDIT_STEPS – Ganzzahl. Die Anzahl der Stichprobenschritte für das Basismodell. Beginnen Sie beim Outpainting mit 35 Schritten. Erhöhen Sie die Anzahl der Schritte, wenn die Qualität nicht Ihren Anforderungen entspricht.
  • 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": "",
      "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
  }
}

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

Mit automatischer Maskenerkennung entfernen

Verwenden Sie die folgenden Beispiele, um ein Inpainting zum Entfernen von Inhalten anzugeben. In diesen Beispielen geben Sie ein Basisbild 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 Medien generieren.

  3. Klicken Sie auf Bild.

  4. Wählen Sie in der Liste Aufgabe die Option Inpaint-remove aus.

  5. Wählen Sie in der Liste Modell das Imagen-Modell aus, das Sie verwenden möchten.

  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 für die Maskenextraktion 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.

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. Wenn ein regionaler API-Endpunkt verwendet wird, bestimmt die Region aus der URL des Endpunkts, wo die Anfrage verarbeitet wird. Dieser LOCATION im Ressourcenpfad wird ignoriert, wenn er im Konflikt steht.
  • prompt: Für optimale Ergebnisse sollten Sie einen Prompt und negativePrompt weglassen, wenn Sie Inpainting zum Entfernen verwenden.
  • 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, den das Modell verwendet. Verfügbare Werte:
    • MASK_MODE_BACKGROUND: Generiert automatisch eine Maske mithilfe der Hintergrundsegmentierung. Verwenden Sie diese Einstellung, um Hintergrundinhalte zu ändern.
    • MASK_MODE_FOREGROUND: Generiert automatisch eine Maske mithilfe der Vordergrundsegmentierung. Mit dieser Einstellung können Sie Vordergrundinhalte ändern, z. B. diese Vordergrundobjekte entfernen (Entfernung durch Inpainting).
    • 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. Beginnen Sie beim Entfernen von Inpainting mit 12 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 Latenz der Anfrage.
  • 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": "",
      "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
  }
}

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 zum Entfernen von Objekten in Imagen erläutert.

Geänderte Pixel

Pixel, die vom Modell generiert werden und sich nicht in der Maske befinden, werden mit der Auflösung des Modells (z. B. 1024 x 1024) generiert und sind nicht garantiert mit der Eingabe identisch. Dies kann zu geringfügigen Änderungen am generierten Bild führen.

Für eine optimale Bildqualität empfehlen wir, das KI-generierte Bild mithilfe der Maske mit dem Eingabebild zu kombinieren. Das Blending ist in der Regel erforderlich, wenn die Auflösung des Eingabebilds 2K oder höher ist.

Einschränkung bei der Entfernung

Kleine Objekte, die an die Maske angrenzen, werden möglicherweise ebenfalls entfernt. Für optimale Ergebnisse sollte die Maske so genau wie möglich sein.

Wenn Sie in Außenaufnahmen große Bereiche des Himmels entfernen, kann das zu unerwünschten Artefakten führen. Für optimale Ergebnisse empfehlen wir, einen Prompt anzugeben.

Nächste Schritte

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