Trải nghiệm Stable Diffusion một cách đơn giản nhất trên Google Colab

Sunday, July 23, 2023
Edit this post


AI đang là một trong những từ khóa, xu hướng, và công nghệ hot nhất trong những năm gần đây. Là một người làm việc trong ngành phần mềm, tôi không thể đứng ngoài xu hướng đó. Người ta nói AI sẽ sớm thay thế con người trong khá nhiều lĩnh vực, thậm chí còn có thể lập trình, đe dọa trực tiếp tới việc làm của hàng triệu developer trên thế giới.

Một mặt, tôi cũng cảm thấy lo lắng nếu tiên đoán trên sẽ thành hiện thực, nhưng mặt khác, tôi cũng rất hào hứng trong việc ứng dụng những tiến bộ của công nghệ AI vào đời sống cũng như công việc hàng ngày của mình. Hiện nay, công cụ chính mà tôi đang dùng mỗi ngày là ChatGPT. Không thể phủ nhận với việc sử dụng ChatGPT, năng suất công việc của tôi đã được nâng lên đáng kể. Dĩ nhiên, tôi không thể đưa cả 1 task to bự và bảo ChatGPT làm từ A tới Z được, nếu vậy thì chắc là công ty đã sa thải tôi lâu rồi. Nhưng khi tôi chia nhỏ công việc và đặt ra những câu hỏi hợp lý, ChatGPT thật sự khiến tôi kinh ngạc.

Về mặt lập trình, những đoạn code mà ChatGPT đưa về 50% các trường hợp có thể là không chạy được, tuy nhiên, đường hướng mà ChatGPT đưa ra là khá chuẩn xác. Chỉ cần kết hợp với một chút tìm kiếm từ Google, tôi đã có thể giải quyết những blocker khó nhằn chỉ trong nửa tiếng, trong khi những blocker như vậy trước đây có thể chiếm tới nửa ngày làm việc.

Natalie Portman trong trang phục người nhện

Ngoài ra tôi còn nhờ ChatGPT debug những đoạn code lỗi, chỉnh sửa những đoạn văn mà tôi đã viết ra để câu cú được mượt mà hơn. Nói không ngoa, ChatGPT học từ con người, và tôi cũng học được rất nhiều từ ChatGPT.

Tuy nhiên, chủ đề chính của bài viết hôm nay không phải về ChatGPT mà là về Stable Diffusion (SD), một công cụ cho phép tạo ra hình ảnh từ văn bản. Bạn chỉ cần đưa ra mô tả kết hợp với model mong muốn, công cụ này sẽ giúp tạo ra những hình vẽ rất đẹp và nhanh chóng. Trí tưởng tượng chính là giới hạn duy nhất của bạn. Điều tuyệt vời hơn cả là SD hoàn toàn miễn phí, tuy nhiên SD sẽ sử dụng tài nguyên từ máy tính của bạn để tạo ra hình ảnh. Vậy nên, tốc độ xử lý hoàn toàn phụ thuộc vào phần cứng máy tính của bạn. Chiếc máy tính core i3 mà tôi đang dùng mất tới 8 phút để cho ra 1 tấm hình 512 x 512, trong khi với một chiếc Macbook Apple M1 chỉ mất có 2 phút.

Emma Watson trong trang phục lai giữa điệp viên và phù thủy

Bài viết này sẽ không hướng dẫn các bạn cách cài đặt cụ thể SD, bởi đã có rất nhiều những hướng dẫn đầy đủ và chi tiết trên YouTube. Nhưng dù vậy, việc cài đặt SD cũng có thể gây khó khăn cho người mới, nhất là những không rành về công nghệ do bạn sẽ phải cần cài Python và Git trên máy tính của mình. Ngay cả khi bạn đã thông thạo những kỹ năng trên, thì máy tính của bạn cũng cần phải có card màn hình, nếu không SD sẽ không chạy được. Vẫn có cách để chạy SD bằng CPU, nhưng dĩ nhiên tốc độ sẽ rất chậm.

Có quá nhiều thứ dễ khiến chúng ta nản lòng, nhưng không sao, tôi sẽ giúp bạn tiếp cận với SD một cách đơn giản nhất. Dĩ nhiên, đây chỉ là cách dùng rất rất cơ bản, nhưng cũng đủ để bạn có chút kinh nghiệm với SD trước khi tiến những bước xa hơn.

