1 điểm bởi GN⁺ 2 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

    • Việc tạo ra công cụ để cố gỡ watermark có lẽ sẽ thất bại vì đây là một cuộc chạy đua vũ trang mà các tập đoàn lớn cuối cùng sẽ thắng, đồng thời cũng ngầm chấp nhận việc gắn mã vạch
      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
    • Việc chấp nhận sự phá hủy mù quáng đối với khái niệm sự thật cũng không nên là tinh thần hacker
    • Với hình ảnh do AI tạo ra trong phần mềm được dùng ở EU, watermark dường như đã hoặc sắp trở thành yêu cầu như một phần của quy định minh bạch AI
    • Đây là kiểu chuyện xảy ra khi những người có quyền lực mang đặc điểm tính cách hoang tưởng và u tối
      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
    • Không phải “mọi hành vi số”, mà là những bức ảnh họ được yêu cầu tạo ra
      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 đó

    • Vấn đề là ngay từ đầu cái dấu hiệu đó đã không hề rõ ràng
      Công cụ này là cách hay để cho mọi người thấy điều đó
    • Nếu ai đó đang làm điều mà bạn không thích, thì khó có thể mong họ sẽ làm theo cách mà bạn muốn
    • Tôi thắc mắc liệu dấu bị gỡ ở đây có phải là cùng một loại, hoặc tương tự, với dấu được gắn khi bạn chỉnh sửa nhẹ ảnh bằng công cụ AI trong trình chỉnh sửa ảnh không
      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

    • Nano Banana 2 về cơ bản chỉ hỗ trợ độ phân giải 1K (1024x1024)
      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
    • Nếu đến giờ SDXL vẫn là mô hình ảnh cục bộ tốt nhất thì đúng là khá buồn
  • 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

    • Tôi phần lớn đồng ý rằng phần biện minh trong kho chứa là sai, nhưng tôi lại không đồng ý với đoạn “trình tạo ảnh không thể chèn watermark lên thứ mà nó không 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

    • Đây là bài toán khá khó giải, vì chỉ cần chĩa một camera “đã được chứng thực” vào một màn hình đủ tốt, rồi chụp bất cứ thứ gì có thể hiển thị trên màn hình, là bạn đã có một bức ảnh chắc chắn là thật
  • 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ở?