common_metrics_on_video_quality

GitHub
569 25 中等 1 次阅读 2天前开发框架视频
AI 解读 由 AI 自动生成,仅供参考

common_metrics_on_video_quality 是一款专为视频生成与预测任务设计的开源评估工具,旨在帮助开发者快速量化生成视频的质量。在人工智能视频创作领域,如何客观判断模型输出的视频是否清晰、流畅且符合真实感一直是个难题。这款工具通过集成 FVD(弗雷歇视频距离)、PSNR(峰值信噪比)、SSIM(结构相似性)以及 LPIPS(学习感知图像块相似度)四大核心指标,为用户提供了一套标准化的“评分系统”,有效解决了人工主观评价效率低、标准不一的问题。

它特别适合从事计算机视觉研究的科研人员、算法工程师以及需要验证视频生成模型效果的开发团队使用。无论是评估新训练的生成对抗网络(GAN),还是对比不同预测模型的优劣,common_metrics_on_video_quality 都能提供可靠的数据支持。其技术亮点在于不仅支持计算整个视频序列的最终得分,还能灵活配置以输出逐帧或累积的指标变化曲线,帮助用户深入分析视频质量随时间变化的细节。此外,它还提供了与原始 TensorFlow 版本 FVD 指标的对比接口,确保实验结果的可复现性与权威性。只需简单的几行代码,用户即可在 PyTorch 环境下完成复杂的视频质量评估工作流。

使用场景

某 AI 视频生成团队在迭代“老电影修复”模型时,急需量化评估生成视频与原始高清视频的还原度及动态流畅性。

没有 common_metrics_on_video_quality 时

  • 指标实现碎片化:团队成员需分别从不同仓库拼凑 FVD、PSNR、SSIM 和 LPIPS 的代码,环境依赖冲突频发,配置耗时数天。
  • 评估维度单一:往往只计算最终帧的静态指标,缺乏对视频时序动态变化(如 FVD 随帧数增加的趋势)的细粒度监控,难以发现运动模糊问题。
  • 基准对齐困难:无法便捷地与业界标准的 TensorFlow FVD 版本进行对比验证,导致论文复现或竞品分析时数据可信度存疑。
  • 调试效率低下:每次调整模型参数后,手动运行多个脚本获取不同指标,反馈周期长,严重拖慢实验迭代速度。

使用 common_metrics_on_video_quality 后

  • 一键集成四大核心指标:通过简单的 demo.py 即可同时输出 FVD、PSNR、SSIM 和 LPIPS,统一了 numpy 与 PyTorch 环境,将评估准备时间从几天缩短至几分钟。
  • 支持动态时序分析:利用 only_final=False 参数,团队能直观看到 FVD 等指标随帧数变化的曲线,精准定位模型在第几帧开始出现的动态失真。
  • 无缝兼容主流基准:内置与原始 TensorFlow FVD 实现的对比接口,确保实验数据与学术界标准高度一致,提升了研究成果的说服力。
  • 自动化实验闭环:将评估代码直接嵌入训练流水线,模型每保存一个 checkpoint 即自动产出多维质量报告,大幅加速了超参数调优过程。

common_metrics_on_video_quality 通过标准化、多维度的视频质量评估流程,让研发团队从繁琐的指标计算中解放出来,专注于核心算法的创新与优化。

运行环境要求

操作系统
  • 未说明
GPU

需要 NVIDIA GPU(仅支持单卡推理),需安装 CUDA 11.7

内存

未说明

依赖
notes1. 仅支持单 GPU 推理,多卡环境需设置环境变量 CUDA_VISIBLE_DEVICES=0。2. 视频像素值必须归一化到 [0, 1] 区间。3. 计算 FVD 指标时,视频帧数必须大于 10 帧(因模型在时间维度下采样)。4. 灰度视频会自动转换为 3 通道进行处理;SSIM 计算时会先转为灰度图。5. 首次运行需手动下载 I3D 预训练模型文件(i3d_torchscript.pt 或 i3d_pretrained_400.pt)并放入指定文件夹。6. 若需对比原始 TensorFlow 版 FVD,需额外创建 Python 3.7 + TensorFlow 1.15 环境。
python3.9
pytorch==1.13.1
torchvision==0.14.1
torchaudio==0.13.1
numpy<2.0
opencv-python
scipy
tqdm
einops
common_metrics_on_video_quality hero image

