- 博客(44)
- 收藏
- 关注
原创 『Open3D』1.10 Tensor数据处理
open3d中实现了自身的数据类型,用于open3d中内部算法的数值计算,但基础使用上与numpy类似。
2024-01-19 22:17:05
261
原创 【OpenMP】 2.3 并行化循环
前面的示例中,通过创建一组线程并通过线程ID与线程数来人为的定义每个线程需要处理的数据,这是一个常规的多线程任务分配的技巧;但是在openmp中通过#pragma omp for指令,可以通过简单的并行化循环构造即可快速实现前述的任务分配环节。 需要注意for构造指令需要在parallel构造的并行区域内才可以多线程运行。另外,可以将OMP构造指令组合在一起使用,如下示例所示: 规约可以通过多线程加速实现实现数组的累加、累乘、查找等工作。openmp的规约通过
2024-01-14 16:46:49
617
原创 【OpenMP】 2.2 线程同步
OpenMP中的线程时并发执行的,即不同线程时乱序执行的,有时需要并发线程来协调线程组的执行,达到约束线程组之间某些操作的顺序。 此处还是通过前文【OpenMP】 2.1 简单示例-CSDN博客的例程进行说明。 临界区critical构造定义了一个线程间相互排斥的代码块,即并行构造中一次只能有一个线程执行临界区中的代码块,其余的线程在critical构造处等待,直到之前的线程完成后依次运行。 上述示例中通过临界区实现的积分计算,且每个线程只执行一次临界区
2024-01-09 21:12:10
475
原创 【OpenMP】 2.1 简单示例
下面是一个定积分计算的例子,该程序通过将曲线下的面积近似为矩形面积的和来估计一个定积分的结果;选择积分和积分范围,使得这个积分的结果等于。另外OMP的线程在底层中通过线程池的方式来实现的,这种结构可以减少移动线程的方式替换创建与销毁线程的开销。如右边所示需要注意子线程中也是可以嵌套并行区域,需要注意避免引起数据数据竞争与内存带宽上限问题。export OMP_NUM_THREADS=线程数。结果如下,可以看到多线程的结果。
2024-01-08 22:04:11
493
原创 『OPEN3D』1.12 RGBD三维重建
下面先来跑通重建代码,然后对代码进行解释, 这里以TUM的rgbd_dataset_freiburg3_long_office_household数据集为例,使用前600帧图像进行重建,重建结果如下:本专栏地址:本文章地址:『OPEN3D』1.12 RGBD三维重建-CSDN博客。
2024-01-01 10:33:44
1364
2
原创 『OPEN3D』1.7 点云拟合问题
本专栏地址:https://blog.csdn.net/qq_41366026/category_12186023.html?spm=1001.2014.3001.5482
2023-12-24 13:49:58
496
原创 『OPEN3D』1.5.4 动手实现点云八叉树(OctoTree)最近邻
在四叉树中,一个节点有四个子节点,而八叉树则有八个。如果对应到物理空间中,可以把一个矩形按中心切成四等分,或者把一个三维立方体按中心切成八等分。
2023-12-19 22:02:41
577
原创 『OPEN3D』1.5.3 动手实现点云KD树最近邻
一个简单的创建K-D树示例,假设只有如下四个点(0,0,0)、(1,0,0)、(0,1,0)、(1,1,0)。(如隐式 K-d 树 、最小-最大 K-d 树 、松弛 K-d 树等)
2023-12-18 22:21:16
965
原创 『OPEN3D』1.5.2 动手实现点云栅格/体素最近邻
当处理点云数据时,另外一种常见的方法是在空间位置层面对其进行索引。这意味着将点云空间划分为离散的单元,然后将点云分配到相应的单元中。这样做的好处是可以根据查询点的位置快速定位相应的单元,从而加速最近邻搜索。根据索引的方式,我们可以使用或方法。二维栅格方法将点云空间划分为规则的网格单元(pillar),每个单元代表一个固定大小的区域。点云数据被分配到相应的单元中,从而形成一个栅格结构。
2023-12-16 12:36:29
1042
1
原创 『OPEN3D』1.5.1 动手实现点云暴力最近邻
本专栏地址:https://blog.csdn.net/qq_41366026/category_12186023.html?spm=1001.2014.3001.5482https://blog.csdn.net/qq_41366026/category_12186023.html?spm=1001.2014.3001.5482 暴力最近邻法 (Brute-force Nearest Neighbour Search,BF 搜索) 是最简单直观的最近邻计算方法,没有复杂的数据结构。搜索一个点
2023-12-16 10:09:43
869
原创 『OPEN3D』1.5 点云最近邻问题
本专栏地址:最近邻问题是点云处理中最基本的问题之一。它涉及确定在一个包含n个点的点云中,哪个点是离给定点最近的点,或者在给定距离范围内有哪些点;最近邻问题描述起来非常简单:在一个含 n 个点的点云= {, . . . ,} 中,获取离某个点最近的点是哪一个?再或者说离最近的 k 个点是哪些?或者与距离小于某个固定范围R的点有哪些?前者称为 k 近邻查找(kNN),后者称为范围查找(range search)。
2023-12-16 10:06:24
857
原创 『OPEN3D』1.8.3 多份点云配准
多份点云配准是将多份点云数据在全局空间中对齐的过程。通常,输入是一组数据(例如点云或RGBD图像){Pi}。输出是一组刚性变换{Ti},使得经过变换的点云在全局空间中对齐。此处使用前面介绍的global icp、color icp与位姿图来对这多份点云进行拼接。
2023-12-14 21:18:10
181
2
原创 『OPEN3D』1.8.2 全局ICP配准
前文提到的多种icp方式均需要初始的变换函数作为配准过程的初始值,并在该初始值上进行迭代优化得到结果;那么global icp为前面这些精配准的icp提供了初始变换函数。global icp需要对点云提取几何关键点与描述子特征信息,并通过其匹配方式找到两份点云数据中对应的点。类似于图像的关键点匹配。这里使用FPFH特征作为示例,FPFH特征使用33维度的描述子向量来描述一个关键点局部的几何信息;然后使用匹配的方式对两组点云中的关键点与描述子进行距离匹配与RANSAC来得到对应的点对。
2023-12-09 17:59:20
431
原创 『OPEN3D』1.8.1 ICP配准-点到点、点到面、color-icp、robust-icp
但存在一个严重的问题:如果出于误匹配等原因,某个误差项给的数据是错误的,那么它的梯度也很大,意味着调整与它相关的变量会使目标函数下降更多。所以,算法将试图优先向这个误差大的outlier项进行调整,使其他正确的匹配向满足该项的无理要求,导致算法会抹平其他正确边的影响, 使优化算法专注于调整一个错误的值。于是就有了核函数的存在。具体的方式是,把原先误差的二范数度量 替换成一个增长没有那么快的函数,同时保证自己的光滑'性质(不然无法求导)。使用color icp的结果, 两份点云的颜色信息可以良好的配准。
2023-11-30 21:57:16
392
1
原创 『OPEN3D』1.8 点云的配准理论
点云的配准是将不同的3D点云对齐成一个完成的点云模型;配准的目标是找到两帧点云之间的相对旋转(rotation)与平移(translation),使得两份点云中有重叠的区域能够完好拼接。点云配准示例图(来自PCL)上图为初始的5份点云数据,需要将着几份点云数据拼接成如下图中完整的模型点云动态配准示例常见的点云配准方式主要包含ICP配准以及NDT配准以及他们的配准,当然还包括神经网络的点云配准方式。
2023-11-26 17:04:13
1614
原创 PCL内置点云类型
PCL内置了许多点云类型供我们使用,下面先介绍PLC内置的点云数据类型PCL中的点云类型为PointT;至于为什么是PointT类型需要追随到原来的ros开发中去,因为PCL库也是从原来的ROS中剥离出来的;大家都一致的认为点云结构是离散的N维信息描述的物体。因此最简单的点云结构便是XYZ,下面首先来看看XYZ三维信息如何在PCL中实现的。
2023-11-19 12:04:53
342
原创 TPVFormer论文与模型代码注析
TPVformer使用多相机图像输入来生成周环境的占据栅格;并且网络训练只需要使用稀疏的激光点云进行监督训练。
2023-11-01 08:26:20
451
1
原创 BEVFusion论文与模型代码分享
作者对该篇文章首先提出的是多传感器融合对于准确可靠的自动驾驶系统非常重要;最近的许多工作都是基于点层面的融合,用相机的特征来增强点云特征的表达;然而相机到雷达点云的映射天生丢弃了属于图像该有的稠密且丰富的语义信息;该方法直接妨碍了语义为导向的任务(比如3D场景分割)的有效性。因此本篇文章,作者打破该惯例,将来自多模态的特征在BEV空间下进行融合表达,该方法可以良好的保留点云的几何信息和图像的语义信息。为了实现该方法;
2023-10-30 21:55:24
302
1
原创 Lift, Splat, Shoot图像BEV安装与模型代码详解
计算机视觉算法通常使用图像是作为输入并输出预测的结果,但是对结果所在的坐标系却并不关心,例如图像分类、图像分割、图像检测等任务中,输出的结果均在原始的图像坐标系中。因此这种范式不能很好的与自动驾驶契合。在自动驾驶中,多个相机传感器的数据一起作为输入,这样每帧图像均在自己的坐标系中;但是感知算法最终需要在车辆自身坐标系(ego coordinate)中输出最终的预测结果;并提供给下游的规划任务。当前也有很多简单、使用的方法用于扩展单帧图像到多视角图像的方法。
2023-10-15 12:14:36
414
1
原创 『OPEN3D』1.9 Ray Casting
ray casting 极大的简化了3D物体或场景到图片的渲染。在假设光线不会二次或多次反射的情况下,从相机的focal point为中心点每个像素根据设定的FOV计算得到每个像素上对应的光线方向,并从该方向射出所有光线,如若光线与场景中的物体相交,则记录下来,并选取距离与相机最短的物体作为该光线的结果映射会图像上。结合上面的内容,可以根据光线与物体相交得到的深度信息来创建物体的点云信息,在虚拟的环境中可以使用根据虚拟的相机位姿信息通过raycasting来获取当前位姿下相机看到物体的深度图。
2023-04-19 16:23:10
1344
1
原创 『OPEN3D』1.6 Voxelization体素化
介绍open3d中voxelGrid的使用,从点云、mesh中创建voxelGrid以及voxelgird的包含测试和Voxel carving
2023-03-18 16:22:07
2608
6
原创 『OPEN3D』1.5.5 Open3D中的K-dTree和OcTree
文章介绍了点云处理中常用的octree和kdtree以及其在open3d中的使用方式
2023-03-18 13:03:13
1015
原创 『OPEN3D』1.4 点云表面重建
主要介绍了open3d中三种点云表面重建算法在open3d中的使用,分别为Alpha shapes、Ball pivoting、Poisson surface reconstruction。
2023-03-04 14:14:34
2871
3
原创 『OPEN3D』1.3 RGB-D image与点云拼接 python篇
本文介绍了Open3d中的RGBD数据类型,并使用tum数据集为例介绍了RGBD转点云信息和知道位姿后的点云的拼接操作
2023-02-25 21:23:29
1847
原创 PV-RCNN++网络结构和代码解析
1、前言 这篇文章废话不多说了,主要史帅基于PV-RCNN上面进行的改进,本文不会从头构建网络并进行解析,对于PV-RCNN不了解的小伙伴可以先去看我之前的文章。PV-RCNN论文和逐代码解析(一)_NNNNNathan的博客-CSDN博客_pvrcnn代码复现1、前言当前的点云3D检测主要分为两大类,第一类为grid-based的方法,第二类为point-based的方法。grid-based的方法将不规则的点云数据转换成规则的3D voxels (VoxelNet, SECOND ....
2022-04-22 11:34:20
6223
8
原创 Voxel-RCNN论文和逐代码解析
1、前言当前的点云3D检测主要分为两大类,第一类为grid-based的方法,第二类为point-based的方法。 grid-based的方法将不规则的点云数据转换成规则的3D voxels (VoxelNet, SECOND , Fast PointRCNN, Part A^2 Net)或者转化成 2D的BEV特征图(PIXOR, HDNet,PointPillars),这种方法可以将不规则的数据转换后使用3D或者2D的CNN来高效的进行特征提取。 point-b...
2022-03-18 10:00:54
6828
9
原创 PV-RCNN的推理实现和LOSS计算(三)
前面已经完成了PV-RCNN网络的搭建和第一、第二阶段中关键点分割的label匹配,anchor与GT匹配、proposal与GT的target assignment,想了解的小伙伴可以我之前的博文第一阶段:PV-RCNN论文和逐代码解析(一)_NNNNNathan的博客-CSDN博客1、前言当前的点云3D检测主要分为两大类,第一类为grid-based的方法,第二类为point-based的方法。grid-based的方法将不规则的点云数据转换成规则的3D voxels (Voxe...
2022-03-15 21:32:36
3899
5
原创 PV-RCNN论文和逐代码解析(二)
第一阶段:1、MeanVFE (voxel特征编码)2、VoxelBackBone8x(3D CNN 提取voxel特征)3、HeightCompression(高度方向Z轴堆叠)5、BaseBEVBackbone(SECOND中的RPN层)6、AnchorHeadSingle(anchor分类和回归头)4、VoxelSetAbstraction(VSA模块,对不同voxel特征层完成SA)第二阶段:7、PointHeadSimple Predicted Keypoint..
2022-03-13 19:08:57
5248
5
原创 PV-RCNN论文和逐代码解析(一)
1、前言当前的点云3D检测主要分为两大类,第一类为grid-based的方法,第二类为point-based的方法。grid-based的方法将不规则的点云数据转换成规则的3D voxels (VoxelNet, SECOND , Fast PointRCNN, Part A^2 Net)或者转化成 2D的BEV特征图(PIXOR, HDNet,PointPillars),这种方法可以将不规则的数据转换后使用3D或者2D的CNN来高效的进行特征提取。...
2022-03-11 11:21:22
8737
12
原创 SECOND点云检测代码详解
1、前言SECOND也是一片基于Voxel按anchor-based的点云检测方法,网络的整体结构和实现大部分与原先VoxelNet相近,同时在VoxelNet的基础上改进了中间层的3D卷积,采用稀疏卷积来完成,提高了训练的效率和网络推理的速度,同时解决了VoxelNet中角度预测中,因为物体完全反向和产生很大loss的情况;同时,SECOND还提出了GT_Aug的点云数据增强。没有了解过VoxelNet的小伙伴可以查看我的这篇文章:VoxelNet点云检测详解_NNNNNathan...
2022-03-07 16:19:40
11824
15
原创 PointRCNN的loss计算与推理实现
在我前面的文章中,已经完成了PointRCNN的网络构建,链接在这:PointRCNN论文和逐代码详解_NNNNNathan的博客-CSDN博客1、前言当前点云检测的常见方式分别有1、将点云划分成voxel来进行检测,典型的模型有VoxelNet、SECOND等;作然而本文的作者史博士提出这种方法会出现量化造成的信息损失。2、将点云投影到前视角或者鸟瞰图来来进行检测,包括MV3D、PIXOR、AVOD等检测模型;同时这类模型也会出现量化损失。3、将点云直接生成伪图片,然后使用2D的方式来进行处理,这主要
2022-03-05 14:14:35
4237
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人