Python三维点云实战宝典
文章平均质量分 91
python从三维点云处理基础到神经网络深度学习模型详细介绍,包括三维目标检测、单目3D检测、三维语义分割、深度补全以及多模态融合等。详细分析每种模型,书读百遍,其义自见。本专栏致力于让大家能够事半功倍,快速掌握三维点云处理方法。
Coding的叶子
AI大模型、三维感知算法、计算机视觉算法、量化算法等长期研究与分享。
展开
-
【python三维深度学习】python三维点云从基础到深度学习
从三维点云基础知识到深度学习,将按照以下目录持续进行更新。更新完成的部分可以在三维点云专栏中查看。含数据与python源码。原创 2022-04-07 15:30:05 · 23165 阅读 · 7 评论
-
【三维目标检测模型】SMOKE
SMOKE是一种基于关键点估计的单阶段单目三维目标检测模型,发表在CVPRW 2020,含详细python源码解读。原创 2024-08-19 08:04:52 · 8722 阅读 · 0 评论 -
【三维目标检测模型】Group-Free-3D
Group-Free-3D详细解析,含python源码详细解读。原创 2024-08-18 21:33:41 · 371 阅读 · 0 评论 -
【三维目标检测】H3DNet(三)
H3DNet数据和源码配置调试过程以及主干网络介绍请参考上一篇博文:【三维目标检测】FCAF3D(一)_Coding的叶子的博客-CSDN博客和xxx。本节主要详细介绍H3DNet的图元预测、Refined候选框和图元匹配过程。原创 2024-08-18 21:14:34 · 273 阅读 · 0 评论 -
【三维目标检测】H3DNet(二)
H3DNet数据和源码配置调试过程请参考上一篇博文:【三维目标检测】。本文主要详细介绍H3DNet网络结构及其运行中间状态。原创 2024-07-24 08:28:27 · 427 阅读 · 0 评论 -
【三维目标检测】H3DNet(一)
H3DNet模型属于anchor-free的三维目标检测算法,并且是在VoteNet模型基础上进行的改进。H3DNet的核心特点在于采用目标表面和棱中心的预测来对目标几何中心和尺寸的直接预测结果进行约束和改进。模型的整体结构如下图所示,采用1个几何中心、6个面中心和12个棱中心共三种图元来预测目标的候选框,并对几何中心候选框进行匹配和refine,使最终检测结果更加准确。这样一方面能够获取更加丰富的特征,另一方面对目标形状提供了更加完整的约束。另一个优势是模型对图元预测噪点的容忍度更高,结果更具鲁棒性。原创 2024-07-24 08:28:10 · 251 阅读 · 4 评论 -
Ran out of input
在使用python多进程(multiprocessing)时,程序可能会报“Ran out of input”错误。从报错结果上来看,一般是传入的数据无法读取。因此,在确定程序没有其它问题(如文件冲突、数据为空等),我们可以改变读取数据的结构,然后在进程内对数据进行重新组装。这种错误可能会在不同电脑上表现不一样,或者说跟环境相关。同样的程序,有的电脑环境能正常运行,有的则会报上述错误。下面将以open3d多进程为例,其报错具体内容如下所示。原创 2024-02-21 14:20:32 · 1002 阅读 · 0 评论 -
【三维目标检测】FCAF3D(二)
FCAF3D数据和源码配置调试过程请参考上一篇博文:。本文主要详细介绍FCAF3D网络结构及其运行中间状态。原创 2022-12-15 19:22:16 · 3655 阅读 · 0 评论 -
【三维目标检测】FCAF3D(一)
FCAF3D模型的整体结构如下图所示。该模型属于anchor-free目标检测算法。FCAF3D主干网络采用的是典型的ResNet34 FPN结构。该结构采用了三维稀疏卷积进行计算,计算过程中得到的非稀疏点作为Head预测的种子点。FPN层实现了四种不同特征尺度下的预测,各种尺度下的特征维度分别为64、128、256和512。原创 2022-12-14 07:45:47 · 4886 阅读 · 1 评论 -
mmdetection3d S3DIS (持续更新)
Mmdetection3d集成了大量3D深度学习算法,其中很大一部分可以在室内三维数据集S3DIS上运行。本节重点介绍S3DIS数据集及其在mmdetection3d中的预处理程序。原创 2022-12-13 07:44:36 · 3632 阅读 · 2 评论 -
【三维目标检测】SSN(二)
本文主要详细介绍SSN网络结构及其运行中间状态。原创 2022-12-10 09:04:57 · 4983 阅读 · 0 评论 -
【三维目标检测】SSN(一)
SSN主要结构如下图所示,其核心在于提出了shape-aware heads grouping和shape signature结构,前者针对不同类别目标设置不同Head,并得到不同尺度的特征图。相比于其他网络采用单一尺度的特征图,这种方法的可以有效提升精度,但是参数量也大大增加。从实现过程来看,这种结构实际上与增加anchor和FPN的作用相近似。另一方面,读者也可以类比以下yolov5的Head结构。原创 2022-12-09 08:59:17 · 2911 阅读 · 0 评论 -
【三维目标检测】SASSD(二)
yolo目标检测数据采用矩形框进行标注,其标注格式为[cls_id xp yp wp hp],cls_id表示目标所属的类别序号。xp、yp表示目标中心点相对坐标,其中xp等于目标的绝对横坐标除以图像宽度,yp等于目标的绝对纵坐标除以图像高度。wp和hp表示目标的相对宽度和高度,其中wp等于目标的绝对宽度除以图像宽度,hp等于目标的绝对高度除以图像高度。每张图片的标注结果以txt文本文件存储,每一行[cls_id xp yp wp hp]表示一个目标。原创 2022-12-08 15:02:44 · 3118 阅读 · 0 评论 -
【三维目标检测】SASSD(一)
SASSD是用于点云三维目标检测模型算法,发表在CVPR 2020《Structure Aware Single-stage 3D Object Detection from Point Cloud》,论文地址为“https://www4.comp.polyu.edu.hk/~cslzhang/paper/SA-SSD.pdf”。SASSD与基于Anchor的目标检测模型的结构基本保持一致,其核心特点在于采用了一个语义分割网络来辅助候选框特征提取,使产生的候选框质量更高。辅助网络这一点与PointRCNN和原创 2022-12-07 07:30:14 · 3187 阅读 · 0 评论 -
【三维目标检测】VoteNet(二)
VoteNet数据和源码配置调试过程请参考上一篇博文:xxxx。本文主要详细介绍VoteNet网络结构及其运行中间状态。 VoteNet核心思想在于通过霍夫投票的方法实现了端到端3D对象检测网络,属于anchor free的目标检测方式。传统基于anchor的三维目标检测方法会将三维点云投影到bev视图后采用二维目标检测的方式来生成目标候选框。这种方式很有可能会丢失物体细节。 VoteNet模型结构如下图所示。该模型大量用到了PointNet结构。在主干网络中,VoteNet利用原创 2022-12-05 07:47:44 · 4784 阅读 · 0 评论 -
【三维目标检测】VoteNet(一)
VoteNet核心思想在于通过霍夫投票的方法实现了端到端3D对象检测网络,属于anchor free的目标检测方式。传统基于anchor的三维目标检测方法会将三维点云投影到bev视图后采用二维目标检测的方式来生成目标候选框。这种方式很有可能会丢失物体细节。霍夫投票法最典型的示例是二维图像中霍夫直线检测。过二维平面中的定点可以得到无数条直线。如果以顶点参数为做一条直线,即将这些直线变换到参数空间,那么这个定点对应参数空间中的一条直线。原创 2022-12-04 09:13:59 · 5186 阅读 · 0 评论 -
【三维目标检测】CenterPoint(二)
CenterPoint数据和源码配置调试过程请参考上一篇博文:https://blog.csdn.net/suiyingy/article/details/128002709。本文主要详细介绍CenterPoint网络结构及其运行中间状态。 CenterPoint模型的整体结构如下图所示,由最初的一阶段模型扩展为了两阶段模型。第二阶段负责对第一阶段的检测结果进行微调修正,与基于候选框的两阶段目标检测思想基本一致。这里重点介绍CenterPoint的第一个阶段,并且单阶段的CenterPoint原创 2022-12-03 11:58:11 · 5873 阅读 · 2 评论 -
【三维目标检测】CenterPoint(一)
CenterPoint模型的整体结构如下图所示,由最初的一阶段模型扩展为了两阶段模型。第二阶段负责对第一阶段的检测结果进行微调修正,与基于候选框的两阶段目标检测思想基本一致。这里重点介绍CenterPoint的第一个阶段,并且单阶段的CenterPoint可直接完成对三维目标的检测。图1 CenterPoint模型结构CenterPoint模型的关键数据和路径包含如下几个方面。带着这几个关键点来深入理解算法程序时效率会大大提高。原创 2022-12-02 08:30:00 · 7161 阅读 · 4 评论 -
mmdetection3d nuScenes (持续更新)
Mmdetection3d集成了大量3D深度学习算法,其中很大一部分可以在智能驾驶nuScenes数据集上运行。在算法应用nuScenes数据之前,mmdetection3d提供了相应的预处理程序。关于nuScenes的详细介绍请参考本博客之前的文章。部分介绍内容会持续更新和补充。原创 2022-12-01 09:00:00 · 5110 阅读 · 8 评论 -
mmdetection3d SUN RGB-D数据集预处理
SUN RGB-D是普林斯顿大学发布的一种关于室内场景理解的数据集,共包含了10335个样本,其中训练样本和验证测试样本数量分别为5285和5050。每个样本包含了彩色图像(RGB)和深度(D)信息,并且分别进行了二维和三维标注。数据集的具体细节将在后续进行补充,这里主要介绍如何在mmdection3d中使用SUN RGB-D数据集。原创 2022-11-30 09:00:00 · 5793 阅读 · 5 评论 -
【三维目标检测】Part-A2(二)
本文主要详细介绍PartA2网络结构及其运行中间状态。原创 2022-11-29 09:00:00 · 3738 阅读 · 1 评论 -
nuScenes数据集详细介绍
nuScenes网上介绍资料较多,但是大部分仅仅是对官网的翻译,缺乏各个文件的内在联系介绍。例如,nuScenes激光雷达的数据格式,点云包含哪几种属性。再比如,sample文件夹和sweeps文件夹下的文件关系,以及是如何在相关json文件中体现的。本文将详细介绍nuScenes数据集的各个部分。原创 2022-11-28 09:24:25 · 16187 阅读 · 3 评论 -
【三维目标检测】Part-A2(一)
Part-A2的整体结构如下图所示,主要包括Part-Aware stage 和Part-aggregation stage两个阶段。Part-Aware stage主要是提取点云中各个点的特征,包括语义分割特征和目标内部点的特征,提取特征的方法是一个采用三维稀疏卷积的UNET结构。UNET是二维图像语义分割中比较常见的一个主干网络结构,Part-A2沿用了这个结构,并且将二维卷积相应地替换成三维稀疏卷积。原创 2022-11-21 07:58:08 · 4800 阅读 · 0 评论 -
mmdetection3d debug 关键文件和断点
本专栏之前博文详细介绍了mmdetection3d的安装和验证过程。在后续运行该框架下的算法模型时,我们将采用调试的模式对模型关键程序部分进行逐行解析,进而加深对模型自身的理解。为了加快算法模型的调试效率,这里记录一下mmdetection3d中的几个关键的调试断点位置。原创 2022-11-17 18:47:51 · 4110 阅读 · 0 评论 -
【三维目标检测】PointRCNN(二)
本文主要详细介绍PointRCNN网络结构及其运行中间状态。PointRCNN是用于点云三维目标检测模型算法,发表在CVPR2019《PointRCNN: 3D Object Proposal Generation and Detection From Point Cloud》。论文网址为https://arxiv.org/abs/1812.04244。PointRCNN核心思想在于使用点云前景点生成候选框,充分利用了目标点与候选框的关联性。原创 2022-11-02 08:00:00 · 4550 阅读 · 0 评论 -
【三维目标检测】PointRCNN(一)
PointRCNN属于一种两阶段目标检测网络,用于从无序的三维点云中检测出3D目标。由于三维点云空间比二维图像具有更大的搜索空间,两阶段目标检测方法需要进行特殊设计。AVOD在三维空间中放置了80-100K个候选框,并在多个视图下进行特征提取,这使得模型运算量急剧增加。PointRCNN提出了一种自下而上的三维候选框生成方法,首先基于全国场景点云分割生成第一阶段的3D proposals,将候选框与前景点直接关联,从而产生少量且高质量(高召回率)的候选框。原创 2022-11-01 07:48:59 · 4553 阅读 · 2 评论 -
最远点采样 — D-FPS与F-FPS
点云最远点采样FPS(FarthestPointSampling)方法的优势是可以尽可能多地覆盖到全部点云,但是需要多次计算全部距离,因而属于复杂度较高的、耗时较多的采样方法。原创 2022-07-29 15:53:25 · 6504 阅读 · 4 评论 -
【三维目标检测】3DSSD(二)
3DSSD三维目标检测模型发表在CVPR2020《3DSSD目前,基于体素的3D单级检测器已经有很多种,而基于点的单级检测方法仍处于探索阶段。3DSSD是一种轻量级且有效的基于点的3D单级目标检测器,在精度和效率之间取得了良好的平衡。所有现有的基于点的方法中必不可少的所有上采样层和refine操作都被放弃了,以减少大量的计算成本。3DSSD在下采样过程中提出了一种新的融合采样策略,以使对较少代表性点的检测变得可行。...原创 2022-07-28 20:52:53 · 5584 阅读 · 5 评论 -
【三维目标检测】3DSSD(一)
3DSSD模型相关的神经网络模型主要包括SSD(二维目标检测)、PointNet、PointNet++和VoteNet等。在这几个模型的基础上,3DSSD网络结构可以很好地被理解。其中,PointNet和PointNet++在本专栏的之前博文里均有详细介绍,VoteNet部分后续在进行补充。3DSSD网络模型总体结构如下图所示,主要包含backbone、CandidateGenerationLayer和PredictionHead三个部分。......原创 2022-07-27 20:38:41 · 6548 阅读 · 2 评论 -
【三维目标检测】Pointpillars(二)
PointPillars是一种基于体素的三维目标检测算法,发表在CVPR2019《PointPillars它的主要思想是把三维点云转换成2D伪图像以便用2D目标检测的方式进行目标检测。PointPillars在配置为Inteli7CPU和1080tiGPU上的预测速度为62Hz,在无人驾驶领域中常常能够使用上它,是一个落地且应用广泛的一个3D快速目标检测网络。.........原创 2022-07-20 12:18:51 · 5843 阅读 · 2 评论 -
【三维目标检测】Pointpillars(一)
Pointpillars本质上是一种基于体素的三维目标检测方法。pillar英文的意思是柱子、柱状物的意思。在pointpillars模型中,体素由一系列柱状网格组成,在Z方向上仅仅只有一个体素,整体相当于一个柱子。在Z方向上只有一个体素,这样便于将三维数据直接转换为二维数据来处理。Pointpillars主要几个关键点如下(1)输入的点云数据维度为Nx4,这四个维度分别是坐标和反射强度,x、y、z、r。将输入点云划分成柱状体素,然后将各个体素中点云的坐标减去体素中点云坐标,得到cx、cy、cz。.....原创 2022-07-19 21:09:31 · 6026 阅读 · 0 评论 -
【三维目标检测】Second 模型 (二)
Second模型的基本介绍、稀疏卷积、mini kitti数据集等请参考本专栏的上一篇博文:【三维目标检测】Second 模型 (一)_Coding的叶子的博客-CSDN博客。本节将介绍模型的详细结构与推理过程。文中参考代码来源于mmdetection3d框架中的second模型。mmdetection3d安装和调试验证可参考本博客之前的专栏,里面有详细介绍。1 second模型总体过程2 主要模块解析2.1 体素化 函数:self.voxelize(points) 输入原创 2022-07-09 09:47:45 · 6291 阅读 · 0 评论 -
【三维目标检测】Second 模型 (一)
Second算法是一种基于三维点云的目标检测算法。Second算法采用了几乎与Voxelnet三维目标检测算法完全一致的设计思路,主要差异表现在将Voxelnet CML(Convolutional Middle Layer)卷积提取特征层改为采用三维稀疏卷积进行特征提取。因此,在理解Second算法之前,推荐先看一遍voxelnet算法,详细介绍请参考之前的博客:【三维目标检测】VoxelNet(三):模型详解_Coding的叶子的博客-CSDN博客_voxelnet 点云 目标检测。 以二原创 2022-07-08 07:31:30 · 7203 阅读 · 0 评论 -
法向量点云旋转
在点云处理过程中,我们有时需要根据法向量把点云旋转到指定方向。例如,我们需要把激光雷达点云中地面旋转到与xoy平面平行。本节将详细介绍其中原理和python代码。 平面方程可以用如下公式表示:则(A, B, C)为平面的一个法向量,推导方式请参考博客:python三维点云投影(一)_Coding的叶子的博客-CSDN博客_点云投影。 如下图所示,假设向量n0是原始法向量,n1是目标向量方向。我们的目标是将n0旋转到n1方向。n0的坐标为(x0, y0, z0),n1的坐标为(x1原创 2022-07-04 08:30:00 · 5921 阅读 · 0 评论 -
mmdetection3d kitti (持续更新)
mmdetection3d kitti (持续更新) Mmdetection3d集成了大量3D深度学习算法,其中很大一部分可以在智能驾驶KITTI数据集上运行。在算法应用KITTI数据之前,mmdetection3d提供了相应的预处理程序。关于kitti的详细介绍请参考本博客之前的文章,例如:【Mini KITTI】KITTI数据集简介 — Mini KITTI_Coding的叶子的博客-CSDN博客。部分介绍内容会持续更新和补充。 mmdetection3d环境详细安装和调试请参考...原创 2022-06-15 08:45:00 · 6780 阅读 · 5 评论 -
mmdetection3d 训练
mmdetection3d 训练 本节以SECOND算法为例,简要介绍mmdetection3d second算法训练过程,含数据和python源码详细介绍。1 mmdetection3d环境安装 mmdetection3d环境详细安装和调试请参考:【mmdetection3d】mmdetection3d安装详细步骤_Coding的叶子的博客-CSDN博客。2 KITTI数据集准备mmdetection3d的kitti原始数据集主要由三部份组成,......原创 2022-06-14 08:45:00 · 7777 阅读 · 4 评论 -
【深度学习】为什么三维卷积数据量大
【深度学习】为什么三维卷积数据量大 我们可能会经常听到在三维领域深度学习的参数量会非常庞大,以至于三维卷积的深度学习方不太适用。那么三维深度学习的参数量究竟是什么情况,本文将进行具体分析。 上一节,我们研究了深度学习神经网络中参数量、模型大小和显存大小之间的相互关系和详细的计算方法,具体内容请参考:【深度学习】参数量、模型大小、显存_Coding的叶子的博客-CSDN博客。1 前提条件 我们仍然就一层卷积来进行说明,假设输入通道为C1=2...原创 2022-06-09 08:00:00 · 4706 阅读 · 0 评论 -
【点云格式互转】ply转bin、任意点云格式转ply
【点云格式互转】ply转bin、任意点云格式转ply3D点云存储方式的种类较多,包括pcd、ply、txt、bin、obj等格式,各种点云格式的详细介绍请参考之前的博客:点云格式介绍(更新中,待补充)_Coding的叶子的博客-CSDN博客_txt点云格式。本节主要介绍ply格式转bin。1 安装环境 本文介绍的方法来源于mmdetection3d,依赖于python库plyfile,安装方法如下:pip install plyfile2 示例代码 ...原创 2022-06-07 21:27:03 · 7808 阅读 · 0 评论 -
【mmdetection3d】mmdetection3d安装详细步骤
【mmdetection3d】mmdetection3d安装详细步骤原创 2022-06-07 08:10:33 · 10041 阅读 · 8 评论 -
【三维目标检测】Complex-Yolov4详解(二):模型结构
【三维目标检测】Complex-Yolov4详解(二):模型结构Complex-Yolo网络模型的核心思想是用鸟瞰图BEV替换Yolo网络输入的RGB图像。因此,在完成BEV处理之后,模型的训练和推理过程基本和Yolo完全一致。Yolov4中输入的RGB图片的尺寸维度为608x608x3,因此BEV的尺寸维度也为608x608x3,由强度图、高度图和密度图组成。Complex-Yolov4的数据处理部分详细介绍请参考:https://blog.csdn.net/suiyingy/article/detail原创 2022-06-02 09:30:00 · 6134 阅读 · 0 评论
分享