Personalizzazione controllata

La personalizzazione controllata consente di creare nuove immagini in base a un'immagine di origine o a un segnale di immagine di origine (contorno di Canny o scarabocchio). Questa pagina mostra come inviare due tipi di richieste di personalizzazione controllata:

  1. Personalizzazione controllata di Imagen 3 (funzionalità GA)

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

  2. Personalizzazione controllata di Imagen 2: segnale dell'immagine di origine Canny Edge o scarabocchio (funzionalità di anteprima)

Casi d'uso

Imagen 3 Controlled Customization offre prompt in stile libero, che possono dare l'impressione che il modello possa fare più di quanto sia addestrato a fare. Le sezioni seguenti descrivono casi d'uso ed esempi per Imagen 3 Controlled Customization.

Il modello è stato addestrato su casi d'uso che forniamo e ci aspettiamo buoni risultati quando utilizzi la personalizzazione controllata di Imagen 3. Se spingi il modello a rispondere in modi inaspettati, non ci aspettiamo buoni risultati.

Esempi di casi d'uso previsti

Di seguito sono riportati i casi d'uso per cui è stato addestrato Imagen 3 Controlled Customization e per cui produce buoni risultati:

  • Genera un'immagine che segue il prompt e le immagini di controllo dei bordi canny.

  • Genera un'immagine che segua il prompt e le immagini di scarabocchi.

  • Applica uno stile a una foto di una persona preservando l'espressione facciale.

Esempi di casi d'uso non previsti

