Generowanie obrazów za pomocą Imagen


Pakiety SDK Vertex AI in Firebase zapewniają dostęp do modeli Imagen 3 (za pomocą Imagen API), dzięki czemu możesz generować obrazy na podstawie prompta tekstowego. Dzięki tej funkcji możesz:

  • generować obrazy na podstawie promptów napisanych w języku naturalnym;
  • generować obrazy w wielu formatach i stylach;
  • Renderowanie tekstu na obrazach

Pamiętaj, że Vertex AI in Firebase nie obsługuje jeszcze wszystkich funkcji dostępnych w modelach Imagen. Więcej informacji znajdziesz w sekcji Obsługiwane funkcje i możliwości na tej stronie.

 Przejdź do kodu dla danych wejściowych tylko tekstowych

Zanim zaczniesz

Jeśli jeszcze tego nie zrobisz, przeczytaj przewodnik dla początkujących. Dotyczy to m.in. konfigurowania projektu Firebase, łączenia aplikacji z Firebase, dodawania pakietu SDK oraz inicjowania usługi Vertex AI. Należy to zrobić, zanim będzie można wysłać prośbę o prompt do modelu Imagen za pomocą pakietów SDK Vertex AI in Firebase.

Aby wygenerować obrazy za pomocą modeli Imagen:

  • Upewnij się, że co najmniej używasz tych wersji biblioteki Firebase:
    iOS i nowsze: wersja 11.9.1 lub nowsza | Android: wersja 16.2.0 lub nowsza (BoM: wersja 33.10.0 lub nowsza) | Sieć: wersja 11.4.1 lub nowsza | Flutter: wersja 1.4.0 lub nowsza (BoM: wersja 3.8.0 lub nowsza)

  • Zainicjuj ImagenModel (nie GenerativeModel).

  • Wysyłanie promptu w ramach połączenia z generateImages() (nie do generateContent() ani generateContentStream())

Inicjalizowanie ImagenModel i używanie generateImages() pokazano w przykładach na tej stronie.

Modele, które obsługują tę funkcję

Modele Imagen 3 obsługują generowanie obrazów. Wkrótce udostępnimy obsługę generowania obrazów za pomocą modeli Gemini 2.0.

Generowanie obrazów na podstawie danych wejściowych zawierających tylko tekst

Możesz poprosić model Imagen o wygenerowanie obrazów, podając prompt tekstowy. Możesz wygenerować 1 obraz lub wiele obrazów.

generować jeden obraz na podstawie danych wejściowych zawierających tylko tekst.

Zanim użyjesz tego szablonu, przeczytaj sekcję Zanim zaczniesz w tym przewodniku.

Możesz poprosić model Imagen o wygenerowanie pojedynczego obrazu, podając prompt tekstowy.

KotlinJava
// Using Imagen with Vertex AI in Firebase is in public preview
// It requires opt-in to use the API
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
  // Initialize the Vertex AI service and Imagen model
  // Specify an Imagen 3 model that supports your use case
  val imagenModel = Firebase.vertexAI.imagenModel("imagen-3.0-generate-002")

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

  // To generate an image, call `generateImages` with the text prompt
  val imageResponse = imagenModel.generateImages(prompt)

  // Handle the generated image
  val image = imageResponse.images.first()

  val bitmapImage = image.asBitmap()
}
// Initialize the Vertex AI service and Imagen model
// Specify an Imagen 3 model that supports your use case
ImagenModel imagenModel = FirebaseVertexAI.getInstance().imagenModel(
        /* modelName */ "imagen-3.0-generate-002");

ImagenModelFutures model = ImagenModelFutures.from(imagenModel);

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

// To generate an image, call `generateImages` with the text prompt
Futures.addCallback(model.generateImages(prompt), new FutureCallback<ImagenGenerationResponse<ImagenInlineImage>>() {
    @Override
    public void onSuccess(ImagenGenerationResponse<ImagenInlineImage> result) {
        if (result.getImages().isEmpty()) {
            Log.d("TAG", "No images generated");
        }
        Bitmap bitmap = result.getImages().get(0).asBitmap();
        // Use the bitmap to display the image in your UI
    }

    @Override
    public void onFailure(Throwable t) {
        // ...
    }
}, Executors.newSingleThreadExecutor());

Dowiedz się, jak wybrać model i opcjonalnie lokalizację odpowiednią do przypadku użycia i aplikacji.

generować wiele obrazów na podstawie danych wejściowych zawierających tylko tekst;

Zanim spróbujesz użyć tego szablonu, przeczytaj sekcję Zanim zaczniesz w tym przewodniku.

Domyślnie modele Imagen 3 generują tylko 1 obraz na żądanie. Możesz jednak poprosić model Imagen o wygenerowanie wielu obrazów na żądanie, podając generationConfig podczas inicjalizacji modelu.

KotlinJava
// Using Imagen with Vertex AI in Firebase is in public preview
// It requires opt-in to use the API
@OptIn(PublicPreviewAPI::class)
suspend fun generateImage() {
  // Initialize the Vertex AI service and Imagen model
  // Specify an Imagen 3 model that supports your use case
  val imagenModel = Firebase.vertexAI.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
  val prompt = "An astronaut riding a horse"

  // To generate images, call `generateImages` with the text prompt
  val imageResponse = imagenModel.generateImages(prompt)

  // If fewer images were generated than were requested,
  // then `filteredReason` will describe the reason they were filtered out
  if (imageResponse.filteredReason != null) {
    Log.d(TAG, "FilteredReason: ${imageResponse.filteredReason}")
  }

  for (image in imageResponse.images) {
    val bitmap = image.asBitmap()
    // Use the bitmap to display the image in your UI
  }
}
// Configure the model to generate multiple images for each request
// See: https://firebase.google.com/docs/vertex-ai/model-parameters
ImagenGenerationConfig imagenGenerationConfig = new ImagenGenerationConfig.Builder()
        .setNumberOfImages(4)
        .build();

