1. Giới thiệu
Lần cập nhật gần đây nhất: ngày 12 tháng 10 năm 2023
Tạo hình ảnh
Google Imagen là một mô hình ngôn ngữ lớn mạnh mẽ của Google, có thể tạo ra hình ảnh chân thực và sáng tạo từ nội dung mô tả bằng văn bản. Với Imagen trên Vertex AI, người dùng có thể tạo ra những sản phẩm AI thế hệ mới có khả năng biến trí tưởng tượng của người dùng thành những thành phần hình ảnh chất lượng cao chỉ trong vài giây. Ngoài tính năng Tạo hình ảnh từ văn bản, Gemini cũng hỗ trợ tính năng Chỉnh sửa hình ảnh thông qua câu lệnh bằng văn bản, Chú thích cho hình ảnh, Hỏi và đáp bằng hình ảnh, Chủ đề và Điều chỉnh mô hình hình ảnh dựa trên phong cách.
Tạo câu lệnh
Để Tạo hình ảnh bằng Imagen, bạn cần cung cấp nội dung mô tả dạng văn bản của hình ảnh đó, còn gọi là câu lệnh, sử dụng cơ chế tạo hình ảnh. Tuy nhiên, để tạo hình ảnh chân thực chất lượng cao, bạn cần có chuyên môn về việc nhắc. Việc này cũng có thể phụ thuộc vào miền nếu bạn muốn tạo một hình ảnh liên quan đến các miền cụ thể của doanh nghiệp như bán lẻ, sản xuất, v.v. Một cách dễ dàng hơn để thiết kế câu lệnh là cung cấp một bộ từ khoá cho mô hình Text Bison.
Phương pháp chung là dưới –
Giao diện người dùng radio
Gradio là một thư viện Python nguồn mở cho phép bạn nhanh chóng tạo các thành phần giao diện người dùng dễ sử dụng và có thể tuỳ chỉnh cho mô hình học máy, API bất kỳ hay thậm chí là một hàm Python tuỳ ý bằng một vài dòng mã. Bạn có thể tích hợp trực tiếp GUI của Gradio vào sổ tay Jupyter hoặc chia sẻ dưới dạng một đường liên kết với bất kỳ ai. Gradio hỗ trợ nhiều loại nội dung nghe nhìn, bao gồm văn bản, hình ảnh, video và âm thanh. API này cũng cung cấp một số thành phần giao diện người dùng được dựng sẵn, chẳng hạn như các trường nhập dữ liệu, nút, thanh trượt và trình đơn thả xuống.
Sản phẩm bạn sẽ tạo ra
Trong lớp học lập trình này, bạn sẽ triển khai một ứng dụng Gradio sẽ:
- Tạo câu lệnh dạng văn bản bằng từ khoá hoặc cụm từ. Bạn cũng có thể chỉnh sửa câu lệnh đã tạo theo cách thủ công.
- Tạo hình ảnh từ câu lệnh đã tạo trên giao diện người dùng.
Kiến thức bạn sẽ học được
- Cách sử dụng phương pháp học cơ chế chụp ảnh chân dung và chụp ảnh vài lần với mô hình bò rừng bison theo phương thức lập trình để tạo các câu lệnh cụ thể bằng hình ảnh cho việc tạo hình ảnh.
- Cách tạo hình ảnh bằng mô hình Imagen thông qua API và lời nhắc.
- Cách Xây dựng, triển khai và thử nghiệm ứng dụng Gradio trên sổ tay bàn làm việc của Vertex AI.
Bạn cần có
- Truy cập vào một dự án GCP, chẳng hạn như "Cloud-llm-preview4"
- Quyền truy cập để tạo Vertex AI Workbench
- Đã bật Vertex AI API.
- Yêu cầu về mạng đối với Gradio: Quyền truy cập vào URL công khai của thực thể máy tính xách tay
2. Thiết lập
Tạo sổ tay
- Đăng nhập vào dự án
- Chuyển đến bàn làm việc từ trình đơn điều hướng bên trái
- Trong phần "Sổ ghi chú do NGƯỜI DÙNG QUẢN LÝ", hãy tạo một sổ tay mới với các lựa chọn mặc định.
- Nhấp vào "MỞ JUPYTERLAB" sau khi thực thể đã được cấp phép.
Lưu ý: Có thể mất vài phút để khởi động sổ tay nếu sổ tay ở trạng thái dừng.
Lấy mã
Chúng tôi đã đặt tệp mã tại đây. Bạn có thể nhập sổ tay này vào môi trường của mình và chạy như bình thường (trừ phi thay đổi thông tin chi tiết của dự án).
3. Chạy mã
Cài đặt/Nhập các phần phụ thuộc và thư viện bắt buộc
- Cài đặt ứng dụng Gradio
- Nhập các API Vertex AI cho Text-Bison và Tạo hình ảnh.
- Nhập tất cả các thư viện bắt buộc khác.
Tạo câu lệnh bằng Text-Bison
Sử dụng dữ liệu do người dùng nhập có chứa Từ khoá và/hoặc Cụm từ, tức là danh sách các từ khoá hoặc cụm từ được phân tách bằng dấu phẩy mà có thể dùng để tạo một câu mô tả hình ảnh cần thiết.
Ví dụ: Mô tả cá tính, Chủ đề, Bối cảnh, Ánh sáng và các nội dung mô tả khác.
Hàm tạo lời nhắc có dạng như sau:
tường
model = TextGenerationModel.from_pretrained("text-bison")
response_few_shot = mô hình.dự đoán(
few_shot_prompt,
**parameters
)
response_single_shot = model.predict(
prompt,
**parameters
)
Lời nhắc chụp liên tục và chụp 0 chính
Lời nhắc nhập bằng 0 là một kỹ thuật tạo văn bản trong đó mô hình không được cung cấp bối cảnh hoặc ví dụ để tạo văn bản. Điều này có thể khó khăn vì mô hình phải dựa vào kiến thức riêng của mình để tạo văn bản mạch lạc và có đầy đủ thông tin.
Tuy nhiên, việc nhắc nhắc thủ công cũng có thể rất sáng tạo vì mô hình không bị ràng buộc bởi bất kỳ ví dụ nào có sẵn.
Lời nhắc ít ảnh là một kỹ thuật tạo văn bản trong đó mô hình được cung cấp một số ít ví dụ để tạo văn bản. Việc này có thể dễ dàng hơn việc nhắc lệnh ngay lập tức vì mô hình có một số hướng dẫn về nội dung cần tạo. Tuy nhiên, việc nhắc vài lần cũng có thể hạn chế vì mô hình chỉ có thể tạo văn bản tương tự như các ví dụ đã đưa ra.
Dưới đây là mã mẫu cho lời nhắc ít chụp và không chụp.
Ⰳ**# Vài câu lệnh gọi ban đầu được dùng trong mã**
vài_shot_prompt = f"""Bạn là chuyên gia viết câu lệnh cho các Mô hình tạo hình ảnh. Sau đó, nối các cụm từ và từ khoá cho sẵn với nhau rồi bổ sung một vài thông tin chi tiết thực tế để tạo ra câu lệnh hợp lý và có ý nghĩa dùng để tạo hình ảnh.
input: people, gardening, house garden, colorful plants, Real, HD image, Photo.
output: A Photo of people gardening in a house garden landscape with few coloured flowering plants. Realistic FULL HD Images, Elegant and natural facial and eye features taken by professional photographer
input: plumber, faucet, kitchen, high quality, natural lighting, Photo
output: A Photo of a plumber fixing a faucet in the kitchen. High quality image with natural indoor lighting.
input: house and garden, halloween, warm lighting, high quality image, Sketch
output: A Sketch of Beautiful House and Garden with Halloween Decorations. Warm lighting, High Quality, 4K photograph taken by professional photographer from front.
input: nice living room, warm lighting,Professional Photographer from far, Photo
output: A photo of a Well designed Living Room. Warm lighting, High Quality, 4K photograph taken by Professional Photographer from far
input: {params_list_str}
output:
"""
Số câu lệnh Zero Shot Prompt dùng trong mã
prompt = f"""Bạn là chuyên gia viết câu lệnh cho Mô hình tạo hình ảnh. Giúp tôi viết một danh sách các câu lệnh có ý nghĩa cho Mô hình tạo hình ảnh, cụ thể là bao gồm các từ: "{params_list_str}". Hãy nhớ đưa những từ này vào câu lệnh và làm cho câu lệnh có ý nghĩa."""
Tạo hình ảnh bằng Imagen
Sử dụng lời nhắc nhập hoạt động đầu vào của người dùng và lời nhắc phủ định(không bắt buộc) đồng thời cung cấp cùng một nguồn cấp dữ liệu cho mô hình (imagegenerative@002).
Ⰳdef image_generative_complete(thông tin đầu vào, lời nhắc âm):
input_prompt = input
model = ImageGenerationModel.from_pretrained("imagegeneration@002")
response = model.generate_images(
prompt=input_prompt,
number_of_images=4, #kept to static value of 4
negative_prompt=negative_prompt
)
Mã sau đây được thêm vào để tạo hình ảnh từ lời nhắc do người dùng nhập và lời nhắc phủ định. Mã hoàn thiện sử dụng câu lệnh do mô hình text-bison tạo.
●từ vertexai.preview.vision_models nhập ImageGenerationModel
def image_generative(thông tin đầu vào, âm_prompt):
input_prompt = input
model = ImageGenerationModel.from_pretrained("imagegeneration@002")
response = model.generate_images(
prompt=input_prompt,
number_of_images=4, #kept to static value of 4.. can be a max value of 8
negative_prompt=negative_prompt
)
images = response.images
return images
user_prompt = "Prompt: Một phụ nữ trẻ giới thiệu và bán một Cây thông Giáng sinh tươi chưa được trang trí từ một mớ cây. Ánh sáng lạnh, hình ảnh chất lượng cao và chi tiết do các nhiếp ảnh gia chuyên nghiệp chụp từ xa."
phủ định_prompt = "Khuôn mặt bị méo mó và không hấp dẫn"
generate_images_list = image_generative(user_prompt,negative_prompt)
#show một trong những hình ảnh đã tạo
generated_images_list[0].show()
Đầu ra -
4. Triển khai ứng dụng Gradio
Gradio được dùng cho giao diện người dùng, nơi người dùng có thể nhập từ khoá và tạo câu lệnh có cấu trúc, đồng thời có thể sử dụng trực tiếp các câu lệnh này hoặc người dùng có thể chỉnh sửa thêm, sau đó được đưa vào Imagen để tạo hình ảnh theo thông tin đầu vào. Gradio là một thư viện Python có thể dùng để tạo giao diện người dùng cho các mô hình học máy. Đối với ứng dụng này, Các khối được dùng để thêm tính linh hoạt và các luồng dữ liệu phức tạp vào ứng dụng này. Khối cung cấp tính năng quản lý bố cục ứng dụng bằng cách sử dụng Hàng và Cột:
🥰 với gr.Blocks() làm bản minh hoạ:
#Prompt Generation Part
with gr.Row():
with gr.Column(scale=1):
Persona = gr.Textbox(label="Persona", info = "Customer segment such as Plumber, Electrician etc.")
with gr.Column(scale=1):
Signals = gr.Textbox(label="Signals", info = "Main content of banner such as Faucet, Lamp etc.")
with gr.Column(scale=1):
Theme = gr.Textbox(label="Theme", info = "Context of the banner such as Halloween, Kitchen etc.")
with gr.Row():
with gr.Column(scale=1):
photo_modifiers = gr.Textbox(label="Photography Modifiers", info = "Photography specific modifiers and parameters such as Lighting(Dramatic/Natural/Warm/Cold), Camera Proximity etc.")
with gr.Column(scale=1):
quality_modifiers = gr.Textbox(label="Image Quality Modifier", info = "Quality Modifiers like high-quality, beautiful, stylized. 4K, HDR, By a professional etc")
with gr.Column(scale=1):
other_desc = gr.Textbox(label="Any Other Description", info = "Other Descriptions for Image such as Style (Painting/Photo/Sketch), Bakground/Foreground Context")
với gr.Row():
btn = gr.Button("Submit")
với gr.Row():
returned_prompts = gr.Textbox(label="Result Prompts", interactive = True)
btn.click(fn=prompt_generative, input=[Persona, Signals,Theme, photo_modifiers, chất lượng
Để xử lý hoạt động đầu vào và đầu ra của người dùng, Gradio cung cấp nhiều thành phần như Hình ảnh, Video, Thanh trượt, Trình đơn thả xuống, Hộp văn bản, Đài và các lựa chọn khác. Các thành phần này cho phép nhà phát triển linh hoạt và có quyền kiểm soát cách chấp nhận dữ liệu đầu vào từ người dùng và cung cấp dữ liệu đó cho Test-bison, imagen hoặc bất kỳ mô hình học máy nào khác.
Đối với dự án này, ứng dụng được tạo bằng Các khối để tăng thêm tính linh hoạt và độ phức tạp
chuyển dữ liệu đến ứng dụng. Ngoài Khối, nhiều Thành phần đài phát thanh còn được
được sử dụng bao gồm:
- Hàng, cột để có bố cục phù hợp.
- Nút, Hộp văn bản, Trình đơn thả xuống và Thanh trượt để đạt được chức năng cần thiết và dễ sử dụng
- Thành phần Image (Hình ảnh) để hiển thị kết quả.
- Các trình trợ giúp khác như EventData, update để hỗ trợ các thay đổi động đối với giao diện người dùng.
Dưới đây là đoạn mã dùng để tạo hình ảnh từ câu lệnh phủ định và thông tin đầu vào:
Ⰳ #Phần Tạo hình ảnh
with gr.Row():
with gr.Column(scale=1):
image_prompt = gr.Textbox(label="Image Generation Prompt")
with gr.Accordion("Advanced options", open=False): #Let's hide the advanced options!
with gr.Row():
negative_prompt = gr.Textbox(label="Negative prompt", info = "Specify What not to Include in Image ex. Bad Quality Image")
with gr.Row():
with gr.Column(scale=1):
img_btn = gr.Button("Generate Images")
with gr.Row():
with gr.Column():
output_image_1 = gr.Image(label = "Result Image 1", visible = False)
with gr.Column():
output_image_2 = gr.Image(label = "Result Image 2", visible = False)
with gr.Row():
with gr.Column():
output_image_3 = gr.Image(label = "Result Image 3", visible = False)
with gr.Column():
output_image_4 = gr.Image(label = "Result Image 4", visible = False)
returned_prompts.select(populate_image_prompt, inputs = [returned_prompts], outputs = image_prompt)
img_btn.click(fn=image_generation_completion, inputs=[image_prompt,negative_prompt], outputs = [output_image_1,output_image_2,output_image_3,output_image_4])
Để chạy và kiểm tra ứng dụng Gradio, bạn chỉ cần nhập câu lệnh bằng văn bản rồi nhấp vào nút Tạo. Hình ảnh sẽ tạo ra một hình ảnh dựa trên câu lệnh của bạn. Bạn có thể thử nhiều câu lệnh để xem Imagen có thể tạo loại hình ảnh nào.
Dưới đây là ảnh chụp màn hình quá trình Tạo câu lệnh trên ứng dụng Gradio.
Dưới đây là ảnh chụp màn hình quá trình Tạo hình ảnh trên ứng dụng Gradio.
Một số ví dụ –
Ví dụ 1 –
[Hình ảnh bên trái] Câu lệnh (Sử dụng các từ khoá đơn giản làm câu lệnh) : Một vài người bạn đang chèo thuyền.
[Hình ảnh bên phải] Câu lệnh (Sử dụng câu lệnh do Text-Bison tạo) : Ảnh chụp 2 thanh niên đang câu cá trên thuyền, xung quanh là những cây tối trong rừng. Người đàn ông mặc áo sơ mi và đang đứng trên một chiếc thuyền. Ánh sáng tự nhiên, chất lượng cao, ảnh 4K do nhiếp ảnh gia chuyên nghiệp chụp.
Ví dụ 2 –
[Hình ảnh bên trái] Lời nhắc ((Sử dụng từ khoá đơn giản làm câu lệnh)) : Cây thông Noel
[Hình ảnh bên phải] Câu lệnh (Sử dụng câu lệnh do Text-Bison tạo) : Một cây thông Giáng sinh trong một căn phòng có đèn và đồ nội thất. Cây được trang trí bằng đèn và đồ trang trí. Biểu trưng này được đặt gần cửa sổ và có thể nhìn thấy một bức tường ở phía sau. Ánh sáng ấm, Chất lượng cao, Ảnh HDR do Nhiếp ảnh gia chuyên nghiệp chụp từ xa.
5. Dọn dẹp
Để dọn dẹp tài nguyên,
- Dừng ứng dụng gradio.
- Dừng/Xoá sổ tay Workbench.
6. Xin chúc mừng
Xin chúc mừng! Bạn đã triển khai thành công ứng dụng Gradio để tạo câu lệnh và hình ảnh bằng Google Text-Bison API và API Imagen.