Di seguito sono riportati i casi d'uso per cui Imagen 3 Controlled Customization non è addestrato e per cui produce risultati di scarsa qualità:

  • Genera un'immagine utilizzando uno stile specificato nel prompt.

  • Genera un'immagine da un testo che segue uno stile specifico fornito da un'immagine di riferimento, con un certo livello di controllo sulla composizione dell'immagine utilizzando un'immagine di controllo.

  • Genera un'immagine da un testo che segue uno stile specifico fornito da un'immagine di riferimento, con un certo livello di controllo sulla composizione dell'immagine utilizzando uno schizzo di controllo.

  • Genera un'immagine da un testo che segue uno stile specifico fornito dall'immagine di riferimento, con un certo livello di controllo sulla composizione dell'immagine utilizzando un'immagine di controllo. La persona nell'immagine ha un'espressione facciale specifica.

  • Stilizza una foto di due o più persone e preserva le loro espressioni facciali.

  • Stilizza una foto di un animale domestico e trasformala in un disegno. Preserva o specifica la composizione dell'immagine (ad esempio, acquerello).

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.

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

    REST

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

      Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il seguente comando:

      gcloud init

      Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

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

    Scrittura di prompt di personalizzazione

    Il prompt che utilizzi con la personalizzazione di Imagen 3 potrebbe influire sulla qualità delle immagini generate. Utilizza i seguenti modelli di prompt come punto di partenza per scrivere prompt di personalizzazione. Potresti dover inviare diverse richieste per ottenere l'output che ti interessa.

    Caso d'uso Immagini di riferimento Modello di prompt Esempio
    Personalizzazione controllata Mappa con scarabocchi (1) Genera un'immagine in linea con scribble map [1] in modo che corrisponda alla descrizione: ${STYLE_PROMPT} ${PROMPT}. Genera un'immagine in linea con scribble map [1] per corrispondere alla descrizione: l'immagine deve essere nello stile di un dipinto a olio impressionista con pennellate rilassate. Presenta un'atmosfera illuminata naturalmente e pennellate evidenti. Una vista laterale di un'auto. L'auto è parcheggiata su una strada bagnata e riflettente, con le luci della città che si riflettono nelle pozzanghere.
    Personalizzazione controllata Immagine di controllo Canny (1) Genera un'immagine in linea con edge map [1] in modo che corrisponda alla descrizione: ${STYLE_PROMPT} ${PROMPT} Genera un'immagine in linea con edge map [1] per corrispondere alla descrizione: L'immagine deve essere nello stile di una pittura a olio impressionista, con pennellate rilassate. Presenta un'atmosfera illuminata naturalmente e pennellate evidenti. Una vista laterale di un'auto. L'auto è parcheggiata su una strada bagnata e riflettente, con le luci della città che si riflettono nelle pozzanghere.
    Stilizzazione dell'immagine di una persona con input FaceMesh Immagine del soggetto (1-3)

    Immagine di controllo FaceMesh (1)
    Crea un'immagine di SUBJECT_DESCRIPTION [1] nella posa di CONTROL_IMAGE [2] in modo che corrisponda alla descrizione: un ritratto di SUBJECT_DESCRIPTION [1] ${PROMPT} Crea un'immagine di a woman with short hair [1] nella posa di control image [2] in linea con la descrizione: un ritratto di a woman with short hair [1] in stile cartone animato 3D con uno sfondo sfocato. Un personaggio carino e adorabile, con un volto sorridente, rivolto verso la fotocamera, tonalità pastello, alta qualità, 4K, capolavoro, super dettagli, texture della pelle, mappatura delle texture, ombre morbide, morbida illuminazione realistica, colori vivaci
    Stilizzazione dell'immagine di una persona con input FaceMesh Immagine del soggetto (1-3)

    Immagine di controllo FaceMesh (1)
    Crea un'immagine ${STYLE_PROMPT} di SUBJECT_DESCRIPTION [1] nella posa di CONTROL_IMAGE [2] in modo che corrisponda alla descrizione: un ritratto di SUBJECT_DESCRIPTION [1] ${PROMPT} Crea un'immagine in stile cartone animato 3D di a woman with short hair [1] nella posa di control image [2] in modo che corrisponda alla descrizione: un ritratto di a woman with short hair [1] in stile cartone animato 3D con uno sfondo sfocato. Un personaggio carino e adorabile con un volto sorridente, rivolto verso la fotocamera, tonalità pastello, alta qualità, 4K, capolavoro, super dettagli, texture della pelle, mappatura delle texture, ombre morbide, illuminazione morbida e realistica, colori vivaci

    Inviare una richiesta di personalizzazione controllata di Imagen 3

    Utilizza i seguenti esempi per inviare una richiesta di personalizzazione controllata di Imagen 3:

    REST

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

    • PROJECT_ID: il tuo Google Cloud ID progetto.
    • LOCATION: la regione del 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 guida le immagini che il modello genera. Per utilizzare la personalizzazione controllata di Imagen 3, includi il referenceId dell'immagine di riferimento del controllo che fornisci nel formato [$referenceId]. Ad esempio:
      • Genera un'immagine in linea con la mappa abbozzata [1] in modo che corrisponda alla descrizione: [image description].
    • BASE64_CONTROL_IMAGE: l'immagine di controllo di base (schizzo). L'immagine deve essere specificata come stringa di byte con codifica base64.
      Per CONTROL_TYPE_SCRIBBLE: l'immagine di controllo dello scarabocchio prevista ha uno sfondo nero e una linea di scarabocchio bianca. Immagine di esempio del controllo di scarabocchio
      Per CONTROL_TYPE_CANNY: l'immagine di controllo Canny Edge prevista ha uno sfondo nero e bordi Canny bianchi. Immagine di controllo Canny Edge di esempio
    • CONTROL_TYPE: il tipo di segnale di controllo. Utilizza CONTROL_TYPE_CANNY per il rilevamento dei contorni. Usa CONTROL_TYPE_SCRIBBLE per scarabocchiare.
    • enableControlImageComputation: imposta su false se fornisci la tua immagine di controllo. In questo caso, B64_BASE_IMAGE deve essere l'immagine del segnale di controllo. Imposta true se vuoi che Imagen calcoli l'immagine di controllo dall'immagine di riferimento. In questo caso, B64_BASE_IMAGE deve essere l'immagine RGB non elaborata.
    • IMAGE_COUNT: Il numero di immagini generate. Valori interi accettati: 1-4. Il valore predefinito è 4.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

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

    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

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

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

    Python

    Scarabocchia

    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 edge

    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)

    Inviare una richiesta di personalizzazione controllata di Imagen 2

    Immagine di input Altri parametri Immagine di output
    input degli scacchi
    Immagine di input. Fonte immagine: Alec Cutter su Unsplash.

    Prompt: "versione di arte digitale"

    Prompt negativo: "bianco e nero"

    Tipo di immagine guida:RGB standard

    Condizione di controllo:rilevamento dei contorni

    Scala di controllo di Imagen:0,95

    output stilizzato
    input degli scacchi
    Immagine di input. Fonte immagine: Alec Cutter su Unsplash
    (rilevamento dei contorni di Canny applicato).

    Prompt: "versione di arte digitale"

    Prompt negativo: "bianco e nero"

    Tipo di immagine guida: contorno di Canny

    Scala di controllo di Imagen:0,95

    output stilizzato

    Utilizza i seguenti esempi per inviare una richiesta di personalizzazione controllata di Imagen 2:

    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. Fai clic su Carica per selezionare l'immagine memorizzata localmente da modificare.

    4. Nella sezione Modalità del riquadro Parametri, fai clic su Controllo.

    5. Facoltativo. Modifica il Numero di risultati, fornisci un Prompt negativo o modifica le Opzioni avanzate > Regione.

    6. Nella sezione Opzioni avanzate, seleziona Tipo di immagine guida: RGB standard, Rilevamento bordi Canny o Scarabocchio.

    7. Nella sezione Opzioni avanzate, seleziona la Condizione di controllo: Rilevamento bordi di Canny o Scarabocchio.

    8. Nel campo del prompt (Scrivi il tuo prompt…), fornisci un prompt di testo.

    9. Fai clic su Genera.

    REST

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

    • PROJECT_ID: il tuo Google Cloud ID progetto.
    • 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 di cui aumentare la 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.
    • NEGATIVE_PROMPT: Un prompt negativo per facilitare la generazione delle immagini. Ad esempio: "animali" (rimuove gli animali), "sfocato" (rende l'immagine più nitida), "testo" (rimuove il testo) o "ritagliato" (rimuove le immagini ritagliate).
    • CONDITION: string. Il tipo di indicatore dell'immagine di controllo fornito. Valori: cannyEdges o scribble.
    • CONTROL_SCALE: float. L'intensità del segnale dell'immagine di controllo. Valori: 0.0 - 1.0. Valore predefinito: 0.95. Intervallo consigliato: 0.9 - 1.0.
    • SAMPLING_STEPS: integer. Il numero di passaggi di campionamento. Valori: 1 - 30. Predefinito: 16.
    • COMPUTE_CONDITION_MAP: boolean. Indica se calcolare una mappa delle condizioni dall'immagine di input di base. Se impostato su false, il servizio prevede che l'immagine di input sia uno scarabocchio o bordi di Canny e l'immagine viene fornita direttamente al modello. Se impostato su true, il servizio prevede che l'immagine di input sia un'immagine RGB e calcola i bordi di Canny o le informazioni sugli scarabocchi dall'immagine di input in base a conditionName. Il servizio fornisce quindi la mappa delle condizioni elaborata al modello per la modifica delle immagini. Quando fornisci immagini di scarabocchi, queste devono avere uno sfondo nero e linee bianche che raffigurano l'oggetto da generare. Predefinito: false.

    Metodo HTTP e 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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

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

    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

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

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

    Utilizzo del prodotto

    Per visualizzare gli standard di utilizzo e le limitazioni dei contenuti associati a Imagen su Vertex AI, consulta le linee guida sull'utilizzo.

    Versioni modello

    Esistono più modelli di generazione di immagini che puoi utilizzare. Per saperne di più, consulta la sezione Modelli Imagen.

    Passaggi successivi

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