microsoft/mlvc
MLVC: Multi-platform Learned Video Codec for Real-World Deployment
TL;DR
MLVC 是一种神经视频编解码器,可在消费级 NPU(Apple、Intel、Qualcomm)上实时运行。在 540p 视频下以约 100fps 编码/解码,BD-率比硬件 HEVC 提升超过 70%。该仓库提供预训练模型、完整训练流水线、CoreML/ONNX/QNN 模型转换工具、C++ 熵编码器和基准测试工具,并附带用于生产部署的 C++ 库(libmlvc)。
功能
- 神经视频压缩 – 使用 PSNR 或感知定向目标学习 I 帧(图像)和 P 帧(运动补偿视频)。
- 设备端实时推理 – 面向手机、平板和笔记本电脑中的 NPU;参考实现在 540p 下达到约 100fps。
- 硬件无关部署 – 导出流水线生成 CoreML(Apple)、用于 OpenVINO 的 ONNX(Intel)、QNN(Qualcomm),以及用于实际比特流生成的 C++ 熵编码器。
- 基准测试套件 – 计算 BD-率、RD 曲线以及多种质量指标(PSNR、MS-SSIM、LPIPS、VIF、DeQA),并与 HEVC 锚点进行比较。
适用人群
| 受众 | 重要性 |
|---|---|
| 研究实验室 | 可直接运行的代码库,用于训练和评估学习型视频编解码器,并提供可复现的数据集和锚点。 |
| 移动/嵌入式开发者 | 导出的 CoreML/ONNX/QNN 模型可让您无需构建自定义 ML 流水线即可将最先进的编解码器集成到应用中。 |
| 产品团队 | 附带的 libmlvc C++ 库提供可直接使用的编码器/解码器,可在现有 NPU 加速运行时上运行。 |
| 基准测试爱好者 | 内置 BD-率、RD 曲线和感知指标工具,可轻松与 HEVC 或其他学习型编解码器进行比较。 |
快速入门
- 安装 UV 包管理器(推荐)并使用 Python 3.12+。 ```bash uv sync --extra onnxruntime # 选择所需后端
2. **安装熵编码器**(需要 C++ 编译器)。 ```bash
uv pip install packages/msrtc_rans
- 下载预训练检查点(例如
mlvc-psnr-v1.ckpt)。 - 运行演示笔记本(
video/notebooks/demo.ipynb)或单行命令:
uv run convert.py export --model-version dmc61sbr_reglu
这会将默认 PSNR 模型导出为与您的平台匹配的格式。
5. **使用 C++ 库(`libmlvc`)或调用导出模型和 RANS 熵编码器的 Python 包装器进行编码/解码**。
## 技术细节(来自 README)
- **模型大小**:全尺寸 MLVC 为 18.3M 参数,轻量级 MLVC-S 为 5.4M 参数。
- **训练数据**:OpenVidHD(1M 高清剪辑)和 VCD(各种分辨率)。提供 HEVC 硬件编码器和 DCVC-RT 参考的锚点。
- **损失函数**:PSNR 定向(MSE)和感知(LPIPS、DeQA)。通过 RetinaFace/FarL 提供可选的人脸区域指标。
- **转换流程**:`convert.py` 处理导出、验证、性能分析和打包。输入尺寸必须是 16 的倍数。
- **支持的运行时**:CoreML(Apple)、ONNX Runtime(CPU、GPU、OpenVINO、Windows ML)、QNN(Qualcomm)。
- **基准测试**:`compute_benchmark_metrics.py` 和 `calculate_frame_sequence_metrics.py` 生成 BD-率、bpp 和高级感知分数。
- **引用**:作者要求引用 arXiv 论文(2606.28027,2026)。
---
## 限制与未解决问题
- **分辨率重点**:实时性能在 540p 下得到验证;更高分辨率需要更强大的 NPU 或模型扩展。
- **硬件依赖**:性能取决于是否存在受支持的 NPU 以及为特定平台编译的 C++ 熵编码器。
- **感知质量**:感知模型依赖外部指标(LPIPS、DeQA)和额外的预训练权重,增加了流水线的复杂性。
- **数据集许可**:用户必须单独获取 OpenVidHD 和 VCD 数据集;仓库仅提供准备脚本。
---
## 快速参考(命令)
```bash
# 安装依赖(选择后端)
uv sync --extra onnxruntime # CPU
uv sync --extra onnxruntime-gpu # NVIDIA GPU
uv sync --extra onnxruntime-qnn # Qualcomm NPU
uv sync --extra onnxruntime-openvino # Intel NPU
# 导出模型(Apple 默认 CoreML)
uv run convert.py export --model-version dmc61sbr_reglu
# 导出为 ONNX 用于 Intel
uv run convert.py export --model-version dmc61sbr_reglu \
--model-type onnx --target-device intel
# 运行验证测试(BD-率对比 HEVC 锚点)
uv run convert.py test --model-path ./output/models/.../coreml-apple/960x544 run_validation_test
# 训练 I 帧模型
uv run train_image.py --config configs/train_image-dcvcrt.yaml \
--data_mount ~/mlvc --checkpoints_mount ~/mlvc/job-outputs --save_dir checkpoints/dmci
# 训练 P 帧模型
uv run train_video.py --config configs/train_video-mlvc.yaml \
--data_mount ~/mlvc --checkpoints_mount ~/mlvc/job-outputs --save_dir checkpoints/mlvc
更多信息
- 论文:https://arxiv.org/abs/2606.28027
- 附带的 C++ 库:https://github.com/microsoft/libmlvc
- 相关项目:DCVC-RT (https://github.com/microsoft/DCVC)
- 许可与贡献:Microsoft 开源行为准则;贡献需要 CLA。
相关
- 项目
- 项目
- 项目
- 项目
- 项目