Modificare le immagini tramite prompt di testo

Questa pagina descrive la modifica senza maschere utilizzando solo prompt di testo. La modifica senza maschere ti consente di modificare un'immagine senza maschera. Questo metodo di modifica è utile per le modifiche che riguardano l'intera immagine o quando la posizione delle modifiche non è importante per il tuo caso d'uso.

Esempio di modifica senza maschera (intera immagine)

Puoi modificare un'immagine di base (generata o caricata) utilizzando solo un prompt di testo. Non devi specificare l'area da modificare e l'aggiornamento viene applicato all'intera immagine (modifica senza maschera).

Per apportare una modifica senza maschera, utilizza un prompt che descriva ciò che vuoi vedere invece di istruzioni su cosa modificare. Ad esempio, considera un'immagine esistente di un gatto che vuoi cambiare con un cane. Un prompt di modifica senza maschera come "un cane" potrebbe essere più efficace di "trasforma il gatto in un cane". Allo stesso modo, considera un'immagine che generi con il prompt "un gatto sulla spiaggia". Per modificare questa immagine, utilizza un prompt di modifica "un cane sulla spiaggia".

Immagine originale del gatto accanto all'immagine modificata del cane
Immagine originale (a sinistra): Cédric VT su Unsplash.
Immagine modificata (a destra): immagine generata utilizzando Imagen su Vertex AI con l'immagine di base originale e il prompt: un cane.

Visualizzare la scheda del modello Imagen per la modifica e la personalizzazione

Prima di iniziare

  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.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Enable the API

  8. Configura l'autenticazione per il tuo ambiente.

    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

    Per utilizzare gli esempi di Python questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.

    1. Install the Google Cloud CLI.

    2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    3. To initialize the gcloud CLI, run the following command:

      gcloud init
    4. 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.

    Per saperne di più, consulta Configura ADC per un ambiente di sviluppo locale nella documentazione sull'autenticazione Google Cloud .

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

      After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    Per saperne di più, consulta la sezione Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud .

    Utilizzare la modifica senza maschera

    Utilizza gli esempi riportati di seguito per modificare un'intera immagine senza un'area mascherata.

    Console

    1. Nella console Google Cloud , vai alla pagina Vertex AI > Media Studio .

      Vai a Media Studio
    2. Nel riquadro delle attività in basso, fai clic su Modifica immagine.
    3. Vai alla schermata Modifica immagine.

      Modificare l'immagine generata

      1. Generare immagini utilizzando un prompt di testo
      2. Fai clic su un'immagine generata.
      3. Fai clic su Modifica immagine.

      Modifica immagine caricata

      1. Fai clic su Carica un'immagine.
      2. Seleziona il file locale da modificare.
    4. Inserisci un nuovo prompt per modificare l'immagine.

    5. Facoltativo. Modifica uno o più parametri.
    6. Fai clic su Genera.

      Un esempio di immagine modificata utilizzando solo testo
      Visualizzazione Modifica immagine di un'immagine modificata con Imagen su Vertex AI dal prompt: una torta al matcha. Immagine originale mostrata in alto a destra. Attribuzione dell'immagine originale: David Holifield su Unsplash (mostrata nella Google Cloud console).

    Python

    Per scoprire come installare o aggiornare l'SDK Vertex AI Python, consulta Installare l'SDK Vertex AI Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

    In questo esempio utilizzi il metodo load_from_file per fare riferimento a un file locale come Image di base da modificare. Dopo aver specificato l'immagine di base, utilizza il metodo edit_image su ImageGenerationModel e salva l'immagine modificata localmente. A questo punto, puoi utilizzare il metodo show() in un blocco note per visualizzare l'immagine modificata.

    
    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

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • PROJECT_ID: il tuo Google Cloud ID progetto.
    • LOCATION: la regione del tuo progetto. Ad esempio, us-central1, europe-west2 o asia-northeast3. Per un elenco delle regioni disponibili, consulta Località dell'AI generativa su Vertex AI.
    • TEXT_PROMPT: Il prompt di testo che guida le immagini generate dal modello. Questo campo è obbligatorio sia per la generazione che per la modifica.
    • B64_BASE_IMAGE: L'immagine di base da modificare o aumentare di risoluzione. L'immagine deve essere specificata come stringa di byte con codifica base64. Dimensioni massime: 10 MB.
    • EDIT_IMAGE_COUNT: il numero di immagini modificate. Valore predefinito: 4.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
          "image": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        }
      ],
      "parameters": {
        "sampleCount": EDIT_IMAGE_COUNT
      }
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    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

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    $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
    La seguente risposta di esempio è per una richiesta con "sampleCount": 2. La risposta restituisce due oggetti di previsione, con i byte dell'immagine generata codificati in base64.
    {
      "predictions": [
        {
          "bytesBase64Encoded": "BASE64_IMG_BYTES",
          "mimeType": "image/png"
        },
        {
          "mimeType": "image/png",
          "bytesBase64Encoded": "BASE64_IMG_BYTES"
        }
      ]
    }
    

    Passaggi successivi

    Leggi gli articoli su Imagen e altri prodotti di AI generativa su Vertex AI: