DragGAN: chỉnh sửa ảnh bằng cách kéo điểm
DragGAN biến việc chỉnh sửa ảnh thành thao tác kéo-thả: bạn đặt một điểm handle và một điểm target lên ảnh do StyleGAN2 tạo ra, và model biến dạng ảnh theo đúng hướng kéo. Đây là một cử chỉ chỉnh sửa thật sự khác biệt so với các công cụ theo prompt, và nó chạy đúng như mô tả. Điểm cần lưu ý: nó chỉ chỉnh sửa ảnh do model tạo ra ngay từ đầu, và giấy phép CC-BY-NC loại trừ mục đích thương mại.
DragGAN là gì
DragGAN là bản triển khai chính thức của bài báo SIGGRAPH 2023 'Drag Your GAN' của Xingang Pan và các đồng tác giả, cho phép chỉnh sửa ảnh bằng cách kéo điểm thay vì gõ prompt hay vẽ mask. Bạn đặt một điểm handle và một điểm target lên ảnh do StyleGAN2 tạo ra, rồi DragGAN lặp lại việc di chuyển latent code sao cho đặc trưng tại điểm handle bám theo điểm target, trong khi phần còn lại của ảnh vẫn nhất quán.
Tính năng cốt lõi của DragGAN
- ✓Kéo điểm để chỉnh sửa: đặt nhiều cặp điểm handle/target lên khuôn mặt, động vật, hay ô tô rồi kéo đặc trưng — mở mắt, xoay đầu, đổi dáng xe — một cách tương tác.
- ✓Chạy trên latent space của StyleGAN2, nên mỗi lần chỉnh sửa tái tạo lại toàn bộ ảnh mạch lạc thay vì chỉ vá từng pixel.
- ✓Có cả GUI desktop (scripts/gui.sh hoặc gui.bat) lẫn demo web Gradio (visualizer_drag_gradio.py) cho cùng một luồng thao tác.
- ✓Đi kèm script download_model.py để tải trọng số StyleGAN2 đã huấn luyện sẵn, cùng checkpoint tùy chọn cho StyleGAN-Human và Landscapes HQ (LHQ).
- ✓Hỗ trợ GAN inversion qua công cụ ngoài như PTI để nạp latent code của một ảnh thật rồi chỉnh sửa, không chỉ giới hạn ở ảnh tổng hợp.
- ✓Có sẵn Docker image cho visualizer, thiết lập bằng một lệnh với khả năng truyền GPU.
Cài đặt DragGAN
Đường cài đặt của DragGAN rẽ theo phần cứng bạn có. Nếu có GPU NVIDIA, làm theo yêu cầu của NVlabs/stylegan3, rồi chạy `conda env create -f environment.yml`, `conda activate stylegan3`, và `pip install -r requirements.txt`. Nếu không có CUDA — kể cả Apple Silicon M1/M2 hay chỉ CPU — hãy lược bỏ các dòng nvidia/cuda trong environment.yml trước khi tạo môi trường, rồi đặt `PYTORCH_ENABLE_MPS_FALLBACK=1` trên macOS. Dù theo đường nào, hãy tải trọng số StyleGAN2 pretrained bằng `python scripts/download_model.py` trước khi chạy GUI hay demo Gradio; checkpoint tùy chọn StyleGAN-Human và Landscapes HQ (LHQ) đặt vào `./checkpoints`. Cũng có đường Docker: build image, chạy bằng lệnh `docker run` có sẵn (thêm `--gpus all` để dùng GPU), rồi khởi chạy visualizer Gradio bên trong container — chuẩn bị khoảng 25GB dung lượng đĩa cho image.
Điểm mạnh
- ✓Kéo điểm để biến dạng khuôn mặt, động vật, hay ô tô là một cử chỉ chỉnh sửa thật sự khác biệt so với gõ prompt hay vẽ mask, và dễ hình dung kết quả.
- ✓Hai giao diện dựng sẵn — GUI gốc và demo web Gradio — nghĩa là bạn không phải tự viết UI chỉ để thử ý tưởng.
- ✓Đường dự phòng cho Mac M1/CPU được tài liệu hóa rõ ràng, không phải phần thêm vào cho có của một dự án chỉ nhắm CUDA.
- ✓download_model.py cùng Docker image giúp bạn đi từ clone repo tới demo chạy được mà không phải tự đi tìm checkpoint.
Yêu cầu và giới hạn của DragGAN
- △Chỉnh sửa ảnh thật không được tích hợp sẵn — bạn cần một bước GAN inversion riêng (README gợi ý PTI) để lấy latent code trước khi DragGAN có thể xử lý.
- △Mã thuật toán DragGAN theo CC-BY-NC, còn phần còn lại của repo kế thừa Nvidia Source Code License từ StyleGAN3, nên mục đích thương mại bị chặn ở cả hai phía.
- △Mọi bản phái sinh phải giữ watermark 'AI Generated' mà README yêu cầu, giới hạn việc đóng gói lại kết quả một cách tự do.
- △Thiết lập GPU đầy đủ theo đúng yêu cầu CUDA của StyleGAN3, và riêng Docker image đã chiếm khoảng 25GB dung lượng đĩa.
- △Bạn bị giới hạn trong checkpoint đang nạp — StyleGAN2, StyleGAN-Human, hay bộ LHQ — không có model đa dụng nào đứng sau cơ chế này.
Lựa chọn thay thế cho DragGAN
Câu hỏi thường gặp về DragGAN
Mã nguồn thuật toán DragGAN được cấp phép theo CC-BY-NC (chỉ dùng phi thương mại), trong khi phần lớn phần còn lại của repo — những gì kế thừa từ StyleGAN3 — thuộc Nvidia Source Code License. Mọi bản sử dụng hoặc phái sinh cũng phải giữ watermark 'AI Generated' mà DragGAN thêm vào ảnh đầu ra.
DragGAN hỗ trợ chạy trên Mac M1/M2 và máy chỉ có CPU: lược bỏ các dòng nvidia/cuda trong environment.yml trước khi tạo môi trường conda, rồi đặt biến PYTORCH_ENABLE_MPS_FALLBACK=1 trên macOS. Tốc độ sẽ chậm hơn nhiều so với đường CUDA mà StyleGAN3 mô tả.
GUI của DragGAN chỉnh sửa trực tiếp ảnh do StyleGAN2 tạo ra, còn muốn sửa một ảnh thật thì phải chạy thêm bước GAN inversion trước — README gợi ý dùng công cụ như PTI để lấy latent code, rồi mới nạp vào DragGAN để kéo điểm.
DragGAN đi kèm script download_model.py để tải trọng số StyleGAN2 đã huấn luyện sẵn, và README còn liên kết tới checkpoint tùy chọn cho StyleGAN-Human (ảnh cơ thể người) và bộ dữ liệu Landscapes HQ (LHQ) cho cảnh quan. Đặt các checkpoint này vào thư mục ./checkpoints trước khi chạy GUI hoặc demo Gradio.
Chỉnh sửa StyleGAN kiểu cũ thường là di chuyển theo một hướng ngữ nghĩa có sẵn trong latent space (ví dụ vector 'cười') hoặc chỉnh tay latent code. DragGAN thay vào đó cho đặt điểm handle và điểm target ngay trên ảnh rồi kéo đặc trưng bên dưới về phía target thông qua point tracking và tối ưu latent lặp lại.
DragGAN chưa được cấp phép cho mục đích thương mại — mã thuật toán theo CC-BY-NC (phi thương mại) và phần kế thừa từ StyleGAN3 theo Nvidia Source Code License, cộng thêm yêu cầu giữ watermark 'AI Generated' trên mọi bản phái sinh. Nên xem đây là codebase nghiên cứu và thử nghiệm, không phải sản phẩm thương mại sẵn sàng triển khai.
Vấn đề mà nó giải quyết
Trước DragGAN, chỉnh sửa ảnh dựa trên GAN thường có hai lối: huấn luyện riêng một model cho từng kiểu sửa (mạng 'làm cho cười'), hoặc dò tìm trong latent space một hướng ngữ nghĩa tình cờ làm đúng điều mong muốn, mà không chắc hướng đó áp dụng được cho ảnh khác. DragGAN thay thế việc dò tìm đó bằng thao tác trực tiếp: đánh dấu một đặc trưng đang ở đâu và cần đến đâu, phần tối ưu sẽ tự tìm quỹ đạo latent, nên một phương pháp duy nhất bao quát nhiều kiểu sửa mở — đổi dáng cằm, xoay ô tô, mở mắt — mà không cần huấn luyện riêng mạng cho từng loại.
Trường hợp sử dụng tốt nhất
- •Dựng demo chỉnh sửa khuôn mặt theo kiểu kéo điểm — mở/nhắm mắt, đổi góc nghiêng hay biểu cảm — trên ảnh chân dung do StyleGAN2 tạo ra.
- •Nghiên cứu hoặc mở rộng phương pháp tối ưu kéo kết hợp point tracking được mô tả trong bài báo SIGGRAPH 2023 mà không cần tự cài lại từ đầu.
- •Chỉnh sửa một ảnh thật cụ thể sau khi chạy GAN inversion (ví dụ bằng PTI) để lấy latent code của ảnh đó.
- •Thử biến đổi tư thế cơ thể hoặc cảnh quan bằng cách đổi sang checkpoint StyleGAN-Human hoặc LHQ thay vì model khuôn mặt mặc định.
Ai nên dùng — và ai nên bỏ qua
Hãy thử DragGAN nếu bạn nghiên cứu chỉnh sửa sinh ảnh theo kiểu kéo điểm, dựng demo trên ảnh đầu ra của StyleGAN2, hoặc cần tái hiện kết quả bài báo SIGGRAPH 2023 — GUI và demo Gradio giúp bạn thao tác kéo-thả chỉ vài phút sau khi tải xong trọng số. Bỏ qua nếu bạn cần chỉnh sửa ảnh thật tùy ý mà không muốn qua bước GAN inversion riêng, cần giấy phép thương mại (mã thuật toán theo CC-BY-NC và phần còn lại theo điều khoản phi thương mại của Nvidia), hoặc không muốn quản lý môi trường CUDA hay Docker image nặng 25GB chỉ để dùng thử.
Repo liên quan
DragGAN có đáng để bạn bỏ thời gian?
ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về DragGAN.
