[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-JunyaoHu--common_metrics_on_video_quality":3,"tool-JunyaoHu--common_metrics_on_video_quality":61},[4,18,28,37,45,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},10095,"AutoGPT","Significant-Gravitas\u002FAutoGPT","AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台，核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点，让用户只需设定目标，AI 即可自主规划步骤、调用工具并持续运行直至完成任务。\n\n无论是开发者、研究人员，还是希望提升工作效率的普通用户，都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体；研究人员能基于开源架构探索多智能体协作机制；而非技术背景用户也可直接选用预置的智能体模板，立即投入实际工作场景。\n\nAutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑，每个块负责单一动作，灵活且易于调试。同时，平台支持本地自托管与云端部署两种模式，兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本，即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛，让人人都能成为 AI 的创造者与受益者。",183572,"2026-04-20T04:47:55",[13,36,27,14,15],"语言模型",{"id":38,"name":39,"github_repo":40,"description_zh":41,"stars":42,"difficulty_score":10,"last_commit_at":43,"category_tags":44,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":24,"last_commit_at":51,"category_tags":52,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",161692,"2026-04-20T11:33:57",[14,13,36],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":24,"last_commit_at":59,"category_tags":60,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":91,"forks":92,"last_commit_at":93,"license":94,"difficulty_score":10,"env_os":95,"env_gpu":96,"env_ram":95,"env_deps":97,"category_tags":109,"github_topics":111,"view_count":24,"oss_zip_url":94,"oss_zip_packed_at":94,"status":17,"created_at":120,"updated_at":121,"faqs":122,"releases":152},10076,"JunyaoHu\u002Fcommon_metrics_on_video_quality","common_metrics_on_video_quality","You can easily calculate FVD, PSNR, SSIM, LPIPS for evaluating the quality of generated or predicted videos.","common_metrics_on_video_quality 是一款专为视频生成与预测任务设计的开源评估工具，旨在帮助开发者快速量化生成视频的质量。在人工智能视频创作领域，如何客观判断模型输出的视频是否清晰、流畅且符合真实感一直是个难题。这款工具通过集成 FVD（弗雷歇视频距离）、PSNR（峰值信噪比）、SSIM（结构相似性）以及 LPIPS（学习感知图像块相似度）四大核心指标，为用户提供了一套标准化的“评分系统”，有效解决了人工主观评价效率低、标准不一的问题。\n\n它特别适合从事计算机视觉研究的科研人员、算法工程师以及需要验证视频生成模型效果的开发团队使用。无论是评估新训练的生成对抗网络（GAN），还是对比不同预测模型的优劣，common_metrics_on_video_quality 都能提供可靠的数据支持。其技术亮点在于不仅支持计算整个视频序列的最终得分，还能灵活配置以输出逐帧或累积的指标变化曲线，帮助用户深入分析视频质量随时间变化的细节。此外，它还提供了与原始 TensorFlow 版本 FVD 指标的对比接口，确保实验结果的可复现性与权威性。只需简单的几行代码，用户即可在 ","common_metrics_on_video_quality 是一款专为视频生成与预测任务设计的开源评估工具，旨在帮助开发者快速量化生成视频的质量。在人工智能视频创作领域，如何客观判断模型输出的视频是否清晰、流畅且符合真实感一直是个难题。这款工具通过集成 FVD（弗雷歇视频距离）、PSNR（峰值信噪比）、SSIM（结构相似性）以及 LPIPS（学习感知图像块相似度）四大核心指标，为用户提供了一套标准化的“评分系统”，有效解决了人工主观评价效率低、标准不一的问题。\n\n它特别适合从事计算机视觉研究的科研人员、算法工程师以及需要验证视频生成模型效果的开发团队使用。无论是评估新训练的生成对抗网络（GAN），还是对比不同预测模型的优劣，common_metrics_on_video_quality 都能提供可靠的数据支持。其技术亮点在于不仅支持计算整个视频序列的最终得分，还能灵活配置以输出逐帧或累积的指标变化曲线，帮助用户深入分析视频质量随时间变化的细节。此外，它还提供了与原始 TensorFlow 版本 FVD 指标的对比接口，确保实验结果的可复现性与权威性。只需简单的几行代码，用户即可在 PyTorch 环境下完成复杂的视频质量评估工作流。","# common_metrics_on_video_quality\n\n## Introduction \n\nYou can easily calculate the following video quality metrics for video generation and video preiction tasks:\n\n- **FVD**: Frechét Video Distance\n- **SSIM**: Structural Similarity Index Measure\n- **LPIPS**: Learned Perceptual Image Patch Similarity\n- **PSNR**: Peak-Signal-to-Noise Ratio\n\n## Installation\n\nVersion reference: numpy-1.26.4 opencv-python-4.10.0.84 scipy-1.13.1 tqdm-4.67.1 einops-0.8.0\n\n```\nconda create -n test python=3.9\nconda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia\nconda install \"numpy\u003C2.0\"\npip install opencv-python tqdm einops\ngit clone https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\n```\n\n## Evaluation Example\n\nFor example, we evaluated 8 pairs of videos, each with 30 frames, 3 channels, and a size of 64x64.\n\n```\noriginal  video: [8x30x3x64x64] pixel in [0,1]\ngenerated video: [8x30x3x64x64] pixel in [0,1]\n```\n\nRun the following code `demo.py` to calculate the four metrics.\n\n```\ncd common_metrics_on_video_quality\npython demo.py\n```\n\nThe key content of `demo.py` is:\n\n```\ncalculate_fvd(videos1, videos2, device, method='styleganv', only_final=True)\ncalculate_ssim(videos1, videos2, only_final=True)\ncalculate_psnr(videos1, videos2, only_final=True)\ncalculate_lpips(videos1, videos2, device, only_final=True)\n```\n\nIn the example, a all-zero matrix of [8x30x3x64x64] and a all-one matrix of [8x30x3x64x64], their $\\mathrm{FVD}(\\mathit{frames_A}, \\mathit{frames_B})$ is about 151 (Due to different pytorch versions, the number may fluctuate around 1). \n\n```\n{\n    \"fvd\":   {\"value\": [151.25648496845326]},\n    \"ssim\":  {\"value\": [9.999000099990664e-05],\"value_std\": [0.0]},\n    \"psnr\":  {\"value\": [0.0],\"value_std\": [0.0]},\n    \"lpips\": {\"value\": [0.8140090703964233],\"value_std\": [0.0]}\n}\n```\n\nIf we set `only_final=False`,\n\n```\ncalculate_fvd(videos1, videos2, device, method='styleganv', only_final=False)\ncalculate_ssim(videos1, videos2, only_final=False)\ncalculate_psnr(videos1, videos2, only_final=False)\ncalculate_lpips(videos1, videos2, device, only_final=False)\n```\n\nWe can calculate:\n\n- 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 $\n- PSNR\u002FSSIM\u002FLPIPS: $\\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 $\n\n\n```\n{\n    \"fvd\": {\n        \"value\": [\n            569.2296293622766,\n            486.3584254441098,\n            551.9610501807822,\n            146.36638178542628,\n            172.85453222258292,\n            133.70311962583372,\n            152.91750309134142,\n            357.7402855012116,\n            382.4668646785276,\n            306.73840379649727,\n            338.4151811780684,\n            78.17255931098194,\n            82.33446642508818,\n            64.5885972265882,\n            66.06281151704604,\n            314.4803706985065,\n            316.6870909853734,\n            288.97196946254184,\n            287.7805184515251,\n            152.1524775765185,\n            151.2564750365302\n        ]\n    },\n    \"ssim\":  {\"value\": [9.999000099990664e-05,...,],\"value_std\": [0.0,...]},\n    \"psnr\":  {\"value\": [0.0,...],...},\n    \"lpips\": {\"value\": [0.8140090703964233,...],...}\n}\n```\n\n## Comparison with orginal Tensorflow FVD metric\n\nIf you want to use the original version of FVD which comes from Tensorflow, and compare FVD result with this repo's implementation:\n\nYou should create a tensorflow-1.0 envrironment:\n\n```\n# https:\u002F\u002Fgithub.com\u002Funiversome\u002Ffvd-comparison\u002Fblob\u002Fmaster\u002Frequirements.txt\nconda create -n tf1 python=3.7\npip install tensorflow==1.15.0 tensorflow-gan==1.0.0.dev0 tensorflow-hub==0.12.0 scipy==1.7.3 tqdm\n\nexport PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python\ncalculate_fvd_tensorflow.py\n\n# calculate_fvd(videos1, videos2, only_final=True)\n# output:\n# [fvd-tensorflow] [151.39244]\n```\n\n\n\n## Notice\n\n1. **For pixel value**: Make sure the pixel value of videos should be in $[0, 1]$.\n3. **For all metrics**: If videos are grayscale, we multiply them to 3 channels [as it says](https:\u002F\u002Fgithub.com\u002Frichzhang\u002FPerceptualSimilarity\u002Fissues\u002F23#issuecomment-492368812).\n4. **For SSIM**: We average pixel values of 3 channels when videos have 3 channels. From the instruction of the author of SSIM, the correct usage of SSIM is to evaluate on the grayscale images as below, i.e., the RGB image needs to be converted to the gray-scale image first. (From the [official website](https:\u002F\u002Fece.uwaterloo.ca\u002F~z70wang\u002Fresearch\u002Fssim\u002F) of SSIM)\n5. **For FVD**\n    - **Download pretrained model**: If you have something wrong with downloading FVD pre-trained model, you should manually download any of the following and put it into FVD folder. \n        - **For Stylegan**: `i3d_torchscript.pt` from [here](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fge9e5ujwgetktms\u002Fi3d_torchscript.pt).\n        - **For Videogpt**: `i3d_pretrained_400.pt` from [here](https:\u002F\u002Fonedrive.live.com\u002Fdownload?cid=78EEF3EB6AE7DBCB&resid=78EEF3EB6AE7DBCB%21199&authkey=AApKdFHPXzWLNyI).\n        - 👆**The original link is broken?** You can use this copy file [here](https:\u002F\u002Fgithub.com\u002Fnpurson\u002Ffid-metrics\u002Freleases\u002Ftag\u002Fv1.0), and see related issues [here](https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F27).\n        - Now **We have supported 2 pytorch-based FVD implementations** ([videogpt](https:\u002F\u002Fgithub.com\u002Fwilson1yan\u002FVideoGPT) and [styleganv](https:\u002F\u002Fgithub.com\u002Funiversome\u002Fstylegan-v), see issue [#4](https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F4)). Their calculations are almost identical, and the difference is negligible.\n    - **Constrain for video length**: Because the i3d model downsamples in the time dimension, we should make sure `frames_num > 10` when calculating FVD, so FVD calculation begins from 10-th frame.\n    - **Calculating process**: FVD calculates the feature distance between two sets of videos (The I3D features of each video are do not go through the `softmax()` function, and the size of the last dimension is 400, not 1024).\n6. **Only support single-GPU inference**: If you are running `demo.py` on your multi-GPU machine, you can set `CUDA_VISIBLE_DEVICES=0`, see [here](https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F13).\n7. **Acknowledgement**: The codebase refers to [LPIPS](https:\u002F\u002Fgithub.com\u002Frichzhang\u002FPerceptualSimilarity), [fvd-comparison](https:\u002F\u002Fgithub.com\u002Funiversome\u002Ffvd-comparison), [PyTorch-Frechet-Video-Distanc](https:\u002F\u002Fgithub.com\u002Fragor114\u002FPyTorch-Frechet-Video-Distance), [MVCD](https:\u002F\u002Fgithub.com\u002Fvoletiv\u002Fmcvd-pytorch) and other websites and projects, I've just extracted the part of it that's relevant to the calculation.\n\n**If the project cannot run correctly, please give me an issue or PR.**\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FJunyaoHu_common_metrics_on_video_quality_readme_44af041a96f9.png)](https:\u002F\u002Fstar-history.com\u002F#JunyaoHu\u002Fcommon_metrics_on_video_quality&Date)\n","# 视频质量常用指标\n\n## 引言\n\n您可以轻松计算视频生成和视频预测任务中的以下视频质量指标：\n\n- **FVD**：弗雷歇视频距离\n- **SSIM**：结构相似性指数\n- **LPIPS**：基于学习的感知图像块相似性\n- **PSNR**：峰值信噪比\n\n## 安装\n\n版本参考：numpy-1.26.4 opencv-python-4.10.0.84 scipy-1.13.1 tqdm-4.67.1 einops-0.8.0\n\n```\nconda create -n test python=3.9\nconda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia\nconda install \"numpy\u003C2.0\"\npip install opencv-python tqdm einops\ngit clone https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\n```\n\n## 评估示例\n\n例如，我们评估了8对视频，每对视频包含30帧、3个通道，分辨率为64x64。\n\n```\n原始视频：[8x30x3x64x64] 像素值在[0,1]之间\n生成视频：[8x30x3x64x64] 像素值在[0,1]之间\n```\n\n运行以下代码 `demo.py` 来计算这四个指标。\n\n```\ncd common_metrics_on_video_quality\npython demo.py\n```\n\n`demo.py` 的关键内容是：\n\n```\ncalculate_fvd(videos1, videos2, device, method='styleganv', only_final=True)\ncalculate_ssim(videos1, videos2, only_final=True)\ncalculate_psnr(videos1, videos2, only_final=True)\ncalculate_lpips(videos1, videos2, device, only_final=True)\n```\n\n在示例中，一个全零矩阵 [8x30x3x64x64] 和一个全一矩阵 [8x30x3x64x64]，它们的 $\\mathrm{FVD}(\\mathit{frames_A}, \\mathit{frames_B})$ 大约为151（由于PyTorch版本不同，数值可能会在1左右波动）。\n\n```\n{\n    \"fvd\":   {\"value\": [151.25648496845326]},\n    \"ssim\":  {\"value\": [9.999000099990664e-05],\"value_std\": [0.0]},\n    \"psnr\":  {\"value\": [0.0],\"value_std\": [0.0]},\n    \"lpips\": {\"value\": [0.8140090703964233],\"value_std\": [0.0]}\n}\n```\n\n如果我们将 `only_final=False`，\n\n```\ncalculate_fvd(videos1, videos2, device, method='styleganv', only_final=False)\ncalculate_ssim(videos1, videos2, only_final=False)\ncalculate_psnr(videos1, videos2, only_final=False)\ncalculate_lpips(videos1, videos2, device, only_final=False)\n```\n\n我们可以计算：\n\n- 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 $\n- PSNR\u002FSSIM\u002FLPIPS：$\\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 $\n\n\n```\n{\n    \"fvd\": {\n        \"value\": [\n            569.2296293622766,\n            486.3584254441098,\n            551.9610501807822,\n            146.36638178542628,\n            172.85453222258292,\n            133.70311962583372,\n            152.91750309134142,\n            357.7402855012116,\n            382.4668646785276,\n            306.73840379649727,\n            338.4151811780684,\n            78.17255931098194,\n            82.33446642508818,\n            64.5885972265882,\n            66.06281151704604,\n            314.4803706985065,\n            316.6870909853734,\n            288.97196946254184,\n            287.7805184515251,\n            152.1524775765185,\n            151.2564750365302\n        ]\n    },\n    \"ssim\":  {\"value\": [9.999000099990664e-05,...,],\"value_std\": [0.0,...]},\n    \"psnr\":  {\"value\": [0.0,...],...},\n    \"lpips\": {\"value\": [0.8140090703964233,...],...}\n}\n```\n\n## 与原TensorFlow FVD指标的比较\n\n如果您想使用来自TensorFlow的原始FVD版本，并将其结果与本仓库的实现进行比较：\n\n您应该创建一个tensorflow-1.0环境：\n\n```\n# https:\u002F\u002Fgithub.com\u002Funiversome\u002Ffvd-comparison\u002Fblob\u002Fmaster\u002Frequirements.txt\nconda create -n tf1 python=3.7\npip install tensorflow==1.15.0 tensorflow-gan==1.0.0.dev0 tensorflow-hub==0.12.0 scipy==1.7.3 tqdm\n\nexport PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python\ncalculate_fvd_tensorflow.py\n\n# calculate_fvd(videos1, videos2, only_final=True)\n# 输出：\n# [fvd-tensorflow] [151.39244]\n```\n\n\n\n## 注意事项\n\n1. **关于像素值**：请确保视频的像素值在$[0, 1]$范围内。\n3. **所有指标**：如果视频是灰度图像，我们会将其扩展为3个通道[如所述](https:\u002F\u002Fgithub.com\u002Frichzhang\u002FPerceptualSimilarity\u002Fissues\u002F23#issuecomment-492368812)。\n4. **关于SSIM**：当视频有3个通道时，我们会对3个通道的像素值取平均。根据SSIM作者的说明，正确的使用方法是在灰度图像上进行评估，即需要先将RGB图像转换为灰度图像。（来自SSIM的[官方网站](https:\u002F\u002Fece.uwaterloo.ca\u002F~z70wang\u002Fresearch\u002Fssim\u002F)）\n5. **关于FVD**\n    - **下载预训练模型**：如果您在下载FVD预训练模型时遇到问题，可以手动下载以下文件之一，并将其放入FVD文件夹中。\n        - **对于Stylegan**：从[这里](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fge9e5ujwgetktms\u002Fi3d_torchscript.pt)下载 `i3d_torchscript.pt`。\n        - **对于Videogpt**：从[这里](https:\u002F\u002Fonedrive.live.com\u002Fdownload?cid=78EEF3EB6AE7DBCB&resid=78EEF3EB6AE7DBCB%21199&authkey=AApKdFHPXzWLNyI)下载 `i3d_pretrained_400.pt`。\n        - 👆**原始链接已失效？** 您可以使用此副本文件[在这里](https:\u002F\u002Fgithub.com\u002Fnpurson\u002Ffid-metrics\u002Freleases\u002Ftag\u002Fv1.0)，并查看相关问题[在这里](https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F27)。\n        - 现在**我们已经支持两种基于PyTorch的FVD实现**（[videogpt](https:\u002F\u002Fgithub.com\u002Fwilson1yan\u002FVideoGPT)和[styleganv](https:\u002F\u002Fgithub.com\u002Funiversome\u002Fstylegan-v)，详见问题[#4](https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F4)）。它们的计算结果几乎相同，差异可以忽略。\n    - **视频长度限制**：由于i3d模型在时间维度上会进行下采样，因此在计算FVD时，我们需要确保 `frames_num > 10`，这样FVD计算才会从第10帧开始。\n    - **计算过程**：FVD计算两组视频之间的特征距离（每段视频的I3D特征不会经过 `softmax()` 函数，且最后一维的大小为400，而不是1024）。\n6. **仅支持单GPU推理**：如果您在多GPU机器上运行 `demo.py`，可以设置 `CUDA_VISIBLE_DEVICES=0`，详情请参见[这里](https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F13)。\n7. **致谢**：该代码库参考了 [LPIPS](https:\u002F\u002Fgithub.com\u002Frichzhang\u002FPerceptualSimilarity)、[fvd-comparison](https:\u002F\u002Fgithub.com\u002Funiversome\u002Ffvd-comparison)、[PyTorch-Frechet-Video-Distance](https:\u002F\u002Fgithub.com\u002Fragor114\u002FPyTorch-Frechet-Video-Distance)、[MVCD](https:\u002F\u002Fgithub.com\u002Fvoletiv\u002Fmcvd-pytorch) 等网站和项目，我只是提取了其中与计算相关的部分。\n\n**如果项目无法正常运行，请向我提交问题或拉取请求。**\n\n## 星标历史\n\n[![星标历史图表](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FJunyaoHu_common_metrics_on_video_quality_readme_44af041a96f9.png)](https:\u002F\u002Fstar-history.com\u002F#JunyaoHu\u002Fcommon_metrics_on_video_quality&Date)","# common_metrics_on_video_quality 快速上手指南\n\n本工具用于轻松计算视频生成和视频预测任务中的关键质量指标，包括 **FVD** (Frechét Video Distance)、**SSIM**、**LPIPS** 和 **PSNR**。\n\n## 环境准备\n\n- **操作系统**: Linux \u002F macOS \u002F Windows\n- **Python 版本**: 推荐 3.9\n- **GPU**: 支持 CUDA 的 NVIDIA 显卡（单卡推理）\n- **核心依赖版本参考**:\n  - `numpy` \u003C 2.0 (推荐 1.26.4)\n  - `opencv-python` (推荐 4.10.0.84)\n  - `pytorch` (推荐 1.13.1 + CUDA 11.7)\n  - `scipy`, `tqdm`, `einops`\n\n## 安装步骤\n\n### 1. 创建 Conda 环境并安装 PyTorch\n建议使用国内镜像源（如清华源）加速下载。\n\n```bash\nconda create -n video_metric python=3.9\nconda activate video_metric\n\n# 安装 PyTorch 1.13.1 (CUDA 11.7)，可使用清华源加速\nconda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia\n# 若网络较慢，可尝试：\n# conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia --index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 2. 安装其他依赖\n注意 `numpy` 版本需小于 2.0。\n\n```bash\nconda install \"numpy\u003C2.0\"\npip install opencv-python tqdm einops -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 3. 克隆项目代码\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\ncd common_metrics_on_video_quality\n```\n\n### 4. 下载预训练模型 (FVD 必需)\nFVD 计算需要 I3D 预训练模型。如果自动下载失败，请手动下载以下文件之一并放入项目对应的 FVD 文件夹中：\n\n- **StyleganV 版本**: 下载 [i3d_torchscript.pt](https:\u002F\u002Fwww.dropbox.com\u002Fs\u002Fge9e5ujwgetktms\u002Fi3d_torchscript.pt)\n- **VideoGPT 版本**: 下载 [i3d_pretrained_400.pt](https:\u002F\u002Fonedrive.live.com\u002Fdownload?cid=78EEF3EB6AE7DBCB&resid=78EEF3EB6AE7DBCB%21199&authkey=AApKdFHPXzWLNyI)\n- **备用下载地址**: [GitHub Release](https:\u002F\u002Fgithub.com\u002Fnpurson\u002Ffid-metrics\u002Freleases\u002Ftag\u002Fv1.0)\n\n## 基本使用\n\n### 数据格式要求\n- 输入视频数据形状：`[Batch_Size, Frames, Channels, Height, Width]`\n- 像素值范围：必须归一化到 **[0, 1]** 之间。\n- 灰度图处理：如果是单通道灰度图，工具会自动复制为 3 通道；SSIM 计算时会自动转为灰度图取平均。\n- 帧数限制：计算 FVD 时，视频帧数必须 **> 10**。\n\n### 运行示例\n项目自带 `demo.py`，使用全 0 和全 1 的模拟数据进行测试。\n\n```bash\n# 确保在单卡环境下运行，多卡机器需指定可见设备\nexport CUDA_VISIBLE_DEVICES=0\n\npython demo.py\n```\n\n### 代码调用示例\n在你的 Python 脚本中，核心调用方式如下：\n\n```python\nfrom metrics import calculate_fvd, calculate_ssim, calculate_psnr, calculate_lpips\nimport torch\n\n# 假设 videos1 和 videos2 是形状为 [8, 30, 3, 64, 64] 的 Tensor，值在 [0, 1]\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n\n# 1. 仅计算最终整体指标 (only_final=True)\nfvd_score = calculate_fvd(videos1, videos2, device, method='styleganv', only_final=True)\nssim_score = calculate_ssim(videos1, videos2, only_final=True)\npsnr_score = calculate_psnr(videos1, videos2, only_final=True)\nlpips_score = calculate_lpips(videos1, videos2, device, only_final=True)\n\n# 2. 计算逐帧或累积指标 (only_final=False)\n# FVD: 计算前 n 帧的距离 (10 \u003C= n \u003C= T)\n# PSNR\u002FSSIM\u002FLPIPS: 计算前 n 帧的平均值\nfvd_curve = calculate_fvd(videos1, videos2, device, method='styleganv', only_final=False)\n```\n\n**输出示例**:\n```json\n{\n    \"fvd\":   {\"value\": [151.26]},\n    \"ssim\":  {\"value\": [9.99e-05], \"value_std\": [0.0]},\n    \"psnr\":  {\"value\": [0.0], \"value_std\": [0.0]},\n    \"lpips\": {\"value\": [0.814], \"value_std\": [0.0]}\n}\n```","某 AI 视频生成团队在迭代“老电影修复”模型时，急需量化评估生成视频与原始高清视频的还原度及动态流畅性。\n\n### 没有 common_metrics_on_video_quality 时\n- **指标实现碎片化**：团队成员需分别从不同仓库拼凑 FVD、PSNR、SSIM 和 LPIPS 的代码，环境依赖冲突频发，配置耗时数天。\n- **评估维度单一**：往往只计算最终帧的静态指标，缺乏对视频时序动态变化（如 FVD 随帧数增加的趋势）的细粒度监控，难以发现运动模糊问题。\n- **基准对齐困难**：无法便捷地与业界标准的 TensorFlow FVD 版本进行对比验证，导致论文复现或竞品分析时数据可信度存疑。\n- **调试效率低下**：每次调整模型参数后，手动运行多个脚本获取不同指标，反馈周期长，严重拖慢实验迭代速度。\n\n### 使用 common_metrics_on_video_quality 后\n- **一键集成四大核心指标**：通过简单的 `demo.py` 即可同时输出 FVD、PSNR、SSIM 和 LPIPS，统一了 numpy 与 PyTorch 环境，将评估准备时间从几天缩短至几分钟。\n- **支持动态时序分析**：利用 `only_final=False` 参数，团队能直观看到 FVD 等指标随帧数变化的曲线，精准定位模型在第几帧开始出现的动态失真。\n- **无缝兼容主流基准**：内置与原始 TensorFlow FVD 实现的对比接口，确保实验数据与学术界标准高度一致，提升了研究成果的说服力。\n- **自动化实验闭环**：将评估代码直接嵌入训练流水线，模型每保存一个 checkpoint 即自动产出多维质量报告，大幅加速了超参数调优过程。\n\ncommon_metrics_on_video_quality 通过标准化、多维度的视频质量评估流程，让研发团队从繁琐的指标计算中解放出来，专注于核心算法的创新与优化。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FJunyaoHu_common_metrics_on_video_quality_965d608b.png","JunyaoHu","胡钧耀","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FJunyaoHu_8c4da7c7.jpg","Researching on Creative Visual Content Creation (Fashion, Design, Art, Emotion, Film, etc.)","Enshi, Hubei","hujunyao0329@gmail.com","junyao_hu","junyaohu.github.io","https:\u002F\u002Fgithub.com\u002FJunyaoHu",[83,87],{"name":84,"color":85,"percentage":86},"Python","#3572A5",100,{"name":88,"color":89,"percentage":90},"PureBasic","#5a6986",0,569,25,"2026-04-18T04:13:14",null,"未说明","需要 NVIDIA GPU（仅支持单卡推理），需安装 CUDA 11.7",{"notes":98,"python":99,"dependencies":100},"1. 仅支持单 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 环境。","3.9",[101,102,103,104,105,106,107,108],"pytorch==1.13.1","torchvision==0.14.1","torchaudio==0.13.1","numpy\u003C2.0","opencv-python","scipy","tqdm","einops",[14,110],"视频",[112,113,114,115,116,117,118,119],"fvd","metrics","psnr","pytorch","ssim","video","video-generation","video-prediction","2026-03-27T02:49:30.150509","2026-04-20T19:45:54.388821",[123,128,133,138,143,148],{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},45260,"运行 demo.py 时出现 RuntimeError: forward() is missing value for argument 'x' 错误，如何解决？","这是代码调用参数缺失的问题。请在文件 `common_metrics_on_video_quality\u002Ffvd\u002Fstyleganv\u002Ffvd.py` 的第 27 行，将 detector 的调用修改为显式传入 `x` 参数。修改后的代码如下：\n`feats = np.vstack([feats, detector(x=torch.stack([preprocess_single(video) for video in videos[i*bs:(i+1)*bs]]).to(device), **detector_kwargs).detach().cpu().numpy()])`\n确保输入张量被正确传递给 `x` 参数即可解决该报错。","https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F7",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},45261,"计算大量视频（如 2000 个）的 FVD 指标时因显存或内存不足导致进程被杀死，有什么解决方案？","加载大量高分辨率视频到显存会消耗巨大内存（例如 2000 个视频可能需近 1TB）。推荐以下两种解决方案：\n1. （推荐方法）预保存特征法：先以小批量或逐个视频的方式计算并保存 I3D 特征，最后再加载这些特征统一计算 FVD。\n2. 采样平均法：每次随机采样 256 个视频计算 FVD，重复多次后取平均值。\n通常建议使用第一种方法以获得更稳定且节省资源的结果。","https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F24",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},45262,"为什么当两个输入视频完全相同时，计算出的 FVD 值是负数而不是 0？","理论上相同视频的 FVD 应为 0。出现负值通常与依赖库版本有关，特别是 `scipy` 的版本差异可能导致数值计算不稳定。建议检查您的 `scipy` 和 `torch` 版本。维护者指出这是一个已知问题，尝试更新或调整相关科学计算库的版本可能解决此异常。如果问题持续，请提供具体的库版本信息以便进一步排查。","https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F25",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},45263,"计算 FVD 时 `clip_timestamp` 参数只取前几帧是否合理？在自定义数据集（如 UCF101）上应如何选择视频片段？","在大多数研究和项目中，建议在数据预处理阶段（即自定义 Dataset 的 `__getitem__` 函数中）进行视频片段采样，而不是依赖固定的 `clip_timestamp`。\n具体做法是：指定起始帧索引（time_idx）和采样长度（frames_per_sample）。例如，可以参考 MCVD 项目的实现，从视频中截取连续的特定时长片段作为输入。这样可以确保评估的一致性和灵活性，符合论文中的常规做法。","https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F9",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},45264,"为什么我的视频分辨率很高（如 375x1242），但计算出的 FVD 值异常大（如 3000+）？","FVD 值异常大通常不是由分辨率引起的，因为计算过程中视频会被自动缩放至 224x224。主要原因通常是**视频数量太少**。FVD 对样本数量非常敏感，样本越少，统计误差越大，FVD 值往往越高且不稳定。\n建议：\n1. 增加视频数量：参考主流论文（如 StyleGAN-V），通常使用 2048 个视频进行评估；在视频预测任务中，至少应使用 256 个原始视频和 256 个生成视频。\n2. 仅使用 4 个或 10 个视频计算出的结果不具备参考价值，请尽量扩充测试集规模。","https:\u002F\u002Fgithub.com\u002FJunyaoHu\u002Fcommon_metrics_on_video_quality\u002Fissues\u002F19",{"id":149,"question_zh":150,"answer_zh":151,"source_url":127},45265,"支持哪些视频格式进行指标计算？","该工具支持常见的视频格式，包括 AVI、MP4 等。关键在于如何使用代码读取视频：通常使用 OpenCV 等库读取视频文件，将其转换为 PyTorch 的 Tensor 格式后即可输入模型进行计算。只要能够成功读取并转换为 Tensor，格式本身不会成为限制。",[]]