MIT-BEVFusion系列九--CUDA-BEVFusion部署1 debug代码

本文介绍了CUDA-BEVFusion项目中的调试技巧,包括如何修改CMakeLists.txt和launch.json进行Debug设置,以及如何理解常用数据结构如numel_frustum_、numel_geometry_等。还提到如何处理16进制变量和正确解读ranks_与indices的关系。
摘要由CSDN通过智能技术生成

该系列文章与qwe一同创作,喜欢的话不妨点个赞。

在一起看CUDA-BEVFusion的代码前,我们把后面会常见到的变量以及他的含义写在前方,看代码的时候如果看到同名的变量,可以过来看一看数据的形状和含义。

另外这里介绍了开启debug的方法。

总而言之,本篇文章是一个类似前言的文章,方便后续大家调试代码,理解代码。

开启Debug

  1. 修改 CMakeLists.txt,注释 26 行,打开 27 行注释。

在这里插入图片描述
修改前,默认设置

在这里插入图片描述
修改后

  1. 重新运行 bash tool/run.sh。重新构建

    1. run.sh 中 41 行默认会执行 build/bevfusion。推理一次。只想构建,注释掉 41 行即可
      在这里插入图片描述
  2. Debug

如果系统里有多个版本的 cuda/tensorrt,则需要在 launch.json 文件里进行相应的配置:


"environment": [{"name": "LD_LIBRARY_PATH", "value":"/path_to_trt/TensorRT-8.5.3.1/lib:/path_to_cuda/cuda-11.7/lib64:$LD_LIBRARY_PATH"}],

如果发现调试时变量显示都是16进制的数,想让其变成10进制,需要如下设置:

"setupCommands": [
                { "text": "set output-radix 10"}#或者切换成16
            ]

因为.vscode中launch.json已经配置好,按照下图Debug,会运行build/bevfusion进入主程序。
在这里插入图片描述

在这里插入图片描述

常用数据

  • numel_frustum_:332288。一个相机视锥点数量
  • numel_geometry_:1993728。6 个相机一共的视锥点数量(332288*6)
  • remain_ranks :159963。转体素时超出边界的视锥点的个数
  • keep_count_:1833765。转成功的视锥点的数量。1993728 - 159963 = 1833765
  • interval_starts 、n_intervals_: 96801。起始点数量,也可以理解成区间数量。
  • ranks_、interval_start、indices、geometry 关系
    • ranks_

      • compute_geometry_kernel 中看出,ranks 与 geometry 的数据偏移量一致,只不过这个偏移量对应的点如果没有落在体素内时,ranks 存的值是 0,而 geometry 存的是错误的数值
        • ranks 与 geometry 的数据偏移量一致依据
          在这里插入图片描述

        • ranks 存的值是 0,而 geometry 存的是错误的数值依据
          在这里插入图片描述

          在这里插入图片描述

    • indices 存的是 geometry 与排序前 ranks_的偏移量数值。这个偏移量就是_pid=indeces。理解为视锥索引。

      • 可以理解为一个数据由两部分存,indices 存的索引,ranks_\geometry 存的数据。indices=0 为例。其含义就是指 geometry 与 ranks_ 偏移量是 0
        • 一般用法是计算出 indices 后, geometry[indices]去找对应的数据。当 indices=0 时,找到的就是 63905
    • interval_start 具体数据 + 加上 reamain_ranks 的数量(159963)就是这个数据在排序后 rank 中距离首地址的 偏移量

  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
BevFusion是一种基于深度学习的三维点云重建方法,其主要思想是将点云转换为体素表示,然后使用神经网络进行体素的重建。以下是BevFusion的简单复现步骤: 1. 数据准备:使用3D扫描仪或其他方式获取物体的点云数据,并将其转换为体素表示。在这个过程中,需要选择合适的体素大小和分辨率,以保证重建的准确性和效率。 2. 构建神经网络:使用TensorFlow或PyTorch等深度学习框架,搭建BevFusion的神经网络模型。该模型包括编码器、解码器和重建器三个部分,其中编码器负责将体素表示转换为低维特征向量,解码器负责将特征向量转换回体素表示,而重建器则负责整合编码器和解码器,实现点云重建。 3. 训练模型:使用已准备好的数据集对神经网络模型进行训练。训练过程中需要选择合适的损失函数和优化器,以及设置合理的训练参数(如学习率、批次大小、迭代次数等)。 4. 进行点云重建:使用训练好的神经网络模型对新的点云数据进行重建。在此过程中,需要将点云数据转换为体素表示,并输入到神经网络中进行重建。最终,可以得到重建后的点云数据,并进行后续的处理和分析。 需要注意的是,BevFusion的复现过程较为复杂,需要具备一定的深度学习和计算机视觉基础,同时还需要大量的计算资源和时间。因此,建议在有相关经验或团队支持的情况下进行复现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值