Kontrollierte Anpassung

Mit der kontrollierten Anpassung können Sie neue Bilder anhand eines Quellbilds oder eines Quellbildsignals (Canny Edge oder Scribble) erstellen. Auf dieser Seite wird beschrieben, wie Sie zwei Arten von Anfragen zur kontrollierten Anpassung senden:

  1. Kontrollierte Anpassung von Imagen 3 (GA-Funktion)

    Modellkarte für Imagen for Editing and Customization ansehen

  2. Kontrollierte Anpassung mit Imagen 2 – Canny Edge- oder Scribble-Quellbildsignal (Vorschaufunktion)

Anwendungsfälle

Imagen 3 Controlled Customization bietet die Möglichkeit, Prompts im Freistil zu verwenden. Das kann den Eindruck erwecken, dass das Modell mehr kann, als es trainiert wurde. In den folgenden Abschnitten werden Anwendungsfälle und Beispiele für Imagen 3 Controlled Customization beschrieben.

Das Modell wurde für die von uns bereitgestellten Anwendungsfälle trainiert. Wir erwarten gute Ergebnisse, wenn Sie Imagen 3 Controlled Customization verwenden. Wenn Sie das Modell dazu bringen, auf unerwartete Weise zu reagieren, sind keine guten Ergebnisse zu erwarten.

Beispiele für vorgesehene Anwendungsfälle

Die folgenden Anwendungsfälle sind für die kontrollierte Anpassung mit Imagen 3 trainiert und liefern gute Ergebnisse:

  • Generieren Sie ein Bild, das dem Prompt und den Canny-Edge-Kontrollbildern entspricht.

  • Generiere ein Bild, das dem Prompt und den Kritzelbildern entspricht.

  • Ein Foto einer Person stilisieren, ohne den Gesichtsausdruck zu verändern.

Beispiele für unbeabsichtigte Anwendungsfälle

