当前位置: 首页 > news >正文

【点云网络】voxelnet 和 pointpillar

VoxelNet 和 pointpillar 这两个网络可以认为后者是前者的升级版本,都是采用了空间划分的方法, 一个是体素,一个是pillar, 前者是3D卷积处理中间特征,后者是2D卷积处理中间特征。

voxelnet

voxelnet 应该是比较早的onestage的网络了,其网络图如下:
在这里插入图片描述

在 VoxelNet 中,网络结构主要分为三个部分:Feature Learning NetworkConvolutional Middle LayersRegion Proposal Network,以下是这三个部分的详细说明:

1. Feature Learning Network

  • 目标:将稀疏的点云数据编码为稠密的体素特征表示。
  • 过程:首先,点云数据被划分成 3D 网格的固定大小体素(voxels),每个体素中包含若干个点。然后,将每个体素的点坐标和其他特征(如反射强度)送入 Voxel Feature Encoding (VFE) 层。
  • Voxel Feature Encoding (VFE):VFE 是一种多层感知机(MLP),对体素内的每个点进行特征编码,编码的特征会通过 最大池化 操作聚合成单一体素特征,代表体素内所有点的全局信息。最终生成的体素特征图包含了每个体素的高维特征,形成了稠密的三维特征表示。
    在这里插入图片描述
    以上的内容解释如下:

FCN (全卷积网络)

  • 输入:点特征输入 ([x, y, z, r, x - v_x, y - v_y, z - v_z])
    • (r) => 反射强度
    • ((v_x, v_y, v_z)) => 同一体素中所有点的平均值
  • 输出:点特征

逐元素最大池化

  • 输入:点特征
  • 输出:局部聚合特征

点特征连接

  • 输入:点特征,局部聚合特征
  • 输出:连接后的点特征

2. Convolutional Middle Layers

  • 目标:进一步提取和聚合体素特征图,减少计算量并保留空间信息。
  • 过程:中间卷积层(Convolutional Middle Layers)使用了 3D 卷积 来提取体素特征。3D 卷积操作沿着 z 轴方向,将体素特征聚合到统一的 x-y 平面上。
  • 2D 特征图生成:通过 3D 卷积的特征聚合,三维特征图被转化为二维特征图(x-y 平面),从而简化了后续计算。在二维平面上继续进行卷积可以保留水平空间的信息,同时大大降低了计算复杂度。

3. Region Proposal Network (RPN)

  • 目标:生成候选框并完成三维物体检测。
  • 过程:在二维特征图的基础上,RPN 使用 2D 卷积 进行目标候选框的生成和分类。这类似于 Faster R-CNN 中的 RPN,但在这里是基于点云特征的二维平面操作。
  • 分类和边界框回归:RPN 中包含两个分支,一个用于物体分类(判断是否为物体),另一个用于边界框回归(预测物体的三维边界框参数,如位置和大小)。通过这两个分支,RPN 能够输出物体类别、位置、尺寸和旋转等信息。
    -在这里插入图片描述

总结

  • Feature Learning Network:通过 VFE 提取每个体素的特征,将稀疏点云转换为稠密的三维特征图。
  • Convolutional Middle Layers:使用 3D 卷积沿 z 轴聚合特征,生成 x-y 平面上的二维特征图,保留空间信息并降低计算量。
  • Region Proposal Network (RPN):基于二维特征图使用 RPN 生成候选框,并完成物体检测的分类和边界框回归。

这种架构使 VoxelNet 能够在三维点云上高效、准确地进行物体检测。

Pointpillar

创新点主要是将点云看作一个一个垂直的长条(pillar)进行处理,这个是网络结构图

在这里插入图片描述

PointPillars 的网络结构分为三个主要部分:Pillar Feature NetBackbone (2D CNN)Detection Head (SSD)。以下是每个部分的详细解读:

1. Pillar Feature Net

  • 目标:将原始点云数据转化为“柱状”特征表示,从而为后续的卷积神经网络提供有效的输入。
  • 过程
    1. 划分点云为柱(pillars):与 VoxelNet 不同,PointPillars 使用柱状划分,将点云划分为柱(pillar)。每个柱在 (x)-(y) 平面上有固定的分辨率,但在 (z) 轴上不分层。每个柱代表一个二维网格单元,因此柱内的所有点在水平方向上共享位置,但可以有不同的高度。
    2. 每个柱特征的生成:将每个柱中的点特征(例如,(x)、(y)、(z) 坐标和反射强度等)输入 Pillar Feature Net 中,通过多层感知机(MLP)提取柱的特征。
    3. 特征聚合:在 Pillar Feature Net 中,对柱内的点特征使用最大池化(Max Pooling)操作,将每个柱内所有点的特征聚合成一个统一的柱特征向量,表示该柱的全局特征。这样可以得到每个柱的固定维度特征表示。
  • 输出:最终的 Pillar Feature Net 输出一个二维特征图,在 (x)-(y) 平面上为每个柱生成特征,这些特征将用于后续的二维卷积网络。

