ブログ一覧に戻る

生成AI画像の完全再現(?)について解説する

9 min read
生成AI画像再現

はじめに

こんにちは、Caru(@caru_ini)です!

X のタイムラインで「某AI絵師の画像を完全再現した」という報告を見かけたので、その技術的背景をまとめました。関係者名は伏せています。また、本記事は純粋な技術検証を目的としており、不適切な利用を促すものではありません。

ここでは、完全再現を主張する方を「ポスト主」、該当する画像をAIで作成されたとされている方を「某AI絵師」と呼びます。

結論 ─ なぜ再現できたのか

結論から申し上げます。
某AI絵師が利用している画像生成サービス「NovelAI」は、PNG の通常メタデータに加え、画像の Alpha チャネルにも生成パラメータを埋め込んでいるためです。

メタデータはどのように埋め込まれているのか

一般的な画像生成AIは PNG メタデータ領域(いわゆる PNG Info)にプロンプトやシードなどの情報を書き込みます。
しかし多くの Web サイトではプライバシー保護の目的でアップロード時にこのメタデータを削除してしまいます。

NovelAI では、通常の PNG Info に加えて以下 2 通りで情報を保持しています。

  1. PNG Info(メタデータ領域) – 従来の方式
  2. PNG Info と Alpha チャネル(透明度) – NovelAI 独自の方式

PNGファイルと Alpha チャネルの基礎(1分で理解)

PNGについて、ざっくり図を書きましたので、ご覧ください。(かなりざっくりです、実際のPNGはもっと複雑です)

図解

PNG は「RGB=色」「Alpha=透明度」「メタデータ」の3層構造です。NovelAI は Alpha 値を 254 など僅かに変化させ、そこへテキストをエンコードしてパラメータを隠しています(下図)。

画像

網掛になっている部分がAlpha値が254の(ほんの少し透明な)部分です。

NovelAI は Alpha 値を人間の目で判別することが難しい範囲で微調整し、そこに生成パラメータを格納しています。

Alpha チャネルから情報を確認する方法

NovelAI で生成された画像に含まれるPNG InfoまたはAlpha 埋め込みは、以下のサイトで解析できます。 某AI絵師の方画像をいれると、ポストにもあった完全なパラメータが表示されます。

他のアプリはどうなっているか

他のアプリでは、以下のような仕様になっていますが、格納されているデータの形式は異なります。

  • Stable Diffusion WebUI:PNG Info のみ
  • Stable Diffusion WebUI(Forge):PNG Info + Alphaチャネル(設定で無効にできる)
  • ComfyUI:PNG Info のみ

メタデータが削除されるタイミング

メタデータは多くの場合、意図しないタイミングで削除または剥がれてしまうことが多いです。

  • PNG Info:多くの Web サイトでアップロード時に削除されます(プライバシー保護のため)
  • Alpha チャネル:ピクセル情報の一部であるため、JPEG などの透明度のない画像フォーマットに変換しない限り残ります

今回の流れ

  1. 初回投稿:PNG Info と Alpha の両方が残ったまま画像を公開
  2. パラメータの発見:投稿者が PNG Info からパラメータを取得して再現
  3. 差し替え:(ポスト主によると)某AI絵師が PNG Info を削除した画像へ差し替えた様子
  4. 解析:Alpha チャネルに情報が残っていた
  5. 100%再現成功:Alpha から抽出したパラメータで再度再現

よくある誤解を防ぐために

この事例を見て「生成AI画像はすべて完全再現できる」と思われる方もいらっしゃるかもしれませんが、実際には再現できるケースは多くありません。

  • 多くの画像生成AIアプリは PNG Info のみ埋め込みます
  • 多くのWebサイトではアップロード時にPNG Infoは削除されます
  • メタデータ(PNG InfoまたはAlpha)のない画像から100%それを再現するパラメータを取得することはできません
  • 生成画像からseed値を逆算することはほぼ不可能です(全てのseedを網羅することはできないため)

プロンプト流出のリスクについて

アーティストタグが発覚することで著作権侵害の要件である 「類似性」「依拠性」 を同時に満たしてしまうリスクがあります。著作権侵害は親告罪であり、立証責任が求められるため、法的リスクを避けたい場合はパラメータの隠蔽が現実的な選択肢となってしまうわけです。(推奨する行為ではありません)。

ただし、特定のアーティストを意図的に模倣する行為自体に問題があることに変わりはありません。

このような行為は生成AI全体への社会的信頼を損ない、法令を遵守して適切にAIを利用している多くのユーザーにとって迷惑な結果をもたらすことに変わりはないでしょう。

参照: AIと著作権に関するチェックリスト&ガイダンス

画像生成に用いたパラメータを完全に削除するには(技術がお好きな方向け)

Alpha チャネルに隠されたパラメータを物理的に破壊する最も確実な方法は、Alpha チャネルを除去する、もしくはすべて 255(不透明)に置き換えることです。Alpha 値が 1 変わる程度では見た目にほとんど影響はありません。

このコードの使用は自己責任でお願いします。

from PIL import Image, PngImagePlugin
 
img = Image.open("input.png")
 
# 1) Alpha チャネル自体を無くす(RGB に変換)
img.convert("RGB").save("stripped_rgb.png", "PNG")
 
# 2) RGBA を維持したまま Alpha を 255(不透明)に統一
if img.mode == "RGBA":
    r, g, b, _ = img.split()
    opaque = Image.new("L", img.size, 255)
    Image.merge("RGBA", (r, g, b, opaque)).save("stripped_rgba.png", "PNG")
 
# 3) PNG Info も空にして保存(テキストメタデータ消去)
img.convert("RGB").save("clean.png", "PNG", pnginfo=PngImagePlugin.PngInfo())

CLI 派の方は ImageMagick で次のように実行しても Alpha 埋め込みと PNG Info を同時に除去できます。

convert input.png -alpha off -strip output.png

まとめ

NovelAI は PNG Info と Alpha チャネルの両方にパラメータを残すため、どちらか一方が削除されても復元できる可能性があります。ただし、こうした二重保存を行うサービスは少なく、ほとんどの画像では再現は困難です。

最後までお読みいただきありがとうございました。ガイドラインを守りつつ、安全なAIライフを🖐️

(この記事はOpenAI o3を使用して作成されました)

この記事を書いた人

Caru

Caru

エンジニアを目指す大学生。19歳。
東洋大学情報連携学部(INIAD)所属(28卒)。