【CUDA编程】 动态体素化实现

2023-10-30

动态体素化实现

动态体素化DV克服了硬体素化HV的一些缺点。动态体素化DV保留了分组grouping阶段,相反,它没有采样固定的点数或体素容量,它保留了点和体素之间的完全映射。因此,体素数和每个体素中的点数都是动态的,依赖于具体的映射函数。这消除了对固定大小缓冲区的需求,也消除了对随机点和体素的丢弃过程。

        因为所有原始点和体素信息都被保留了,动态体素化DV没有引入信息丢失,并产生了确定的体素嵌入,使得检测结果更稳定。

        另外,动态体素化建立了每一个点和体素对之间的双向关系,为从不同视图融合点级上下文特征提供了自然基础。

        动态体素化DV动态高效分配资源来管理所有体素和点。

        简单的动态体素特征编码,也是简单地对体素中所有点的特征向量进行平均值运算作为整个体素的特征,只不过每个体素中的点个数是动态的,每个体素都不同。
 

1,核心函数

torch::Tensor generate_voxel(torch::Tensor &points,
                             const std::vector<float> &voxel_size,
                             const std::vector<float> &coors_range,
                             const int NDim){
    torch::Tensor coors = points.new_zeros({points.size(0), 3},
                                           torch::TensorOptions().dtype(torch::kInt).device(torch::kCUDA, 0));
    dynamic_voxelize_gpu(points, coors, voxel_size, coors_range, 3);
    return coors;
}
std::vector<at::Tensor> DynamicSimpleVFE(torch::Tensor &voxels,
                                         torch::Tensor &coors){
    assert(coors.size(1) == 3 && voxels.size(0) == coors.size(0));
    std::vector<at::Tensor> res = dynamic_point_to_voxel_forward_gpu(voxels, coors, MEAN);
    assert(res.size() == 2);
    return res;
}

2.动态体素化 dynamic_voxelize_gpu