Für die folgenden Anwendungsfälle ist Imagen 3 Controlled Customization nicht trainiert und liefert schlechte Ergebnisse:

  • Erstellt ein Bild mit einem im Prompt angegebenen Stil.

  • Ein Bild aus Text generieren, das einem bestimmten Stil folgt, der durch ein Referenzbild vorgegeben wird. Dabei kann die Bildkomposition mithilfe eines Kontrollbilds bis zu einem gewissen Grad gesteuert werden.

  • Ein Bild aus Text generieren, das einem bestimmten Stil folgt, der durch ein Referenzbild vorgegeben wird. Die Bildkomposition kann mithilfe einer Kontrollskizze gesteuert werden.

  • Ein Bild aus Text generieren, das einem bestimmten Stil folgt, der durch das Referenzbild vorgegeben wird. Die Bildkomposition kann mithilfe eines Kontrollbilds bis zu einem gewissen Grad gesteuert werden. Die Person auf dem Bild hat einen bestimmten Gesichtsausdruck.

  • Ein Foto von mindestens zwei Personen stilisieren und dabei die Gesichtsausdrücke beibehalten

  • Ein Foto eines Haustiers stilisieren und in eine Zeichnung umwandeln Die Komposition des Bildes beibehalten oder angeben, z. B. „Aquarell“.

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

    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. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:

      gcloud init

      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.

    Prompts für die Anpassung schreiben

    Der Prompt, den Sie für die Imagen 3-Anpassung verwenden, kann sich auf die Qualität der generierten Bilder auswirken. Verwenden Sie die folgenden Prompt-Vorlagen als Ausgangspunkt für das Schreiben von Anpassungs-Prompts. Möglicherweise müssen Sie mehrere Anfragen senden, um die gewünschte Ausgabe zu erhalten.

    Anwendungsfall Referenzbilder Prompt-Vorlage Beispiel
    Kontrollierte Anpassung Skizzenkarte (1) Generiere ein Bild, das dem scribble map [1] entspricht, um der Beschreibung zu entsprechen: ${STYLE_PROMPT} ${PROMPT}. Generiere ein Bild, das dem scribble map [1] entspricht, um der Beschreibung zu entsprechen: Das Bild sollte im Stil eines impressionistischen Ölgemäldes mit entspannten Pinselstrichen sein. Es hat eine natürliche Beleuchtung und sichtbare Pinselstriche. Ein Auto in der Seitenansicht. Das Auto ist auf einer nassen, reflektierenden Fahrbahn geparkt, wobei sich die Lichter der Stadt in den Pfützen spiegeln.
    Kontrollierte Anpassung Canny-Kontrollbild (1) Generiere ein Bild, das dem edge map [1] entspricht, um der Beschreibung zu entsprechen: ${STYLE_PROMPT} ${PROMPT} Erstelle ein Bild, das dem edge map [1] entspricht und der folgenden Beschreibung entspricht: Das Bild sollte im Stil eines impressionistischen Ölgemäldes mit entspannten Pinselstrichen sein. Es hat eine natürlich beleuchtete Atmosphäre und sichtbare Pinselstriche. Ein Auto in der Seitenansicht. Das Auto ist auf einer nassen, reflektierenden Straße geparkt, wobei sich die Lichter der Stadt in den Pfützen spiegeln.
    Stilisierung von Personenbildern mit FaceMesh-Eingabe Motivbild (1–3)

    FaceMesh-Kontrollbild (1)
    Erstelle ein Bild von SUBJECT_DESCRIPTION [1] in der Pose von CONTROL_IMAGE [2], das der Beschreibung entspricht: ein Porträt von SUBJECT_DESCRIPTION [1] ${PROMPT} Erstelle ein Bild von a woman with short hair [1] in der Pose von control image [2], das der Beschreibung entspricht: ein Porträt von a woman with short hair [1] im 3D-Cartoonstil mit einem weichgezeichneten Hintergrund. Eine niedliche und liebenswerte Figur mit einem lächelnden Gesicht, die in die Kamera schaut, Pastellfarben, hohe Qualität, 4K, Meisterwerk, super Details, Hautstruktur, Texture Mapping, weiche Schatten, weiche realistische Beleuchtung, lebendige Farben
    Stilisierung von Personenbildern mit FaceMesh-Eingabe Motivbild (1–3)

    FaceMesh-Kontrollbild (1)
    Erstelle ein Bild im Stil ${STYLE_PROMPT} von SUBJECT_DESCRIPTION [1] in der Pose von CONTROL_IMAGE [2], das der Beschreibung entspricht: ein Porträt von SUBJECT_DESCRIPTION [1] ${PROMPT} Erstelle ein Bild im 3D‑Cartoonstil von a woman with short hair [1] in der Pose des control image [2], das der Beschreibung entspricht: ein Porträt von a woman with short hair [1] im 3D‑Cartoonstil mit einem verschwommenen Hintergrund. Eine niedliche und liebenswerte Figur mit einem lächelnden Gesicht, die in die Kamera schaut, Pastellfarben, hohe Qualität, 4K, Meisterwerk, super Details, Hautstruktur, Textur-Mapping, weiche Schatten, weiche realistische Beleuchtung, lebendige Farben

    Anfrage für kontrollierte Anpassung von Imagen 3 senden

    Verwenden Sie die folgenden Beispiele, um eine Anfrage für die kontrollierte Anpassung mit Imagen 3 zu senden:

    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 die kontrollierte Anpassung mit Imagen 3 verwenden möchten, geben Sie die referenceId des von Ihnen bereitgestellten Kontrollreferenzbilds im Format [$referenceId] an. Beispiel:
      • Generiere ein Bild, das der Skizzenkarte [1] entspricht und der Beschreibung entspricht: [image description].
    • BASE64_CONTROL_IMAGE: Das Basis-Kontrollbild (Skizze). Das Bild muss als base64-codierter Bytestring angegeben werden.
      Für CONTROL_TYPE_SCRIBBLE: Das erwartete Scribble-Kontrollbild hat einen schwarzen Hintergrund und eine weiße Scribble-Linie. Beispielbild für die Kritzelsteuerung
      Für CONTROL_TYPE_CANNY: Das erwartete Canny Edge-Kontrollbild hat einen schwarzen Hintergrund und weiße Canny Edges. Beispiel für ein Canny-Edge-Kontrollbild
    • CONTROL_TYPE: Der Typ des Steuersignals. Verwenden Sie CONTROL_TYPE_CANNY für Canny-Kanten. Verwenden Sie CONTROL_TYPE_SCRIBBLE für Kritzeleien.
    • enableControlImageComputation: Setzen Sie diese Option auf false, wenn Sie ein eigenes Kontrollbild bereitstellen. In diesem Fall sollte B64_BASE_IMAGE das Kontrollsignalsignalbild sein. Setzen Sie den Wert auf true, wenn Imagen das Kontrollbild aus dem Referenzbild berechnen soll. In diesem Fall sollte B64_BASE_IMAGE das Rohbild im RGB-Format sein.
    • IMAGE_COUNT ist die Anzahl der generierten 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_CONTROL",
              "referenceId": 1,
              "referenceImage": {
                "bytesBase64Encoded": "BASE64_CONTROL_IMAGE"
              },
              "controlImageConfig": {
                "controlType": "CONTROL_TYPE",
                "enableControlImageComputation": false
              }
            }
          ]
        }
      ],
      "parameters": {
        "sampleCount": 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"
        }
      ]
    }
    

    Python

    Skizze

    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,
            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)

    Canny-Kante

    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,
            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)

    Anfrage für die kontrollierte Anpassung mit Imagen 2 senden

    Eingabebild Sonstige Parameter Ausgabebild
    Schacheingaben
    Eingabebild. Bildquelle: Alec Cutter auf Unsplash.

    Prompt: „digital art version“

    Negativ-Prompt: „schwarz-weiß“

    Typ des Führungsbilds:Standard-RGB

    Kontrollbedingung:canny edge

    Imagen-Kontrollskala:0,95

    Stilisierte Ausgabe
    Schacheingaben
    Eingabebild. Bildquelle: Alec Cutter auf Unsplash
    (Canny-Kantenerkennung angewendet).

    Prompt: „digital art version“

    Negativ-Prompt: „schwarz-weiß“

    Typ des Führungsbilds: canny edge

    Imagen-Kontrollskala:0,95

    Stilisierte Ausgabe

    Verwenden Sie die folgenden Beispiele, um eine Anfrage für die kontrollierte Anpassung mit Imagen 2 zu senden:

    Console

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

      Zu Media Studio

    2. Klicken Sie im unteren Textbereich auf Bearbeiten.

    3. Klicken Sie auf Hochladen, um das lokal gespeicherte Bild zur Bearbeitung auszuwählen.

    4. Klicken Sie im Abschnitt Modus des Bereichs Parameter auf Kontrolle.

    5. Optional. Ändern Sie die Anzahl der Ergebnisse, geben Sie einen negativen Prompt an oder ändern Sie die Erweiterten Optionen > Region.

    6. Wählen Sie im Abschnitt Erweiterte Optionen den Typ des Führungsbilds aus: Standard-RGB, Canny Edge oder Scribble.

    7. Wählen Sie im Bereich Erweiterte Optionen die Kontrollbedingung aus: Canny Edge oder Scribble.

    8. Geben Sie im Prompt-Feld (Prompt hier eingeben) einen Textprompt ein.

    9. Klicken Sie auf Erstellen.

    REST

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie folgende Werte:

    • PROJECT_ID: Ihre Google Cloud Projekt-ID.
    • TEXT_PROMPT: Der Text-Prompt, der bestimmt, welche Bilder das Modell generiert. Dieses Feld ist sowohl zum Erstellen als auch zum Bearbeiten erforderlich.
    • 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.
    • EDIT_IMAGE_COUNT: Die Anzahl der bearbeiteten Bilder. Standardwert: 4.
    • NEGATIVE_PROMPT: Ein negativer Prompt, der bei der Bildgenerierung helfen soll. Zum Beispiel: "Tiere" (Tiere entfernen), "unscharf" (das Bild wird klarer gemacht), "Text" (entfernt Text) oder "zuschneiden" (entfernt zugeschnittene Bilder).
    • CONDITION: string. Der Typ des bereitgestellten Kontrollbildsignals. Werte: cannyEdges oder scribble.
    • CONTROL_SCALE: float. Die Stärke des Kontrollbildsignals. Werte: 0.0 - 1.0. Standardwert: 0.95. Empfohlener Bereich: 0.91.0.
    • SAMPLING_STEPS: integer. Die Anzahl der Stichprobenschritte. Werte: 1 - 30. Standard: 16.
    • COMPUTE_CONDITION_MAP: boolean. Gibt an, ob eine Bedingungskarte aus dem Basis-Eingabebild berechnet werden soll. Wenn diese Option auf false festgelegt ist, erwartet der Dienst, dass das Eingabebild Scribble oder Canny Edge ist. Das Bild wird dann direkt an das Modell gesendet. Wenn true festgelegt ist, erwartet der Dienst, dass das Eingabebild ein RGB-Bild ist. Er berechnet dann anhand von conditionName Canny Edge- oder Scribble-Informationen aus dem Eingabebild. Der Dienst stellt dann die verarbeitete Bedingungskarte dem Modell zur Bildbearbeitung zur Verfügung. Wenn Sie Scribble-Bilder zur Verfügung stellen, sollten diese einen schwarzen Hintergrund haben und das zu generierende Objekt sollte mit weißen Linien dargestellt werden. Standardeinstellung: false.

    HTTP-Methode und 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

    JSON-Text der Anfrage:

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

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

    Produktnutzung

    Informationen zu den Nutzungsstandards und Inhaltsbeschränkungen für Imagen in Vertex AI finden Sie in den Nutzungsrichtlinien.

    Modellversionen

    Es gibt mehrere Modelle zur Bildgenerierung, die Sie verwenden können. Weitere Informationen finden Sie unter Imagen-Modelle.

    Nächste Schritte

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