快速开始

视频质量常用指标

引言

您可以轻松计算视频生成和视频预测任务中的以下视频质量指标:

  • FVD:弗雷歇视频距离
  • SSIM:结构相似性指数
  • LPIPS:基于学习的感知图像块相似性
  • PSNR:峰值信噪比

安装

版本参考:numpy-1.26.4 opencv-python-4.10.0.84 scipy-1.13.1 tqdm-4.67.1 einops-0.8.0

conda create -n test python=3.9
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
conda install "numpy<2.0"
pip install opencv-python tqdm einops
git clone https://github.com/JunyaoHu/common_metrics_on_video_quality

评估示例

例如,我们评估了8对视频,每对视频包含30帧、3个通道,分辨率为64x64。

原始视频:[8x30x3x64x64] 像素值在[0,1]之间
生成视频:[8x30x3x64x64] 像素值在[0,1]之间

运行以下代码 demo.py 来计算这四个指标。

cd common_metrics_on_video_quality
python demo.py

demo.py 的关键内容是:

calculate_fvd(videos1, videos2, device, method='styleganv', only_final=True)
calculate_ssim(videos1, videos2, only_final=True)
calculate_psnr(videos1, videos2, only_final=True)
calculate_lpips(videos1, videos2, device, only_final=True)

在示例中,一个全零矩阵 [8x30x3x64x64] 和一个全一矩阵 [8x30x3x64x64],它们的 $\mathrm{FVD}(\mathit{frames_A}, \mathit{frames_B})$ 大约为151(由于PyTorch版本不同,数值可能会在1左右波动)。

{
    "fvd":   {"value": [151.25648496845326]},
    "ssim":  {"value": [9.999000099990664e-05],"value_std": [0.0]},
    "psnr":  {"value": [0.0],"value_std": [0.0]},
    "lpips": {"value": [0.8140090703964233],"value_std": [0.0]}
}

如果我们将 only_final=False

calculate_fvd(videos1, videos2, device, method='styleganv', only_final=False)
calculate_ssim(videos1, videos2, only_final=False)
calculate_psnr(videos1, videos2, only_final=False)
calculate_lpips(videos1, videos2, device, only_final=False)

我们可以计算:

  • FVD:$\mathrm{FVD}_n(\mathit{frames_A}, \mathit{frames_B}) = \mathrm{FVD}(\mathit{frames_A}[:n], \mathit{frames_B}[:n]), 10 \le n \le T $
  • PSNR/SSIM/LPIPS:$\mathrm{F}_n(\mathit{frames_A}, \mathit{frames_B}) = \mathrm{avg}(\mathrm{F}(\mathit{frames_A}[i], \mathit{frames_B}[i])), \mathrm{F}={\mathrm{PSNR}, \mathrm{SSIM}, \mathrm{LPIPS}}, 0 \le i \le n - 1, 1 \le n \le T $
{
    "fvd": {
        "value": [
            569.2296293622766,
            486.3584254441098,
            551.9610501807822,
            146.36638178542628,
            172.85453222258292,
            133.70311962583372,
            152.91750309134142,
            357.7402855012116,
            382.4668646785276,
            306.73840379649727,
            338.4151811780684,
            78.17255931098194,
            82.33446642508818,
            64.5885972265882,
            66.06281151704604,
            314.4803706985065,
            316.6870909853734,
            288.97196946254184,
            287.7805184515251,
            152.1524775765185,
            151.2564750365302
        ]
    },
    "ssim":  {"value": [9.999000099990664e-05,...,],"value_std": [0.0,...]},
    "psnr":  {"value": [0.0,...],...},
    "lpips": {"value": [0.8140090703964233,...],...}
}

