AI画像生成技術の進化によって、実写と区別が難しい画像も増えてきました。「この画像はAI生成なのか?」と確認したい場面もあると思います。

オンラインサービスを使う方法もありますが、画像を外部へアップロードしたくない場合は、ローカル環境で動作する判定ツールが便利です。

この記事では、Pythonを使ってローカルPC上でAI生成画像を判定する簡単なサンプルを紹介します。


ローカル判定のメリット

ローカル実行には次のような利点があります。

  • 画像を外部サーバーへ送信しない
  • オフラインでも動作可能
  • 大量の画像をまとめて処理しやすい
  • 自分で処理内容をカスタマイズできる

一方で注意点もあります。

AI生成画像判定は「100%正確」ではありません。最近の生成モデルは非常に高品質で、スクリーンショット化や圧縮後の画像では精度が下がることがあります。

そのため、判定結果は「参考情報」として扱うのがおすすめです。


動作環境

今回のサンプルでは以下を使用します。

  • Python 3.10以上推奨
  • PyTorch
  • Transformers
  • Pillow

必要ライブラリをインストール

まずは必要なライブラリをインストールします。

pip install torch transformers pillow

環境によってはインストールに少し時間がかかる場合があります。


AI生成画像判定コード

以下のコードを detect.py として保存してください。

from transformers import pipeline
from PIL import Image

# AI生成画像判定モデルを読み込み
detector = pipeline(
    "image-classification",
    model="umm-maybe/AI-image-detector"
)

# 判定する画像
image_path = "test.jpg"

# 画像読み込み
img = Image.open(image_path)

# 判定実行
results = detector(img)

print("\n判定結果:")

for result in results:
    print(
        f"{result['label']}: {result['score']:.4f}"
    )

# 最も高いスコアを取得
best = max(
    results,
    key=lambda x: x["score"]
)

print("\n最終判定:")
print(
    f"{best['label']} "
    f"({best['score']*100:.1f}%)"
)

このコードではAI生成を判別するAIを使っています。モデルは下記となります。
https://huggingface.co/umm-maybe/AI-image-detector


実行方法

ターミナルまたはコマンドプロンプトで以下を実行します。

python detect.py

出力例

例えば以下のような結果が表示されます。

判定結果:

AI-generated: 0.9300
Real: 0.0700

最終判定:
AI-generated (93.0%)

この例では「AI生成画像である可能性が93%」という意味になります。


複数画像をまとめて判定する方法

1枚ずつファイル名を変更するのは面倒なので、フォルダ内の画像をまとめて判定することもできます。

from transformers import pipeline
from PIL import Image
import os

detector = pipeline(
    "image-classification",
    model="umm-maybe/AI-image-detector"
)

folder = "images"

for file in os.listdir(folder):

    if file.lower().endswith(
        (".jpg",".jpeg",".png",".webp")
    ):

        path = os.path.join(
            folder,
            file
        )

        img = Image.open(path)

        result = detector(img)

        best = max(
            result,
            key=lambda x:x["score"]
        )

        print(
            f"{file}"
            f" → {best['label']}"
            f" ({best['score']*100:.1f}%)"
        )

これで images フォルダ内の画像を一括判定できます。


AI生成画像判定の限界

現在のAI判定技術にはいくつかの課題があります。

1. 再圧縮で精度が落ちる

SNSに投稿された画像は自動圧縮されることが多く、生成時の特徴が失われる場合があります。

2. スクリーンショットで判別が難しくなる

画像をスクリーンショット経由で保存すると、元の特徴情報が消えるケースがあります。

3. 最新モデルへの対応が遅れることがある

AI画像生成技術は非常に速いペースで進化しているため、判定モデル側が追いつかないことがあります。


まとめ

Pythonを使えば、AI生成画像判定ツールをローカル環境で簡単に作成できます。

今回のサンプルでは次の流れで実装しました。

  • 必要ライブラリをインストール
  • 判定モデルを読み込み
  • 画像を解析
  • AI生成確率を表示

ローカル実行なら画像を外部へ送信せず、安全に判定できます。ただし判定結果は絶対ではないため、必要に応じてメタデータ確認や画像解析と組み合わせて利用すると、より信頼性の高い判断ができます。