Modifier des images à l'aide de requêtes de texte

Cette page décrit la modification sans masque à l'aide de requêtes textuelles uniquement. L'édition sans masque vous permet de modifier une image sans masque. Cette méthode est utile si les modifications s'appliquent à l'ensemble de l'image ou si leur emplacement n'est pas important pour votre cas d'utilisation.

Exemple de modification sans masque (intégralité de l'image)

Vous ne pouvez modifier une image de base (générée ou importée) qu'avec un prompt textuel. Il n'est pas nécessaire de spécifier la zone à modifier, et la mise à jour est appliquée à l'ensemble de l'image (également appelée modification sans masque).

Pour effectuer une modification sans masque, utilisez une requête décrivant ce que vous souhaitez afficher plutôt que des instructions sur les éléments à modifier. Prenons l'exemple d'une image existante de chat que vous souhaitez transformer en chien. La requête de modification sans masque "un chien" peut s'avérer plus efficace que la requête "remplacer le chat par un chien". De même, prenons l'exemple d'une image que vous générez avec le prompt un chat à la plage. Pour modifier cette image, utilisez la requête de modification "un chien à la plage".

Image d'origine représentant un chat à côté de l'image modifiée représentant un chien
Image d'origine (à gauche) : Cédric VT sur Unsplash.
Image modifiée (à droite) : image générée à l'aide d'Imagen sur Vertex AI avec l'image de base et le prompt un chien.

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

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.

    Python

    Pour utiliser les exemples Python de cette page dans un environnement de développement local, installez et initialisez la gcloud CLI, puis configurez le service Identifiants par défaut de l'application à l'aide de vos identifiants utilisateur.

      Installez la Google Cloud CLI.

      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.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Pour en savoir plus, consultez la section Configurer les ADC pour un environnement de développement local dans la documentation sur l'authentification Google Cloud .

    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.

      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 .

    Modification sans masque

    Utilisez les exemples suivants pour modifier l'intégralité d'une image sans zone de masque.

    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. Accédez à l'écran Modifier l'image.

      Modifier une image générée

      1. Générez une image à l'aide d'un prompt textuel.
      2. Cliquez sur l'image générée.
      3. Cliquez sur Modifier l'image.

      Modifier une image importée

      1. Cliquez sur Importer une image.
      2. Sélectionnez le fichier local à modifier.
    4. Saisissez un prompt pour modifier l'image.

    5. Facultatif. Modifiez les paramètres.
    6. Cliquez sur Générer.

      Exemple d'image modifiée en utilisant uniquement du texte
      Vue Modifier l'image d'une image modifiée avec Imagen sur Vertex AI à partir du prompt un gâteau au thé matcha. L'image d'origine est affichée en haut à droite. Crédit de l'image d'origine : David Holifield sur Unsplash (affichée dans la console Google Cloud ).

    Python

    Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

    Dans cet exemple, la méthode load_from_file vous permet de référencer un fichier local en tant qu'Image de base à modifier. Après avoir spécifié l'image de base, vous utilisez la méthode edit_image sur ImageGenerationModel et enregistrez l'image modifiée localement. Vous avez ensuite la possibilité d'utiliser la méthode show() dans un notebook pour afficher l'image modifiée.

    
    import vertexai
    from vertexai.preview.vision_models import Image, ImageGenerationModel
    
    # TODO(developer): Update and un-comment below lines
    # PROJECT_ID = "your-project-id"
    # input_file = "input-image.png"
    # output_file = "output-image.png"
    # prompt = "" # The text prompt describing what you want to see.
    
    vertexai.init(project=PROJECT_ID, location="us-central1")
    
    model = ImageGenerationModel.from_pretrained("imagegeneration@002")
    base_img = Image.load_from_file(location=input_file)
    
    images = model.edit_image(
        base_image=base_img,
        prompt=prompt,
        # Optional parameters
        seed=1,
        # Controls the strength of the prompt.
        # -- 0-9 (low strength), 10-20 (medium strength), 21+ (high strength)
        guidance_scale=21,
        number_of_images=1,
    )
    
    images[0].save(location=output_file, include_generation_parameters=False)
    
    # Optional. View the edited image in a notebook.
    # images[0].show()
    
    print(f"Created output image using {len(images[0]._image_bytes)} bytes")
    # Example response:
    # Created output image using 1234567 bytes
    

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

    Méthode HTTP et URL :

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict

    Corps JSON de la requête :

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
          "image": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        }
      ],
      "parameters": {
        "sampleCount": EDIT_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/imagegeneration@002: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/imagegeneration@002: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"
        }
      ]
    }
    

    Étapes suivantes

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