具体过程如下:
在这里插入图片描述

堆叠柱 (Stacked Pillars)

  • (D=9),特征为 ((x, y, z, r, x_c, y_c, z_c, x_p, y_p))
    • (r) 表示反射强度
    • 下标 (c) 表示到柱中所有点的算术平均值的距离
    • 下标 (p) 表示到柱的 (x)、(y) 中心的偏移
  • (P) 表示柱的编号
  • (N) 表示每个柱中的点数。如果超过 (N) 个点,则进行采样;如果少于 (N) 个点,则补零填充。

迷你 PointNet

  • 通过迷你 PointNet,将 (D) 通道特征转换为 (C) 通道(高维特征)

最大池化

  • 将 (N) 维度减少到 1。使用最大池化从柱中聚合特征(局部上下文)

散射

  • 将特征散射回原始柱的位置,(H) 和 (W) 分别为画布的高度和宽度。

2. Backbone (2D CNN)

  • 目标:在二维平面上进一步提取特征,捕获空间上下文信息,为目标检测提供高级别特征。
  • 过程
    1. 残差网络 (ResNet):Backbone 网络采用了一个由残差模块(ResNet)组成的二维卷积神经网络,用来在 (x)-(y) 平面上进行特征提取。残差模块可以通过跳层连接(skip connections)增强特征提取的效果,使得网络能够捕获多尺度的特征信息。
    2. 多尺度特征图:为了支持对不同大小的物体进行检测,Backbone 网络生成了多尺度特征图(feature maps),分别代表不同分辨率下的特征信息。
  • 特征下采样:Backbone 网络通常会进行几次下采样操作(通过步幅和池化),从而减少特征图的空间分辨率,这可以降低计算复杂度并增大感受野,使得网络可以识别更大范围的物体。

3. Detection Head (SSD)

  • 目标:基于提取的特征图生成候选框,完成物体检测和分类。
  • 过程
    1. 单次多框检测 (Single Shot Detection, SSD):PointPillars 使用了单次多框检测(SSD)作为检测头。SSD 是一种高效的物体检测方法,通过一个单阶段网络直接输出目标类别和边界框位置。
    2. 检测框生成:检测头中的卷积层为每个特征点生成候选框。每个候选框会进行分类(判断是否为物体及其类别)和边界框回归(确定物体位置和大小)。
    3. 非极大值抑制 (Non-Maximum Suppression, NMS):在候选框生成后,会使用非极大值抑制来去除重叠度较高的框,从而得到最终的检测结果。
  • 输出:Detection Head 输出每个候选框的置信度(分类分数)和边界框位置、尺寸等信息,最终的检测结果由这些候选框组合得到。

总结

  • Pillar Feature Net:将点云划分为柱状区域,生成柱的特征表示,使原始点云信息转换为适合二维卷积的输入特征图。
  • Backbone (2D CNN):使用二维卷积网络提取多尺度的空间特征,提高检测的鲁棒性和效率。
  • Detection Head (SSD):使用单阶段 SSD 结构,直接在特征图上生成目标的候选框,完成检测和分类任务。

这种结构设计使得 PointPillars 可以高效地将稀疏点云转化为二维特征图,并在二维空间内完成检测。

相关文章:

【点云网络】voxelnet 和 pointpillar

VoxelNet 和 pointpillar 这两个网络可以认为后者是前者的升级版本,都是采用了空间划分的方法, 一个是体素,一个是pillar, 前者是3D卷积处理中间特征,后者是2D卷积处理中间特征。 voxelnet voxelnet 应该是比较早的onestage的网…...

HAL库硬件IIC驱动气压传感器BMP180

环境 1、keilMDK 5.38 2、STM32CUBEMX 初始配置 默认即可。 程序 1、头文件 #ifndef __BMP_180_H #define __BMP_180_H#include "main.h"typedef struct {float fTemp; /*温度,摄氏度*/float fPressure; /*压力,pa*/float fAltitude; /*…...

探索Python音频处理的奥秘:Pydub库的魔法

文章目录 探索Python音频处理的奥秘:Pydub库的魔法第一部分:背景介绍第二部分:Pydub是什么?第三部分:如何安装Pydub?第四部分:Pydub的简单函数使用方法1. 打开音频文件2. 播放音频3. 导出音频文…...

LeetCode 热题100(七)【链表】(2)

目录 7.6合并两个有序链表(简单) 7.7两数相加(中等) 7.8删除链表的倒数第N个节点(中等) 7.9两两交换链表中的节点(中等) 7.10k个一组翻转链表(困难) 7.6…...

计算机网络 TCP/IP体系 网络层

一. 网络层的基本概念 网络层主要负责将数据从源端主机发送到目的端主机。在这一过程中,网络层要解决的关键问题是数据包的路由选择,即确定数据包通过互联网的最佳路径。 1.1 网络层的信息类型 数据包:这是网络层传输的主要形式&#xff0c…...

