Tạo hình ảnh bằng Imagen


SDK Vertex AI in Firebase cấp cho bạn quyền truy cập vào các mô hình Imagen 3 (thông qua Imagen API) để bạn có thể tạo hình ảnh từ câu lệnh văn bản. Với khả năng này, bạn có thể làm những việc như:

  • Tạo hình ảnh từ câu lệnh được viết bằng ngôn ngữ tự nhiên
  • Tạo hình ảnh ở nhiều định dạng và phong cách
  • Kết xuất văn bản trong hình ảnh

Xin lưu ý rằng Vertex AI in Firebase chưa hỗ trợ tất cả tính năng có sẵn cho các mẫu Imagen. Tìm hiểu thêm trong phần Các tính năng và chức năng được hỗ trợ ở phần sau của trang này.

Chuyển đến mã cho phương thức nhập chỉ văn bản

Trước khi bắt đầu

Hãy xem xong hướng dẫn bắt đầu sử dụng nếu bạn chưa xem. Việc này bao gồm việc thiết lập dự án Firebase, kết nối ứng dụng với Firebase, thêm SDK và khởi chạy dịch vụ Vertex AI. Đây đều là những nhiệm vụ bắt buộc trước khi bạn có thể gửi yêu cầu nhắc đến mô hình Imagen bằng SDK Vertex AI in Firebase.

Xin lưu ý rằng để tạo hình ảnh bằng mô hình Imagen:

  • Đảm bảo rằng bạn đang sử dụng ít nhất các phiên bản thư viện Firebase sau:
    iOS+: v11.9.1+ | Android: v16.2.0+ (BoM: v33.10.0+) | Web: v11.4.1+ | Flutter: v1.4.0+ (BoM: v3.8.0+)

  • Khởi động ImagenModel (không phải GenerativeModel)

  • Gửi lời nhắc trong lệnh gọi đến generateImages() (không đến generateContent() hoặc generateContentStream())

Quá trình khởi chạy ImagenModel và sử dụng generateImages() này được hiển thị trong các ví dụ trên trang này.

Các mẫu hỗ trợ tính năng này

Mô hình Imagen 3 hỗ trợ việc tạo hình ảnh. Chúng tôi sẽ sớm hỗ trợ tính năng tạo hình ảnh bằng các mô hình Gemini 2.0.

Tạo hình ảnh từ dữ liệu đầu vào chỉ có văn bản

Bạn có thể yêu cầu mô hình Imagen tạo hình ảnh bằng cách đưa ra câu lệnh bằng văn bản. Bạn có thể tạo một hình ảnh hoặc nhiều hình ảnh.

Tạo một hình ảnh từ dữ liệu đầu vào chỉ có văn bản

Hãy đảm bảo bạn đã hoàn tất phần Trước khi bắt đầu trong hướng dẫn này trước khi thử mẫu này.

Bạn có thể yêu cầu mô hình Imagen tạo một hình ảnh bằng cách đưa ra câu lệnh bằng văn bản.

Kotlin

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

Java

// 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());

Tìm hiểu cách chọn một mô hình và tuỳ chọn vị trí phù hợp với trường hợp sử dụng và ứng dụng của bạn.

Tạo nhiều hình ảnh từ dữ liệu đầu vào chỉ có văn bản

Hãy đảm bảo bạn đã hoàn tất phần Trước khi bắt đầu của hướng dẫn này trước khi thử mẫu này.

Theo mặc định, các mô hình Imagen 3 chỉ tạo một hình ảnh cho mỗi yêu cầu. Tuy nhiên, bạn có thể yêu cầu mô hình Imagen tạo nhiều hình ảnh cho mỗi yêu cầu bằng cách cung cấp generationConfig trong quá trình khởi chạy mô hình.

Kotlin

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

Java

// 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());

Tìm hiểu cách chọn một mô hình và tuỳ chọn vị trí phù hợp với trường hợp sử dụng và ứng dụng của bạn.

Các tính năng và yêu cầu được hỗ trợ

Các mô hình Imagen 3 cung cấp nhiều tính năng liên quan đến việc tạo hình ảnh. Phần này mô tả những tính năng được hỗ trợ khi sử dụng các mô hình với Vertex AI in Firebase.

