生成图像/视频质量评估

评估生成图像和视频的质量是生成模型(GAN、VAE、DDPM、Stable Diffusion 等)研发中的关键环节。评估指标分为主观评估客观评估两大类。


一、图像质量评估指标

1. FID(Fréchet Inception Distance)--- 最常用

原理:用 Inception V3 提取真实图和生成图的特征,假设两者服从高斯分布,计算 Fréchet 距离:

FID=∥μr−μg∥2+Tr(Σr+Σg−2(ΣrΣg)1/2)FID = \|\mu_r - \mu_g\|^2 + \text{Tr}\left(\Sigma_r + \Sigma_g - 2(\Sigma_r\Sigma_g)^{1/2}\right)FID=∥μr−μg∥2+Tr(Σr+Σg−2(ΣrΣg)1/2)

  • μr,Σr\mu_r, \Sigma_rμr,Σr:真实图特征的均值和协方差
  • μg,Σg\mu_g, \Sigma_gμg,Σg:生成图特征的均值和协方差

FID 越低越好(表示分布越接近),< 10 为优秀。

伪代码
复制代码
function FID(real_images, generated_images):
    inception = load_inception_v3()

    real_features = inception(real_images)    # [N, 2048]
    fake_features = inception(generated_images)

    μ_r = mean(real_features, dim=0)
    Σ_r = cov(real_features)
    μ_g = mean(fake_features, dim=0)
    Σ_g = cov(fake_features)

    diff = μ_r - μ_g
    sqrt_term = sqrtm(Σ_r @ Σ_g)              # 矩阵平方根

    return norm(diff)^2 + trace(Σ_r + Σ_g - 2 * sqrt_term)

注意:FID 需要 50000+ 张图才稳定,对 batch size 敏感。

2. IS(Inception Score)--- 经典但逐渐被替代

原理:好的生成图应该被分类器高置信度识别为某类(条件熵低),同时各类分布均匀(边缘熵高):

IS=exp⁡(ExDKL(p(y∣x)∥p(y)))IS = \exp\left(\mathbb{E}_x\left D_{KL}(p(y\|x) \\\| p(y)) \\right\right)IS=exp(ExDKL(p(y∣x)∥p(y)))

  • p(y∣x)p(y|x)p(y∣x):Inception 对图 xxx 的类别预测
  • p(y)p(y)p(y):所有生成图的平均类别分布

IS 越高越好

伪代码
复制代码
function IS(generated_images, splits=10):
    inception = load_inception_v3()

    probs = inception(generated_images)         # [N, 1000] 类别概率
    scores = []

    for split in chunk(probs, splits):
        p_yx = split                           # p(y|x)
        p_y  = mean(split, dim=0)              # p(y)
        kl   = sum(p_yx * log(p_yx / p_y), dim=1)
        scores.append(exp(mean(kl)))

    return mean(scores), std(scores)

局限:只看类别多样性,不看真实性(噪声图也可能高 IS)。

3. LPIPS(Learned Perceptual Image Patch Similarity)

原理:用预训练网络(如 AlexNet/VGG)提取多层特征,逐层计算特征差异:

LPIPS(x,x^)=∑l1HlWl∑h,w∥wl⊙(y^hwl−yhwl)∥22LPIPS(x, \hat{x}) = \sum_l \frac{1}{H_l W_l} \sum_{h,w} \|w_l \odot (\hat{y}^l_{hw} - y^l_{hw})\|_2^2LPIPS(x,x^)=l∑HlWl1h,w∑∥wl⊙(y^hwl−yhwl)∥22

  • yl,y^ly^l, \hat{y}^lyl,y^l:真实图和生成图在第 lll 层的特征
  • wlw_lwl:可学习的逐通道权重

LPIPS 越低越好,越接近 0 越相似。

