Sunday, September 10, 2023

Cài Stable Diffusion, tạo hình bằng AI miễn phí nhờ máy tính cá nhân

Hiện giờ đã có rất nhiều giải pháp tạo hình ảnh từ những câu lệnh anh em đưa ra. Midjourney giờ thu tiền hàng tháng để anh em lên Discord gửi câu lệnh tạo hình ảnh. Bing Chat với sức mạnh của DALL-E cho anh em tạo ra những hình ảnh cơ bản nhờ sức mạnh của máy chủ Azure. Adobe thì có Firefly tích hợp trong Photoshop. Hầu hết chúng đều bắt anh em bỏ tiền, còn miễn phí như Bing Chat thì chất lượng hình thấp và không có nhiều giải pháp tùy chỉnh câu lệnh nếu muốn sửa hình.

Vậy là chúng ta có một giải pháp khác, miễn phí hoàn toàn: Stable Diffusion WebUI do AUTOMATIC1111 trên Github tạo ra. Ứng dụng mô hình ngôn ngữ được Stability AI phát triển, anh em có thể tận dụng sức mạnh phần cứng của máy tính cá nhân để tạo ra những hình ảnh theo ý muốn của bản thân mà không mất một đồng nào cả.


Điều đó đưa chúng ta đến với hai lựa chọn, chạy Stable Diffusion trên macOS và trên máy tính Windows. Trên MacOS, mọi chuyện cực kỳ đơn giản vì có bên đã làm một ứng dụng tên là DiffusionBee, chỉ việc lên trang web của nhà phát triển tải về và cài đặt vào máy Mac của anh em là xong.

Một vấn đề duy nhất, Diffusion Bee chỉ dùng được trên những cấu hình trang bị chip Apple Silicon, không hỗ trợ Mac chạy chip Intel. Yêu cầu thứ hai, máy Mac của anh em sẽ phải cập nhật lên phiên bản macOS Monterey trở lên mới cài được DiffusionBee.

Nếu thỏa mãn được cả hai điều kiện trên, anh em chỉ cần lên trang chủ của DiffusionBee và ấn nút tải bản cho macOS: https://diffusionbee.com/. Sau đó cài phần mềm vào máy tính, rồi khởi động. Bản cài sẽ tải về những thứ cần để anh em tạo hình bằng thuật toán AI, bao gồm cả model, thường gọi là checkpoint về. Những checkpoint này về cơ bản là mô hình ngôn ngữ đã được huấn luyện, chỉ cần đọc lệnh prompt anh em nhập vào phần mềm là sẽ bắt đầu nội suy tạo ra hình ảnh theo từ khóa:

DiffusionBee - Stable Diffusion App for AI Art

DiffusionBee is the easiest way to generate AI art on your computer with Stable Diffusion. Completely free of charge.
 diffusionbee.com


Tinhte_SD1.jpg

Cần để ý những tùy chọn Advanced Options trong phần mềm. Hiểu rõ những thông số này sẽ cho phép anh em làm ra những tấm hình ưng ý hơn:

  • Image Size: Kích thước hình tạo ra. DiffusionBee không hỗ trợ những thuật toán AI nâng chi tiết hình ảnh, và mô hình Stable Diffusion cơ bản được huấn luyện để tạo ra những tấm hình ở chất lượng 512x12 pixel là tối ưu nhất.
  • Steps: Số bước mô hình dữ liệu nội suy hình ảnh. Số bước càng cao thì hình càng có xu hướng chính xác và chi tiết, nhưng mất thời gian để nội suy hơn. Số bước quá thấp thì tạo hình nhanh, nhưng chất lượng chi tiết thì rất thấp.
  • Seed: Tham số thuật toán AI dựa vào để tạo hình. Cái này tương đối quan trọng. Bình thường tham số sẽ là một giá trị ngẫu nhiên. Nhưng nếu tấm hình trước đó anh em thấy ưng ý về chi tiết và bố cục, hãy giữ con số Seed đó lại và tinh chỉnh từ khóa. Nếu không, để Seed ngẫu nhiên thì mỗi lần sẽ ra một tấm hình khác nhau hoàn toàn về cách nội suy.
  • Guidance Scale: Giá trị của tham số này từ 1 đén 30. Số càng cao thì thuật toán AI sẽ càng tuân thủ nghiêm ngặt từ khóa anh em đưa ra. Còn giá trị càng thấp thì tác phẩm AI tạo ra sẽ càng có xu hướng “sáng tạo.”