void dynamic_voxelize_gpu(const at::Tensor& points, at::Tensor& coors,
                          const std::vector<float> voxel_size,
                          const std::vector<float> coors_range,
                          const int NDim) {
 
    CHECK_INPUT(points);

    at::cuda::CUDAGuard device_guard(points.device());

    const int num_points = points.size(0);
    const int num_features = points.size(1);

    const 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【CUDA编程】 动态体素化实现 的相关文章

随机推荐

  • 计算机wifi无法打开,教你win10系统WiFi热点无法打开的修复教程

    最近有windows10系统用户反馈 遇到了WiFi热点无法打开的问题 打开WIFI热点我们可将我们电脑的网络共享给手机 使我们的手机能够节省一些流量 怎么办呢 就此问题 接下来小编教你win10系统WiFi热点无法打开的修复教程 很多wi
  • C# 给自己写的软件,加注册码功能

    由于永和的项目里边用到了这个功能 因此在网上找到了 直接贴过来 复用一下 为自己写的程序加一个注册功能吧 生成的机器号是根据CPU和硬盘号来的 根据自己的需求改成是否是随机生成 代码直接粘贴到新建类覆盖原代码就能直接用了 using Sys
  • 探索IP地址的应用

    无论是互联网行业还是传统行业都会用到网络 作为企业如何维护网络安全 保障网站不被攻击 数据不被泄露等 这个时候我们就会通查询IP归属地 辅助企业解决安全问题 下面介绍一下ip归属地在各行业的具体应用 1 网安行业 应用一 提升企业网络资产检
  • cocos2dx使用CocosBuilder(编辑器)完成基础骨骼动画

    转载自 黑米GameDev街区 原文链接 http www himigame com cocosbuilder 1061 html 点击订阅 本博客最新动态 及时将最新博文通知您 关于CocosBuilder 已经成为cocos2d coc
  • 抖音壁纸表情包小程序源码,可对接流量主

    抖音壁纸表情包小程序源码 可对接流量主 抖音壁纸表情包小程序源码 可对接流量主 抖音壁纸表情包小程序源码 可对接流量主 抖音壁纸表情包小程序源码 可对接流量主 星光壁纸 我的页面
  • 【C语言取反运算符】~2是多少?~-5是多少?

    标题的答案 2 3 3 2 原理是什么 我们先来看这个程序及输出的结果 容易总结出这样一个结论 i i 1 为什么呢 一言以蔽之 运算符是对i的补码 含符号位 进行取反 2的原码是0000 0010 正数补码是其本身0000 0010 取反
  • angularJS项目开发需要下载安装和配置的环境

    1 node js npm命令 nodejs org nodejs安装及环境配置参见博客园某博客 地址 http www cnblogs com linjiqin p 3765390 html 2 cordova codova apache
  • Python入门之对象与变量

    一 对象 对象是Python中最基本的概念之一 在Python中 万物皆可对象 对象有三个基本属性 即类型 身份标识 值 二 变量与赋值 1 变量 在Python中 不需要事先声明变量名及其类型 直接赋值即可创建任意类型的对象变量 不仅变量
  • 基于QT4.8.6的软键盘

    这几天接到任务要写一个软键盘 用于在Linux上运行的软件 windows下也可以 效果 1 能够实现中英文 数字 字符的切换 2 并且实现单字中文 英文 数字 符号的输入 3 使用sqlite数据库 4 完全模仿手机QQ全键盘输入样式 源
  • 【Linux】VMware虚拟机安装Linux Mint系统

    1 安装准备 虚拟机软件 VMware Workstation Pro Mint系统镜像 linuxmint 20 3 cinnamon 64bit iso 下载网址可见 网易 欢迎访问网易开源镜像站 阿里 阿里巴巴开源镜像站 清华 清华大
  • Django 知识库:as_view()解析

    Django 有函数视图和类视图 分别是这样用的 函数视图 path function view 类视图 path ClassView as view 源码 来一步步分解 as view 是个类方法 它的第一个参数 cls 表示类本身 跟实
  • 2023 咸鱼玩法进阶课程

    第一课 闲鱼高阶玩法总体概述第二课 如何找到更有价格优势的货源第三课 十有九成的货源砍价技巧 第四课 闲鱼更新课程大总结
  • 【element-ui其他icon笑脸评分使用方法,官方文档踩坑】

    前提 使用elemen的
  • C++11 线程异步

    文章目录 1 线程异步的概念 2 future 2 1 共享状态 2 2 常用成员函数 3 promise 3 1 常用成员函数 3 2 promise的基本使用 4 package task 4 1 常用成员函数 4 2 package
  • 各种手机的UserAgent大全

    手机 UA 常用UserAgent列表 去重共85339条 类型 系统 设备 浏览器 User Agent 手机 Android OPPO R11st 手机百度 Mozilla 5 0 Linux Android 7 1 1 OPPO R1
  • [C#][Xml][Error Recording]System.ArgumentException:““.”(十六进制值 0x00)是无效的字符。”

    问题描述 在通过工具修改Xml内容后 在通过doc Save file path SaveOptions None 保存修改内容时 工具崩溃报错信息为 System ArgumentException 十六进制值 0x00 是无效的字符 问
  • 使用Skywalking追踪你的SpringBoot程序

    由于Skywalking符合opentracing的数据标准 而opentracing也是未来的大势所趋 特写一个傻瓜式教程 帮你手把手进行监控自己的SpringBoot程序 1 准备工作 访问https github com apache
  • Java学习笔记 五(面向对象)

    一 面向对象的概念 1 面向对象是把解决的问题按照一定的规则划分为多个独立的对象 然后通过调用对象的方法来解决问题 面向对象的主要特点为封装性 继承性和多态性 2 封装性 封装是面向对象的核心思想 将对象的属性和行为封装起来 不需要让外界知
  • 音乐学习笔记

    音乐学习笔记 1 和声 1 1基础和弦 1 2 卡农进行 1 和声 1 1基础和弦 1 音阶 音阶 大调音阶 1 c 1 2 3 4 5 6 7 1 小调音阶 6 c 6 7 1 2 3 4 5 6 1 主音 4 下属音 5 属音 1级和弦
  • 【CUDA编程】 动态体素化实现

    动态体素化实现 动态体素化DV克服了硬体素化HV的一些缺点 动态体素化DV保留了分组grouping阶段 相反 它没有采样固定的点数或体素容量 它保留了点和体素之间的完全映射 因此 体素数和每个体素中的点数都是动态的 依赖于具体的映射函数