Lời nói đầu
Chào các bạn, hiện tại thì Stable Diffusion đã phát triển rất rộng rãi và ứng dụng trong nhiều lĩnh vực. Bài viết này mình sẽ chia sẻ cách nhìn tổng quan và dễ hiểu nhất để giúp cho người cũ hoặc người mới có có thể dễ dàng tiếp cận và tìm hiểu về bộ môn này một cách dễ dàng nhất. Bài viết chia sẻ cách nhìn thông qua ý hiểu của bản thân và sẽ nhẹ tính hàn lâm vì vậy có thể có nhiều thiếu sót, mong rằng mọi người có thể góp ý nhẹ nhàng ^^.
Mục lục :
- I. Tổng quan về Stable Diffusion
- II. Nguyên lý sử dụng và các khái niệm cơ bản
- III. Các cách sử dụng Stable Diffusion
- IV. Các cách training Stable Diffusion
- V. Một số lưu ý khác
- VI. Cơ hội công việc với Stable Diffusion
I. Tổng quan về Stable Diffusion
1. Stable Diffusion là gì ?
Stable Diffusion là một bộ dữ liệu mã nguồn mở cung cấp giải pháp generate ảnh bằng công nghệ AI và được phát hành bởi Stability.ai
Một số lưu ý :
+ Stable Diffusion (SD) không phải là một phần mềm, SD có thể coi là một phương pháp
+ Stability phát hành các bộ mã nguồn, dữ liệu cơ sở (model) một cách miễn phí và người dùng có thể đào tạo thêm từ các dữ liệu cơ sở này. Các bộ dữ liệu được đào tạo từ người dùng (model fine-tuned) sẽ được quy định phiên bản tương ứng với model cơ sở đào tạo.
2. Các phiên bản và lịch sử phát triển của Stable Diffusion
Hiện tại Stability đã phát hành rất nhiều phiên bản của Stable Diffusion. Bắt đầu ra mắt phiên bản 1.0 từ ngày 22 tháng 8 năm 2022, đến nay đã có rất nhiều bộ mô hình khác nhau từ cách vận hành đến sử dụng đã được ra mắt. Ngoài việc phát hành các bộ model base, Stability sẽ phát hành các bộ dữ liệu tương ứng bổ trợ cho từng phiên bản (VAE, inpaint model, control lora, …).
Dưới đây là một số phiên bản đã được phát hành từ Stability, mọi người có thể tham khảo :
- Phiên bản Stable Diffusion 1.0 – 1.4 : Đây là nhưng phiên bản đầu tiên, về cơ bản hiện tại gần như rất ít người dùng và rất ít các công cụ hỗ trợ cho các phiên bản này
- Phiên bản Stable Diffusion 1.5 : Đây là phiên bản phổ biến nhất đưa Stable Diffusion phổ biến như hiện nay. Phiên bản này có ưu điểm là nhẹ nhàng, dễ sử dụng, dễ tuỳ biến, dễ đào tạo, không giới hạn nội dung, có rất nhiều công cụ hỗ trợ tuỳ biến cho từng yêu cầu. Đặc biệt là từ phiên bản này có model Inpainting được Stability phát hành kèm theo giúp hỗ trợ mạnh mẽ đến các tác vụ chỉnh sửa và tuỳ biến hình ảnh được tốt hơn.
- Phiên bản Stable Diffusion 2.0 – 2.1 : Các phiên bản từ v2 có cách đào tạo và sử dụng sẽ khác chút so với các phiên bản v1. Các phiên bản v2 có sự cải tiến khá nhiều từ bộ dữ liệu đào tạo lớn hơn tuy nhiên do sự khác biệt không quá lớn với các phiên bản v1 cùng với việc hạn chế các yếu tố nsfw vì vậy các công cụ và các dữ liệu phát triển trên các phiên bản v2 tương đối hạn chế.
- Phiên bản Stable Diffusion XL 0.9 – 1.0 : Các phiên bản XL được cải tiến cực kỳ mạnh mẽ về dữ liệu hình ảnh cũng như khả năng thông minh và hiểu rõ các yêu cầu của người dùng hơn. Đặc biệt là sự cải thiện size ảnh train từ 512, 768 lên tới size 1024 giúp tạo ra các hình ảnh với kích thước lớn hơn. Tuy nhiên việc tạo hình ảnh lớn hơn đi kèm với việc tiêu tốn quá nhiều tài nguyên máy tính làm cho người dùng khó tiếp cận SDXL hơn ở việc sử dụng và đặc biệt là khó training hơn rất nhiều.
- Phiên bản Stable Diffusion 3: Đây là phiên bản mới nhất và cũng là tai tiếng nhất của Stability, tuy nhiên vướng phải nhiều tranh cãi về chất lượng cũng như bản quyền nên hiện rất ít người sử dụng
- Model Flux 1: Model open source tốt nhất hiện tại, được phát triển từ team kỹ sư tách ra từ Stability, cực kỳ tốt về giải phẫu, text và prompt
3. Ưu – nhược điểm của Stable Diffusion
Ưu điểm :
- Do là mã nguồn mở vì vậy SD được phát triển gần như không có một giới hạn nào. Có muôn vàn các công cụ các tài nguyên giúp chúng ta tạo ra bức ảnh ưng ý. Người dùng có thể tự do training model theo mong muốn và yêu cầu cá nhân.
- Stable Diffusion sở hữu những công cụ mạnh mẽ mà không một / chưa một công cụ nào có được, đó là controlnet ( Công cụ giúp ta có thể kiểm soát hoàn hảo SD để ra được kết quả ưng ý ).
- Khả năng generate không giới hạn nội dung cũng là một ưu điểm rất lớn của SD so với công cụ khác.
Nhược điểm :
- Do được tự do đào tạo và training model vì vậy các model của SD không có sự thống nhất về từ khoá cũng như cách sử dụng. Dẫn tới sự khó khăn cho người dùng khi tiếp cận với nhưng model tuned khác nhau.
- Sự không giới hạn về nội dung dẫn tới sự lạm dụng của các cá nhân/ tổ chức vào các công việc không được phép.
- Sự phát triển của nhiều phiên bản và nhiều công cụ khác nhau dẫn đến sự khó khăn cho người dùng tiếp cận và học tập SD một cách đầy đủ và có hệ thống.
- Các model base được training khá sơ sài vì vậy chủ yếu người dùng sẽ cần phải sử dụng các model tuned, tuy nhiên do các model được train từ các tổ chức / cá nhân đơn lẻ dẫn đến sự thiếu nhất quán cùng thiếu sót về nhiều mảng trong cùng một model. Việc tìm kiếm một model được đào tạo bài bản – chất lượng cao là khá khó khăn đối với người mới.
4. Ứng dụng của Stable Diffusion trong cuộc sống
Hiện tại Stable Diffusion đã được ứng dụng ứng dụng vào khá nhiều lĩnh vực trong đời sống như :
- Sáng tạo content
- Làm video
- Hỗ trợ làm hình ảnh sản phẩm
- Hỗ trợ vào sản xuất hình ảnh game
- Hỗ trợ vào làm sản phẩm truyện tranh
- Hỗ trợ vào làm kiến trúc – nội thất
- Hỗ trợ vào trong nhiếp ảnh
- ………
Một số ví dụ :
II. Nguyên lý sử dụng và các khái niệm cơ bản
Lưu ý : Các nguyên lý và thuật ngữ trong phần này chủ yếu mình sẽ tóm lược một cách vắn tắt các ý chính, nó sẽ không mang tính học thuật quá cao mà chủ yếu mang tính truyền tải một cách đơn giản nhất đối với người học
1.Nguyên lý hoạt động
Dưới đây là một sơ đồ đơn giản về cách hoạt động của Stable Diffusion, các bạn có thể tham khảo thêm cách hoạt động chi tiết một cách hàn lâm hơn tại đây hoặc đây
2. Các thuật ngữ, khái niệm cơ bản
- Checkpoint : Là phần model chính giữ vai trò côt lõi cho mọi quá trình hoạt động của Stable Diffusion. Mỗi checkpoint luôn có 2 thành phần chính TextEncoder và Unet, hay có thể nói là phần chữ và phần hình. Hiện nay các checkpoint được chia sẻ ở rất nhiều nguồn khác nhau, phổ biến nhất là CivitAI
- Prompt : Là phần text ( câu lệnh ) mà người dùng nhập yêu cầu hình ảnh tương ứng. Prompt này sẽ được giải mã bằng một bộ trình đọc trong model là CLIP giải mã thành định dạng mà model có thể hiểu được. Mỗi phiên bản SD sẽ có các bộ giải mã khác nhau, vì vậy độ thông minh và hiểu câu lệnh của mỗi phiên bản sẽ có sự khác nhau. Mỗi checkpoint và mỗi phiên bản sẽ có sự hoạt động khác nhau. Một vài website để tham khảo prompt : XLStyle | SD15 Style | Freeflo | NovelAI Tag Experiments
- Sampler : Sau khi prompt được giải mã thành các thông tin ( textEncoder ) tương ứng. Quá trình UNET sẽ được tiến hành để chuyển đổi thông tin text tương ứng thành hình ảnh. Các hình ảnh sau quá trình UNET sẽ liên tục được gửi lặp lại n lần (steps) thêm chi tiết và hoàn thiện. Quá trình này sẽ lặp lại bằng nhiều phương pháp khác nhau, các phương pháp này gọi là các phương pháp lấy lẫu – Sampler. Tham khảo thêm tại đây
- VAE (Variational autoencoder) : Sau n steps thì quá trình lấy mẫu hoàn tất, khi này chúng ta nhận được hình ảnh dạng Latent. Để hoàn thiện bức ảnh trở về định dạng bình thường với đầy đủ thông tin, một quá trình decoder được thực hiện. Quá trình này yêu cầu một loại model thành phần để có thể hoạt động, chúng ta gọi nó là VAE. Trong trường hợp tác vụ img-img, VAE sẽ làm nhiệm vụ encoder ảnh đầu vào từ định dạng thông thường sang định dạng latent và đưa vào quá trình UNET. Hiện nay đã số các checkpoint đã được nhúng VAE sẵn, tuy nhiên trường có những trường hợp thiếu VAE, phổ biến là ở các phiên bản v1.5, chúng ta có thể tải thêm VAE tại đây
Vậy chỉ cần một vài thành phần như Checkpoint, câu lệnh Prompt, phương pháp lấy mẫu Sampler và VAE chúng ta đã có thể vận hành StableDiffusion một cách trơn tru. Tuy nhiên sẽ có một vài trường hợp mà chúng ta không thể tạo được yêu cầu mong muốn từ các thành phần trên, khi đó người dùng sẽ có những khái niệm mới bổ trợ giúp SD hoạt động một cách mạnh mẽ và tuỳ biến cao hơn :
- Lora : Nếu coi Checkpoint là một ổ cứng thì lora là một chiếc usb cắm thêm vào. Lora là một định dạng model với kích thước nhỏ hơn rất nhiều so với checkpoint, nó có tác dụng bổ sung thêm dữ liệu cả về TextEncoder và UNET giúp cho Checkpoint. Lưu ý rằng Lora có khá nhiều phân nhánh như Lycoris, Loha… Hiện tại có rất nhiều nguồn tải Lora miễn phí, chúng ta có thể tham khảo CivitAI
- Embedding : Cũng là một thành phần giống với Lora, tuy nhiên Embedding sẽ chỉ bổ sung thêm các khái niệm mới vào TextEncoder mà không tác động vào phần UNET. Embbedding được sử dụng khá nhiều ở phiên bản 1.5 và không quá phổ biến ở SDXL. Chúng ta có thể tải các Embedding miễn phí tại CivitAI
- Controlnet : Trong một vài trường hợp thì các ý tưởng trong đầu chúng ta không thể hiện thực hoá bằng các câu lệnh cụ thể. Controlnet được sinh ra giúp chúng ta giải quyết các rắc rối của trên. Controlnet cung cấp thêm giải pháp để ra lệnh cho SD bằng hình thay vì text như thông thường. Hiện tại có rất nhiều loại controlnet phục vụ cho nhiều mục đích khác nhau (Xem thêm Từ điển Controlnet). Đối với mỗi phiên bản checkpoint cũng cần loại controlnet tương ứng để hoạt động được. Các model controlnet được phát triển tốt nhất trên phiên bản 1.5. Tham khảo thêm Controlnet WebUI Automatic1111 | T2I-Adapter | IP-Adapter | Control Lora
- Inpainting : Trong một vài trường hợp, chúng ta muốn tạo ra các hình ảnh được nội suy từ các hình ảnh sẵn có, thêm bớt hoặc chỉnh sửa hình ảnh dựa trên các phần sẵn có. Khi này chúng ta có một phương pháp generate ảnh mới đó là inpaint. Stable Diffusion cung cấp khả năng inpaint bằng model thông thường, tuy nhiên inpaint sẽ được thực hiện tốt hơn nếu chúng ta sử dụng model inpainting hoặc controlnet inpaint. Các model inpaint có thể được tạo đơn giản bằng phương pháp merger diff từ các model gốc.
Phía trên là các thuật ngữ mà chúng ta thường xuyên gặp nhất khi sử dụng Stable Diffusion, các bạn có thể tham khảo thêm chi tiết hơn các thuật ngữ tại đây
III. Các cách sử dụng Stable Diffusion
Do là mã nguồn mở, vì vậy có vô vàn các phần mềm và công cụ hỗ trợ sử dụng SD với muôn vàn các mục đích và phương pháp khác nhau. Dưới đây là một số công cụ, phần mềm giao diện GUI phổ biến nhất bất kỳ ai muốn học tập và sử dụng SD cũng nên biết
Tham khảo thêm bài viết : Hướng dẫn cài đặt và tối ưu khi sử dụng Stable Diffusion
1. Automatic1111
Đây là một giao diện GUI phổ biến và mạnh mẽ và dễ dùng nhất được viết cho SD. A1111 phổ biến đến mức có khi người ta nhầm tưởng SD chính là A1111.
Khả năng mạnh mẽ nhất của Automatic1111 đó chính là lượng Extension dồi dào và đa dạng phục vụ gần như mọi yêu cầu của người dùng. A1111 cũng thường xuyên cập nhật các phiên bản để hỗ trợ các phiên bản mới của Stable Diffusion. A1111 có rất nhiều option để người dùng cá nhân hoá sâu các tác vụ cũng như cung cấp các lựa chọn tuỳ biến phần mềm.
Người dùng có thể tải và cài đặt Automatic một cách miễn phí trên mọi nền tảng MacOS, Window, Linux. A1111 cũng hỗ trợ khả năng cài đặt và điều khiển từ xa qua các máy chủ ảo rất tốt như Google Colab | Kaggle | Runpod. A1111 cũng hỗ trợ khả năng API rất tốt vì vậy rất nhiều các website cung cấp dịch vụ sử dụng Stable Diffusion sử dụng Automatic.
Mọi người có thể tải và tham khảo cách sử dụng Automatic tại wiki chính thức hoặc hướng dẫn Tiếng Việt bởi tác giả Kao dii, cài đặt nhanh với StabilityMatrix hoặc sử dụng online với Google Colab SDVN
Một số lưu ý phiên bản :
- SDXL được hỗ trợ trên Automatic1111 từ bản Automatic1111-v1.5
- Giao diện và một số chức năng có sự sai khác ở nhiều phiên bản khác nhau, VD : Chức năng restore face đã được ẩn từ phiên bản v1.5. Nút Extra Network đã được loại bỏ từ phiên bản v1.4
2. ComfyUI
Khác với A1111, ComfyUI tỏ ra khá khó tiếp cận người dùng hơn vì yêu cầu người dùng cần phải nắm chắc nguyên lý vận hành của SD. Cách sử dụng Comfy theo các note kéo thả cũng khá khó tiếp cận với đại đa số người dùng phổ thông. Điểm mạnh nhất của ComfyUI là khả năng cho phép người dùng sáng tạo không giới hạn các workflow phục vụ cho từng nhu cầu riêng biệt, tối ưu hoá tất cả các tác vụ trong 1 click. Người dùng có thể chia sẻ các wofkflow một cách đơn giản cũng như xuất API cho bất kỳ workflow nào.
ComfyUI hỗ trợ tải và cài đặt miễn phí trên mọi nền tảng.
- Tham khảo cách cài đặt tại Github chính thức, cài đặt nhanh bằng StabilityMatrix
- Tham khảo các Workflow
- Một số note cần thiết khi cài đặt ComfyUI : ComfyUI-Manager | Impact-Pack | IPAdapter_plus | Controlnet_aux
- Ngoài ra các bạn có thể sử dụng ComfyUI online với Google Colab SDVN | Tensord Workflow | Comfy.icu
- Tài liệu sử dụng ComfyUI : ComfyUI-Docs
3. InvokerAI
InvokerAI có thể nói là sự kết hợp của Automatic1111 và ComfyUI kèm với đó là sự nâng cấp đang kể về giao diện hiện đại hơn. Hiện tại InvokerAI có thể hoạt động trên cả 2 loại generate ảnh là workflow note kéo thả và generate ảnh mặc định theo giao diện có sẵn. Invoker khá chú trọng tới trải nghiệm người dùng khi cho phép quản lý ảnh và thư viện tài nguyên một cách nhất quán ngay trên giao diện sử dụng. Tuy nhiên Invoker lại không cho phép phát triển các extension mở, các update công nghệ mới khá chậm dẫn đến việc khá kén người dùng phổ thông. Ngoài ra khi sử dụng Invoker AI, các cú pháp về prompt cũng được viết khác hoàn toàn cho với ComfyUI và Automatic cũng là một điểm trừ khiến cho người dùng khó tiếp cận.
InvokerAI khá dễ cài đặt trên các nền tảng, tuy nhiên lại khá khó sử dụng qua các host online.
- Tham khảo cách sử dụng tại trang chủ chính thức : invoke.ai
- Cài đặt và sử dụng tại Github hoặc sử dụng trình cài đặt StabilityMatrix
- Sử dụng online với Colab miễn phí tại : InvokerSDVN hoặc sử dụng với Colab Pro tại : SDVN WebUI v2
4. Fooocus
Đây là phần mềm được phát triển riêng để sử dụng các model SDXL. Fooocus được tối ưu hoá một cách đơn giản nhất cho người dùng có thể tiếp cận và sử dụng.
Cũng giống như Automatic1111, Fooocus sử dụng giao diện Gradio vì vậy rất dễ cài đặt và sử dụng online – offline trên các nền tảng, host khác nhau.
- Cài đặt và sử dụng tại Github
- Sử dụng online tại SDVN WebUI v2
5. Các web – host dịch vụ online
Hiện tại có rất nhiều các nền tảng và dịch vụ hỗ trợ cài đặt và sử dụng Stable Diffusion, dưới đây là một số nền tảng phổ biến và dễ tiếp cận nhất đối với người dùng :
Host cung cấp GPU để cài đặt và sử dụng :
- Google Colab : Nền tảng của google, dễ cài đặt và sử dụng nhất. Điểm mạnh nhất của colab là khả năng kết nối và động bộ hoá với drive cá nhân cũng như là drive của các tài khoản khác nhau. Tuy nhiên hiện tại Colab đang hạn chế các hoạt động generate ảnh bằng Stable Diffusion trên tài khoản miễn phí, mọi người có thể đọc chi tiết về thêm về GG Colab tại đây hoặc tại đây ( Phần tối ưu với Google Colab )
- Kaggle : Nền tảng tương tự với Google Colab, hoạt động theo phương thức Jupyter Note
- Runpod : Nền tảng cho thuê GPU / máy chủ (Khá đắt 🤔)
Các nền tảng online cho phép tải tài nguyên và sử dụng trực tiếp : TensordArt | CivitAI | SeaArt
Các nền tảng cho phép sử dụng Automatic1111 trực tiếp không cần cài đặt : Kaikun AI (Anh này của VN, khá ổn nên giới thiệu thêm)
Các nền tảng cho phép Generate ảnh sử dụng Stable Diffusion : Mage.Space | Leonardo.AI | Dreamlike.art | Lexica.Art | Clipdrop.co
Mọi người có thể đọc thêm về đánh giá các nền tảng tại đây
IV. Các cách training cho Stable Diffusion
Training là thế mạnh lớn nhất của Stable Diffusion, cũng là lĩnh vực khó nhất khi học tập SD. Người dùng cần rất nhiều kiến thức, kinh nghiệm cũng như là cần nắm rõ nguyên lý hoạt động của SD để hiểu và train một cách chuẩn chỉ nhất. Như đã nói ở trên, model sẽ thường gồm 2 thành phần chính là TextEncoder và UNET, việc training model SD sẽ là đào tạo các thành phần đó trong model
1. Train model ( Checkpoint – Lora )
Hiện tại có khá nhiều cách để training model, trong đó có một vài phương pháp chính :
- Train Kohya : Đây là phương pháp train phổ biến và được nhiều người sử dụng nhất. Trong đó, phương pháp train này có thể sử dụng bằng nhiều phương pháp khác nhau. Mọi người có thể xem thêm ở Youtube hoặc Wiki Kohya
- Train trực tiếp tại máy tính với trình train Kohya hoặc sử dụng thông qua SDVN WebUI v2
- Train thông qua host với code Jupyter tại Colab , tham khảo GitHub, các bạn có thể train với code Colab của sdvn.me
- Train thông qua Extension Kohya trên Automatic 1111
- Dreamboot Extension : Đây là Extension được viết dành riêng cho Automatic1111, tuy nhiên do được viết chạy trên automatic1111 nên có thể xảy ra tình trạng xung đột khi Automatic update phiên bản mới.
- Train InvokerAI : Trình train được tích hợp sẵn khi cài đặt và sử dụng InvokerAI
2. Train Embedding
Hiện tại Embedding được sử dụng thường được train chủ yếu bằng trình train có sẵn trong Automatic1111, tuy nhiên người dùng vẫn có thể train bằng Train Kohya
3. Merger model – Embedding
Sau khi các model được train thì việc hiệu chỉnh dữ liệu được train cũng như trộn – tách dữ liệu là một công việc không thể thiếu để dữ liệu trở lên hoàn hảo hơn. Hiện tại các phương pháp hiệu chỉnh, merger model hoặc embedding thường được thực hiện thông qua các extension của Automatic1111 hoặc trình Merger mặc định của Automatic111. Một vài các Extension chúng ta nên biết :
- SuperMerger : Công cụ mạnh mẽ và hữu ích nhất đối với việc tinh chỉnh – trộn – tách các model checkpoint, lora
- Embedding-Merge và Embedding-inspector: Công cụ giúp tạo, merger các embedding
- Model Toolkit : Công cụ giúp hiệu chỉnh, tối ưu các thành phần thừa trong checkpoint
- Model Converter : Công cụ giúp thay đổi các định dạng model
V. Một số lưu ý khác
1. Các ứng dụng hay được phát triển dựa trên Stable Diffusion
Dưới đây là một số ứng dụng, extension nổi bật chủ yếu phục vụ nhu cầu tạo ra video hoặc chuyển động đơn giản
Ứng dụng cho khả năng generate ảnh realtime : Krea.AI
2. Một số website hữu ích trong quá trình học tập và sử dụng
Một số cộng đồng, nhóm sử dụng Stable Diffusion :
Một vài website hữu ích :
VI. Cơ hội công việc với Stable Diffusion
Hiện tại có rất nhiều cơ hội việc làm tại Việt Nam đối với người biết sử dụng và training Stable Diffusion. Có thể kể đến như :
- Tạo hình ảnh content cho các lĩnh vực như game, thời trang, sản phẩm, nhiếp ảnh …
- Training nhân vật, bối cảnh cho game hoặc các lĩnh vực khác
- Xây dựng concept, phương án cho kiến trúc – nội thất
- Training model cho các nền tảng chia sẻ doanh thu với creator như Tensord Art, Mage.Space
- Xây dựng thương hiệu, bán hình ảnh trên các website như Patreon , Pixiv ….
Hướng dẫn cài đặt và tối ưu khi sử dụng Stable Diffusion
Từ điển Controlnet
Automatic – tự động trong Stable Diffusion
Nhập môn Stable Diffusion / Flux