Humanizer — 对抗 AI 分类器¶
文件:
humanizer.py(51 行)原理来源:NeuralBleach (MIT)
问题背景¶
AI 生成图像有一个共同特征:数字完美性。
- 完全无胶片颗粒噪声
- 无光学色差(chromatic aberration)
- 像素统计高度规则
- 频域特征干净
AI 图像分类器(如 Hive Moderation、Optic AI、Illuminarty)正是利用这些特征来判断图像是否为 AI 生成。
解决方案:注入模拟胶片缺陷¶
通过人为注入胶片摄影的特征,使 AI 生成图像在统计特征上接近真实相机拍摄的照片。
实现¶
def apply_analog_humanizer(image, grain_intensity=4.0, chromatic_shift=1):
img_f = image.astype(np.float64)
r, g, b = img_f[:,:,0], img_f[:,:,1], img_f[:,:,2]
# 1. 色差注入(chromatic aberration)
r = np.roll(r, -chromatic_shift, axis=1) # 红通道左移
b = np.roll(b, chromatic_shift, axis=1) # 蓝通道右移
# 2. 胶片颗粒(高斯噪声)
noise = np.random.normal(0, grain_intensity, img_f.shape)
humanized = np.clip(img_f + noise, 0, 255).astype(np.uint8)
return humanized
两个效果¶
1. 色差注入¶
真实相机镜头存在色差——不同波长的光折射角不同,导致 RGB 通道有微小的空间偏移。AI 生成图像完全没有这种偏移。
偏移量 chromatic_shift=1 像素——肉眼几乎不可见,但足以打破 AI 图像的"零色差"特征。
2. 胶片颗粒¶
真实胶片(甚至数码相机在高 ISO 下)都有颗粒噪声。AI 生成图像的像素值过于"干净"。
2.0:极轻微,肉眼几乎看不出4.0:中等,轻微胶片感6.0:明显,模拟高 ISO 胶片
参数调优¶
| 参数 | 范围 | 效果 |
|---|---|---|
grain_intensity |
2.0 - 6.0 | 噪声强度,越高越"胶片" |
chromatic_shift |
1 - 3 | 色差偏移像素数,1 即可 |
使用方式¶
# CLI
remove-ai-watermarks invisible image.png -o clean.png --humanize 4.0
# Python API
from remove_ai_watermarks.humanizer import apply_analog_humanizer
result = apply_analog_humanizer(image, grain_intensity=4.0, chromatic_shift=1)
局限性¶
- Humanizer 对抗的是统计特征检测器,不是对抗专门训练的分类器
- 如果分类器训练数据包含胶片风格的 AI 图像,Humanizer 效果会减弱
- 高 grain_intensity 会降低图像质量——需要在"绕过检测"和"视觉质量"之间取平衡
- 对抗 GAN 指纹检测器(如 EXIF-based 方法)无效
与其他工具的关系¶
Humanizer 在 InvisibleEngine 的后处理阶段执行:
它不是独立的水印去除手段,而是作为"最后一道伪装"叠加在扩散再生之后。