Text-to-Image Generation
Tạo ảnh từ văn bản — AI hoạ sĩ
Khi tạo ảnh từ prompt 'chú mèo ngồi trên mặt trăng', AI bắt đầu từ đâu?
Hãy bấm Bước tiếp để theo dõi toàn bộ pipeline tạo ảnh từ prompt đến pixel cuối cùng.
Hình minh họa
Bước 1/5: Người dùng mô tả bức ảnh mong muốn bằng ngôn ngữ tự nhiên.
Bạn tạo ảnh 'phở bò Hà Nội' nhưng kết quả thiếu chi tiết (hành lá, thịt bò). Bạn nên làm gì?
Giải thích
Text-to-Image là công nghệ sử dụng mô hình khuếch tán (diffusion model) để tạo hình ảnh từ mô tả ngôn ngữ tự nhiên. Kiến trúc phổ biến nhất hiện nay là Latent Diffusion (Stable Diffusion).
CLIP Text Encoder: Chuyển prompt thành vector ngữ nghĩa, nắm bắt ý nghĩa và phong cách.
U-Net: Mạng dự đoán nhiễu cần loại bỏ ở mỗi bước. Nhận conditioning từ text vector.
VAE (Variational Autoencoder): Encoder nén ảnh vào không gian latent, Decoder giải mã ngược lại thành pixel.
Scheduler: Điều khiển lịch trình khử nhiễu (bao nhiêu nhiễu bỏ mỗi bước).
Quá trình khử nhiễu tuân theo công thức:
Trong đó là nhiễu dự đoán bởi U-Net, là conditioning từ prompt, là hệ số lịch trình nhiễu.
CFG là kỹ thuật khuếch đại ảnh hưởng của prompt bằng cách so sánh dự đoán có và không có điều kiện:
là CFG scale. bỏ qua prompt, là mặc định phổ biến. Giống như chỉnh volume cho giọng nói hướng dẫn của prompt.
from diffusers import StableDiffusionPipeline
import torch
# Tạo ảnh phố cổ Hà Nội
pipe = StableDiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
).to("cuda")
prompt = "Phố cổ Hà Nội mùa thu, lá vàng rơi trên đường, "
prompt += "xe đạp cũ dựng bên tường gạch, ánh nắng chiều"
negative_prompt = "blurry, low quality, distorted"
image = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
num_inference_steps=30, # Số bước khử nhiễu
guidance_scale=7.5, # CFG scale
width=1024, height=1024,
).images[0]
image.save("pho-co-ha-noi.png")Stable Diffusion XL: Mã nguồn mở, chạy được trên GPU cá nhân (8GB VRAM). Cộng đồng Việt Nam dùng nhiều nhất.
DALL-E 3: Tích hợp trong ChatGPT, hiểu prompt phức tạp, hỗ trợ tiếng Việt tốt nhờ GPT-4.
Midjourney: Chất lượng nghệ thuật cao, phong cách đẹp mặc định, nhưng đóng (chỉ qua Discord).
Flux: Thế hệ mới từ Black Forest Labs, kiến trúc DiT (Diffusion Transformer) thay U-Net.
- Text-to-image bắt đầu từ nhiễu ngẫu nhiên, khử nhiễu dần dưới sự dẫn dắt của prompt.
- Kiến trúc: CLIP encoder (hiểu prompt) → U-Net (khử nhiễu) → VAE decoder (tạo pixel).
- CFG scale điều chỉnh mức bám sát prompt — quá cao sẽ thiếu tự nhiên, quá thấp sẽ bỏ qua prompt.
- Latent diffusion xử lý trong không gian nhỏ (64x64) rồi giải mã ra ảnh lớn (512-1024px).
- Prompt chi tiết là kỹ năng quan trọng nhất — mô tả càng cụ thể, kết quả càng chính xác.
Kiểm tra hiểu biết
Tại sao Stable Diffusion làm việc trong 'không gian latent' thay vì trực tiếp trên pixel?