Các tính năng và chức năng được hỗ trợ

Vertex AI in Firebase hỗ trợ các tính năng này của mô hình Imagen 3.

  • Tạo người và khuôn mặt (miễn là dự án Firebase của bạn đã được Google Cloud phê duyệt)

  • Tạo văn bản trong hình ảnh được tạo

  • Thêm hình mờ vào hình ảnh được tạo

  • Định cấu hình các tham số tạo hình ảnh, chẳng hạn như số lượng hình ảnh được tạo, tỷ lệ khung hình và tạo hình mờ

  • Định cấu hình chế độ cài đặt an toàn

Vertex AI in Firebase không hỗ trợ các tính năng nâng cao này của các mẫu Imagen 3.

Xin lưu ý rằng hầu hết các tính năng này đều yêu cầu bạn phải có tên trong danh sách người dùng được phê duyệt ngay cả khi sử dụng các mô hình Imagen phía máy chủ.

  • Các tính năng chỉnh sửa hoặc thao tác với hình ảnh, bao gồm cả tính năng nâng cấp hình ảnh

  • Đưa hình ảnh vào yêu cầu gửi đến mô hình (chẳng hạn như để học từ một vài dữ liệu)

  • Xác minh hình mờ kỹ thuật số bằng SDK
    Nếu muốn xác minh rằng một hình ảnh có hình mờ, bạn có thể tải hình ảnh đó lên Vertex AI Studio bằng thẻ Media (Nội dung nghe nhìn).

  • Tạo "hình ảnh động" từ văn bản (tạo tệp MP4)

  • Tạo hình ảnh bằng kiểu được xác định trước

  • Đặt ngôn ngữ của văn bản nhập

  • Bật includeSafetyAttributes, nghĩa là không thể trả về safetyAttributes.categoriessafetyAttributes.scores

  • Tắt tính năng cải thiện câu lệnh (thông số enhancePrompt). Điều này có nghĩa là công cụ viết lại câu lệnh dựa trên LLM sẽ luôn tự động thêm thông tin chi tiết vào câu lệnh được cung cấp để cung cấp hình ảnh chất lượng cao hơn, phản ánh tốt hơn câu lệnh được cung cấp

  • Ghi trực tiếp hình ảnh được tạo vào Google Cloud Storage như một phần của phản hồi từ mô hình (tham số storageUri). Thay vào đó, hình ảnh luôn được trả về dưới dạng byte hình ảnh được mã hoá base64 trong phản hồi.
    Nếu muốn tải hình ảnh được tạo lên Cloud Storage, bạn có thể sử dụng Cloud Storage for Firebase.

Thông số kỹ thuật và giới hạn

Giới hạn (mỗi yêu cầu) Imagen 3 Imagen 3 Fast
Số mã thông báo đầu vào tối đa 480 mã thông báo 480 mã thông báo
Số lượng hình ảnh đầu ra tối đa 4 hình ảnh 4 hình ảnh
Độ phân giải hình ảnh đầu ra được hỗ trợ (pixel)
  • 1024x1024 pixel (tỷ lệ khung hình 1:1)
  • 896x1280 (tỷ lệ khung hình 3:4)
  • 1280x896 (tỷ lệ khung hình 4:3)
  • 768x1408 (tỷ lệ khung hình 9:16)
  • 1408x768 (tỷ lệ khung hình 16:9)
  • 1024x1024 pixel (tỷ lệ khung hình 1:1)
  • 896x1280 (tỷ lệ khung hình 3:4)
  • 1280x896 (tỷ lệ khung hình 4:3)
  • 768x1408 (tỷ lệ khung hình 9:16)
  • 1408x768 (tỷ lệ khung hình 16:9)

Bạn có thể làm gì khác?

Tìm hiểu cách kiểm soát việc tạo nội dung

Tìm hiểu thêm về các mẫu được hỗ trợ

Tìm hiểu về các mô hình có sẵn cho nhiều trường hợp sử dụng, cũng như hạn mứcgiá của các mô hình đó.


Gửi ý kiến phản hồi về trải nghiệm của bạn với Vertex AI in Firebase