Trên macOS mọi thứ tương đối dễ, nhưng cũng ít lựa chọn điều khiển thuật toán hơn trong quá trình nâng cấp hình ảnh. Còn trên Windows, quy trình cài đặt cũng như yêu cầu cấu hình cũng khác, phức tạp hơn một chút so với macOS, nhưng bù lại là anh em có thêm sự tự do khi dùng Stable Diffusion tạo hình bằng thuật toán AI.

Đầu tiên là yêu cầu cấu hình để cài Stable Diffusion WebUI:

  • Hệ điều hành Windows 10 trở lên.
  • Card đồ họa của Nvidia, vì Stable Diffusion WebUI chỉ hỗ trợ xử lý dựa trên tập lệnh và nhân CUDA trên GPU của Nvidia. Card rời cũng phải có VRAM tối thiểu 4GB trở lên. Đương nhiên trong quá trình nội suy, card đồ họa sở hữu VRAM càng lớn thì càng có lợi. Nhưng không phải ai cũng sở hữu card RTX 3090 hay 4090 để thử sáng tạo cùng AI.
  • Cũng có những giải pháp khác tương tự như AUTOMATIC1111, ví dụ như OnnxDiffuserUI, hỗ trợ card đồ họa Radeon của AMD, hoặc tùy chỉnh AUTOMATIC1111 để nó hỗ trợ card AMD. Cái này mình xin phép để dành sang một bài viết khác, vì cách “vượt rào” tương đối dài.

Nếu đạt được hai yêu cầu trên thì chúng ta đi đến bước cài Stable Diffusion WebUI:

  • Bước 1: Tải Python phiên bản mới nhất cho máy tính Windows. Anh em lên trang web của Python: https://www.python.org/downloads/release/python-31010/, rồi chọn bản cài Windows Installer (64-bit), tải về máy tính và cài đặt. Lưu ý: Khi cài Python, đừng quên ấn tick vào ô "Add Python 3.10 to PATH.
Tinhte_SD2.jpg

Python Release Python 3.10.10

The official home of the Python Programming Language
 python.org

QUẢNG CÁO



  • Bước 2: Tải và cài đặt Git for Windows tại đây: https://git-scm.com/download/win. Anh em sẽ cần Git để cài và cập nhật AUTOMATIC1111, vì đây là giải pháp phần mềm hỗ trợ quản lý code.
  • Bước 3: Sau khi cài đặt cả Python lẫn Git, anh em truy cập vào https://github.com/AUTOMATIC1111/stable-diffusion-webui, ấn vào nút Code, rồi chọn Download ZIP để tải WebUI về máy tính.
Tinhte_SD3.jpg
Git - Downloading Package
 git-scm.com


  • Bước 4: Giải nén file ZIP vừa tải về từ GitHub, để nó vào một chỗ dễ nhớ, Desktop chẳng hạn.
  • Bước 5: Tự tải Checkpoint. Mình khuyến cáo anh em khi mới bắt đầu, hãy chọn checkpoint gốc của Stable Diffusion. Bản SD 2.1 được StabilityAI cho phép tải về ở đây: https://huggingface.co/stabilityai/stable-diffusion-2-1-base. Anh em ấn vào dòng dưới đây để tải file v2-1_512-ema-pruned.ckpt về máy tính.

    stabilityai/stable-diffusion-2-1-base · Hugging Face

    We’re on a journey to advance and democratize artificial intelligence through open source and open science.
     huggingface.co

    Tinhte_SD4.jpg
    Vấn đề như thế này, không giống DiffusionBee trên macOS có sẵn checkpoint Stable Diffusion mà nhà phát triển ứng dụng tự động cập nhật, bản thân Stable Diffusion cũng chỉ là một phiên bản mô hình ngôn ngữ được nghiên cứu một cách phổ quát. Từ những phiên bản SD, mới nhất là phiên bản 2.1, rất nhiều người khác sẽ lấy nó làm nền tảng để huấn luyện những mô hình khác phục vụ đúng nhu cầu. Anh em có thể lên hai trang web Hugging Face  Civitai để tìm thêm những checkpoint khác được huấn luyện theo hướng chuyên biệt hóa trong quá trình tạo ra hình ảnh.
  • Bước 6: Tải xong file v2-1_512-ema-pruned.ckpt, anh em mở folder “stable-diffusion-webui” đã giải nén trước đó, chọn tới folder models/Stable-diffusion rồi bỏ file checkpoint đã tải về vào trong thư mục ấy.
  • Bước 7: Quay trở lại thư mục “stable-diffusion-webui”, anh em tìm tới tệp tin tên là webui.bat, mở file này lên. Một ô cửa sổ cmd sẽ hiện ra, trông giống như thế này:
