Remove-AI-Watermarks - 画像からAIウォーターマークを除去するCLIとライブラリ
(github.com/wiltodelta)- Remove-AI-Watermarksは、Google Gemini(Nano Banana)、ChatGPT/DALL-E、Stable Diffusion、Adobe Firefly、Midjourney などで生成された画像の可視ウォーターマーク、不可視ウォーターマーク、AI生成メタデータを一括で処理するCLIおよびPythonライブラリ
- 可視ウォーターマークの除去は Gemini/Nano Banana の sparkle ロゴを対象とし、既知のアルファマップを用いた逆アルファブレンディングとグラデーションマスクのインペインティングで処理され、画像1枚あたり約0.05秒でGPU不要
- 不可視ウォーターマークの除去は、SynthID、StableSignature、TreeRing のようなピクセル・周波数領域のパターンを拡散ベースの再生成で弱める方式で、デフォルトプロファイルは SDXL と約1024pxのネイティブパイプラインを使用
- メタデータ整理は EXIF、PNG text chunks、XMP
DigitalSourceType、C2PA Content Credentials を対象とし、Instagram、Facebook、X(Twitter) の「Made with AI」ラベルを引き起こすAI関連フィールドを削除しつつ、Author、Copyright、Title などの標準メタデータは保持 - 対応範囲には、Google Gemini/Nano Banana/Gemini 3 Pro の sparkle ロゴ・SynthID・C2PA/EXIF、OpenAI DALL-E 3/ChatGPT の C2PA、Stable Diffusion の PNG text chunks とステガノグラフィック・ウォーターマーク、Adobe Firefly の Content Credentials、Midjourney の EXIF/XMP などが含まれる
- Smart Face Protectionは、拡散処理の前に YOLO で人物を検出して顔を抽出し、処理後に元の顔を滑らかな楕円マスクで再ブレンドして、顔の特徴の歪みを減らす機能
- Analog Humanizerは、任意でフィルムグレインと色収差を追加し、出力が画面を撮影した写真のように見えるようにするもので、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のみで実行可能。不可視ウォーターマーク除去には CUDA または MPS GPU が推奨されるが、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 の自動回帰テスト、AVIF/HEIF/JPEG-XL 内部の EXIF/XMP 除去の制限、別パッケージとして計画されている動画パイプラインが含まれ、Nightshade/Glaze/PhotoGuard の除去はアーティスト保護への攻撃に当たると見なしてサポートしない
- 法的セクションでは、AI生成元の表示は複数の法域で規制されており、出所情報を偽る意図で削除する行為は法律・DMCA・プラットフォーム利用規約に違反する可能性があり、順守責任は利用者にあると明記
- 脅威モデルは、すでに配布済みのAI画像が自動検出システムや「Made with AI」ラベルに対応できるよう支援することに焦点を当てており、元ファイルが作成者アカウントや Google のシステムを経由している場合、サーバー側記録まで匿名化することはできないと警告している
1件のコメント
Hacker Newsのコメント
SynthIDとOpenAIに関する別スレッドのコメントは過小評価されていたが、この件でハッカー精神が何であるべきかをよく捉えていると思う
私たちはプライバシーを重視するのだから、あらゆるデジタル行動にバーコードを付ける道具を受け入れるべきではない。「まだそこまではしていない」という反論もあまり説得力がない
ハッカー精神は何よりも、企業に依存せずオープンソースモデルをローカルで実行することにあるべきだ
自分の権力を脅かす人を見つけ出し、罰する手段を欲しがるようになる
プライバシーが重要ならローカルモデルを使えばいい
何かがAIだという明確な表示があれば、その発信元から出てくる他のものも全部無視できるので、むしろ良いことだと思う
このツールはその事実を人々に示す良い方法だ
たとえば画像エディタでより複雑なオブジェクト除去をしたときのような場合だ
この記事がちょうどOpenAI Adopts SynthID Watermarksの記事の一つ上にあるのが面白い
盗用された著作権付き資料で学習したデータから生成された画像にウォーターマークを付けるのは、本物かどうかを見分けようとする理由は理解できるが、どこか間違っている感じがする
Geminiについては、この説明は少し誤解を招く。きちんと除去されるのは可視ウォーターマークだけだ
SynthIDを除去するには、SDXLで低ノイズレベルのまま画像を再生成する必要があるが、そうすると細かなディテールが多く壊れる可能性が高く、高解像度ではうまく動かないだろう。NB2とGPT Image 2は最大4K画像出力をサポートしている
それ以上はアップスケーリングなのでSDXLと似たようなものだ。GPT Image 2は基本で4Kをサポートしているが、まだ実験的だ
Geminiのウォーターマークを消すには開発者ツールを開いて、watermarkへのHTTPリクエストをブロックすればいい
クライアント側でロゴをオーバーレイしている方式だ
「脅威モデルに合致するユースケース: 偽陽性の『AI生成』ラベルから芸術や歴史記録を保存する場合」という説明は納得しにくい
AIで画像を生成することがこれとどう関係するのか分からない。画像生成器は自分が作っていないものにウォーターマークを挿入できないし、READMEが言うように特定のセッションIDまで追跡できるほど忠実度の高いウォーターマークなら、人間が作った芸術に偽陽性ウォーターマークが付く可能性も非常に低そうだ。そのうえ、ウォーターマークを消すための画像編集は、「保存」しようとしている対象そのものを必然的に変えてしまう
読めば読むほどREADMEのユースケースはたわごとで、実際の目的はソーシャルメディアでAI生成ラベルを回避してAIのゴミ画像を投稿できるようにするツールだという確信が強まる
実際の画像を持ってきてGeminiやChatGPTにごく小さな部分だけ直してもらうのはとても簡単だ。照明や影のような些細な修正も可能で、そうして出てきた画像はしばしばそのウォーターマーキングツールに検出される。こうしたやり方で、どんな実写画像でも簡単にAI生成画像のように見せることができる
この特定のプロジェクトの好き嫌いとは無関係に、今後の道筋はあらゆるAI生成物にウォーターマークを付けようとする試みより、非AIリソースの真正性証明にあると思う
ウォーターマーキングは手法が秘密であるときにしかまともに機能しない
高周波ノイズに暗号文を埋め込むのは古いやり方だ。生成モデルの領域では、生成の柔軟性を活かしてマクロ構造の中にエンコードするほうがずっと面白いだろう
ただオープンソースモデルを使えばいいのでは?