Conditioning và Latent Diffusion: từ khử nhiễu đến text-to-image
Ở bài trước, ta đã thấy cách DDPM sinh ra dữ liệu từ một màn nhiễu trắng ngẫu nhiên. Tuy nhiên, một mô hình sinh ảnh chỉ thực sự hữu ích khi con người có thể giao tiếp và điều khiển nó: sinh ra cái gì, màu sắc thế nào, phong cách nghệ thuật ra sao, và bố cục nhân vật đặt ở vị trí nào.
Để làm được điều đó, hệ thống sinh ảnh hiện đại phải giải quyết đồng thời hai thách thức khổng lồ:
- Khả năng điều khiển (Conditioning): Làm thế nào để “tiêm” ngữ nghĩa của một câu văn bản (prompt) hoặc một bức vẽ phác thảo vào trong từng bước khử nhiễu của mạng neural?
- Chi phí tính toán (Computational Bottleneck): Một bức ảnh chứa hàng triệu pixel. Nếu chạy vòng lặp khử nhiễu 50 bước trực tiếp trên mảng pixel khổng lồ đó, ngay cả những GPU mạnh nhất cũng sẽ bị quá tải bộ nhớ và chạy rất chậm.
Kiến trúc Latent Diffusion (nền tảng của Stable Diffusion) ra đời như một câu trả lời trọn vẹn cho cả hai bài toán trên.
Nếu chỉ giữ lại một câu, có thể dùng câu sau:
Latent Diffusion giải quyết nút thắt tính toán bằng cách chuyển toàn bộ quá trình khử nhiễu từ không gian pixel đắt đỏ xuống không gian ẩn nén của VAE, đồng thời dùng cross-attention để hướng dẫn quá trình sinh ảnh theo prompt văn bản và ràng buộc không gian.
Từ sinh ảnh ngẫu nhiên đến sinh ảnh theo điều kiện
Mô hình diffusion vô điều kiện học phân phối xác suất biên . Ngược lại, một hệ thống tạo ảnh theo văn bản (text-to-image) cần học phân phối có điều kiện:
Trong đó là thông tin điều kiện (conditioning signal). Tùy bài toán, có thể là:
- Chuỗi embedding văn bản mã hóa từ một câu prompt;
- Nhãn phân loại của vật thể;
- Bản đồ chiều sâu (depth map) hoặc bản đồ cạnh (Canny edges);
- Khung xương tư thế người (OpenPose);
- Một bức ảnh gốc cần chỉnh sửa (image-to-image);
- Một mặt nạ (mask) khoanh vùng chi tiết cần vẽ lại (inpainting).
Ở cấp độ mạng khử nhiễu, hàm dự đoán thay vì chỉ nhận ảnh nhiễu và thời điểm , nay nhận thêm tín hiệu :
Classifier-Free Guidance: làm sao ép mô hình nghe lời prompt?
Trong giai đoạn đầu của diffusion, các nhà nghiên cứu từng dùng một mạng phân loại bên ngoài (Classifier Guidance) để dẫn hướng gradient về phía nhãn mong muốn. Tuy nhiên, cách này đòi hỏi phải huấn luyện riêng một bộ phân loại chịu được ảnh nhiễu ở mọi timestep — một việc cực kỳ phức tạp và kém linh hoạt với prompt văn bản tự do.
Bước ngoặt thực sự đến từ kỹ thuật Classifier-Free Guidance (CFG) của Jonathan Ho và Tim Salimans (2022). Ý tưởng là: huấn luyện một mạng duy nhất thực hiện cả hai vai trò (có điều kiện và không điều kiện).
Trong lúc train, ta ngẫu nhiên loại bỏ prompt (đặt ) ở khoảng 10-20% số mẫu. Nhờ đó, mạng vừa học cách sinh ảnh theo prompt, vừa giữ được khả năng sinh ảnh tự do.
Khi suy diễn (inference), tại mỗi bước khử nhiễu, ta cho mạng tính cả hai lượt:
- : Dự đoán nhiễu khi có nghe theo prompt.
- : Dự đoán nhiễu khi tự do hoàn toàn.
Sau đó, ta kết hợp hai dự đoán bằng công thức ngoại suy:
Trong đó được gọi là guidance scale (hệ số hướng dẫn).
Hiệu số (cond - uncond): Vector phương hướng mà câu prompt đang kéo bức ảnh tới.
Hệ số w > 1: Khuếch đại phương hướng đó, đẩy bức ảnh khớp với prompt hơn.
- Nếu đặt : Ta thu được dự đoán có điều kiện thông thường.
- Nếu đặt (thường từ đến ): Bức ảnh sẽ nghe lời câu prompt hơn rất nhiều, chi tiết trở nên sắc nét và tương phản rõ nét hơn.
- Nếu tăng quá cao (): Bức ảnh sẽ bị cháy sáng, bão hòa màu quá mức hoặc xuất hiện các chi tiết kỳ dị do bị đẩy văng ra khỏi phân phối dữ liệu tự nhiên.
Vì sao khử nhiễu trực tiếp trên pixel lại quá đắt đỏ?
Hãy thử làm một phép tính tài nguyên đơn giản: Một bức ảnh màu độ phân giải chứa hơn 3,1 triệu giá trị số thực. Nếu ta chạy một mạng U-Net sâu hàng chục tầng, kết hợp với cơ chế self-attention (vốn có độ phức tạp theo số điểm ảnh), chi phí tính toán cho một lượt chạy forward là khổng lồ. Nhân con số đó với 50 hoặc 100 bước khử nhiễu lặp lại, việc sinh một bức ảnh duy nhất có thể mất hàng chục giây và ngốn hàng chục gigabyte VRAM.
Nhưng thực tế thị giác cho thấy: phần lớn các pixel lân cận trong ảnh mang thông tin dư thừa ở tần số cao (ví dụ vùng trời xanh, nền tường trắng). Ý nghĩa ngữ nghĩa thực sự (con người, đồ vật, bố cục) chỉ chiếm một phần rất nhỏ dung lượng thông tin.
Đó chính là động lực để kiến trúc Latent Diffusion Models (LDM) của Robin Rombach và cộng sự (CompVis / LMU Munich, CVPR 2022) ra đời.
Latent Diffusion: nén ảnh trước, khử nhiễu sau
Thay vì khuếch tán trực tiếp trên pixel, Latent Diffusion tách quy trình thành hai giai đoạn độc lập:
- Giai đoạn nén cảm nhận (Perceptual Compression): Dùng một mạng Autoencoder biến phân (VAE) đã được huấn luyện trước để nén ảnh không gian pixel thành một biểu diễn ẩn (latent) có kích thước nhỏ hơn nhiều lần:
- Giai đoạn sinh dữ liệu (Latent Diffusion): Toàn bộ quá trình thêm nhiễu và khử nhiễu lặp lại nhiều bước chỉ diễn ra trên không gian ẩn :
- Giai đoạn giải nén ảnh: Sau khi đã khử sạch nhiễu trong không gian ẩn, ta đưa qua bộ Decoder của VAE để phóng to trở lại thành ảnh thật:

Hình 1. Kiến trúc Latent Diffusion tổng thể. Quá trình khử nhiễu diễn ra hoàn toàn trong không gian ẩn của VAE, nhận điều kiện văn bản qua Cross-Attention. Nguồn: CompVis / LMU Munich (Giấy phép MIT).
Không gian ẩn thay đổi bài toán như thế nào?
Thông thường, bộ mã hóa VAE của Stable Diffusion áp dụng hệ số nén không gian với số kênh ẩn . Nghĩa là:
- Một bức ảnh pixel kích thước: ( số thực).
- Được nén thành một tensor latent: ( số thực).
Diện tích không gian tính toán giảm tới lần! Chi phí bộ nhớ và thời gian tính toán của self-attention giảm theo cấp số nhân, cho phép các mô hình như Stable Diffusion chạy mượt mà ngay trên các card màn hình phổ thông.
Tuy nhiên, việc chuyển sang không gian ẩn cũng mang lại một nguồn lỗi mới: giới hạn tái tạo của VAE. Nếu bạn thử đưa một bức ảnh chứa chữ viết rất nhỏ, chi tiết mắt người ở xa, hoặc các đường vân lưới tần số cao qua cặp và mà không qua diffusion, bạn sẽ thấy ảnh tái tạo có thể bị nhòe nét hoặc méo chữ. Vì vậy, khi debug chất lượng một mô hình sinh ảnh, kỹ sư luôn cần phân biệt: lỗi do mô hình diffusion khử nhiễu sai, hay do VAE nén làm mất chi tiết gốc.
Đưa văn bản vào mạng qua Cross-Attention
Làm thế nào U-Net biết từ “con mèo” trong prompt ứng với vùng nào trong tensor latent ? Câu trả lời nằm ở cơ chế Cross-Attention (chú ý chéo).
Quy trình diễn ra như sau:
- Câu prompt được đưa qua một mô hình ngôn ngữ đã học trước (như CLIP ViT-L/14 hoặc T5) để biến thành một chuỗi các vector embedding ngữ nghĩa.
- Tại các tầng trung gian của U-Net (hoặc DiT), feature map không gian của latent đóng vai trò tạo ra các vector Query ().
- Chuỗi embedding văn bản đóng vai trò tạo ra các vector Key () và Value ().
- Phép toán attention cho phép từng vị trí không gian trên bức ảnh tự “hỏi” xem nó có liên quan đến từ ngữ nào trong câu văn để cập nhật biểu diễn tương ứng.
Text prompt không phải là code: giới hạn của điều khiển bằng chữ
Một sai lầm phổ biến của người mới bắt đầu là nghĩ rằng có thể lập trình chính xác một bức ảnh phức tạp chỉ bằng cách viết prompt thật dài.
Trên thực tế, mô hình học từ phân phối thống kê của các cặp ảnh-chú thích trên Internet. Do đó, text-to-image có những giới hạn cố hữu:
- Khó khăn với số đếm: Yêu cầu “ba quả táo trên bàn” thường sinh ra hai hoặc bốn quả.
- Rò rỉ thuộc tính (Attribute Bleeding): Prompt “một chiếc áo đỏ và một chiếc mũ xanh” thường bị mô hình hiểu nhầm thành “áo xanh, mũ đỏ” hoặc cả hai cùng màu đỏ.
- Quan hệ không gian mơ hồ: Các cụm từ như “ở bên trái”, “phía sau”, “ở giữa” thường không được mô hình định vị chính xác chỉ qua cross-attention.
Khi cần kiểm soát bố cục chặt chẽ, ta không thể chỉ dựa vào prompt mà bắt buộc phải bổ sung các cơ chế điều khiển cấu trúc không gian.
Image-to-image và Inpainting: chỉnh sửa ảnh có định hướng
Image-to-image: thay đổi phong cách giữ nguyên bố cục
Thay vì bắt đầu từ một khối nhiễu trắng thuần túy , quy trình image-to-image khởi đầu từ một bức ảnh có sẵn :
- Nén ảnh gốc thành latent: .
- Thêm một lượng nhiễu tương ứng với timestep (được điều khiển bởi tham số
strength): - Bắt đầu vòng lặp khử nhiễu ngược từ bước về dưới sự hướng dẫn của prompt mới.
strengthnhỏ (): Giữ nguyên gần như toàn bộ chi tiết gốc, chỉ thay đổi nhẹ tông màu hoặc chất liệu.strengthlớn (): Cho phép mô hình sáng tạo mạnh mẽ, chỉ giữ lại bố cục khối lớn của ảnh gốc.
Inpainting: chỉnh sửa cục bộ với mặt nạ
Khi chỉ muốn sửa một chi tiết nhỏ (ví dụ thay kính mắt cho nhân vật), ta dùng một mặt nạ nhị phân :
- Vùng ngoài mặt nạ (): Giữ nguyên chi tiết của ảnh gốc tại mọi bước thời gian.
- Vùng trong mặt nạ (): Cho phép mô hình tự do khử nhiễu và sinh ra nội dung mới ăn khớp hoàn hảo với bối cảnh xung quanh.
ControlNet: điều khiển bố cục bằng cạnh biên, chiều sâu và dáng người
Được giới thiệu bởi Lvmin Zhang và Maneesh Agrawala (ICCV 2023), ControlNet giải quyết triệt để bài toán điều khiển không gian chính xác cho text-to-image.
Ý tưởng cốt lõi của ControlNet là tạo ra một bản sao (clone) của nhánh encoder trong mạng U-Net:
- Khóa cứng (Freeze) mạng diffusion gốc để bảo toàn tri thức sinh ảnh tổng quát khổng lồ đã học được.
- Nhánh sao chép (Trainable Copy) được huấn luyện thêm để đọc các tín hiệu không gian: bản đồ cạnh Canny, chiều sâu Depth map, dáng người OpenPose, nét vẽ Segmentation.
- Hai nhánh được kết nối với nhau qua các lớp tích chập đặc biệt gọi là Zero Convolution (trọng số và bias khởi tạo hoàn toàn bằng 0). Nhờ vậy, ở bước đầu tiên của quá trình fine-tune, ControlNet không gây bất kỳ tác động tiêu cực nào lên mô hình gốc và dần dần học cách áp đặt cấu trúc không gian lên quá trình khử nhiễu.
Thích nghi mô hình: fine-tune toàn bộ hay dùng LoRA/DreamBooth?
Khi muốn đưa một nhân vật cụ thể, một phong cách nghệ thuật cá nhân hoặc sản phẩm thương mại vào mô hình sinh ảnh, ta có ba chiến lược thích nghi chính:
- DreamBooth: Tinh chỉnh trực tiếp toàn bộ U-Net bằng cách gán đối tượng vào một từ khóa hiếm (ví dụ
sks dog), kết hợp với cơ chế Class-Specific Prior Preservation để tránh làm hỏng khái niệm chung về loài chó. Cho chất lượng cá nhân hóa cao nhất nhưng tốn nhiều bộ nhớ và tạo ra file checkpoint dung lượng lớn (vài gigabyte). - LoRA (Low-Rank Adaptation): Đóng băng toàn bộ mạng U-Net và chỉ chèn thêm các ma trận tích hạng thấp vào các tầng Cross-Attention. File LoRA chỉ nặng từ vài chục đến vài trăm megabyte, cực kỳ dễ chia sẻ, bật/tắt và kết hợp nhiều phong cách cùng lúc.
- Textual Inversion: Giữ nguyên 100% trọng số của mô hình và chỉ tối ưu một vector embedding từ vựng mới trong không gian biểu diễn của Text Encoder. Nhẹ nhất nhưng năng lực biểu diễn hạn chế hơn LoRA.
Trong thực tế ứng dụng hiện nay, LoRA là lựa chọn áp đảo nhờ sự cân bằng hoàn hảo giữa chất lượng, tốc độ huấn luyện và tính linh hoạt.
Nhìn toàn bộ pipeline sinh ảnh như các module ghép nối
Một hệ thống text-to-image hiện đại không phải là một khối đơn lẻ nguyên khối mà là sự cộng tác nhịp nhàng của nhiều module chuyên trách:
[User Prompt] ---> [Text Encoder: CLIP/T5] -------------> Embeddings (K, V)
|
[Init / Noise] --> [VAE Encoder] -> [Latent z_T] |
| v
[Control Signal] -> [ControlNet] -------->|-------> [Denoising Backbone: U-Net / DiT]
| (Khử nhiễu lặp lại)
v
[Latent z_0]
|
v
[VAE Decoder] ---> [Bức ảnh cuối cùng]
Khi gặp sự cố đầu ra không như ý, kỹ sư cần tư duy bóc tách theo từng module:
- Ảnh sinh ra sai nội dung mô tả? Kiểm tra Text Encoder và trọng số Cross-Attention.
- Ảnh sai bố cục hoặc tư thế? Kiểm tra tín hiệu đầu vào của ControlNet.
- Bức ảnh bị vỡ chi tiết nhỏ, méo mắt hoặc hỏng font chữ? Kiểm tra năng lực tái tạo của VAE Decoder.
- Ảnh bị cháy sáng, bão hòa màu gắt? Giảm hệ số Classifier-Free Guidance ().
Ứng dụng thực tế ngoài sinh ảnh nghệ thuật
Mặc dù text-to-image thu hút sự chú ý lớn nhất từ truyền thông, cơ chế Latent Diffusion có phạm vi ứng dụng rộng lớn trong kỹ thuật và khoa học:
- Phục chế và nâng cấp ảnh (Super-Resolution & Restoration): Khôi phục các bức ảnh cũ bị mờ, nhiễu hoặc mất chi tiết dựa trên priors mạnh mẽ của mô hình sinh.
- Thương mại điện tử & Thiết kế sản phẩm: Tự động tạo ảnh sản phẩm với các góc chụp, bối cảnh ánh sáng khác nhau chỉ từ ảnh phôi ban đầu.
- Sinh dữ liệu cho Xe tự hành & Thị giác máy tính: Tạo các kịch bản thời tiết khắc nghiệt (mưa bão tuyết, ban đêm) để huấn luyện các mô hình nhận diện xe mà không cần thu thập dữ liệu nguy hiểm ngoài đời thực.
- Thiết kế phân tử & Protein: Ứng dụng diffusion để sinh cấu trúc 3D của các chuỗi protein và hợp chất hóa học mới đáp ứng các ràng buộc liên kết sinh học.
Những rủi ro và giới hạn cần lưu ý
- Ảo giác thị giác và thông tin sai lệch: Mô hình diffusion tạo ra hình ảnh dựa trên xác suất hợp lý về mặt thị giác, không dựa trên tính xác thực khoa học hay vật lý. Không thể dùng ảnh sinh ra để làm chứng cứ khoa học mà chưa qua kiểm định chuyên gia.
- Khuếch đại định kiến xã hội (Biases): Do học từ dữ liệu Internet, mô hình có thể vô tình củng cố các định kiến về giới tính, chủng tộc hoặc văn hóa khi nhận các prompt chung chung.
- Bản quyền và đạo đức dữ liệu: Việc sử dụng phong cách của các nghệ sĩ đương đại mà không có sự đồng thuận đang là tâm điểm tranh cãi pháp lý toàn cầu. Khi xây dựng sản phẩm thương mại, việc lựa chọn tập dữ liệu sạch bản quyền là yêu cầu bắt buộc.
Nếu chỉ nhớ 8 ý
- Quá trình điều khiển (conditioning) biến bài toán sinh ảnh từ ngẫu nhiên thành sinh theo điều kiện ngữ nghĩa .
- Classifier-Free Guidance (CFG) khuếch đại hướng đi của prompt văn bản bằng cách ngoại suy giữa dự đoán có điều kiện và dự đoán tự do, không cần mạng phân loại phụ.
- Khử nhiễu trên pixel quá đắt đỏ; Latent Diffusion giải quyết nút thắt này bằng cách nén ảnh xuống không gian ẩn qua bộ mã hóa VAE.
- Hệ số nén giúp giảm diện tích tính toán 64 lần, cho phép chạy diffusion trên phần cứng phổ thông.
- Cross-Attention là cây cầu đưa ngữ nghĩa của text embedding vào các vị trí không gian tương ứng trên latent feature map.
- Image-to-image bắt đầu khử nhiễu từ ảnh gốc đã được thêm một phần nhiễu; Inpainting dùng mặt nạ nhị phân để chỉ thay đổi vùng mong muốn.
- ControlNet bổ sung các ràng buộc không gian cứng (Canny, Depth, Pose) thông qua nhánh mạng sao chép và các lớp Zero Convolution an toàn.
- LoRA là tiêu chuẩn công nghiệp để thích nghi mô hình cho nhân vật và phong cách mới nhờ chi phí bộ nhớ thấp và tính linh hoạt vượt trội.
Câu hỏi tự kiểm tra
- Classifier-Free Guidance (CFG) hoạt động như thế nào trong lúc huấn luyện và lúc suy diễn?
- Điều gì sẽ xảy ra nếu ta đặt hệ số CFG scale quá cao (ví dụ )?
- Vì sao Latent Diffusion lại tiết kiệm tài nguyên tính toán hơn nhiều so với việc chạy diffusion trực tiếp trên không gian pixel?
- Bộ giải mã VAE Decoder có thể gây ra những loại lỗi hình ảnh nào mà không xuất phát từ mô hình diffusion?
- Cơ chế Cross-Attention kết nối Queries từ đâu và Keys/Values từ đâu?
- Nêu sự khác nhau giữa tham số
strengththấp () và cao () trong tác vụ Image-to-image. - Zero Convolution trong kiến trúc ControlNet đóng vai trò bảo vệ mô hình gốc như thế nào ở giai đoạn đầu huấn luyện?
- So sánh ưu và nhược điểm giữa việc fine-tune toàn bộ mô hình và việc sử dụng LoRA trong bài toán cá nhân hóa hình ảnh.
Mạch nối sang bài tiếp theo
Đến đây, ta đã có một cỗ máy sinh ảnh hoàn chỉnh: có thể điều khiển bằng câu chữ, khống chế bố cục bằng ControlNet và chạy nhẹ nhàng trong không gian ẩn của VAE.
Tuy nhiên, khi đưa hệ thống này vào môi trường sản xuất thực tế, bạn sẽ đối mặt với các câu hỏi nan giải: Làm thế nào để giảm thời gian sinh ảnh từ 50 bước xuống còn 15-20 bước mà chất lượng không đổi? Làm sao đánh giá định lượng xem checkpoint nào tốt hơn ngoài việc “ngồi ngắm bằng mắt”? Khi nào nên thay thế backbone U-Net bằng DiT (Diffusion Transformer)? Và công nghệ Flow Matching hiện đại đang định hình lại lĩnh vực này ra sao?
Tất cả câu trả lời sẽ có trong bài học thứ ba: Diffusion thực chiến: sampler, đánh giá, tối ưu và hướng phát triển mới.
Tài liệu tham khảo và đọc thêm
- Rombach, Blattmann, Lorenz, Esser & Ommer (2022), High-Resolution Image Synthesis with Latent Diffusion Models, CVPR 2022: https://arxiv.org/abs/2112.10752
- Ho & Salimans (2022), Classifier-Free Diffusion Guidance, NeurIPS Workshop 2021 / arXiv: https://arxiv.org/abs/2207.12598
- Zhang, Rao & Agrawala (2023), Adding Conditional Control to Text-to-Image Diffusion Models (ControlNet), ICCV 2023: https://arxiv.org/abs/2302.05543
- Hu et al. (2021), LoRA: Low-Rank Adaptation of Large Language Models, ICLR 2022: https://arxiv.org/abs/2106.09685
- Ruiz, Li, Jampani, Pritch, Rubinstein & Aberman (2023), DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation, CVPR 2023: https://arxiv.org/abs/2208.12242