Tinhte_SD5.jpg
Vì được khởi động lần đầu tiên nên phần mềm sẽ tải về đầy đủ những thứ nó cần để vận hành WebUI, bao gồm cả những mô hình nâng cấp hình ảnh, hay những plug-in cần thiết. Quá trình này sẽ diễn ra từ 5 đến 15 phút tùy thuộc vào tốc độ đường truyền mạng internet của anh em. Chỉ cần ngồi chờ tới khi cửa sổ cmd đưa ra dòng “Running on local IRL: http://127.0.0.1:7860” là thành công.

  • Bước 8: Mở trình duyệt, gõ http://127.0.0.1:7860 vào ô địa chỉ. Giao diện WebUI sẽ hiện ra cho anh em bắt đầu tạo hình ảnh từ thuật toán AI:
Tinhte_SD6.jpg


Nhìn giao diện WebUI có lẽ anh em sẽ thấy hơi ngợp so với DiffusionBee trên macOS mình chia sẻ ở trên. Nhưng một khi đã nắm rõ hết mọi chi tiết cùng tính năng của từng chi tiết, thì anh em sẽ nhận ra công cụ này mạnh và tự do hơn rất nhiều so với DiffusionBee:


  • StableDiffusion checkpoint: Mô hình đã được huấn luyện để anh em tạo hình ảnh nhờ từ khóa.
  • Prompt: Ô gõ từ khóa để thuật toán tạo hình ảnh.
  • Negative prompt: Những từ khóa có thể tạo ra những chi tiết hình ảnh anh em không mong muốn, gõ những từ khóa này thì thuật toán sẽ lờ chúng đi trong quá trình nội suy hình ảnh.
  • Sampling method: Giải pháp lấy mẫu trong quá trình nội suy. Mỗi giải pháp lấy mẫu lại phù hợp với một dạng hình ảnh khác nhau. Có cái hợp với DDIM, có cái lại hợp hơn với DPM2 a. Chọn sampler nào phụ thuộc hoàn toàn vào quá trình thử nghiệm của anh em.
  • Restore faces: Dùng thuật toán CodeFormer để tinh chỉnh chi tiết gương mặt cho chân thực.
  • Tiling: Tạo ra những hình ảnh lặp đi lặp lại, rất hữu ích khi chế ra những hoa văn họa tiết mới.
  • Hires. fix: Dùng những thuật toán khác để tiếp tục nội suy, tăng độ phân giải hình ảnh.
  • Upscaler: Lựa chọn thuật toán để nội suy tăng độ phân giải hình ảnh.
  • Upscale by: Tỷ lệ tăng kích thước hình ảnh. Anh em đừng để quá cao, vì dễ nội suy hỏng do hết VRAM. Hình cỡ lớn có thể tạo ra ở tab Extra, tốn ít tài nguyên máy tính hơn so với việc tăng kích thước hình cùng lúc với quá trình nội suy của AI.
  • Hires steps: Số bước thuật toán nội suy dùng để tăng độ phân giải và chi tiết hình ảnh.
  • Denoising strength: Mức độ can thiệp của thuật toán nâng cấp hình ảnh, chèn lên thuật toán tạo ra hình ảnh trước đó. Số càng thấp thì can thiệp càng ít.
  • CFG Scale: Viết tắt của Classifier Free Guidance, giống hệt DiffusionBee, số càng nhỏ thì hình ảnh càng có tính sáng tạo.
  • Seed: Tham số thuật toán dùng nội suy hình ảnh.

Sau khi đã làm quen xong hết những chi tiết quan trọng và cần thiết để tạo ra tấm hình ưng ý, giờ là lúc anh em ngồi tìm hiểu và gõ những từ khóa để thuật toán làm việc. Mình xin phép lấy một ví dụ vui, cụ thể như thế này:

  • Từ khóa nội suy: ((darth vader riding a vespa scooter on the street of raining Tokyo)), reflection on the ground, neon billboards, cyberpunk, Tokyo night, rembrandt light, fantasy, dramatic sky, cinematic, fisheye lens, f1.8, hyper realistic, ultra detail, photorealistic, high contrast
  • Số liệu nội suy: Steps: 35, Sampler: DPM++ SDE Karras, CFG scale: 6, Seed: 786709107, Face restoration: CodeFormer, Size: 768x512, Model hash: 88ecb78256, Model: v2-1_512-ema-pruned, Denoising strength: 0.2, Hires upscale: 2, Hires upscaler: R-ESRGAN 4x+
