Générer des images à l'aide d'Imagen


Les SDK Vertex AI in Firebase vous donnent accès aux modèles Imagen 3 (via Imagen API) afin que vous puissiez générer des images à partir d'une requête textuelle. Grâce à cette fonctionnalité, vous pouvez effectuer les actions suivantes:

  • Générer des images à partir de requêtes rédigées en langage naturel
  • Générer des images dans un large éventail de formats et de styles
  • Afficher du texte dans des images

Notez que Vertex AI in Firebase n'est pas encore compatible avec toutes les fonctionnalités disponibles pour les modèles Imagen. Pour en savoir plus, consultez la section Fonctionnalités et fonctionnalités compatibles plus loin sur cette page.

Accéder au code pour la saisie de texte uniquement

Avant de commencer

Si ce n'est pas déjà fait, consultez le guide de démarrage, qui explique comment configurer votre projet Firebase, connecter votre application à Firebase, ajouter le SDK, initialiser le service Vertex AI et créer une instance ImagenModel.

Notez que pour générer des images à l'aide de modèles Imagen:

  • Assurez-vous d'utiliser au moins les versions suivantes de la bibliothèque Firebase:
    iOS+: v11.9.1+ | Android: v16.2.0+ (BoM: v33.10.0+) | Web: v11.4.1+ | Flutter: v1.4.0+ (BoM: v3.8.0+)

  • Créer une instance ImagenModel (pas une instance GenerativeModel)

  • Envoyez votre requête dans un appel à generateImages() (pas à generateContent() ou generateContentStream()).

La création d'un ImagenModel et l'utilisation de generateImages() sont illustrées dans les exemples de cette page.

Modèles compatibles avec cette fonctionnalité

La génération d'images est compatible avec les modèles Imagen 3. La génération d'images à l'aide de modèles Gemini 2.0 sera bientôt disponible.

Générer des images à partir d'une saisie textuelle uniquement

Vous pouvez demander à un modèle Imagen de générer des images en lui fournissant une requête textuelle. Vous pouvez générer une image ou plusieurs.

Générer une image à partir d'une entrée textuelle

Assurez-vous d'avoir terminé la section Avant de commencer de ce guide avant d'essayer cet exemple.

Vous pouvez demander à un modèle Imagen de générer une seule image en lui fournissant une requête textuelle.

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
let model = vertex.imagenModel(modelName: "imagen-3.0-generate-002")

// Provide an image generation prompt
let prompt = "An astronaut riding a horse"

// To generate an image, call `generateImages` with the text prompt
let response = try await model.generateImages(prompt: prompt)

// Handle the generated image
guard let image = response.images.first else {
  fatalError("No image in the response.")
}
let uiImage = UIImage(data: image.data)

Découvrez comment choisir un modèle et éventuellement un emplacement adapté à votre cas d'utilisation et à votre application.

Générer plusieurs images à partir d'une entrée textuelle

Assurez-vous d'avoir terminé la section Avant de commencer de ce guide avant d'essayer cet exemple.

Par défaut, les modèles Imagen 3 ne génèrent qu'une seule image par requête. Toutefois, vous pouvez demander à un modèle Imagen de générer plusieurs images par requête en fournissant un generationConfig lors de l'initialisation du modèle.

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Create an `ImagenModel` instance with an Imagen 3 model that supports your use case
let model = vertex.imagenModel(
  modelName: "imagen-3.0-generate-002",
  // Configure the model to generate multiple images for each request
  // See: https://firebase.google.com/docs/vertex-ai/model-parameters
  generationConfig: ImagenGenerationConfig(numberOfImages: 4)
)

// Provide an image generation prompt
let prompt = "An astronaut riding a horse"

// To generate images, call `generateImages` with the text prompt
let response = try await model.generateImages(prompt: prompt)

// If fewer images were generated than were requested,
// then `filteredReason` will describe the reason they were filtered out
if let filteredReason = response.filteredReason {
  print(filteredReason)
}

