Personnalisation contrôlée

La personnalisation contrôlée vous permet de créer des images à partir d'une image source ou d'un signal d'image source (format contours de Canny ou croquis). Cette page vous explique comment envoyer deux types de requêtes de personnalisation contrôlée :

  1. Personnalisation contrôlée Imagen 3 (fonctionnalité DG)

    Afficher la fiche de modèle Imagen pour la modification et la personnalisation

  2. Personnalisation contrôlée d'Imagen 2 : signal d'image source au format Contours de Canny ou Croquis (fonctionnalité en preview)

Cas d'utilisation

La personnalisation contrôlée Imagen 3 propose un système de rédaction de requêtes libre, ce qui peut vous donner l'impression que le modèle peut faire plus que ce pour quoi il a été entraîné. Les sections suivantes décrivent les cas d'utilisation et fournissent des exemples pour la personnalisation contrôlée Imagen 3.

Le modèle a été entraîné sur les cas d'utilisation que nous fournissons. Nous nous attendons à de bons résultats lorsque vous utilisez la personnalisation contrôlée Imagen 3. Si vous poussez le modèle à répondre de manière inattendue, nous ne nous attendons pas à ce que vous obteniez de bons résultats.

Exemples de cas d'utilisation prévus

Voici les cas d'utilisation pour lesquels la personnalisation contrôlée Imagen 3 a été entraînée et génère de bons résultats :

  • Générez une image qui suit le prompt et les images de contrôle au format Contours de Canny.

  • Générez une image qui respecte la requête et les images de gribouillis.

  • Styliser une photo d'une personne tout en conservant son expression faciale

Exemples de cas d'utilisation non prévus

Voici les cas d'utilisation pour lesquels la personnalisation contrôlée Imagen 3 n'a pas été entraînée et génère des résultats médiocres :

  • Générez une image en utilisant un style spécifié dans la requête.

  • Générer une image à partir de texte qui respecte un style spécifique fourni par une image de référence, avec un certain niveau de contrôle sur la composition de l'image à l'aide d'une image de contrôle.

  • Générer une image à partir de texte qui respecte un style spécifique fourni par une image de référence, avec un certain niveau de contrôle sur la composition de l'image à l'aide d'un gribouillis de contrôle

  • Générer une image à partir de texte qui respecte un style spécifique fourni par l'image de référence, avec un certain niveau de contrôle sur la composition de l'image à l'aide d'une image de contrôle La personne sur l'image a une expression faciale spécifique.

  • Styliser une photo de plusieurs personnes tout en conservant leurs expressions faciales

  • Styliser une photo d'un animal de compagnie et la transformer en dessin Préserver ou spécifier la composition de l'image (par exemple, aquarelle)