// Initialize the Vertex AI service and Imagen model
// Specify an Imagen 3 model that supports your use case
ImagenModel imagenModel = FirebaseVertexAI.getInstance().imagenModel(
        /* modelName */ "imagen-3.0-generate-002",
        /* imageGenerationConfig */ imagenGenerationConfig);

ImagenModelFutures model = ImagenModelFutures.from(imagenModel);

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

// To generate images, call `generateImages` with the text prompt
Futures.addCallback(model.generateImages(prompt), new FutureCallback<ImagenGenerationResponse<ImagenInlineImage>>() {
    @Override
    public void onSuccess(ImagenGenerationResponse<ImagenInlineImage> result) {
        // If fewer images were generated than were requested,
        // then `filteredReason` will describe the reason they were filtered out
        if (result.getFilteredReason() != null){
            Log.d("TAG", "FilteredReason: " + result.getFilteredReason());
        }

        // Handle the generated images
        List<ImagenInlineImage> images = result.getImages();
        for (ImagenInlineImage image : images) {
            Bitmap bitmap = image.asBitmap();
            // Use the bitmap to display the image in your UI
        }
    }

    @Override
    public void onFailure(Throwable t) {
        // ...
    }
}, Executors.newSingleThreadExecutor());

Dowiedz się, jak wybrać model i opcjonalnie lokalizację odpowiednią do przypadku użycia i aplikacji.

Obsługiwane funkcje i wymagania

Modele Imagen 3 oferują wiele funkcji związanych z generowaniem obrazów. W tej sekcji opisano obsługiwane opcje w przypadku korzystania z modeli w ramach usługi Vertex AI in Firebase.

Obsługiwane funkcje i możliwości

Vertex AI in Firebase obsługuje te funkcje w modelach Imagen 3.

  • generowanie osób i twarzy (pod warunkiem, że Twój projekt Firebase ma zatwierdzanie Google Cloud).

  • generowanie tekstu na wygenerowanych obrazach;

  • Dodawanie znaku wodnego do wygenerowanych obrazów

  • Konfigurowanie parametrów generowania obrazów, takich jak liczba generowanych obrazów, format obrazu i znak wodny.

  • Konfigurowanie ustawień bezpieczeństwa

Vertex AI in Firebase nie obsługuje tych zaawansowanych funkcji modeli Imagen 3.

Pamiętaj, że większość z tych funkcji wymaga umieszczenia na liście zatwierdzonych użytkowników, nawet gdy używasz modeli Imagen po stronie serwera.

  • funkcje edycji lub manipulacji obrazem, w tym skalowanie obrazu;

  • Dołączanie obrazów do żądania wysyłanego do modelu (np. w przypadku uczenia się z niewielkiej próby)

  • Weryfikowanie cyfrowych znaków wodnych za pomocą pakietów SDK
    Jeśli chcesz sprawdzić, czy obraz zawiera znak wodny, możesz go przesłać do Vertex AI Studio za pomocą karty Media.

  • Generowanie „żywych obrazów” na podstawie tekstu (generowanie MP4)

  • Generowanie obrazów przy użyciu wstępnie zdefiniowanego stylu

  • Ustawianie języka tekstu wejściowego

  • Włączanie opcji includeSafetyAttributes, co oznacza, że safetyAttributes.categories i safetyAttributes.scores nie mogą zostać zwrócone.

  • Wyłączenie ulepszania prompta (parametr enhancePrompt), co oznacza, że narzędzie do przepisywania promptów na podstawie LLM zawsze automatycznie doda więcej szczegółów do podanych promptów, aby zapewnić wyższą jakość obrazów, które lepiej odzwierciedlają prompt

  • zapisywanie wygenerowanego obrazu bezpośrednio w Google Cloud Storage jako część odpowiedzi modelu (parametr storageUri). Zamiast tego obrazy są zawsze zwracane w odpowiedzi jako bajty obrazu zakodowane w formacie Base64.
    Jeśli chcesz przesłać wygenerowany obraz do Cloud Storage, możesz użyć Cloud Storage for Firebase.

Specyfikacje i ograniczenia

Limity (na żądanie) Imagen 3 Imagen 3 Fast
Maksymalna liczba tokenów wejściowych 480 tokenów 480 tokenów
Maksymalna liczba obrazów wyjściowych 4 obrazy 4 obrazy
Obsługiwane rozdzielczości obrazów wyjściowych (w pikselach)
  • 1024 x 1024 pikseli (stosunek proporcji 1:1)
  • 896 x 1280 (format obrazu 3:4)
  • 1280 x 896 (format obrazu 4:3)
  • 768 x 1408 (format obrazu 9:16)
  • 1408 x 768 (format obrazu 16:9)
  • 1024 x 1024 pikseli (stosunek proporcji 1:1)
  • 896 x 1280 (format obrazu 3:4)
  • 1280 x 896 (format obrazu 4:3)
  • 768 x 1408 (format obrazu 9:16)
  • 1408 x 768 (format obrazu 16:9)

Co jeszcze możesz zrobić?

Dowiedz się, jak kontrolować generowanie treści

Więcej informacji o obsługiwanych modelach

Dowiedz się więcej o modelach dostępnych w różnych przypadkach użycia oraz o ich limitachcenach.


Prześlij opinię na temat korzystania z usługi Vertex AI in Firebase