Sự phát triển của công nghệ tạo video từ văn bản (text to video) bằng Stable Diffusion đang diễn ra với tốc độ chóng mặt. Trong bài viết này, bạn sẽ học cách sử dụng AnimateDiff, một kỹ thuật sản xuất video chi tiết được trình bày trong bài báo khoa học “AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning” của Yuwei Guo và cộng sự.
AnimateDiff là một trong những cách dễ nhất để tạo video bằng Stable Diffusion. Ở dạng cơ bản nhất, bạn chỉ cần viết một đoạn mô tả (prompt), chọn một model và bật AnimateDiff!
AnimateDiff Là Gì Và Tại Sao Nó Lại “Hot”?
AnimateDiff biến một đoạn văn bản mô tả thành một video bằng cách sử dụng mô hình Stable Diffusion. Bạn có thể coi nó như một sự tổng quát hóa nhẹ của việc tạo ảnh từ văn bản: Thay vì tạo ra một hình ảnh, nó tạo ra một video. Công nghệ này mở ra một kỷ nguyên mới cho việc sáng tạo nội dung video, cho phép bất kỳ ai cũng có thể tạo ra những thước phimđộc đáo chỉ bằng vài dòng chữ.
AnimateDiff Hoạt Động Như Thế Nào?
AnimateDiff sử dụng một module điều khiển để tác động đến một mô hình Stable Diffusion. Module này được huấn luyện với nhiều đoạn video ngắn khác nhau. Module điều khiển điều chỉnh quá trình tạo ảnh để tạo ra một loạt các hình ảnh trông giống như các đoạn video mà nó đã học.
Giống như ControlNet, module điều khiển của AnimateDiff có thể được sử dụng với BẤT KỲ mô hình Stable Diffusion nào. Hiện tại, chỉ các mô hình Stable Diffusion v1.5 và SDXL được hỗ trợ.
Những Hạn Chế Của AnimateDiff
Vì nó tuân theo chuyển động học được từ dữ liệu huấn luyện, nó tạo ra một chuyển động chung chung thường thấy. Nó sẽ không tạo ra một video tuân theo một chuỗi chuyển động chi tiết trong đoạn mô tả.
Chất lượng chuyển động nhạy cảm với dữ liệu huấn luyện. Nó không thể tạo ảnh động cho đồ họa lạ mắt không có trong dữ liệu huấn luyện. Hãy ghi nhớ điều này khi bạn chọn những gì cần tạo ảnh động. Không phải tất cả các đối tượng và phong cách đều giống nhau.
Tuy nhiên, vẫn có những thủ thuật để cải thiện chuyển động:
Thay đổi đoạn mô tả trong khi tạo video. Kỹ thuật này được gọi là prompt travel.
Chúng ta sẽ sử dụng AUTOMATIC1111 Stable Diffusion WebUI. Đây là một phần mềm mã nguồn mở miễn phí và phổ biến. Bạn có thể sử dụng GUI này trên Windows, Mac hoặc Google Colab.
Nếu bạn là người mới bắt đầu sử dụng Stable Diffusion, hãy tham khảo Hướng Dẫn Bắt Đầu Nhanh. Nếu bạn là người mới sử dụng AUTOMATIC1111, hãy tham khảo Hướng Dẫn AUTOMATIC1111.
Cài Đặt Tiện Ích Mở Rộng AnimateDiff
Chúng ta sẽ sử dụng tiện ích mở rộng AnimateDiff cho Stable Diffusion WebUI.
Google Colab
Cài đặt AnimateDiff trong Colab Notebook rất dễ dàng. Tất cả những gì bạn cần làm là chọn tùy chọn AnimateDiff trong phần Extensions.
Windows hoặc Mac
Để cài đặt tiện ích mở rộng AnimateDiff trong AUTOMATIC1111 Stable Diffusion WebUI:
Khởi động AUTOMATIC1111 Web UI như bình thường.
Điều hướng đến Trang Extension.
Nhấp vào tab Install from URL.
Nhập URL của tiện ích mở rộng vào trường URL for extension’s git repository.
Chờ thông báo xác nhận rằng quá trình cài đặt đã hoàn tất.
Khởi động lại AUTOMATIC1111.
Tải Xuống Các Motion Module Cần Thiết
(Bạn không cần thực hiện bước này nếu bạn đang sử dụng Colab notebook của chúng tôi.)
Bạn cần tải xuống ít nhất một motion module trước khi sử dụng AnimateDiff. Chúng có thể được tìm thấy trên trang Hugging Face của tác giả gốc.
Nếu bạn chỉ muốn tải xuống các phiên bản mới nhất của các motion module, hãy lấy:
mm_sdxl_v10_beta.safetensors — Phiên bản SDXL
mm_sd15_v3.safetensors — Phiên bản SD 1.5
Đây là các phiên bản cũ hơn.
mm_sd_v15_v2.ckpt — Hướng dẫn này cũng sử dụng mô hình v2. Bạn có thể thay thế bằng v3.
mm_sd_v15.ckpt
mm_sd_v14.ckpt
Đặt các motion module vào thư mục stable-diffusion-webui > extensions > sd-webui-animatediff > model.
Tạo Video Đầu Tiên Của Bạn Với AnimateDiff
Hãy tạo một video về một cô gái vui vẻ đang thử bộ áo giáp mới của mình trong phòng khách.
Bước 1: Chọn Một Mô Hình Stable Diffusion
Tôi sẽ sử dụng một nhân vật chân thực trong ví dụ này. Hãy sử dụng CyberRealistic v3.3. Tải xuống mô hình và đặt nó trong stable-diffusion-webui > models > Stable-Diffusion.
Trong menu thả xuống Stable Diffusion checkpoint, hãy chọn cyberrealistic_v33.safetensors.
Bước 2: Nhập Cài Đặt txt2img
Trên trang txt2img, hãy nhập các cài đặt sau.
Prompt:
((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted
Negative Prompt:
CyberRealistic_Negative-neg
Lưu ý: CyberRealistic_Negative là một negative embedding (hướng dẫn cài đặt).
Steps: 20
Sampler: DPM++ 2M Karras
CFG scale: 10
Seed: -1
Size: 512×512
Điều chỉnh batch count để tạo nhiều video cùng một lúc.
Bước 3: Nhập Cài Đặt AnimateDiff
Trên trang txt2img, hãy cuộn xuống phần AnimateDiff.
Nhập các cài đặt sau.
Motion Module: mm_sd_v15_v2.ckpt
Enable AnimateDiff: Yes
Number of frames: 32 (Đây là độ dài của video)
FPS: 8 (Đây là số khung hình trên giây. Vì vậy, độ dài video là 32 khung hình / 8 fps = 4 giây)
Bạn có thể để phần còn lại ở mặc định.
Chọn MP4 trong tùy chọn Save nếu bạn muốn lưu video MP4.
Bước 4: Tạo Video
Nhấn Generate để tạo video. Bạn sẽ nhận được một cái gì đó tương tự như thế này.
Bạn có thể tìm thấy giải thích chi tiết về các tham số trên trang GitHub. Dưới đây là một số giải thích với các ví dụ minh họa.
Close Loop (Vòng Lặp Khép Kín)
Tùy chọn close loop làm cho video liên tục. Đó là khung hình đầu tiên, giống như khung hình cuối cùng. Vì vậy, bạn sẽ không thấy sự thay đổi đột ngột khi chuyển từ khung hình cuối cùng sang khung hình đầu tiên.
N: Không sử dụng close loop.
R-P: Giảm số lượng ngữ cảnh close loop. Prompt travel sẽ KHÔNG được nội suy để trở thành một vòng lặp khép kín.
R+P: Giảm số lượng ngữ cảnh close loop. Prompt travel SẼ ĐƯỢC nội suy để trở thành một vòng lặp khép kín.
A: Làm cho khung hình cuối cùng giống như khung hình đầu tiên. Prompt travel SẼ ĐƯỢC nội suy để trở thành một vòng lặp khép kín.
Frame Interpolation (Nội Suy Khung Hình)
Frame interpolation làm cho video trông mượt mà hơn bằng cách tăng số lượng khung hình trên giây.
Đặt Frame Interpolation thành FILM và Interp X thành bội số của FPS. Ví dụ: Đặt nó thành 5 sẽ làm cho video 8 FPS thành 40 FPS.
Vì một số lý do, bạn sẽ cần đặt FPS thành 8 lần 5 = 40 FPS để làm cho ảnh GIF động trông đúng. Nếu không, nó sẽ ở chế độ chuyển động chậm.
Context Batch Size
Context batch size kiểm soát tính nhất quán về thời gian. Context batch size cao hơn làm cho các thay đổi video ít hơn. Giá trị nhỏ làm cho nó thay đổi nhiều hơn.
Nhưng chất lượng dường như giảm đi khi nó khác 16. Vì vậy, tốt hơn là giữ nó ở mức 16.
Biến Video Thành Video Với AnimateDiff
Bạn có thể điều khiển chuyển động bằng video tham khảo bằng ControlNet.
Hãy sử dụng video tham khảo này làm ví dụ. Mục tiêu là để AnimateDiff theo dõi chuyển động của cô gái trong video.
Bước 1: Tải Video Lên
Trên trang txt2img, hãy cuộn xuống phần AnimateDiff.
Tải video lên canvas Video source.
Bước 2: Nhập Cài Đặt AnimateDiff
Các tham số number of frames và FPS phải khớp với video. Chúng sẽ được điền tự động. Chúng là:
Number of frames: 96
FPS: 29
Đừng quên bật AnimateDiff.
Enable AnimateDiff: Yes
Bước 3: Nhập Cài Đặt txt2img
Các tham số txt2img là:
Checkpoint model: cyberrealistic_v33.safetensors
Prompt
((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted
Negative Prompt:
CyberRealistic_Negative-neg
Steps: 20
Sampler: DPM++ 2M Karras
CFG scale: 10
Seed: -1
Size: 512×512
Bước 4: Bật ControlNet
Bạn phải bật ControlNet để sao chép video của tham chiếu.
Trong phần ControlNet Unit 0:
Hãy sử dụng DW Openpose.
Enable: Yes
Preprocessor: dw_openpose_full
Model: Openpose
Bước 5: Tạo Video
Nhấn Generate.
(Tiện ích mở rộng AnimateDiff rất khó tính. Nếu nó báo lỗi, hãy thử nhấn Generate lại. Nếu vẫn không hoạt động, hãy khởi động lại A1111 hoàn toàn và thử lại.)
Bạn có thể sử dụng motion LoRA để thêm chuyển động camera vào video. Chúng được sử dụng theo cùng một cách như LoRA tiêu chuẩn.
Cài Đặt Motion LoRA
Bạn có thể tải xuống motion LoRA theo liên kết sau.
Trang tải xuống Motion LoRA
Tải xuống tất cả các tệp có lora là một phần của tên tệp.
Đặt chúng trong stable-diffusion-webui > models > Lora.
Sử Dụng Motion LoRA
Tất cả những gì bạn cần làm là thêm motion LoRA vào prompt. Ví dụ:
Prompt:
((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted
Negative prompt:
CyberRealistic_Negative-neg
Bạn thấy nền đang di chuyển sang bên phải, cho thấy camera đang lia sang bên trái.
Nhưng sử dụng LoRA weight 1 dường như tạo ra một artifact ở hậu cảnh. Giảm LoRA weight xuống 0.75 tạo ra kết quả tốt hơn.
((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted
Image to Image: Kiểm Soát Bố Cục Và Chuyển Động Tinh Tế
Bạn có thể hướng dẫn bố cục và chuyển động ở một mức độ giới hạn bằng cách sử dụng AnimateDiff với img2img. Trong phương pháp này, bạn có thể xác định hình ảnh ban đầu và cuối cùng của video. Chúng không thể được sử dụng chính xác vì chúng sẽ trải qua quá trình image to image.
Điều hướng đến trang img2img trong AUTOMATIC1111.
Nhập cài đặt img2img.
Prompt:
((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted
Negative prompt:
CyberRealistic_Negative-neg
Tải hình ảnh ban đầu lên canvas hình ảnh của tab img2img.
Bạn có cảm thấy chuyển động của AnimateDiff hơi thiếu? Bạn có thể tăng chuyển động bằng cách chỉ định các prompt khác nhau tại các thời điểm khác nhau. Tính năng này thường được gọi là prompt travel trong cộng đồng Stable Diffusion.
Đây là cách prompt travel hoạt động. Giả sử bạn chỉ định prompt 1 tại khung hình thứ 1 và prompt 2 tại khung hình thứ 10. Các prompt tại khung hình 1 và khung hình 10 chắc chắn là prompt 1 và prompt 2. Nó nội suy các prompt giữa khung hình 1 và khung hình 10.
Không Có Prompt Travel
Prompt:
(masterpiece, top quality, best quality, official art, beautiful and aesthetic:1.2), (1girl), extreme detailed,(fractal art:1.3),colorful,highest detailed
Negative prompt:
(worst quality:2), (low quality:2), (normal quality:2), lowres, bad anatomy, normal quality, ((monochrome)), easynegative, badhandv4
Sử Dụng Prompt Travel
Sử dụng prompt ở định dạng sau để sử dụng prompt travel
(masterpiece, top quality, best quality, official art, beautiful and aesthetic:1.2), (1girl), extreme detailed,(fractal art:1.3),colorful,highest detailed 0: smile 8: (arm over head:1.2) studio lighting
Dòng đầu tiên là tiền tố prompt. Dòng cuối cùng là hậu tố prompt. Chúng được thêm vào đầu và cuối của prompt, tương ứng.
Ở giữa, chúng ta chỉ định các prompt tại các khung hình khác nhau.
Tăng Độ Phân Giải Với Hi Res Fix
Bạn có thể sử dụng AnimateDiff với Hi Res fix để tăng độ phân giải.
Upscaler: 4x-UltraSharp
Hires steps: 10
Denoising strength: 0.6
Upscale by: 1.4
AnimateDiff v3: Nâng Cấp Motion Module
AnimateDiff v3 không phải là một phiên bản mới của AnimateDiff, mà là một phiên bản cập nhật của motion module. Tất cả những gì bạn cần làm để sử dụng nó là tải xuống motion module và đặt nó trong thư mục stable-diffusion-webui > models > animatediff. Bạn có thể tải xuống motion module v3 cho AUTOMATIC1111.
Bạn có thể sử dụng Animate v3 motion module theo cùng một cách như v2.
Khi thử nghiệm, tôi không thể nói v3 tốt hơn v2. Chúng tạo ra các chuyển động khác nhau. Bạn có thể giữ cả hai trong hộp công cụ của mình và xem cái nào hoạt động tốt hơn trong quy trình làm việc cụ thể của bạn.
AnimateDiff Cho SDXL: Tạo Video Độ Phân Giải Cao
AnimateDiff SDXL không phải là một phiên bản mới của AnimateDiff, mà là một motion module tương thích với mô hình Stable Diffusion XL. Bạn cần tải xuống motion module SDXL và đặt nó trong thư mục stable-diffusion-webui > models > animatediff.
Bạn có thể sử dụng Animate SDXL motion module theo cùng một cách như các motion module khác. Hãy nhớ đặt nó thành kích thước hình ảnh tương thích với mô hình SDXL, ví dụ: 1024 x 1024.
Bạn có thể sử dụng bất kỳ mô hình SDXL nào, không chỉ mô hình cơ sở.
Tăng Tốc AnimateDiff: Tiết Kiệm Thời Gian Sáng Tạo
Tạo video có thể chậm. AnimateDiff cũng không ngoại lệ. Dưới đây là một vài cách bạn có thể tăng tốc tạo video với AnimateDiff.
LCM LoRA: Tối Ưu Hóa Tốc Độ
LCM LoRA là một mô hình LoRA để tăng tốc Stable Diffusion. Bạn có thể mong đợi quá trình tạo video nhanh hơn gấp 3 lần.
Làm theo hướng dẫn LCM LoRA để cài đặt các module LCM LoRA. Có các phiên bản SD 1.5 và SDXL.
Cài đặt hình ảnh của LCM LoRA khá khác biệt. Điều quan trọng là phải hoàn thiện các cài đặt mà không cần sử dụng AnimateDiff.
SDXL Turbo: Sức Mạnh Của Mô Hình Turbo
Các mô hình SDXL Turbo có cùng kiến trúc với các mô hình SDXL khác, nhưng phương pháp đào tạo Turbo cho phép ít bước sampler hơn. Bạn có thể mong đợi quá trình tạo video nhanh hơn gấp 3 lần.
Điều quan trọng là sử dụng phương pháp lấy mẫu, số bước và CFG scale sau. Nếu không, chất lượng sẽ kém.
Xử Lý Sự Cố AnimateDiff: Giải Quyết Các Vấn Đề Thường Gặp
AnimateDiff Tạo Ra 2 Video Riêng Biệt Thay Vì Một
Prompt có thể quá dài. Trong AUTOMATIC1111 > Settings > Optimization, hãy chọn Pad prompt/negative prompt to be same length.
Kết Luận: Làm Chủ AnimateDiff Để Tạo Video Từ Văn Bản Đột Phá
Với hướng dẫn chi tiết này, bạn đã trang bị cho mình kiến thức và kỹ năng cần thiết để khai thác sức mạnh của AnimateDiff. Hãy bắt đầu thử nghiệm, sáng tạo và biến những ý tưởng văn bản thành những thước phim video ấn tượng. AnimateDiff mở ra một thế giới mới cho việc sáng tạo nội dung, và bạn, với sự kiên nhẫn và đam mê, có thể trở thành một phần của cuộc cách mạng này trong lĩnh vực tạo video từ văn bản.