概要
生成AIが発展する一方で、権利者が望まない無断のAI学習が問題になってきています
この記事では、学習用画像にノイズが入っていた場合、画像生成AIにどのような影響があるのかを調査しました
※この記事群は2024/10末時点の調査に基づいています
目次
- 画像生成AIにとって一番嫌なノイズを探す -結論編-
- 画像生成AIにとって一番嫌なノイズを探す -準備編-
- 画像生成AIにとって一番嫌なノイズを探す -調査編(1)-
- 画像生成AIにとって一番嫌なノイズを探す -調査編(2)-
- 画像生成AIにとって一番嫌なノイズを探す -調査編(3)-
- 画像生成AIにとって一番嫌なノイズを探す -調査編(4)-
- 画像生成AIにとって一番嫌なノイズを探す -実装編-
※この記事群は2024/10末時点の調査に基づいています
追加学習
ウォーターマークとして細かい格子柄を入れた場合(透過度20%)
epoch 8
他のパターンもいくつか試してみましたが、細かい柄は学習時に消えてしまうようです
学習自体に影響はほとんどありませんでした
ウォーターマークとしてドット(大きめの丸)を入れた場合(透過度20%)
epoch 8
epoch 6 で既に水玉模様が出ており、とても鮮明にウォーターマークが学習されています
ドット柄ウォーターマーク(透過度20%)を入れて、ウォーターマーク除去をタグとプロンプトの両方で指示した場合
- ウォーターマーク(透過度20%)
- 学習時のウォーターマーク除去タグ付けはアリ
- ネガティブプロンプトでウォーターマーク除去指示を追加
- Glaze・Nightshade未使用
epoch 8
文字ではないのでウォーターマークの除去はうまくいかないようです
学習ができていないのにウォーターマークが強く生成される傾向になりました
調査詳細 (学習元画像・epochごとの変遷)
学習データ
ドット柄ウォーターマーク(20%) のデータセットにタグ「watermark,english text」を学習対象に追加
epoch 2
epoch 4
epoch 6
epoch 10
epoch 12
ドット柄ウォーターマーク(透過度20%)→ Nightshade Low → Glaze Low をかけた場合
epoch 8
髪の色味がやや学習できていない感じです
またウォーターマークとしてドット柄がだいぶ鮮明に描かれています
ウォーターマーク除去
ウォーターマークを除去する機能の開発やサービスは、既に複数存在しています
それらを使用した場合の効果についても調査しました
zuruoke/watermark-removal
特徴
- ちょっと古いリポジトリなので環境構築に一苦労
- マスクを指定して、一致した箇所にあるウォーターマークを除去する
- デフォルトで用意されているマスクは一種類(自分で用意する必要がある)
比較
入力画像 | マスク | 出力画像 |
---|---|---|
Photoshopのヒストリーブラシのように、ウォーターマーク部分を周りの色で埋めた結果になりました
よくよく見ると指でのばしたような跡が見られるのですが、パッと見には綺麗に除去できているかのように見えます
少なくともほぼ一致できるマスクが用意できれば、ある程度は除去できそうです
調査失敗
- braindotai/Watermark-Removal-Pytorch
- D-Ogi/WatermarkRemover-AI
上記リポジトリは環境構築がうまくいかなかったため、検証できませんでした
ウォーターマーク除去サイト1
ウォーターマークはかなり綺麗に除去できてしまいました
ウォーターマーク除去サイト2
マスク指定 | 除去後 |
---|---|
(少なくとも無料では)ウォーターマークのマスクを手動で入れていくタイプのようです
除去自体はほどほどに行えました(あまり強くは除けないようです)
この時点での推測
- ウォーターマークが不規則に入っていると除去しづらいのでは?
- ウォーターマークが適度に複雑(クローバー程度)の方が除去しづらいのでは?
以降、この推測を元に調査を進めました
AIが除去しづらいウォーターマークの調査
単一柄(猫の足跡:16x16、透過度50%)を少しランダムで配置し、オーバーレイ効果で合成した場合
epoch 8
ヒョウ柄のような不規則な模様が主に髪に学習されるようになりました
ウォーターマーク除去
ほとんど除去されてしまっています
マスク指定 | 除去後 |
---|---|
複数柄(王冠・月・パズル・クローバー:16x16、透過度70%)を余白35pxの中にランダムで配置し、オーバーレイ効果で合成した場合
epoch 8
ウォーターマークらしき跡が出てくるようになりました
ウォーターマーク除去
除去しきれないウォーターマークが出てくるようになりました
複数柄(王冠・月・パズル・クローバー:16x16、透過度70%)を余白20pxの中にランダムで配置し、オーバーレイ効果で合成した場合
ウォーターマーク除去
密度が濃い方がウォーターマークが綺麗に除去されてしまうようです
複数柄(王冠・月・パズル・クローバー:32x32、透過度70%)を余白35pxの中にランダムで配置し、オーバーレイ効果で合成した場合
epoch 8
ウォーターマークは髪の影と誤認されて学習されてしまっているようです
ウォーターマーク除去
だいぶハッキリウォーターマークが残っています
これくらいウォーターマークが残っていれば、AI追加学習元として不適切とみなされ、除外される可能性が高くなりそうです
検証結論
ウォーターマークはある程度の大きさ、複雑さ、余白があれば、ウォーターマーク除去もされづらく、学習にも残りやすくなる