// Handle the generated images
let uiImages =  response.images.compactMap { UIImage(data: $0.data) }

Découvrez comment choisir un modèle et éventuellement un emplacement adapté à votre cas d'utilisation et à votre application.

Fonctionnalités et exigences compatibles

Les modèles Imagen 3 offrent de nombreuses fonctionnalités liées à la génération d'images. Cette section décrit ce qui est accepté lorsque vous utilisez les modèles avec Vertex AI in Firebase.

Fonctionnalités et fonctionnalités compatibles

Vertex AI in Firebase est compatible avec ces fonctionnalités des modèles Imagen 3.

  • Générer des personnes et des visages (étant donné que votre projet Firebase a été approuvé par Google Cloud)

  • Générer du texte dans des images générées

  • Ajouter un filigrane aux images générées

  • Configurer les paramètres de génération d'images, comme le nombre d'images générées, le format et le filigrane

  • Configurer les paramètres de sécurité

Vertex AI in Firebase n'est pas compatible avec ces fonctionnalités avancées des modèles Imagen 3.

Notez que la plupart de ces fonctionnalités nécessitent de figurer sur une liste d'utilisateurs approuvés, même lorsque vous utilisez des modèles Imagen côté serveur.

  • Fonctionnalités de modification ou de manipulation d'images, y compris l'agrandissement d'images

  • Inclure des images dans la requête envoyée au modèle (comme pour l'apprentissage few-shot)

  • Vérifier les filigranes numériques à l'aide des SDK
    Si vous souhaitez vérifier qu'une image comporte un filigrane, vous pouvez l'importer dans Vertex AI Studio à l'aide de l'onglet Multimédia.

  • Générer des images en direct à partir de texte (génération de fichiers MP4)

  • Générer des images à l'aide d'un style prédéfini

  • Définir la langue du texte saisi

  • Activation de includeSafetyAttributes, ce qui signifie que safetyAttributes.categories et safetyAttributes.scores ne peuvent pas être renvoyés

  • Désactivation de l'amélioration de la requête (paramètre enhancePrompt), ce qui signifie qu'un outil de reformulation de requête basé sur un LLM ajoutera toujours automatiquement plus de détails à la requête fournie pour générer des images de meilleure qualité qui reflètent mieux la requête fournie

  • Écrire une image générée directement dans Google Cloud Storage dans le cadre de la réponse du modèle (paramètre storageUri). Au lieu de cela, les images sont toujours renvoyées sous forme d'octets d'image encodés en base64 dans la réponse.
    Si vous souhaitez importer une image générée dans Cloud Storage, vous pouvez utiliser Cloud Storage for Firebase.

Spécifications et limites

Limites (par requête) Imagen 3 Imagen 3 Fast
Nombre maximal de jetons d'entrée 480 jetons 480 jetons
Nombre maximal d'images de sortie 4 images 4 images
Résolutions d'image de sortie compatibles (pixels)
  • 1024x1024 pixels (format 1:1)
  • 896x1280 (format 3:4)
  • 1280x896 (format 4:3)
  • 768x1408 (format 9:16)
  • 1408x768 (format 16:9)
  • 1024x1024 pixels (format 1:1)
  • 896x1280 (format 3:4)
  • 1280x896 (format 4:3)
  • 768x1408 (format 9:16)
  • 1408x768 (format 16:9)

Que pouvez-vous faire d'autre ?

  • Commencez à penser à la préparation de la production, y compris à la configuration de Firebase App Check pour protéger les API que vous utilisez dans votre application contre toute utilisation abusive par des clients non autorisés. Veillez également à consulter la checklist de production.

Découvrez comment contrôler la génération de contenu.

En savoir plus sur les modèles compatibles

Découvrez les modèles disponibles pour différents cas d'utilisation, ainsi que leurs quotas et leurs tarifs.


Envoyer des commentaires sur votre expérience avec Vertex AI in Firebase