Deep End-to-End Alignment and Refinement for Time-of-Flight RGB-D modules复现
一、环境配置
1. 系统基础环境
- 操作系统: Ubuntu 14.04 (推荐原生系统或兼容性好的虚拟机)
- CUDA: 8.0 + cuDNN (需匹配 TensorFlow 1.2 版本要求)
- Python: 2.7 (因 TensorFlow 1.x 对 Python 3 支持有限)
2. 核心依赖安装
# 创建 Python 虚拟环境(建议使用 virtualenv)
virtualenv tof-env
source tof-env/bin/activate# 安装 TensorFlow 1.2 和关键依赖
pip install tensorflow-gpu==1.2.0
pip install -r requirements.txt
3. 辅助工具安装
- Blender 2.7: 官方下载
- pbrt-v3-tof: 从 Su et al. 的仓库 编译安装
- MatLAB: 需安装
MatLabEXR插件(用于处理 EXR 格式渲染结果)
二、数据准备
1. 下载预生成数据
- 数据集链接: Google Drive
- 下载
ToF FlyingThings3D(~20GB) - 下载预训练模型权重
- 下载
2. 自定义数据生成 (可选)
若需生成新数据,按以下流程操作:
(1) 生成深度图(Blender)
# 运行无头模式渲染
/path/to/blender -b scene.blend --python output_zpass.py --python_args
(2) 生成瞬态渲染(pbrt-v3-tof)
# 单场景渲染
/path/to/pbrt scene.pbrt# 批量渲染(参考示例脚本)
bash batch_run_pbrt.sh
(3) 转换为 ToF 数据(MATLAB)
% 运行 transient_to_depth.m
addpath('transient_processing/example');
transient_to_depth('input_dir', 'output_dir');
三、模型编译与测试
1. 编译 CUDA 扩展
cd utils/
make
cd ops/warp_by_flow/
make
2. 运行推理
# 修改 fullmodel.py 中路径配置
DATA_DIR = "/path/to/test_data"
OUTPUT_DIR = "/path/to/predictions"# 执行测试
python fullmodel.py
四、关键注意事项
- 路径一致性:
- 确保
.blend(Blender) 与.pbrt(pbrt) 文件中的相机参数(FOV、分辨率)一致 - 检查坐标系转换(Blender 使用
-Z forward, Y up,需与 pbrt 对齐)
- 确保
- TensorFlow 1.x 兼容性:
- 若出现
UnpicklingError,尝试指定custom_objects加载模型:model = tf.keras.models.load_model('model.h5', custom_objects={'DenseUpsamplingConvolution': DenseUpsamplingConvolution})
- 若出现
- MATLAB 依赖:
- 确保
MatLabEXR插件正确安装,支持 EXR 文件读写
- 确保
五、常见问题解决方案
| 问题类型 | 解决方法 |
|---|---|
make 编译失败 | 检查 CUDA 8.0 路径,确认 nvcc 可用性 |
| 数据集加载错误 | 验证 loader.py 中的路径分隔符(Linux 用 /) |
| 瞬态渲染结果异常 | 检查 pbrt 文件中的材质反射率参数范围(0~1) |
| 模型输出 NaN | 检查输入数据归一化是否在 [0,1] 范围内 |
六、延伸实验建议
- 消融实验:
- 对比
Ours only mask与完整模型性能(见表 4) - 测试不同 SAM 模型规模(SAM-B vs SAM-H)对精度的影响
- 对比
- 真实数据测试:
- 使用
test_real/calib.bin校准文件 - 设置
mvg_aug=True启用多视角几何增强
- 使用
通过以上步骤可完整复现论文结果。如需进一步优化部署效率,可尝试:
- 将 TensorFlow 1.x 模型转换为 ONNX 格式
- 使用
tf.compat.v1渐进升级至新版本 TensorFlow
