Remove-AI-Watermarks - CLI และไลบรารีสำหรับลบลายน้ำ AI ออกจากภาพ
(github.com/wiltodelta)- Remove-AI-Watermarks เป็น CLI และไลบรารี Python สำหรับจัดการลายน้ำที่มองเห็นได้ ลายน้ำที่มองไม่เห็น และเมตาดาต้าที่บ่งชี้ว่าเป็นภาพจาก AI ในภาพที่สร้างจาก Google Gemini (Nano Banana), ChatGPT/DALL-E, Stable Diffusion, Adobe Firefly, Midjourney และอื่น ๆ ได้ในครั้งเดียว
- การลบลายน้ำที่มองเห็นได้ รองรับโลโก้ sparkle ของ Gemini/Nano Banana โดยใช้ reverse alpha blending จาก alpha map ที่ทราบอยู่แล้วร่วมกับ gradient mask inpainting ใช้เวลาประมาณ 0.05 วินาทีต่อภาพ และไม่ต้องใช้ GPU
- การลบลายน้ำที่มองไม่เห็น ใช้วิธีทำให้รูปแบบในระดับพิกเซลและโดเมนความถี่ เช่น SynthID, StableSignature, TreeRing อ่อนลงด้วยการสร้างใหม่แบบ diffusion โดยโปรไฟล์เริ่มต้นใช้ SDXL และไปป์ไลน์เนทีฟราว 1024px
- การล้างเมตาดาต้าครอบคลุม EXIF, PNG text chunks, XMP
DigitalSourceType, และ C2PA Content Credentials โดยจะลบฟิลด์ที่เกี่ยวข้องกับ AI ซึ่งทำให้เกิดป้าย “Made with AI” บน Instagram, Facebook, X(Twitter) ขณะเดียวกันยังคงเก็บเมตาดาต้ามาตรฐานอย่าง Author, Copyright, Title ไว้ - ขอบเขตการรองรับรวมถึงโลโก้ sparkle, SynthID, C2PA/EXIF ของ Google Gemini/Nano Banana/Gemini 3 Pro, C2PA ของ OpenAI DALL-E 3/ChatGPT, PNG text chunks และลายน้ำแบบ steganographic ของ Stable Diffusion, Content Credentials ของ Adobe Firefly, และ EXIF/XMP ของ Midjourney เป็นต้น
- Smart Face Protection เป็นฟีเจอร์ที่ใช้ YOLO ตรวจจับคนและแยกใบหน้าก่อนกระบวนการ diffusion จากนั้นจะนำใบหน้าต้นฉบับกลับมาผสานอีกครั้งด้วย soft elliptical mask เพื่อลดการบิดเบือนลักษณะใบหน้า
- Analog Humanizer สามารถเพิ่ม film grain และ chromatic aberration แบบเลือกได้ เพื่อให้ผลลัพธ์ดูเหมือนภาพถ่ายจากการถ่ายหน้าจอ และอธิบายว่าเป็นฟีเจอร์สำหรับหลบเลี่ยงตัวจำแนกภาพ AI
- แนะนำให้ติดตั้งด้วย
pipx install git+https://github.com/wiltodelta/remove-ai-watermarks.gitหรือuv tool install git+https://github.com/wiltodelta/remove-ai-watermarks.gitโดยการติดตั้งพื้นฐานจะรวมการลบลายน้ำที่มองเห็นได้และการลบเมตาดาต้า - ความต้องการระบบคือ Python 3.10+ โดยการลบลายน้ำที่มองเห็นได้และการจัดการเมตาดาต้าสามารถทำงานบน CPU อย่างเดียวได้ ส่วนการลบลายน้ำที่มองไม่เห็นแนะนำให้ใช้ GPU ที่รองรับ CUDA หรือ MPS แต่ก็สามารถทำงานบน CPU ได้แบบช้ากว่า
- การลบลายน้ำที่มองไม่เห็นจะดาวน์โหลดโมเดลขนาดประมาณ 2GB อัตโนมัติในการรันครั้งแรก และจะตรวจหาอุปกรณ์อัตโนมัติตามลำดับ CUDA (Linux/Windows) > MPS (macOS) > CPU โดยสามารถระบุเองได้ด้วย
--device - CLI ใช้งานได้เช่น
remove-ai-watermarks all image.png -o clean.pngและการประมวลผลทั้งไดเรกทอรีแบบกลุ่มใช้remove-ai-watermarks batch ./images/ --mode allพร้อมมีคำสั่งย่อยvisible,invisible,metadataให้ใช้ด้วย - Python API สามารถใช้
GeminiEngineเพื่อตรวจจับและลบลายน้ำ และใช้has_ai_metadata,remove_ai_metadataเพื่อตรวจสอบและลบเมตาดาต้า AI ของภาพได้ - โรดแมประบุถึงการทดสอบถดถอยอัตโนมัติสำหรับ SynthID-Image v2, ข้อจำกัดในการลบ EXIF/XMP ภายใน AVIF/HEIF/JPEG-XL, และไปป์ไลน์วิดีโอที่วางแผนจะแยกเป็นแพ็กเกจต่างหาก ขณะที่การลบ Nightshade/Glaze/PhotoGuard ไม่ได้รับการรองรับ เพราะถือเป็นการโจมตีระบบปกป้องศิลปิน
- ส่วนกฎหมายระบุว่าการเปิดเผยแหล่งที่มาของเนื้อหาที่สร้างด้วย AI ถูกกำกับดูแลในหลายเขตอำนาจศาล และการลบข้อมูลดังกล่าวโดยมีเจตนาปลอมแปลงที่มาอาจละเมิดกฎหมาย, DMCA หรือข้อกำหนดของแพลตฟอร์ม โดยผู้ใช้เป็นผู้รับผิดชอบในการปฏิบัติตาม
- threat model มุ่งเน้นการช่วยให้ภาพ AI ที่ถูกเผยแพร่ไปแล้วรับมือกับระบบตรวจจับอัตโนมัติและป้าย “Made with AI” พร้อมเตือนว่าหากไฟล์ต้นฉบับเคยผ่านบัญชีผู้สร้างหรือระบบของ Google เครื่องมือนี้ไม่สามารถทำให้บันทึกฝั่งเซิร์ฟเวอร์ไม่ระบุตัวตนได้
1 ความคิดเห็น
ความเห็นจาก Hacker News
ผมคิดว่า คอมเมนต์ในอีกเธรด เกี่ยวกับ SynthID และ OpenAI ถูกมองข้ามไป ทั้งที่มันจับแก่นได้ดีว่าประเด็นนี้ จิตวิญญาณแบบแฮ็กเกอร์ ควรเป็นอย่างไร
เราให้ความสำคัญกับความเป็นส่วนตัว ดังนั้นไม่ควรยอมรับเครื่องมือที่คอยติด บาร์โค้ด ให้กับทุกพฤติกรรมดิจิทัล คำโต้แย้งแบบ “ตอนนี้ยังไม่ได้ทำแบบนั้น” ก็ฟังไม่ค่อยขึ้น
จิตวิญญาณแบบแฮ็กเกอร์ควรอยู่ที่การ รันโมเดลโอเพนซอร์สแบบโลคัล โดยไม่ต้องพึ่งบริษัทเหนือสิ่งอื่นใด
พวกเขาจะอยากได้วิธีจับและลงโทษคนที่อาจคุกคามอำนาจของตัวเอง
ถ้าความเป็นส่วนตัวสำคัญ ก็ใช้ โมเดลแบบโลคัล สิ
ผมกลับคิดว่าถ้ามี การระบุชัดเจน ว่าอะไรเป็น AI ก็เป็นเรื่องดี เพราะจะได้มองข้ามอย่างอื่นทั้งหมดที่มาจากแหล่งนั้นได้เลย
เครื่องมือนี้เป็นวิธีที่ดีในการทำให้คนเห็นข้อเท็จจริงนั้น
เช่นกรณีที่ใช้ การลบวัตถุ ที่ซับซ้อนกว่าในโปรแกรมแต่งภาพ
ตลกดีที่โพสต์นี้อยู่เหนือโพสต์ OpenAI Adopts SynthID Watermarks ขึ้นไปแค่หนึ่งช่องพอดี
การใส่ วอเตอร์มาร์ก ลงบนภาพที่สร้างจากข้อมูลฝึกซึ่งเรียนมาจากงานลิขสิทธิ์ที่ขโมยมา ถึงจะเข้าใจเหตุผลว่าอยากแยกของจริงกับไม่จริงออกจากกัน แต่มันก็ยังให้ความรู้สึกว่ามีอะไรผิดอยู่ดี
สำหรับ Gemini คำอธิบายนี้ค่อนข้างชวนให้เข้าใจผิด สิ่งที่ลบได้จริงมีแค่ วอเตอร์มาร์กที่มองเห็นได้ เท่านั้น
ถ้าจะลบ SynthID ต้องเอาภาพไป generate ใหม่ด้วย SDXL ที่ระดับ noise ต่ำ ซึ่งมีโอกาสสูงที่จะทำให้รายละเอียดเล็ก ๆ เสียหายเยอะ และคงใช้กับภาพความละเอียดสูงไม่ได้ดีนัก ส่วน NB2 กับ GPT Image 2 รองรับการสร้างภาพได้สูงสุดถึง 4K
ที่มากกว่านั้นเป็นการอัปสเกล ซึ่งก็คล้าย SDXL ส่วน GPT Image 2 รองรับ 4K โดยพื้นฐาน แต่ยังเป็นฟีเจอร์เชิงทดลองอยู่
ถ้าจะลบวอเตอร์มาร์กของ Gemini ก็แค่เปิด developer tools แล้วบล็อก HTTP request ที่ไปยัง watermark
มันเป็นการวางโลโก้ทับจากฝั่งไคลเอนต์
คำอธิบายที่ว่า “กรณีใช้งานที่ตรงกับ threat model: การอนุรักษ์งานศิลปะหรือบันทึกทางประวัติศาสตร์จากการถูกติดป้ายว่า ‘สร้างโดย AI’ แบบ false positive” ฟังแล้วเข้าใจยาก
ผมไม่เห็นว่าการสร้างภาพด้วย AI จะเกี่ยวอะไรกับเรื่องนี้ ตัวสร้างภาพไม่สามารถใส่วอเตอร์มาร์กลงบนสิ่งที่มันไม่ได้สร้างขึ้นเองได้ และถ้าวอเตอร์มาร์กมีความแม่นยำสูงพอจะตามไปถึง session ID เฉพาะได้อย่างที่ README บอก ก็ยิ่งดูไม่น่าเป็นไปได้มากที่งานศิลปะที่มนุษย์สร้างจะเกิด false positive ได้ แถมการแก้ไขภาพเพื่อลบวอเตอร์มาร์กก็ย่อมเปลี่ยนแปลงสิ่งที่อ้างว่าจะ “อนุรักษ์” ไปโดยหลีกเลี่ยงไม่ได้
ยิ่งอ่านก็ยิ่งมั่นใจว่า use case ใน README เป็นเรื่องเหลวไหล และเป้าหมายจริงคือทำเครื่องมือให้คนเลี่ยงป้าย สร้างโดย AI แล้วเอาภาพขยะจาก AI ไปโพสต์ลงโซเชียลมีเดียได้
ในความเป็นจริง การเอาภาพจริงไปให้ Gemini หรือ ChatGPT แก้แค่จุดเล็ก ๆ นั้นง่ายมาก จะให้แก้เรื่องเล็กน้อยอย่างแสงหรือเงาก็ได้ และภาพที่ออกมาก็มักถูกตรวจจับโดยเครื่องมือวอเตอร์มาร์กเหล่านั้น แบบนี้จึงสามารถทำให้ภาพจริงแทบทุกภาพ ถูกนำเสนอราวกับเป็นภาพที่สร้างโดย AI ได้ง่ายมาก
ไม่ว่าคุณจะชอบหรือไม่ชอบโปรเจกต์นี้ ผมคิดว่าเส้นทางข้างหน้าคือการ พิสูจน์ความแท้ของทรัพยากรที่ไม่ใช่ AI มากกว่าความพยายามจะใส่วอเตอร์มาร์กให้สิ่งที่ AI สร้างทั้งหมด
การทำวอเตอร์มาร์กจะใช้ได้ผลจริงก็ต่อเมื่อวิธีการนั้น เป็นความลับ
การฝัง ciphertext ลงใน high-frequency noise เป็นวิธีเก่าแล้ว ในโลกของโมเดล generative สิ่งที่น่าสนใจกว่ามากคือการใช้ความยืดหยุ่นของการสร้างเพื่อ encode ลงใน โครงสร้างระดับมหภาค
ใช้ โมเดลโอเพนซอร์ส ไปเลยไม่ได้เหรอ?