Cách Stable Diffusion hoạt động step-by-step

1 min read

StableDiffusion

1. Text-to-image

Step 1:

Stable Diffusion (SD) sinh ra tensor ngẫu nhiên trong latent space (đại diện của dữ liệu nén). Điều chỉnh tensor này bằng cách đặt “seed” của generator để tạo số ngẫu nhiên. Nếu đặt seed là một giá trị cụ thể, thì ta sẽ luôn luôn nhận được cùng 1 tensor ngẫu nhiên. Đây là biểu diễn của hình ảnh trong latent space, tuy nhiên nhưng bây giờ nó chỉ là noise (nhiễu).

StableDiffusion

Step 2:

Noise-predictor U-Net lấy latent noisy image và text prompt và predict noise

StableDiffusion

Step 3:

latent image mới = latent image – predicted noise

StableDiffusion

Step 4:

Cuối cùng, VAE convert latent image về pixel. Đây là ảnh sinh ra sau khi chạy SD

StableDiffusion

Noise Schedule

noise schedule được dùng để cố gắng lấy expected noise tại mỗi sampling step. Chúng ta có thể chọn trừ cùng 1 số lượng noise tại mỗi step hoặc trừ nhiều hơn lúc bắt đầu,… Noise schedule trừ đi đủ noise để đạt được expected noise ở mỗi bước tiếp theo.

StableDiffusion

2. Image-to-Image

Là một ứng dụng của SD, có thể được áp dụng với bất kì diffusion model nào.

Image và text prompt sẽ là đầu vào của quá trình image-to-image. Image được sinh ra sẽ được điều khiển bởi cả input image và text prompt. Ví dụ, sử dụng ảnh vẽ và prompt “photo of perfect green apple with stem, water droplets, dramatic lighting”, image-to-image có thể cho ra “professional drawing”

StableDiffusion

Step 1:

input image sẽ được encode thành latent image

StableDiffusion

Step 2:

Nhiễu sẽ được thêm vào latent image. Denoising strength sẽ điều khiển bao nhiêu noise sẽ được thêm. Denoising strength có value từ 0 – 1, nếu bằng 0, không có nhiễu được thêm vào. Nếu strength bằng 1, thì maximum noise sẽ được thêm vào và latent image sẽ trở thành random tensor hoàn toàn.

StableDiffusion

Step 3:

Noise predictor Unet sẽ lấy latent noise image và text prompt và predict noise

StableDiffusion

Step 4:

latent image mới = latent image – predicted noise

StableDiffusion

Step 5:

VAE model sẽ convert latent image thành pixel.

StableDiffusion

Nguồn: https://stable-diffusion-art.com/how-stable-diffusion-work/

Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc comment trong lập trình

Trong lập trình, code không chỉ là một tập hợp các câu lệnh để máy tính thực thi, mà còn là một hình thức...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc xử lý lỗi (Error Handling)

Trong quá trình phát triển phần mềm, việc xử lý lỗi không chỉ là một phần quan trọng mà còn ảnh hưởng trực tiếp...
Avatar photo Dat Tran Thanh
4 min read

Leave a Reply

Your email address will not be published. Required fields are marked *