news 2026/4/12 19:04:46

【DCVC-RT】手把手带你在Linux环境下复现CVPR论文,保姆级教学!!!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【DCVC-RT】手把手带你在Linux环境下复现CVPR论文,保姆级教学!!!

DCVC-RT复现完全实战指南

📚文档说明:本文档基于真实环境(Windows 11 Laptop + RTX 4060)实战总结,适用于希望在 WSL2 环境下复现 DCVC-RT 的研究人员。
🎯目标:解决环境配置、大文件传输损坏、版本不兼容、配置报错等问题,实现 1080p 视频实时神经压缩推理。
⚙️核心环境:WSL2 Ubuntu 22.04 (Microsoft Store) | Python 3.12 | CUDA 12.1 | PyTorch 2.6
📅最后更新:2025年12月


📋 目录

  • 1. 系统与硬件准备
  • 2. Python 基础环境搭建
  • 3. 项目部署与核心编译
  • 4. 模型权重下载与校验(关键)
  • 5. 数据准备与自动化配置
  • 6. 启动推理:参数详解与实战
  • 7. 结果验证与可视化
  • 8. 踩坑记录与解决方案 (FAQ)

1. 系统与硬件准备

1.1 硬件环境确认

  • 设备:联想拯救者笔记本 (Lenovo Legion)
  • GPU:NVIDIA GeForce RTX 4060 Laptop GPU (8GB 显存)
  • CPU:Intel Core i7/i9 (高性能模式)

1.2 操作系统 (WSL2)

  1. 安装 Ubuntu
  • 直接在Microsoft Store搜索 “Ubuntu 22.04.3 LTS” 并安装。
  • 启动 Ubuntu,设置用户名和密码。
  1. 网络环境
  • 确保拥有合适的环境,以便顺利访问 GitHub 和 OneDrive 下载模型。
  • WSL2 技巧:如果在 WSL2 中无法连网,可尝试重置网络或配置代理。

1.3 验证显卡穿透

在 Ubuntu 终端输入:

nvidia-smi
  • 必须看到:显卡型号 (RTX 4060) 和驱动版本 (Driver Version: 5xx.xx)。
  • 注意:WSL2 直接复用 Windows 驱动,切勿在 Linux 内重复安装驱动。

2. Python 基础环境搭建

2.1 安装 Miniconda

推荐使用 Miniconda 进行轻量化管理:

mkdir-p ~/miniconda3wgethttps://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.shbash~/miniconda3/miniconda.sh -b -u -p ~/miniconda3rm-rf ~/miniconda3/miniconda.sh ~/miniconda3/bin/conda initbashsource~/.bashrc

2.2 创建虚拟环境

根据官方要求,使用 Python 3.12:

conda create -n dcvc_rtpython=3.12-y conda activate dcvc_rt

2.3 安装 PyTorch

为了匹配 RTX 4060 的 CUDA 架构,安装支持 CUDA 12.x 的版本:

pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
  • 验证安装
python -c"import torch; print(torch.cuda.is_available())"# 输出 True 表示成功

3. 项目部署与核心编译

3.1 获取代码

方法一:利用网络工具直接从 GitHub 克隆,确保获取最新代码

gitclone https://github.com/microsoft/DCVC.gitcdDCVC

方法二:可以直接访问此官方链接自行下载:https://github.com/microsoft/DCVC

下载完,你应该得到了一个 DCVC-main.zip。

  1. 回到 Windows 桌面,打开“此电脑”或者随便一个文件夹。
  2. 在文件夹顶部的地址栏里,把里面的内容清空,输入下面这行代码并回车:
\\wsl$
  1. 你会看到一个叫Ubuntu-20.04的文件夹,双击进去。
  2. 依次打开:home->XXX(你在Linux的账户名)
  • 这就是你在 Linux 终端里看到的~目录。

把你在 Windows 浏览器里下载好的DCVC-main.zip,直接复制、粘贴到这个文件夹里。

之后回到终端继续操作
文件粘贴进去后,回到你的黑框终端(dcvc) XXX@XXX:~$

依次执行下面的命令:

  1. 下载解压工具:
