开发者指南:检测 AI 生成图像
Source: Dev.to
引言
作为独立开发者,我们越来越多地面对“合成现实”问题。无论你是在构建图库交易平台、社交应用,还是内容审核工具,区分捕获的光子与预测的像素正成为核心需求。
AI 生成图像的技术伪影
AI 模型(扩散模型、GAN)并不“看到”世界;它们预测噪声模式。这会留下三类常见的伪影:
全局一致性问题
- 非欧几里得几何 – 例如,眼镜与皮肤融合或耳环不匹配。
- 阴影不一致 – 阴影与主要光源不对齐。
棋盘格效应
生成模型对图像进行上采样时,常会产生一种称为棋盘格效应的周期性图案。通过应用快速傅里叶变换(FFT),可以在频域中看到本不应出现在自然照片中的“点”或网格。
基于元数据的检测
业界正向 C2PA(内容来源与真实性联盟)标准迈进。OpenAI、Adobe 等主要厂商现在会在图像元数据(Exif/XMP)中注入加密签名。检查这些元数据是判断 AI 生成的最快方法。
# check_metadata.py
from PIL import Image
from PIL.ExifTags import TAGS
def check_metadata(image_path):
img = Image.open(image_path)
info = img.getexif()
for tag_id, value in info.items():
tag = TAGS.get(tag_id, tag_id)
if "software" in str(tag).lower() and "dalle" in str(value).lower():
return True
return False
注意:此检查可以通过重新保存图像或截屏来绕过。
利用预训练检测模型
在本地运行占用 GPU 的大型模型对独立开发者来说往往是资源过度。相反,你可以通过 Hugging Face 推理端点调用预训练检测器。
# hf_detector.py
import requests
API_URL = "https://api-inference.huggingface.co/models/umm-maybe/AI-image-detector"
headers = {"Authorization": f"Bearer {YOUR_API_TOKEN}"}
def query_detector(filename):
with open(filename, "rb") as f:
data = f.read()
response = requests.post(API_URL, headers=headers, data=data)
return response.json()
# Example response:
# [{'label': 'artificial', 'score': 0.98},
# {'label': 'human', 'score': 0.02}]
高级技术:基于扩散的重建(DIRE)
一种更为复杂的方法——有时称为 DIRE——其工作流程如下:
- 取出可疑图像 x。
- 使用扩散模型将其逆向还原为噪声。
- 再从该噪声重建图像。
- 测量重建误差 E。
如果 E 极低,说明图像位于模型流形附近,极有可能是 AI 生成的。
局限性与深度防御
没有检测器能做到 100 % 可靠。简单的攻击手段,如 JPEG 再压缩或加入约 1 % 的高斯噪声,就能欺骗即使是高级的 ResNet‑50 分类器。稳健的策略需要多层组合:
- 检查 C2PA 元数据。
- 进行频域分析以发现棋盘格伪影。
- 使用 AI 检测器集成(多个模型投票)。
检测 AI 生成内容不再仅仅是寻找明显的视觉错误(例如六根手指);它现在涉及像素分布的统计分析、加密来源验证以及频域校验。
行动号召
你在当前项目中实现了 AI 检测吗?欢迎在评论中分享你的做法或遇到的挑战。