Alexandra Daddario trong trang phục thủy thủ và phù thủy

Ở đây, chúng ta chỉ cần kết nối Internet và tận dụng sức mạnh GPU cloud của Google Colab, nhờ vậy, phần cứng máy tính không còn là vấn đề. Sau đó bạn chỉ cần chạy lần lượt 4 đoạn code Python mà tôi sẽ giới thiệu bên dưới là xong. Dĩ nhiên, với cách làm này bạn sẽ không có Web UI để sử dụng nhưng vẫn khá ổn để tạo hình ảnh "mì ăn liền" và tiết kiệm thời gian. Nếu muốn full Web UI, mời bạn tham khảo link sau.

Kate Upton trong trang phục quân đội

Sử dụng Colab là hoàn toàn miễn phí. Tuy nhiên, vào những lúc cao điểm, tài nguyên GPU sẽ không còn, bạn sẽ phải chờ hoặc trả tiền để sử dụng dịch vụ (pay as you go). Thực tế sử dụng thì tôi không phải gặp phải tình huống này nhiều, mặc dù vẫn có.

Đầu tiên, các bạn vào Google Colab (link có thể search từ Google) rồi tạo một file mới. Như trong hình bên dưới các bạn có thể thấy có 4 đoạn code, bạn chỉ cần đưa chuột vào biểu tượng [  ] trước mỗi khối lệnh và bấm vào nút Play để thực thi đoạn code.

Chạy lần lượt 4 khối lệnh từ trên xuống hoặc chọn Runtime > Run All

%pip install --quiet --upgrade diffusers transformers scipy mediapy accelerate

from diffusers import PNDMScheduler, DDIMScheduler, LMSDiscreteScheduler

scheduler = PNDMScheduler(beta_start=0.00085, beta_end=0.012, beta_schedule="scaled_linear", skip_prk_steps=True)

Chạy 2 đoạn code đầu tiên để tải về và import các thư viện cần thiết

import mediapy as media
import torch
from torch import autocast
from diffusers import StableDiffusionPipeline

# model_id = "CompVis/stable-diffusion-v1-4"
model_id = "Lykon/DreamShaper"
# model_id = "Linaqruf/anything-v3.0"
# model_id = "SG161222/Realistic_Vision_V4.0"
# model_id = "stablediffusionapi/toonyou"

device = "cuda"
safety_checker = None

pipe = StableDiffusionPipeline.from_pretrained(model_id, safety_checker=safety_checker)
pipe = pipe.to(device)

Đoạn code thứ 3 giúp tải về và set up các pretrained model. Ở đây tôi dùng Dream Shaper, một model có style nửa thật nửa vẽ. Bạn có thể dùng các thư viện khác nếu muốn.

Ở đoạn code cuối cùng, các bạn cần lưu ý như sau:
- Biến "prompt" cho phép bạn nhập vào các mô tả mong muốn, hình ảnh sẽ được tạo ra dựa trên các mô tả này.
- Biến "neg_prompt" là các chi tiết mà bạn không muốn xuất hiện trong tấm ảnh của mình.
- "width" và "height" là kích thước chiều rộng và chiều dài của tấm ảnh.
- "num_images" là số lượng ảnh được tạo ra.
prompt="chubby megan fox,looking at the camera,pretty face,modelshoot style,full body shot,high detail,sharp focus,professional majestic oil painting by Ed Binklkey,Atey Ghailan,Studio Ghibli,by Jeremy Mann,Greg Manchess,Antonio Moro,"
neg_prompt="ugly,tattoos,bad anatomy,extra limbs,weird hands,too many fingers,poorly drawn face,weird face,out of frame,canvas frame,cross eyes,mutation,mutated,"

width=512
height=768
num_images=3

prompts = [ prompt ] * num_images
neg_prompts = [ neg_prompt ] * num_images
with autocast("cuda"):
    images = pipe(prompt=prompts, negative_prompt=neg_prompts, guidance_scale=6, num_inference_steps=50, width=width, height=height).images

media.show_images(images)
images[0].save("output.jpg")