sudoaptinstallunzip-y
  1. 解压代码、改名并进入文件夹:
unzipDCVC-main.zipmvDCVC-main DCVCcdDCVC

3.2 安装依赖库

pipinstall-r requirements.txt

3.3 编译 C++ 扩展 (至关重要)

这是导致很多人运行失败的核心原因。DCVC-RT 的算术编码和推理优化依赖 C++ 编译的.so文件,必须手动编译:

# 安装编译工具链sudoapt-getupdatesudoapt-getinstallcmake g++ ninja-build# 1. 编译码流读写模块 (Bitstream IO)cdsrc/cpp/ pipinstall.# 2. 编译推理优化模块 (Inference Extensions)cd../layers/extensions/inference/ pipinstall.# 返回项目根目录cd../../../
  • 如果不做这一步,后续会报错缺少模块或运行极慢。

4. 模型权重下载与校验(关键)

4.1 下载方式

  • 来源:官方 OneDrive 链接。
  • 方法:建议在Windows 端直接下载,速度快且稳定。

4.2 文件完整性校验 (必做)

下载后请务必查看文件属性,确保大小一致:

  • cvpr2025_image.pth.tar:~174 MB
  • cvpr2025_video.pth.tar:~79.1 MB(82,900,000 字节左右)
  • 避坑:如果 Video 模型只有 58MB 或更小,说明下载中断,必须重新下载。

4.3 传输至 Linux

将文件从 Windows 下载目录移动到 WSL 环境。直接拖拽或复制均可,但传输后需二次验证

# 在项目根目录创建文件夹mkdir-p checkpoints# 假设文件在 Windows 下载目录 (使用 cp 命令复制)cp/mnt/c/Users/Administrator/Downloads/cvpr2025_image.pth.tar ./checkpoints/cp/mnt/c/Users/Administrator/Downloads/cvpr2025_video.pth.tar ./checkpoints/# 再次检查 Linux 内的文件大小ls-lh checkpoints/
  • 确认:Video 模型必须显示为80M79M

5. 数据准备与自动化配置

DCVC-RT 的 JSON 配置文件对字段要求极其严格,手动修改容易出错(例如src_type字段)。

5.1 准备测试视频

将 YUV 格式视频放入DCVC/test_data/目录。

  • 示例文件:ReadySteadyGo_1920x1080_120fps_420_8bit_YUV.yuv

5.2 生成“完美”配置文件

DCVC目录下新建脚本setup_custom_video.py,使用以下代码自动生成配置:

importosimportjson# === 参数配置区 ===filename="ReadySteadyGo_1920x1080_120fps_420_8bit_YUV.yuv"width=1920height=1080framerate=120# ==================file_path=os.path.join("test_data",filename)# 自动计算帧数file_size=os.path.getsize(file_path)total_frames=file_size//(width*height*3//2)config={"test_classes":{"Custom":{"test":1,"src_type":"yuv420",# 【核心修正】必须是 yuv420,不能是 raw"dataloader":"Video","base_path":os.path.abspath("test_data"),"sequences":{os.path.splitext(filename)[0]:{"width":width,"height":height,"frames":total_frames,"frame_rate":framerate,"bit_depth":8,"format":"yuv420","intra_period":32}}}}}withopen('custom_config.json','w')asf:json.dump(config,f,indent=4)print("✅ 配置文件生成成功!")

运行:python setup_custom_video.py


6. 启动推理:参数详解与实战

6.1 显卡编号修正

  • 现象nvidia-smi显示显卡为 GPU 0,但 Windows 任务管理器显示为 GPU 1。
  • 结论:代码中必须指定--cuda 0。如果用cuda 1,程序会回退到 CPU,导致无 GPU 占用且速度极慢。

6.2 最终运行命令

复制以下命令执行(已包含所有 Bug 修复):

python test_video.py\--model_path_i ./checkpoints/cvpr2025_image.pth.tar\--model_path_p ./checkpoints/cvpr2025_video.pth.tar\--rate_num4\--test_config ./custom_config.json\--force_root_path ./\--cuda0\--worker1\--write_stream1\--output_path output_result.json\--verbose1

