前言:最近在阅评估生成图像溯源相关工作时,注意到一个较为常见的实验设置:将自然图像作为一个额外类别,与不同生成模型产生的图像一同参与分类。乍看之下,这种做法似乎可以在统一框架下同时处理检测与溯源问题;但进一步思考后,笔者认为它可能会模糊任务边界,并影响实验结果的解释。本文尝试围绕这一问题展开讨论。
目录
- [1. 任务定义:Detection 与 Attribution 的目标差异](#1. 任务定义:Detection 与 Attribution 的目标差异)
- [2. 决策空间差异:从机制边界到来源边界](#2. 决策空间差异:从机制边界到来源边界)
- [3. 自然图像类别建模:一种方便但非对等的分类假设](#3. 自然图像类别建模:一种方便但非对等的分类假设)
- [4. 自然图像分布偏移:训练自然类不等于测试自然类](#4. 自然图像分布偏移:训练自然类不等于测试自然类)
- [5. 混合任务评估:总体准确率的解释风险](#5. 混合任务评估:总体准确率的解释风险)
- [6. 评估协议建议:拆分 Detection、Attribution 与 Open-set Rejection](#6. 评估协议建议:拆分 Detection、Attribution 与 Open-set Rejection)
随着生成式人工智能的发展,合成图像(synthetic image)与自然图像(natural image)之间的视觉差异正在不断缩小。从早期生成模型中较明显的局部伪影,到当前扩散模型和自回归模型生成的高质量图像,单纯依靠人眼判断图像来源已经越来越困难。因此,围绕合成图像的取证问题逐渐受到关注。其中,两个最容易被混淆的任务是:生成图像检测 (synthetic image detection)和生成图像溯源(synthetic image attribution)。
二者看似相近,但回答的问题并不相同。生成图像检测关注的是:一张图像是自然图像还是合成图像?生成图像溯源关注的是:如果一张图像来自生成模型,它具体来自哪个生成源?前者判断的是生成机制类别,后者判断的是具体来源类别。换言之,检测关心的是 natural/synthetic 之间的边界,溯源关心的是不同 synthetic sources 之间的边界。
1. 任务定义:Detection 与 Attribution 的目标差异
给定输入图像 x x x,生成图像检测可以表示为一个二分类决策:
f d e t ( x ) ∈ N , S , f_{\mathrm{det}}(x) \in {\mathcal{N}, \mathcal{S}}, fdet(x)∈N,S,
其中 N \mathcal{N} N 表示自然图像分布, S \mathcal{S} S 表示合成图像分布。检测任务的目标是判断 x x x 是否来自某种生成过程,而不关心具体是哪一个生成模型。因此,检测任务的核心在于学习 N \mathcal{N} N 与 S \mathcal{S} S 之间的判别边界。这个边界可能来自成像机制差异、生成伪影、频域统计差异、纹理模式差异,也可能受到压缩、重采样和后处理操作的影响。
相比之下,生成图像溯源通常假设候选生成源集合为
G = G 1 , G 2 , ... , G K , \mathcal{G}={G_1,G_2,\ldots,G_K}, G=G1,G2,...,GK,
其目标是判断合成图像 x x x 来自哪个候选源:
f a t t r ( x ) ∈ G . f_{\mathrm{attr}}(x) \in \mathcal{G}. fattr(x)∈G.
如果考虑开放集场景,测试图像还可能来自训练阶段未见过的生成源,此时决策空间进一步变为:
f a t t r o p e n ( x ) ∈ G ∪ u n k n o w n . f_{\mathrm{attr}}^{\mathrm{open}}(x) \in \mathcal{G} \cup {\mathrm{unknown}}. fattropen(x)∈G∪unknown.
由此可以看到,检测和溯源的差异并不只是标签数量不同,而是任务定义不同。检测需要判断图像是否来自生成过程,溯源则需要在合成图像内部进一步判断其具体来源。前者更关注自然成像过程与生成过程之间的差异,后者更关注不同生成模型留下的源特征。
2. 决策空间差异:从机制边界到来源边界
从决策空间来看,检测任务关注的是:
N vs. S , \mathcal{N} \ \text{vs.} \ \mathcal{S}, N vs. S,
而生成图像溯源关注的是:
G i vs. G j , i ≠ j . G_i \ \text{vs.} \ G_j, \quad i \neq j. Gi vs. Gj,i=j.
这意味着二者所学习的判别边界并不等价。检测边界描述的是自然图像分布与合成图像分布之间的差异;溯源边界描述的是不同生成源之间的差异。前者可能依赖合成图像中较普遍存在的统计异常,后者则更依赖不同生成模型、训练数据、采样策略或后处理流程所留下的细粒度痕迹。
因此,即使检测与溯源可能共享部分底层统计线索,它们也不应被简单视为同一个任务。一个模型能够区分自然图像和合成图像,并不意味着它一定能够区分不同生成源;反过来,一个模型能够在若干已知生成模型之间完成分类,也不意味着它具备稳定的自然图像识别能力。
更进一步,如果讨论的是更一般的图像来源归因(general image attribution),那么自然图像本身也并非"无来源"。自然图像可能来自不同相机、传感器、平台、数据集、压缩链路或后处理流程。此时更合理的标签空间应是:
f g i a ( x ) ∈ C 1 , ... , C M , G 1 , ... , G K , f_{\mathrm{gia}}(x) \in {C_1,\ldots,C_M,G_1,\ldots,G_K}, fgia(x)∈C1,...,CM,G1,...,GK,
其中 C j C_j Cj 表示某类自然图像来源, G i G_i Gi 表示某个生成源。也就是说,如果任务是通用图像来源归因,自然图像也应按照具体来源继续细分,而不是被压缩成一个统一类别。
3. 自然图像类别建模:一种方便但非对等的分类假设
一个常见做法是,在生成图像溯源任务中将自然图像也作为一个普通类别加入分类空间。例如,模型的输出空间被写作:
N , G 1 , G 2 , ... , G K . {\mathcal{N},G_1,G_2,\ldots,G_K}. N,G1,G2,...,GK.
这种设置形式上非常简洁:模型只需输出一个类别,就可以同时给出"自然图像"或"某个生成源"的判断。在工程实现和 benchmark 评估中,这种做法确实方便,也能模拟测试输入可能包含自然图像的情况。
但问题在于, N \mathcal{N} N 并不是一个与 G 1 , ... , G K G_1,\ldots,G_K G1,...,GK 对等的来源类别。每个 G i G_i Gi 通常对应一个相对明确的生成模型、模型家族或模型实例,而自然图像分布往往由复杂的成像设备、采集环境、数据来源、压缩流程和后处理方式共同决定。也就是说,所谓的"自然图像类别"并不是一个单一来源,而是一个高度混合的开放分布。
这也造成了类别语义层级的不一致: N \mathcal{N} N 是一个粗粒度的机制标签,而 G i G_i Gi 是相对细粒度的来源标签。将二者并列为类别,本质上是一种工程近似,而不是严格对等的来源建模。它既不是纯粹的生成图像溯源,也不是严格的通用图像来源归因,而更像是一种 detection-attribution mixed setting。
换言之,如果任务是生成图像溯源,那么更自然的决策空间应是:
G 1 , G 2 , ... , G K , {G_1,G_2,\ldots,G_K}, G1,G2,...,GK,
而不是:
N , G 1 , G 2 , ... , G K . {\mathcal{N},G_1,G_2,\ldots,G_K}. N,G1,G2,...,GK.
如果任务是通用图像来源归因,那么更合理的决策空间也应是:
C 1 , ... , C M , G 1 , ... , G K , {C_1,\ldots,C_M,G_1,\ldots,G_K}, C1,...,CM,G1,...,GK,
而不是将所有自然图像简单合并为一个 N \mathcal{N} N 类别。
4. 自然图像分布偏移:训练自然类不等于测试自然类
即使暂时接受将自然图像作为统一类别,仍然需要面对另一个问题:训练阶段的自然图像分布与测试阶段的自然图像分布未必一致。训练集中的自然图像可能来自 MSCOCO、ImageNet、Flickr 或某个特定数据集,而测试图像可能来自社交媒体、新闻网站、手机拍摄、截图、重压缩图像或其他未覆盖的数据源。形式上,这意味着:
P t r a i n ( x ∣ N ) ≠ P t e s t ( x ∣ N ) . P_{\mathrm{train}}(x \mid \mathcal{N}) \neq P_{\mathrm{test}}(x \mid \mathcal{N}). Ptrain(x∣N)=Ptest(x∣N).
因此,把自然图像作为一个固定类别,并不意味着模型真正学到了完整的自然图像分布。它更可能只是学习到了训练自然图像集合与训练合成图像集合之间的经验差异。当测试阶段的自然图像分布发生变化时,模型可能把未见过的自然图像误判为某个生成源,也可能把某些合成图像误判为自然图像。
这也是该设置容易被忽略的问题:未知的不只是生成源,也可能是自然图像分布本身。在开放环境中,测试阶段的自然图像可能来自训练阶段从未覆盖的采集设备、内容域、平台压缩链路或后处理流程。如果不显式考虑这一点,将自然图像作为一个普通类别可能会带来过于乐观的评估结论。
5. 混合任务评估:总体准确率的解释风险
将自然图像作为普通类别后,模型实际上在学习:
f ( x ) ∈ N , G 1 , G 2 , ... , G K , f(x) \in {\mathcal{N},G_1,G_2,\ldots,G_K}, f(x)∈N,G1,G2,...,GK,
而不是分别学习:
f d e t ( x ) ∈ N , S f_{\mathrm{det}}(x) \in {\mathcal{N},\mathcal{S}} fdet(x)∈N,S
和
f a t t r ( x ) ∈ G 1 , ... , G K . f_{\mathrm{attr}}(x) \in {G_1,\ldots,G_K}. fattr(x)∈G1,...,GK.
前一种设置看似统一,却会让模型同时承担两类判别:一类是自然图像与合成图像之间的判别,另一类是不同生成源之间的判别。这两类边界并不等价。检测边界可能主要依赖合成图像中普遍存在的统计异常,而溯源边界则依赖不同生成源之间更细微的差异。如果不拆分分析,就很难判断模型的性能究竟来自检测能力,还是来自溯源能力。
更重要的是,生成图像检测本身并不是一个已经完全解决的问题 。随着生成模型能力增强, N \mathcal{N} N 与 S \mathcal{S} S 之间的距离正在缩小;同时,自然图像内部的分布差异、后处理差异和采集链路差异也会增加检测难度。在这种情况下,强行把自然图像作为一个与各生成模型并列的类别,并不能保证模型真正掌握了自然图像与合成图像之间的本质差异,反而可能增加误判风险。
因此,包含自然图像类别的多分类结果需要谨慎解释。假设一个模型在
N , G 1 , G 2 , ... , G K {\mathcal{N},G_1,G_2,\ldots,G_K} N,G1,G2,...,GK
上取得较高准确率,我们仍然需要追问:它是否真的能够区分不同生成源?还是主要依赖自然图像与合成图像之间的粗粒度差异?如果自然图像类别占比较大,或者自然图像与某些合成图像在数据来源、压缩方式、语义内容上存在明显偏差,总体准确率甚至可能掩盖真实的溯源能力。
因此,这类结果更适合被解释为混合任务性能,而不是纯粹的生成图像溯源能力。一个总体准确率无法直接说明模型是否同时具备可靠的检测能力、合成图像溯源能力和开放集拒识能力。
6. 评估协议建议:拆分 Detection、Attribution 与 Open-set Rejection
更合理的做法是明确区分任务,并分别报告相应结果。对于检测任务,应评估模型区分 N \mathcal{N} N 与 S \mathcal{S} S 的能力;对于生成图像溯源任务,应在合成图像子集上评估模型区分 G 1 , ... , G K G_1,\ldots,G_K G1,...,GK 的能力;对于开放集场景,还应评估模型对未知自然图像分布和未知生成源的拒识能力。也就是说,至少应区分以下几类性能:
N vs. S , \mathcal{N} \ \text{vs.} \ \mathcal{S}, N vs. S,
G 1 vs. G 2 vs. ⋯ vs. G K , G_1 \ \text{vs.} \ G_2 \ \text{vs.} \ \cdots \ \text{vs.} \ G_K, G1 vs. G2 vs. ⋯ vs. GK,
G ∗ k n o w n vs. G ∗ u n k n o w n . \mathcal{G}*{\mathrm{known}} \ \text{vs.} \ \mathcal{G}*{\mathrm{unknown}}. G∗known vs. G∗unknown.
如果进一步讨论通用图像来源归因,则还应显式定义自然图像来源集合:
C 1 vs. C 2 vs. ⋯ vs. C M , C_1 \ \text{vs.} \ C_2 \ \text{vs.} \ \cdots \ \text{vs.} \ C_M, C1 vs. C2 vs. ⋯ vs. CM,
而不是将所有自然图像合并为一个 N \mathcal{N} N 类别。只有当自然图像来源也被明确建模时, C 1 , ... , C M , G 1 , ... , G K {C_1,\ldots,C_M,G_1,\ldots,G_K} C1,...,CM,G1,...,GK 才更接近严格意义上的 source attribution setting。
这并不意味着自然图像不应该出现在溯源实验中。相反,现实输入确实可能包含自然图像,测试阶段也确实需要考虑自然图像分布偏移。但关键在于:自然图像如何进入任务定义,决定了我们到底是在评估检测、溯源,还是二者混合后的分类能力。将自然图像作为一个普通类别是一种方便的实验近似,而不是无条件成立的任务建模。
归根结底,生成图像检测与生成图像溯源相关,但不能被粗暴等同。检测回答的是"图像是否来自生成过程",溯源回答的是"图像来自哪个生成源"。如果讨论更一般的图像来源归因,自然图像同样应有具体来源,而不应被简单压缩成一个统一类别。因此, N , G 1 , ... , G K {\mathcal{N},G_1,\ldots,G_K} N,G1,...,GK 这种设置本质上混合了机制判别与来源归因,既简化了实验流程,也引入了任务解释上的风险。
因此,在讨论合成图像取证时,我们首先需要问清楚:我们到底在判断什么? 如果目标是检测,就应围绕自然图像与合成图像的分布差异建模;如果目标是生成图像溯源,就应围绕不同生成源之间的可区分痕迹建模;如果目标是通用图像来源归因,就应同时细化自然图像来源与合成图像来源;如果目标是构建现实可用的综合系统,也应显式拆分不同错误来源,而不是用一个总体分类准确率掩盖任务之间的差异。只有任务边界清楚,模型设计、指标选择和实验结论才真正具有解释力。