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, w którym znajdziesz instrukcje konfigurowania projektu Firebase, łączenia aplikacji z Firebase, dodawania pakietu SDK, inicjowania usługi Vertex AI i tworzenia wystąpienia ImagenModel.

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)

  • Utwórz instancję ImagenModel (nie instancję GenerativeModel).

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

Przykłady tworzenia ImagenModel i używania generateImages() znajdziesz 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.

Generowanie jednego obrazu na podstawie danych wejściowych zawierających tylko tekst

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

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

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)

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.

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) }

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 jeśli 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 plików 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 promptów (parametr enhancePrompt), co oznacza, że narzędzie do przeredagowywania promptów oparte na modelu LLM zawsze automatycznie doda więcej szczegółów do przesłanego prompta, aby dostarczać obrazy o wyższej jakości, 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