与原TensorFlow FVD指标的比较

如果您想使用来自TensorFlow的原始FVD版本,并将其结果与本仓库的实现进行比较:

您应该创建一个tensorflow-1.0环境:

# https://github.com/universome/fvd-comparison/blob/master/requirements.txt
conda create -n tf1 python=3.7
pip install tensorflow==1.15.0 tensorflow-gan==1.0.0.dev0 tensorflow-hub==0.12.0 scipy==1.7.3 tqdm

export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
calculate_fvd_tensorflow.py

# calculate_fvd(videos1, videos2, only_final=True)
# 输出:
# [fvd-tensorflow] [151.39244]

注意事项

  1. 关于像素值:请确保视频的像素值在$[0, 1]$范围内。
  2. 所有指标:如果视频是灰度图像,我们会将其扩展为3个通道如所述
  3. 关于SSIM:当视频有3个通道时,我们会对3个通道的像素值取平均。根据SSIM作者的说明,正确的使用方法是在灰度图像上进行评估,即需要先将RGB图像转换为灰度图像。(来自SSIM的官方网站
  4. 关于FVD
    • 下载预训练模型:如果您在下载FVD预训练模型时遇到问题,可以手动下载以下文件之一,并将其放入FVD文件夹中。
      • 对于Stylegan:从这里下载 i3d_torchscript.pt
      • 对于Videogpt:从这里下载 i3d_pretrained_400.pt
      • 👆原始链接已失效? 您可以使用此副本文件在这里,并查看相关问题在这里
      • 现在我们已经支持两种基于PyTorch的FVD实现videogptstyleganv,详见问题#4)。它们的计算结果几乎相同,差异可以忽略。
    • 视频长度限制:由于i3d模型在时间维度上会进行下采样,因此在计算FVD时,我们需要确保 frames_num > 10,这样FVD计算才会从第10帧开始。
    • 计算过程:FVD计算两组视频之间的特征距离(每段视频的I3D特征不会经过 softmax() 函数,且最后一维的大小为400,而不是1024)。
  5. 仅支持单GPU推理:如果您在多GPU机器上运行 demo.py,可以设置 CUDA_VISIBLE_DEVICES=0,详情请参见这里
  6. 致谢:该代码库参考了 LPIPSfvd-comparisonPyTorch-Frechet-Video-DistanceMVCD 等网站和项目,我只是提取了其中与计算相关的部分。

如果项目无法正常运行,请向我提交问题或拉取请求。

星标历史

星标历史图表

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|2周前
Agent开发框架图像

n8n

n8n 是一款面向技术团队的公平代码(fair-code)工作流自动化平台,旨在让用户在享受低代码快速构建便利的同时,保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点,帮助用户轻松连接 400 多种应用与服务,实现复杂业务流程的自动化。 n8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”:既可以通过直观的可视化界面拖拽节点搭建流程,也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外,n8n 原生集成了基于 LangChain 的 AI 能力,支持用户利用自有数据和模型构建智能体工作流。在部署方面,n8n 提供极高的自由度,支持完全自托管以保障数据隐私和控制权,也提供云端服务选项。凭借活跃的社区生态和数百个现成模板,n8n 让构建强大且可控的自动化系统变得简单高效。

184.7k|★★☆☆☆|今天
数据工具开发框架Agent

AutoGPT

AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台,核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点,让用户只需设定目标,AI 即可自主规划步骤、调用工具并持续运行直至完成任务。 无论是开发者、研究人员,还是希望提升工作效率的普通用户,都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体;研究人员能基于开源架构探索多智能体协作机制;而非技术背景用户也可直接选用预置的智能体模板,立即投入实际工作场景。 AutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑,每个块负责单一动作,灵活且易于调试。同时,平台支持本地自托管与云端部署两种模式,兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本,即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛,让人人都能成为 AI 的创造者与受益者。

183.6k|★★★☆☆|今天
Agent语言模型插件

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

161.1k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|2天前
开发框架图像Agent