伪代码
复制代码
function LPIPS(img1, img2):
    net = load_alexnet()
    features1 = net.extract_multi_layer(img1)   # [feat_L1, feat_L2, ...]
    features2 = net.extract_multi_layer(img2)

    total = 0
    for f1, f2, w in zip(features1, features2, layer_weights):
        diff = (f1 - f2) ^ 2
        diff = w * diff                            # 逐通道加权
        total += mean(diff)

    return total

优势:与人类感知高度相关,是衡量"像不像"最可靠的指标之一。

4. SSIM(Structural Similarity)

原理:从亮度、对比度、结构三个维度比较两图:

SSIM(x,y)=(2μxμy+C1)(2σxy+C2)(μx2+μy2+C1)(σx2+σy2+C2)SSIM(x, y) = \frac{(2\mu_x\mu_y + C_1)(2\sigma_{xy} + C_2)}{(\mu_x^2 + \mu_y^2 + C_1)(\sigma_x^2 + \sigma_y^2 + C_2)}SSIM(x,y)=(μx2+μy2+C1)(σx2+σy2+C2)(2μxμy+C1)(2σxy+C2)

SSIM 越高越好,范围 0, 1,1 表示完全相同。

5. PSNR(Peak Signal-to-Noise Ratio)

PSNR=10⋅log⁡10(MAX2MSE)PSNR = 10 \cdot \log_{10}\left(\frac{MAX^2}{MSE}\right)PSNR=10⋅log10(MSEMAX2)

  • MAXMAXMAX:像素最大值(通常 255)
  • MSEMSEMSE:均方误差

PSNR 越高越好,但与人眼感知相关性弱(常用于超分/去噪,不用于生成模型)。


二、指标对比总结

指标 方向 优点 缺点
FID ↓ 越低越好 与人类感知高度相关 需大量样本(5 万+),对 batch 敏感
IS ↑ 越高越好 计算快 只看多样性,不衡量真实性
LPIPS ↓ 越低越好 与人类感知最接近 需要参考图(不适合无条件生成)
SSIM ↑ 越高越好 经典、计算快 像素级比较,对纹理不敏感
PSNR ↑ 越高越好 最简单 与人类感知相关性最弱
CLIP Score ↑ 越高越好 可评估文图匹配 依赖 CLIP 模型质量

三、视频质量评估指标

1. FVD(Fréchet Video Distance)

原理:FID 的视频版。用 I3D(Inflated 3D ConvNet)提取视频时序特征,计算 Fréchet 距离。

FVD 越低越好

伪代码
复制代码
function FVD(real_videos, generated_videos):
    i3d = load_i3d_pretrained()

    real_features = []
    fake_features = []

    for video in real_videos:
        feats = i3d(video)          # 3D 卷积提取时空特征
        real_features.append(feats)

    for video in generated_videos:
        feats = i3d(video)
        fake_features.append(feats)

    # 和 FID 完全相同的 Fréchet 距离计算
    return frechet_distance(real_features, fake_features)

局限:FVD 同样需要大量视频样本,且对帧率敏感。

2. VMAF(Video Multi-Method Assessment Fusion)

Netflix 开发的视频质量评估,融合多种指标(VIF + DLM + 时域信息):

复制代码
VMAF = fusion(VIF_score, DLM_score, temporal_score)

VMAF 越高越好,范围 0, 100,接近 100 为"视觉无损"。

3. VBench(综合评估框架)

VBench 从多个维度综合评估视频生成模型:

维度 说明
主体一致性 主体在帧间是否稳定
背景一致性 背景是否稳定
运动平滑度 运动是否流畅
动态程度 视频的动感强度
美学质量 单帧的视觉美感
成像质量 清晰度、噪声水平
伪代码
复制代码
function VBench(generated_videos):
    scores = {}

    scores['subject_consistency'] = clip_cosine_similarity(videos)
    scores['bg_consistency']       = background_feature_matching(videos)
    scores['motion_smoothness']    = optical_flow_variance(videos)
    scores['dynamic_degree']       = frame_difference_ratio(videos)
    scores['aesthetic_quality']    = aesthetic_model(videos)
    scores['imaging_quality']      = image_quality_assessment(videos)

    return weighted_sum(scores)