Đoạn code thứ 4 sẽ sinh ra những hình ảnh mong muốn, bạn chỉ cần lựa những tấm nào ưng ý nhất lưu về máy là xong. Ví dụ ở đây tôi đang tạo một nữ nhân vật có khuôn mặt của diễn viên Megan Fox trong trang phục văn phòng.

Với sức mạnh xử lý của cloud GPU thì chỉ mất khoảng vài chục giây để tạo ảnh ở kích thước 512 x 768. Dĩ nhiên, không phải tấm hình nào cũng dùng được ngay. Bạn sẽ thấy có tấm bị lỗi mặt, lỗi ngón tay, lỗi tư thế v.v... Lúc này bạn có thể xem lại câu lệnh mình đã nhập vào hoặc chỉ đơn giản là tạo lại những tấm hình khác. Lưu ý: nếu gặp lỗi "CUDA run out of memory" thì hãy chọn Runtime > Restart để khởi động lại GPU.

Megan Fox trong trang phục văn phòng

Trên đây chỉ là cách sử dụng SD ở mức rất cơ bản. Với phiên bản WebUI, bạn có thể cài thêm các plugin để tạo hình ảnh từ hình ảnh, tạo hình ảnh từ pose của nhân vật... Cách sử dụng là cực kỳ phong phú. Tận dụng SD đúng cách có thể giúp bạn tối ưu chi phí thiết kế, quảng cáo, bản quyền, giúp nhanh chóng tạo ra hình ảnh mong muốn mà không cần phải tốn quá nhiều thời gian và tiền bạc. Hy vọng bài viết này đã giúp bạn có được những trải nghiệm ban đầu với AI nói chung và Stable Diffusion nói riêng. Chúc các bạn thành công!

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

💻Nhận dạy online 1 kèm 1 Automation Test từ cơ bản tới nâng cao (From Zero to Hero) 😁😁😁
Lộ trình gồm 3 phần:
1) Kỹ thuật lập trình và tư duy lập trình cơ bản
2) Nhập môn kiểm thử (Manual Test)
3) Kiểm thử tự động (Automation Test) + Chuẩn bị cho phỏng vấn
* Lộ trình chi tiết: Xem tại đây

🎓Đối tượng người học:
- Những bạn bị mất gốc căn bản môn lập trình.
- Những bạn muốn theo con đường kiểm thử (testing), đặc biệt là kiểm thử tự động (Automation Test).

🦘Người giảng dạy:
- Mình sẽ là người trực tiếp hướng dẫn.
- Nếu là các vấn đề ngoài chuyên môn hoặc sở trường, mình sẽ nhờ các anh chị em khác cũng làm trong ngành.

🤓Giới thiệu:
- Mình đã có hơn 10 năm kinh nghiệm làm IT ở cả trong và ngoài nước. Trong đó 3 năm đầu là làm lập trình viên Java, sau đó bén duyên với mảng Automation Test và theo nghề tới tận bây giờ. Mình được đào tạo chính quy về IT từ một trường Đại học danh tiếng ở TP.HCM (hệ kỹ sư 4 năm rưỡi), có chứng chỉ ISTQB, có thể giao tiếp tốt bằng tiếng Anh và có kinh nghiệm làm việc thực tế ở cả 2 mảng Outsource và Product. Title chính thức của mình là QA Automation Engineer, tuy nhiên, mình vẫn làm những dự án cá nhân chuyên về lập trình ứng dụng như Học Tiếng Anh StreamlineSách Nhạc. Mình là người có thái độ làm việc chuyên nghiệp, chăm chỉ và luôn nhiệt tình trong công việc.

💵Chi phí và hình thức thanh toán:
- Các bạn vui lòng liên hệ qua email songtoigianvn@gmail.com (email, chat, hoặc call) để book nội dung và khung giờ học (từ 8h tối trở đi).
- Mức phí: 150.000đ/buổi, mỗi buổi 60 phút.
- Lộ trình From Zero to Hero: 4.350.000đ (29 buổi).
- Bạn có thể học riêng và đóng tiền theo từng phần nếu muốn.
- Có thể học trước 1-2 buổi trước khi quyết định đi full lộ trình hoặc từng phần.
- Thanh toán qua Momo, chuyển khoản v.v...
BÌNH LUẬN
© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...