迈入国际舞台,AORO M8防爆手机获国际IECEx、欧盟ATEX防爆认证

近日,深圳市遨游通讯设备有限公司(以下简称“遨游通讯”)旗下5G防爆手机——AORO M8,通过了CSA集团的严格测试和评估,荣获国际IECEx及欧盟ATEX防爆认证证书。2024年11月5日,CSA集团和遨游通讯双方领导在遨游…...

实习作假:阿里健康实习做了RABC中台,还优化了短信发送流程

最近有二本同学说:“大拿老师,能帮忙看下简历吗?” 如果是从面试官的角度来看,这个同学的实习简历是很虚假的。 但是我们一直强调的是:校招的实习简历是不能出现明显的虚假。 首先,你去公司做事情&#…...

Unity中IK动画与布偶死亡动画切换的实现

在Unity游戏开发中,Inverse Kinematics(IK)是创建逼真角色动画的强大工具。同时,能够在适当的时候切换到布偶物理状态来实现死亡动画等效果,可以极大地增强游戏的视觉体验。本文将详细介绍如何在Unity中利用IK实现常规…...

java导出word文件(手绘)

文章目录 代码细节效果图参考资料 代码细节 使用的hutool的WordUtil,WordUtil对poi进行封装,但是这一块的官方封装的很少,很多细节都没有。代码中是常见的绘制段落,标题、表格等常用api Word07Writer writer WordUtil.getWriter(…...

ssm070基于SSM框架的校园代购服务订单管理系统的设计与实现+vue(论文+源码)_kaic

毕业设计 题 目: 校园代购服务订单管理系统 作 者: 学 号: 所属学院: 专业年级: 学校导师: 职 称: 班级导师: 职 称: 完成时间…...

Java项目实战II基于Spring Boot的秒杀系统设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在互联网电商蓬勃发展的今天&#xff0…...

FastAPI —— 请求参数验证

1.hello world 给后端船数据 hello world 接口给后端传 COVID-19 感染数据_高性能 FastAPI 框架入门精讲-慕课网 #!/usr/bin/python3 # -*- coding:utf-8 -*- # __author__ __Jack__from typing import Optionalfrom fastapi import FastAPI from pydantic import BaseModel…...

第七篇: BigQuery中的复杂SQL查询

BigQuery中的复杂SQL查询 背景与目标 在数据分析中,我们通常需要从多个数据源中获取信息,以便进行深入的分析。这时,BigQuery提供的JOIN、UNION和子查询等复杂SQL语句非常实用。本文将以Google BigQuery的公共数据集为例,介绍如何…...

【SQL实验】高级查询(难点.三)含附加数据库操作

完整代码在文章末尾【代码是自己的解答,并非标准答案,也有可能写错,文中可能会有不准确或待完善之处,恳请各位读者不吝批评指正,共同促进学习交流】 将素材中的“学生管理”数据库附加到SQL SERVER中,完成以…...

qt QFileSystemModel详解

1、概述 QFileSystemModel是Qt框架中的一个关键类,它继承自QAbstractItemModel,专门用于在Qt应用程序中展示文件系统的数据。这个模型提供了一个方便的接口,使得开发者可以轻松地在应用程序中集成文件和目录的树形结构,并通过视图…...

element plus中修改el-table的样式

文章目录 前情提要相关环境package.jsonvue代码结果 方式一直接看代码 方式二直接看代码 前情提要 因为项目中用到el-table的时候,需要将el-table表格的样式进行修改,将整个表格的背景颜色从白色变成透明,使得表格变得透明之后,展…...

深入理解封装与接口:Java程序设计的核心思想与最佳实践

目录 一、封装的优点 二、接口与默认方法 三、总结 在面向对象编程(OOP)中,封装(Encapsulation)是一个核心概念,Java对其进行了良好的支持。封装不仅有助于提高代码的安全性,还能够增强代码的…...

linux 下调试 mpu6050 三轴加速度

供自己备忘; 1. 参考资料: b 站视频 https://www.bilibili.com/video/BV1cL4y1x7FA/?spm_id_from333.337.search-card.all.click&vd_sourced7a07b8689c9e646f0214227c06f304c csdn 其它博客 https://blog.csdn.net/qq_65198598/article/detail…...

C语言心型代码解析

方法一 心型极坐标方程 爱心代码你真的理解吗 笛卡尔的心型公式&#xff1a; for (y 1.5; y > -1.5; y - 0.1) for (x -1.5; x < 1.5; x 0.05) 代码里面用了二个for循环&#xff0c;第一个代表y轴&#xff0c;第二个代表x轴 二个增加的单位不同&#xff0c;能使得…...

【LeetCode】【算法】647. 回文子串

LeetCode 647.回文子串 题目描述 给你一个字符串s&#xff0c;请你统计并返回这个字符串中回文子串的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串是字符串中的由连续字符组成的一个序列。 思路 思路&#xff1a;中心拓展法 中心拓展法的意思是说&#xf…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...