利用GPU加速DTU数据集点云评估

利用GPU加速DTU数据集点云评估

代码地址: https://github.com/Gwencong/Fast-DTU-Evaluation

DTU数据集是一个多视图三维重建数据集,在MVS任务中用做训练与测试。DTU官方对于数据集上的预测点云的评估提供的是matlab的代码

用MATLAB评估存在的问题

在DTU上进行点云数据评估时,一般会安装matlab并且通过DTU官方提供的matlab代码来评估点云结果,这一过程非常耗时,动辄需要几个小时甚至半天的时间,要想加快评估速度一般会使用多进程(matlab中的parfor)进行评估,这在多人使用的linux服务器上会消耗大量CPU资源导致其他人使用时CPU卡顿。DTU上的评估过程实际上是计算预测点云和真实点云之间的倒角距离,也就是DTU中定义的accuracy和completeness,而使用这一过程使用matlab耗时的主要原因是计算过程全部在CPU上完成,没有利用到GPU进行加速。为了解决这个问题,参考ChamferDistancePytorchMVS_Evaluation_Benchmark这两个仓库,我们利用python和cuda实现了利用GPU来加速DTU的点云评估

使用方式

  1. 下载源代码
git clone https://github.com/Gwencong/Fast-DTU-Evaluation.git
  1. 安装环境依赖
pip install -r requirements.txt
cd chamfer3D && python setup.py install # build and install chamfer3D package
  1. 准备评估数据
  • 下载GT点云: STL Point cloudsSample Set 然后进行解压, 并且把 Points/Points/stl/stlxxx_total.ply 文件复制到 SampleSet/MVS Data/Points/stl 文件夹。
  • 准备好要评估的算法的点云文件, 按照以下格式进行命名:{method}{scanid}_l3.ply ,比如 mvsnet001_l3.ply
    准备好数据集后,文件目录看起来像如下这样:
./SampleSet/MVS Data/
|--Points
|   |--stl
|       |--stlxxx_total.ply
|--ObsMask
|   |--ObsMaskxxx_10.mat
|   |--Planexxx.mat

./Predict/
|--mvsnet
|   |--mvsnetxxx_l3.ply
  1. 进行评估
  • eval_dtu.sh中的 --pred_dir--gt_dir 设为你的路径, 运行如下命令:
bash eval_dtu.sh
# or 
# CUDA_VISIBLE_DEVICES=0 python eval_dtu.py --method mvsnet --pred_dir "./Preidct/mvsnet/" --gt_dir "./SampleSet/MVS Data" --save --num_workers 1

主要耗时分析:

在matlab的评估代码中,主要的耗时主要来自于点云的下采样(reducePts_haa函数)和倒角距离的计算(MaxDistCP函数),点云下采样部分和倒角距离的计算都使用了的KD树结构和最近邻算法,由于KD树无法用GPU加速,所以我们利用open3d库中体素下采样代替matlab中的点云下采样来进行加速,同时利用CUDA实现的倒角距离来利用GPU进行加速。需要特别注意的是,由于使用了open3d中的体素下采样,所以下采样后点云会和matlab中的下采样结果有所差别,为了尽量与matlab的结果进行对齐,我在代码中加了一个超参数voxel_factor进行调节,调节这个参数会改变open3d的体素下采样尺寸,实验中,设置为1.28基本近似matlab的结果。

与MATLAB的评估结果对比

下表对比了在DMVSNet(ICCV2023)TransMVSNet(CVPR2022)两个算法上 matlab 和 python 的评估结果, 用来评估的点云从算法对应的github下载。 可以看到,overall基本与MATLAB代码的结果相同,并且速度更快,CPU使用更少,如下所示:

Methodacc.(mm)comp.(mm)overall(mm)num_workerstimeCPU%
TransMVSNet(matlab)0.32100.28900.3050121h17m1200%
TransMVSNet(python)0.32060.28940.3050245m200%
DMVSNet(matlab)0.34950.27670.3131121h17m1200%
DMVSNet(python)0.34660.27890.3128246m200%

更大的voxel_factor(>1.28)可能会让评估结果比matlab的评估结果差,但评估速度会更快,所以也可以用来快速评估你的改进是否有效。

<think>好的,我现在需要帮助用户解决如何下载DTU数据集的问题。首先,根据用户提供的引用内容,引用[1]提到了一个名为“dtu-training数据集 百度网盘19G”的资源,项目地址是https://gitcode.com/Open-source-documentation-tutorial/28c91。用户可能需要从这里下载。 接下来,引用[2]和[3]讨论了MVSNet和PatchMatchNet使用的不同版本的DTU数据集,特别是训练集和测试集的差异。用户可能需要根据他们具体的研究方向选择合适的数据集版本。例如,MVSNet的数据集较小(19.2GB),而PatchMatchNet的更大(76.3GB),分辨率也不同。 用户的问题是如何下载DTU数据集。我需要整理出清晰的步骤,包括不同版本的下载链接和注意事项。首先,应该检查官方渠道,比如官方网站或GitHub仓库。引用[1]中的项目地址可能是一个资源,但需要确认是否可靠。另外,百度网盘的链接可能在国内更常用,但需要注意是否需要提取码。 还需要提醒用户注意不同版本的数据集差异,确保他们下载的版本符合他们的项目需求。例如,如果用户要进行三维重建或深度估计,可能需要高分辨率的版本,如PatchMatchNet的数据集。此外,测试集的结构和数量也需要考虑,引用[3]提到测试集有22组,每个场景有49张图片,这可能影响实验设置。 最后,可能需要建议用户查阅相关论文或项目的文档,以确保数据集的正确使用。如果有官方下载方式,优先推荐官方渠道,否则提供备选方案,如百度网盘链接,并提醒注意数据的完整性和可能的访问限制。</think>关于DTU数据集的下载,以下是整理后的信息及步骤: --- ### **DTU数据集下载指南** #### 1. **数据集版本选择** 根据引用[2],需注意不同算法(如MVSNet和PatchMatchNet)使用的DTU数据集版本不同: - **MVSNet版本** - 训练集:19.2GB,深度图分辨率较低($160 \times 128$),119组数据 - 测试集:22组场景,每场景49张图像,包含相机参数和邻域对文件[^3] - **PatchMatchNet版本** - 训练集:76.3GB,深度图分辨率高($1600 \times 1200$),128组数据 - 测试集:数据加载方式不同(使用最小/最大深度而非间隔)[^2] #### 2. **下载途径** - **途径1:GitCode仓库(推荐)** 引用[1]提供了百度网盘下载链接,包含19G训练集: - **项目地址**:https://gitcode.com/Open-source-documentation-tutorial/28c91 - **文件名称**:`dtu-training数据集 百度网盘19G` - **适用场景**:适用于MVSNet、Fast-MVSNet等模型的训练[^1] - **途径2:官方渠道(需申请)** DTU数据集原始发布方为丹麦科技大学,需通过官网申请: - 访问[DTU官网](http://roboimagedata2.compute.dtu.dk/)提交申请表格 - 注意:可能需要提供研究用途证明[^2] - **途径3:学术社区资源** 部分论文作者会公开预处理后的数据,例如: - PatchMatchNet的高分辨率数据集可通过其GitHub仓库的链接获取(需检查仓库说明) #### 3. **下载注意事项** - **文件校验**:下载后核对文件大小,避免传输错误(如MVSNet训练集应为~19GB) - **目录结构**:测试集目录包含`cams`(相机参数)、`images`(图像)、`pair.txt`(邻域对) - **兼容性**:若用于特定算法(如PatchMatchNet),需确认数据加载逻辑与模型匹配[^2] ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值