Avant de commencer

  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. Configurez l'authentification pour votre environnement.

    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

    Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.

      Installez la Google Cloud CLI. Une fois que la Google Cloud CLI est installée, initialisez-la en exécutant la commande suivante :

      gcloud init

      Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

    Écrire une requête de personnalisation

    La requête que vous utilisez avec la personnalisation Imagen 3 peut avoir une incidence sur la qualité des images générées. Utilisez les modèles de requêtes suivants comme point de départ pour écrire des requêtes de personnalisation. Vous devrez peut-être envoyer plusieurs requêtes pour obtenir le résultat souhaité.

    Cas d'utilisation Images de référence Modèle de requête Exemple
    Personnalisation contrôlée Croquis de carte (1) Génère une image alignée sur scribble map [1] pour qu'elle corresponde à la description : ${STYLE_PROMPT} ${PROMPT}. Génère une image alignée sur scribble map [1] pour qu'elle corresponde à la description : L'image doit être dans le style d'une peinture à l'huile impressionniste avec des coups de pinceau détendus. Il possède une ambiance naturellement lumineuse et des coups de pinceau visibles. Vue de profil d'une voiture. La voiture est garée sur une route mouillée et réfléchissante, avec les lumières de la ville qui se reflètent dans les flaques d'eau.
    Personnalisation contrôlée Image de contrôle Canny (1) Génère une image alignée sur edge map [1] pour qu'elle corresponde à la description : ${STYLE_PROMPT} ${PROMPT} Génère une image alignée sur edge map [1] pour qu'elle corresponde à la description : L'image doit être dans le style d'une peinture à l'huile impressionniste, avec des coups de pinceau détendus. Il présente une ambiance naturellement éclairée et des coups de pinceau visibles. Vue latérale d'une voiture. La voiture est garée sur une route mouillée et réfléchissante, avec les lumières de la ville qui se reflètent dans les flaques d'eau.
    Stylisation de l'image d'une personne avec ajout du maillage du visage en entrée Image du sujet (1 à 3)

    Image de contrôle avec maillage du visage (1)
    Crée une image de SUBJECT_DESCRIPTION [1] dans la pose de CONTROL_IMAGE [2] correspondant à la description : un portrait de SUBJECT_DESCRIPTION [1] ${PROMPT} Crée une image de a woman with short hair [1] dans la pose de control image [2] correspondant à la description : un portrait de a woman with short hair [1] dans un style de dessin animé 3D sur un fond flou. Un personnage mignon et adorable, avec un visage souriant, face à la caméra, des tons pastel, une qualité élevée, 4K, un chef-d'œuvre, des détails superbes, une texture de peau, un mappage de texture, des ombres douces, un éclairage réaliste doux, des couleurs vives
    Stylisation de l'image d'une personne avec ajout du maillage du visage en entrée Image du sujet (1 à 3)

    Image de contrôle avec maillage du visage (1)
    Crée une image ${STYLE_PROMPT} de SUBJECT_DESCRIPTION [1] dans la pose de CONTROL_IMAGE [2] correspondant à la description : un portrait de SUBJECT_DESCRIPTION [1] ${PROMPT} Crée une image dans un style de dessin animé 3D de a woman with short hair [1] dans la pose de control image [2] correspondant à la description : un portrait de a woman with short hair [1] dans un style de dessin animé 3D sur un fond flou. Un personnage mignon et adorable avec un visage souriant, face à la caméra, des tons pastel, une qualité élevée, 4K, un chef-d'œuvre, des détails superbes, une texture de peau, un mappage de texture, des ombres douces, un éclairage réaliste doux, des couleurs vives

    Envoyer une requête de personnalisation contrôlée Imagen 3

    Utilisez les exemples suivants pour envoyer une requête de personnalisation contrôlée Imagen 3 :

    REST

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .
    • LOCATION : région de votre projet (us-central1, europe-west2 ou asia-northeast3, par exemple). Pour obtenir la liste des régions disponibles, consultez IA générative sur les emplacements Vertex AI.
    • TEXT_PROMPT : la requête textuelle guide les images générées par le modèle. Pour utiliser la personnalisation contrôlée Imagen 3, incluez le referenceId de l'image de référence de contrôle que vous fournissez au format [$referenceId]. Par exemple :
      • Générer une image alignée sur le croquis de carte [1] pour qu'elle corresponde à la description : [image description].
    • BASE64_CONTROL_IMAGE : image de contrôle de base (croquis). L'image doit être spécifiée en tant que chaîne d'octets encodés en base64.
      Pour CONTROL_TYPE_SCRIBBLE : l'image de contrôle au format Croquis attendue présente un fond noir et une ligne de croquis blanche. Exemple d'image de contrôle au format Croquis
      Pour CONTROL_TYPE_CANNY : l'image de contrôle au format Contours de Canny attendue présente un fond noir et des contours de Canny blancs. Exemple d'image de contrôle au format Contours de Canny
    • CONTROL_TYPE : type du signal de contrôle. Utilisez CONTROL_TYPE_CANNY pour le format Contours de Canny. Utilisez CONTROL_TYPE_SCRIBBLE pour le format Croquis.
    • enableControlImageComputation : définissez cette valeur sur false si vous fournissez votre propre image de contrôle. Dans ce cas, B64_BASE_IMAGE doit être l'image du signal de contrôle. Définissez cette valeur sur true si vous souhaitez qu'Imagen calcule l'image de contrôle à partir de l'image de référence. Dans ce cas, B64_BASE_IMAGE doit être l'image RVB brute.
    • IMAGE_COUNT : nombre d'images générées. Valeurs entières acceptées : 1 à 4. Valeur par défaut : 4.

    Méthode HTTP et URL :

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

    Corps JSON de la requête :

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

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    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

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $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
    L'exemple suivant représente la réponse à une requête avec "sampleCount": 2. La réponse renvoie deux objets de prédiction, avec les octets d'image générés encodés en base64.
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        }
      ]
    }
    

    Python

    Griffonner

    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)

    Contour de Canny

    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)

    Envoyer une requête de personnalisation contrôlée Imagen 2

    Image d'entrée Autres paramètres Image de sortie
    entrée d'échecs
    Image d'entrée. Source de l'image : Alec Cutter sur Unsplash.

    Requête : "version d'art numérique"

    Requête négative : "noir et blanc"

    Type d'image guide : RVB standard

    Condition de contrôle : format Contours de Canny

    Échelle de contrôle d'Imagen : 0,95

    sortie stylisée
    entrée d'échecs
    Image d'entrée. Source de l'image : Alec Cutter sur Unsplash
    (détection des contours de Canny appliquée).

    Requête : "version d'art numérique"

    Requête négative : "noir et blanc"

    Type d'image guide : format Contours de Canny

    Échelle de contrôle d'Imagen : 0,95

    sortie stylisée

    Utilisez les exemples suivants pour envoyer une requête de personnalisation contrôlée Imagen 2 :

    Console

    1. Dans la console Google Cloud , accédez à la page Vertex AI>Media Studio .

      Accéder à Media Studio

    2. Dans le panneau de tâches en bas, cliquez sur  Modifier l'image.

    3. Cliquez sur Importer pour sélectionner une image stockée localement afin de la modifier.

    4. Dans la section Mode du panneau Paramètres, cliquez sur Contrôle.

    5. Facultatif. Modifiez le Nombre de résultats, fournissez une Requête négative ou modifiez les paramètres Options avancées > Région.

    6. Dans la section Options avancées, sélectionnez le Type d'image guide : RVB standard, Contours de Canny ou Croquis.

    7. Dans la section Options avancées, sélectionnez la Condition de contrôle : Contours de Canny ou Croquis.

    8. Dans le champ de requête (Rédigez votre requête…), indiquez une requête textuelle.

    9. Cliquez sur Générer.

    REST

    Avant d'utiliser les données de requête, effectuez les remplacements suivants :

    • PROJECT_ID : ID de votre projet Google Cloud .
    • TEXT_PROMPT : prompt textuel qui guide le modèle pour la génération d'images. Ce champ est obligatoire pour la génération et la modification.
    • B64_BASE_IMAGE : image de base à modifier ou à améliorer. L'image doit être spécifiée en tant que chaîne d'octets encodés en base64. Limite de taille : 10 Mo.
    • EDIT_IMAGE_COUNT : nombre d'images modifiées. Valeur par défaut : 4.
    • NEGATIVE_PROMPT : requête négative pour aider à générer les images. Par exemple : "animaux" (supprime les animaux), "floutage" (rend l'image plus claire), "texte" (supprime le texte) ou "recadrer" (supprime les images recadrées).
    • CONDITION : string. Type de signal d'image de contrôle fourni. Valeurs : cannyEdges ou scribble.
    • CONTROL_SCALE : float. Intensité du signal d'image de contrôle. Valeurs : 0.0 à 1.0. Valeur par défaut : 0.95. Plage recommandée : 0.9 à 1.0.
    • SAMPLING_STEPS : integer. Nombre d'étapes d'échantillonnage. Valeurs : 1 à 30. Valeur par défaut : 16.
    • COMPUTE_CONDITION_MAP : boolean. Indique si une carte de conditions doit être calculée à partir de votre image d'entrée de base. Lorsque ce paramètre est défini sur false, le service s'attend à ce que l'image d'entrée soit un croquis ou des contours de Canny, et l'image est fournie directement au modèle. Lorsque ce paramètre est défini sur true, le service s'attend à ce que l'image d'entrée soit une image RVB. Il calcule ensuite les contours de Canny ou les informations du croquis à partir de votre image d'entrée en fonction de conditionName. Le service fournit ensuite la carte de conditions traitée au modèle pour la modification d'image. Lorsque vous fournissez des images de croquis, elles doivent avoir un arrière-plan noir et des lignes blanches représentant l'objet à générer. Valeur par défaut : false.

    Méthode HTTP et 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

    Corps JSON de la requête :

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

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    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

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $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
    L'exemple suivant représente la réponse à une requête avec "sampleCount": 2. La réponse renvoie deux objets de prédiction, avec les octets d'image générés encodés en base64.
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        }
      ]
    }
    

    Utilisation du produit

    Pour afficher les normes d'utilisation et les restrictions de contenu associées à Imagen sur Vertex AI, consultez les consignes d'utilisation.

    Versions de modèle

    Vous pouvez utiliser plusieurs modèles de génération d'images. Pour en savoir plus, consultez Modèles Imagen.

    Étapes suivantes

    Consultez des articles concernant Imagen et d'autres produits d'IA générative sur Vertex AI :