四、文本-图像/视频对齐指标

CLIP Score

原理:用 CLIP 模型计算文本和生成图的余弦相似度:

CLIPScore=cos⁡(CLIPT(text), CLIPI(image))CLIPScore = \cos(\text{CLIP}_T(text),\ \text{CLIP}_I(image))CLIPScore=cos(CLIPT(text), CLIPI(image))

伪代码
复制代码
function CLIP_Score(prompt, generated_image):
    clip = load_clip_model()

    text_emb = clip.encode_text(prompt)        # [1, 512]
    image_emb = clip.encode_image(generated_image)

    score = cosine_similarity(text_emb, image_emb)
    return score * 100                           # 通常 ×100 便于阅读

CLIP Score 越高越好,衡量"图文是否匹配"。


五、综合评估方案(生产环境推荐)

复制代码
┌─────────────────────────────────────────────┐
│              生成模型评估流程                  │
├─────────────────────────────────────────────┤
│                                              │
│  1. FID 评估整体分布质量(≥ 50k 样本)        │
│     ↓                                        │
│  2. CLIP Score 评估文图对齐(≥ 10k 样本)     │
│     ↓                                        │
│  3. LPIPS 评估逐对相似度(有参考图时)         │
│     ↓                                        │
│  4. 人工偏好评估(A/B test,≥ 200 人)        │
│     ↓                                        │
│  5. 视频:FVD + VBench 多维评估               │
│                                              │
└─────────────────────────────────────────────┘

六、评估陷阱

陷阱 说明 对策
FID 对预处理敏感 resize 方式不同可差 10+ 分 统一 resize 方式(bicubic)
IS 被高方差噪声骗过 纯噪声图可能高 IS 必须配合 FID
只用一个指标 单一指标不能反映全貌 至少 FID + CLIP Score + 人工
样本太少 FID 需要 50k 张才稳定 用足够样本,标注样本量
忽略多样性 只比较平均值忽略方差 看 Precision/Recall 曲线

个人能力有限,有问题随时联系~

相关推荐
The moon forgets9 分钟前
Qwen团队提出Ego2Robot, 第一人称视频助力具身VLA训练新数据
人工智能·机器学习·音视频
AI服务老曹2 小时前
AI视频分析API完整流程:设备、算法与告警接口接入指南
人工智能·算法·音视频
AImoon11.12 小时前
MiniMax H3开源引发视频赛道变局,客易云关注AI模型从生成工具迈向生产力工具
人工智能·音视频
乐橙开放平台2 小时前
一周上线校园透明化:listDeviceDetailsByPage 台账 + getKitToken + ImouPlayer 多路墙
后端·物联网·安全·音视频·智能家居
美狐美颜sdk3 小时前
直播APP开发完整流程:需求规划、UI设计、功能开发、美颜SDK接入全解析
大数据·人工智能·音视频·美颜sdk·美颜api
ai产品老杨3 小时前
AI视频分析API项目实战记录
人工智能·音视频
FriendshipT4 小时前
ComfyUI 使用 MiniMax H3 进行文生视频
人工智能·pytorch·python·深度学习·音视频
deepseek234 小时前
紫东太初 GMC 核心集剪枝拆解:少 80% Token 还满血,多模态视觉 Token 冗余有了新解法
多模态大模型·推理优化·token 压缩
启雀AI16 小时前
AI 驱动的视频课程自动摘要与知识点提取:ASR + LLM 流水线工程实践
人工智能·阿里云·华为云·音视频·培训saas平台
FinelyYang18 小时前
基于 LiveKit 实现一对一视频通话:从信令到媒体进房的完整实践
音视频·媒体