6.3 参数说明

  • --cuda 0: 指定使用 0 号显卡(笔记本独显)。
  • --write_stream 1:必须开启,否则会触发代码中的断言错误。
  • --worker 1: 限制线程数为 1,避免 WSL2 下的多进程死锁问题。
  • --force_root_path ./: 强制指定根目录,避免路径解析错误。

7. 结果验证与可视化

7.1 验证运行状态

  • 终端:看到Frame 1,Frame 2… 滚动输出。
  • 显存:使用nvidia-smi查看,Python 进程应占用 1-2GB 显存 。

7.2 输出文件

  • JSON 报告output_result.json,包含 BPP (压缩率) 和 PSNR (画质) 数据。
  • 码流文件out_bin/目录下会生成.bin压缩文件。

7.3 生成 RD 曲线图

使用 Python 脚本读取 JSON 并绘图:

importjson,matplotlib.pyplotasplt# 读取 json 并绘制 BPP-PSNR 曲线 (代码略,参考前文)# ...plt.savefig('result_chart.png')

8. 踩坑记录与解决方案 (FAQ)

错误现象原因分析解决方案
PytorchStreamReader failed reading zip archive模型文件损坏。Video 模型下载不完整(如只有 58MB)。重新下载,确保 Video 模型约79.1 MB,Image 模型约174 MB
UnboundLocalError: local variable ‘src_reader’配置文件错误。src_type写成了 “raw” 或 “yuv”。配置文件中必须严格写为"src_type": "yuv420"
AssertionError缺少必要的运行参数。启动命令中必须加上--write_stream 1
GPU 占用率为 0%,运行极慢显卡指定错误,程序跑在了 CPU 上。将参数--cuda 1改为--cuda 0
ambiguous option: --w参数缩写有歧义。使用完整参数名--worker 1
KeyError: ‘root_path’配置文件中缺少根路径。启动命令添加--force_root_path ./

🎉祝你天天开心,我将更新更多有意思的内容,欢迎关注!

最后更新:2025年12月
作者:Echo

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 6:25:54

实习面试题-BI 商业智能面试题

1.什么是 BI 商业智能?它的核心价值是什么? 回答重点 BI(Business Intelligence,商业智能)是指将企业的原始数据转化为有价值的商业洞察的技术和方法。简单来说,BI 就是让数据说话,帮助企业管理者做出更明智的决策。 BI 的工作流程包括几个环节:数据收集(从各个业务…

作者头像 李华
网站建设 2026/3/27 12:38:07

字节一面:千万级订单表新增字段怎么弄?

故事背景最近我们遇到了一个看似简单但背后很有坑的需求:在千万级订单表中新增一个业务字段。需求来自隔壁项目组,他们需要这个字段做一些统计分析。从开发角度看,这事很常见,新增字段嘛,直接ALTER TABLE加一下不就行了…

作者头像 李华
网站建设 2026/4/12 2:29:26

小程序毕设项目推荐-基于微信小程序羽球快讯爱好者平台基于springboot+微信小程序的羽球快讯爱好者平台小程序【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/5 18:14:24

小程序毕设项目推荐-基于微信小程序的交通违法有奖曝光平台设计与实现基于springboot+微信小程序的的交通违法有奖曝光平台【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/5 6:33:56

精度下降预警机制设计,工业质检Agent稳定性保障的最后防线

第一章:精度下降预警机制设计,工业质检Agent稳定性保障的最后防线在高自动化产线中,质检Agent长期运行可能因模型漂移、环境噪声或设备老化导致识别精度隐性下降。若未及时发现,将引发批量误检,造成重大质量事故。为此…

作者头像 李华
网站建设 2026/4/12 15:26:56

真正能升上去的人,最会处理模糊地带

职场里有个残酷规律:越往上走,越没有“标准答案”。流程不清晰、责任边界不明确、资源分配模糊、方向时常变动……你以为这是混乱,其实这是组织在筛人。因为真正能升上去的人,都有一个共同点——他们最会处理模糊地带。 为什么&am…

作者头像 李华