Đến đây là lúc mỗi mô hình ngôn ngữ khác nhau, được huấn luyện theo cách khác nhau phát huy tác dụng. Mỗi mô hình dựa trên Stable Diffusion đều có thế mạnh và nhược điểm khác nhau. Anh em muốn tạo ra tấm hình ưng ý nhất luôn luôn phải trải qua quá trình thử sai để tìm ra lựa chọn tối ưu, tạo ra hình ảnh đẹp mắt nhất:

Vanilla SD 2.1 model:

1.jpg

Deliberate V2:

2.jpg

Illuminati Diffusion V1.0:

3.jpg

Realism Engine V1.0:

4.jpg

Mình lấy cùng một tham số nội suy để mô tả cách từng mô hình vận hành, còn việc tinh chỉnh từ khóa, thay đổi tham số cũng như lựa chọn mô hình ngôn ngữ và cả sampler nội suy, thiết nghĩ đó cũng là một nghệ thuật để tạo ra những bức hình ưng ý nhất dựa vào Stable Diffusion.

Yêu cầu của AUTOMATIC1111 Stable Diffusion WebUI là card đồ họa Nvidia của anh em phải có 8GB VRAM trở lên để phục vụ quá trình nội suy. Nhưng điều đó không đồng nghĩa với việc những anh em đang dùng card đồ họa ít bộ nhớ hơn không chơi được Stable Diffusion.

  • Bước 1: Anh em vào folder gốc stable-diffusion-webui, tìm tới tệp tin tên webui-user.bat.
  • Bước 2: Chuột phải webui-user.bat và chọn Edit.
  • Bước 3: Tìm tới dòng set COMMANDLINE_ARGS=, thay dòng này bằng set COMMANDLINE_ARGS=--xformers --medvram
  • Bước 4: Lưu file webui-user.bat lại, rồi khởi động WebUI bằng file này thay cho webui.bat như trên.
Giải pháp này cho phép anh em sở hữu card đồ họa với 4 hoặc 6GB VRAM vẫn dùng được WebUI, với tốc độ xử lý hình ảnh nhanh hơn, nhưng đương nhiên chi tiết và chất lượng hình ảnh đầu ra sẽ bị ảnh hưởng.


Đối với checkpoint gốc của StabilityAI, v2-1_512-ema-pruned.ckpt, mọi chuyện sẽ không có vấn đề gì. Nhưng khi anh em mày mò những mô hình ngôn ngữ khác tải từ CivitAI chẳng hạn, bỏ vào folder model và tải cả file config đuôi .yaml vào folder tổng hợp mô hình ngôn ngữ, mở lại WebUI lên, ấn nút tạo hình ảnh thì thấy lỗi như thế này:

Tinhte_SD7.jpg

Lý do của lỗi này là card đồ họa của anh em không hỗ trợ xử lý half-type trong quá trình nội suy. Những người đang dùng card RTX 40 series rất dễ gặp lỗi này. Cũng có một vài trường hợp khác ví dụ như vài ngày gần đây, cơ sở dữ liệu của CivitAI gặp lỗi, tải những model checkpoint mới trên trang web này về hầu hết không dùng được, toàn hiện lỗi NansException.

Cách giải quyết nó như thế này:

  • Bước 1: Tìm tệp tin webui-user.bat trong folder gốc stable-diffusion-webui, chuột phải chọn Edit.
  • Bước 2: Tìm tới dòng set COMMANDLINE_ARGS, sau dấu bằng thêm cụm --no-half-vae vào ngay phía sau, rồi sau đó lưu file này lại.
  • Bước 3: Khởi động WebUI bằng file webui-user.bat thay cho webui.bat như trên..
  • Bước 4: Trong giao diện WebUI trên trình duyệt, anh em vào tab Settings, chọn mục User Interface, ở dòng Quicksettings list, dán sd_model_checkpoint, upcast_attn vào ô nhập liệu.
Tinhte_SD8.jpg
  • Bước 5: Cũng trong Settings, chọn mục Stable Diffusion, tick vào ô Upcast cross attention layer to float32. Sau đó ấn nút Apply Settings, rồi ấn tiếp Reload UI, hai nút màu cam rất to trong hình screenshot:
Tinhte_SD9.jpg


Source:

https://tinhte.vn/thread/huong-dan-anh-em-cai-stable-diffusion-tao-hinh-bang-ai-mien-phi-nho-may-tinh-ca-nhan.3651314/

0 comments:

Post a Comment