- Remove-AI-Watermarks là một CLI và thư viện Python xử lý cùng lúc watermark hiển thị, watermark ẩn và metadata do AI tạo ra trong các hình ảnh được tạo bằng Google Gemini (Nano Banana), ChatGPT/DALL-E, Stable Diffusion, Adobe Firefly, Midjourney, v.v.
- Xóa watermark hiển thị nhắm vào logo sparkle của Gemini/Nano Banana, được xử lý bằng reverse alpha blending dùng alpha map đã biết và gradient mask inpainting, mất khoảng 0,05 giây mỗi ảnh và không cần GPU
- Xóa watermark ẩn làm suy yếu các mẫu trong miền pixel và tần số như SynthID, StableSignature, TreeRing bằng tái tạo dựa trên diffusion; cấu hình mặc định dùng SDXL và pipeline native khoảng 1024px
- Làm sạch metadata nhắm đến EXIF, PNG text chunks, XMP
DigitalSourceType, C2PA Content Credentials; xóa các trường liên quan đến AI gây ra nhãn “Made with AI” trên Instagram, Facebook, X(Twitter), đồng thời giữ lại metadata tiêu chuẩn như Author, Copyright, Title
- Phạm vi hỗ trợ bao gồm logo sparkle, SynthID, C2PA/EXIF của Google Gemini/Nano Banana/Gemini 3 Pro; C2PA của OpenAI DALL-E 3/ChatGPT; PNG text chunks và watermark steganographic của Stable Diffusion; Content Credentials của Adobe Firefly; EXIF/XMP của Midjourney, v.v.
- Smart Face Protection là tính năng phát hiện người bằng YOLO trước khi xử lý diffusion để trích xuất khuôn mặt, rồi sau xử lý sẽ blend lại khuôn mặt gốc bằng mặt nạ elip mềm nhằm giảm biến dạng đặc điểm khuôn mặt
- Analog Humanizer tùy chọn thêm film grain và chromatic aberration để đầu ra trông như ảnh chụp lại màn hình, được mô tả là tính năng nhằm vượt qua bộ phân loại ảnh AI
- Khuyến nghị cài đặt bằng
pipx install git+https://github.com/wiltodelta/remove-ai-watermarks.git hoặc uv tool install git+https://github.com/wiltodelta/remove-ai-watermarks.git; cài đặt mặc định bao gồm xóa watermark hiển thị và xóa metadata
- Yêu cầu là Python 3.10+; xóa watermark hiển thị và xử lý metadata có thể chạy chỉ với CPU, còn xóa watermark ẩn khuyến nghị CUDA hoặc GPU MPS nhưng vẫn chạy chậm trên CPU
- Khi chạy lần đầu, tính năng xóa watermark ẩn sẽ tự động tải khoảng 2GB mô hình; thiết bị được tự động phát hiện theo thứ tự CUDA(Linux/Windows) > MPS(macOS) > CPU và có thể chỉ định bằng
--device
- CLI được dùng như
remove-ai-watermarks all image.png -o clean.png, còn xử lý hàng loạt thư mục là remove-ai-watermarks batch ./images/ --mode all; cũng cung cấp các lệnh con visible, invisible, metadata
- Python API có thể dùng
GeminiEngine để phát hiện và xóa watermark, đồng thời dùng has_ai_metadata, remove_ai_metadata để kiểm tra và xóa AI metadata của hình ảnh
- Lộ trình bao gồm kiểm thử hồi quy tự động cho SynthID-Image v2, các giới hạn khi xóa EXIF/XMP nhúng trong AVIF/HEIF/JPEG-XL, và pipeline video được lên kế hoạch như một gói riêng; việc xóa Nightshade/Glaze/PhotoGuard không được hỗ trợ vì bị xem là tấn công vào các cơ chế bảo vệ nghệ sĩ
- Phần pháp lý nêu rõ việc gắn nhãn nguồn gốc do AI tạo đang bị quản lý tại nhiều khu vực pháp lý, và việc xóa với mục đích đánh lừa thông tin xuất xứ có thể vi phạm pháp luật, DMCA hoặc điều khoản nền tảng; người dùng tự chịu trách nhiệm tuân thủ
- Mô hình đe dọa tập trung vào việc giúp các ảnh AI đã được phát tán đối phó với hệ thống phát hiện tự động và nhãn “Made with AI”, đồng thời cảnh báo rằng nếu tệp gốc đã đi qua tài khoản của người tạo hoặc hệ thống Google thì công cụ này không thể ẩn danh cả các bản ghi phía máy chủ
1 bình luận
Ý kiến trên Hacker News
Tôi nghĩ bình luận ở một luồng khác về SynthID và OpenAI đã bị đánh giá thấp, trong khi nó nắm bắt rất đúng tinh thần hacker nên là gì trong vấn đề này
Chúng ta coi trọng quyền riêng tư, vì vậy không nên chấp nhận các công cụ gắn mã vạch lên mọi hành vi số. Lập luận phản bác rằng “họ vẫn chưa làm thế” cũng không mấy thuyết phục
Tinh thần hacker trước hết nên nằm ở việc chạy mô hình mã nguồn mở cục bộ mà không phụ thuộc vào doanh nghiệp
Họ sẽ muốn có công cụ để truy ra và trừng phạt những ai đe dọa quyền lực của mình
Nếu quyền riêng tư quan trọng thì cứ dùng mô hình cục bộ
Tôi lại thấy nếu có dấu hiệu rõ ràng cho biết thứ gì đó là AI thì khá tốt, vì khi đó tôi có thể bỏ qua luôn mọi thứ khác từ cùng nguồn đó
Công cụ này là cách hay để cho mọi người thấy điều đó
Ví dụ như khi dùng xóa đối tượng phức tạp hơn trong trình chỉnh sửa ảnh
Thật buồn cười khi bài này lại nằm ngay phía trên bài OpenAI Adopts SynthID Watermarks
Việc gắn watermark lên hình ảnh được tạo ra từ dữ liệu huấn luyện học từ tài liệu có bản quyền bị đánh cắp nghe có gì đó sai sai, dù tôi hiểu lý do là để phân biệt thật giả
Với Gemini thì phần mô tả này hơi gây hiểu nhầm. Thứ được gỡ đúng nghĩa chỉ là watermark hiển thị
Muốn gỡ SynthID thì phải tái tạo ảnh bằng SDXL ở mức nhiễu thấp, mà như vậy rất dễ làm hỏng nhiều chi tiết nhỏ và có lẽ sẽ không hoạt động tốt ở độ phân giải cao. NB2 và GPT Image 2 hỗ trợ xuất ảnh tối đa 4K
Cao hơn nữa là upscale nên cũng tương tự SDXL. GPT Image 2 hỗ trợ 4K gốc nhưng vẫn còn mang tính thử nghiệm
Muốn gỡ watermark của Gemini thì chỉ cần mở developer tools và chặn request HTTP đi tới watermark
Nó là kiểu chồng logo ở phía client
Phần mô tả “trường hợp sử dụng phù hợp với mô hình đe dọa: bảo tồn nghệ thuật hoặc tư liệu lịch sử khỏi nhãn ‘do AI tạo ra’ gắn nhầm” nghe rất khó chấp nhận
Tôi không hiểu việc tạo ảnh bằng AI liên quan gì đến chuyện đó. Trình tạo ảnh không thể chèn watermark lên thứ mà nó không tạo ra, và nếu watermark có độ trung thực cao đến mức truy được cả session ID cụ thể như README nói, thì khả năng xuất hiện watermark dương tính giả trên tác phẩm do con người tạo ra cũng có vẻ cực thấp. Hơn nữa, việc chỉnh sửa ảnh để xóa watermark tất yếu sẽ làm thay đổi chính đối tượng mà bạn muốn “bảo tồn”
Càng đọc tôi càng tin rằng các trường hợp sử dụng trong README là vớ vẩn, và mục đích thật là tạo công cụ giúp đăng rác AI lên mạng xã hội bằng cách lách nhãn do AI tạo ra
Trên thực tế rất dễ lấy một ảnh thật rồi yêu cầu Gemini hoặc ChatGPT chỉ chỉnh sửa một phần rất nhỏ. Có thể chỉ là sửa nhẹ ánh sáng hoặc bóng đổ, và ảnh kết quả thường sẽ bị các công cụ watermark đó phát hiện. Theo cách này, hầu như bất kỳ ảnh thật nào cũng có thể dễ dàng được trình bày như ảnh do AI tạo ra
Bỏ qua việc thích hay ghét dự án cụ thể này, tôi nghĩ con đường phía trước nằm ở xác thực tính xác thực của tài nguyên không phải AI, chứ không phải cố watermark mọi thứ do AI tạo ra
Watermark chỉ thực sự hiệu quả khi phương pháp đó được giữ bí mật
Việc nhúng bản mã vào nhiễu tần số cao là cách làm cũ. Trong mảng mô hình sinh, sẽ thú vị hơn nhiều nếu tận dụng tính linh hoạt của quá trình sinh để mã hóa vào cấu trúc vĩ mô
Sao không dùng luôn mô hình mã nguồn mở?