首页 > 其他分享 >VoxelNet网络结构

VoxelNet网络结构

时间:2025-01-17 12:00:13浏览次数:3  
标签:voxel Voxel 卷积 Feature VoxelNet 128 网络结构 体素

paper:https://arxiv.org/abs/1711.06396

github:https://github.com/skyhehe123/VoxelNet-pytorch.git

简介

VoxelNet是一个端到端利用点云进行3D目标检测的网络,它的最大特征是把点云转成体素(voxel,所谓体素,其实就是网格,三维空间中的网格)形式再进行特征提取。

VoxelNet填补了点云特征学习和把RPN用于3D目标检测之间的鸿沟。

VoxelNet网络结构

首先将三维点云划分为一定数量的Voxel,然后进行点的随机采样以及归一化,再对每一个非空Voxel使用若干个VFE层进行局部特征提取,得到Voxel-wise Feature,然后经过3D Convolutional Middle Layers进一步抽象特征,最后使用RPN(Region Proposal Network)对物体进行分类检测与位置回归。

Feature Learning Network

Voxel Partition

体素划分:对于输入点云,使用相同尺寸的立方体对其进行划分,这里使用一个深、高、宽分别为 (D,H,W) 的大立方体表示输入点云,每个voxel的深宽高为

( v D , v H , v W ) (v_D, v_H, v_W) (vD​,vH​,vW​),

则整个数据的三维体素化的结果在各个坐标上生成的Voxel的个数为

( D V D , H V H , W V W ) (\frac{D}{V_D},\frac{H}{V_H},\frac{W}{V_W}) (VD​D​,VH​H​,VW​W​);

Grouping

分组:规定同一voxel内的点进行统一处理。

Random Sampling

随机采样:为了减少不同voxel间点数量差距带来的不平衡和偏差,采取对每个voxel选取 T 个点(通过随机取样选取)进行后续处理的方法。

Stacked Voxel Feature Encoding

使用VFE层进行voxel特征编码:

  • 对每个非空体素voxel

V = { p i = [ x i , y i , z i , r i ] T ∈ R 4 } i = 1... t V = \left\{p_i = [x_i, y_i, z_i, r_i]^T \in R^4\right\}_{i=1...t} V={pi​=[xi​,yi​,zi​,ri​]T∈R4}i=1...t​

中的每一个点进行如下操作: 计算体素中心 ( v x , v y , v z ) (v_x, v_y, v_z) (vx​,vy​,vz​),然后强化 p i p_i pi​得到新的体素

V i n = { p i = [ x i , y i , z i , r i , x i − v x , y i − v y , z i − v z ] T ∈ R 4 } i = 1... t V_{in} = \left\{p_i = [x_i, y_i, z_i, r_i, x_i - v_x, y_i-v_y, z_i-v_z]^T \in R^4\right\}_{i=1...t} Vin​={pi​=[xi​,yi​,zi​,ri​,xi​−vx​,yi​−vy​,zi​−vz​]T∈R4}i=1...t​

V i n V_{in} Vin​作为作为VFE-Layer层的输入,即Point-wist Input。

  • Point-wist Input 通过Rule激活函数和Batch Normal运算的全连接网络,获得每一个点的特征,即Point-wist Feature。
  • 对Point-wist Feature进行逐点max-pool运算,获得局部聚合特征,即Locally Aggregated Feature。
  • 逐点连接Point-wise Feature和Locally Aggregated Feature,获取逐点连接特征,即Point-wise concatenated Feature。

Sparse Tensor Representation

稀疏张量表示:

通过前四个步骤的处理,可以得到一系列的Voxel Feature(只对非空Voxel进行),这些Voxel Feature可以使用一个4维的稀疏张量来表示 : C × D’ × H’ × W’ 。

稀疏张量只处理非空体素,这种表示体素特征的方法可以减少内存和计算资源。举个例子:

  • 沿着lidar坐标系(Z,Y,X)方向取[-3,1]×[-40,40]×[0,70.4]立方体(单位为米)作为输入点云,取Voxel的尺寸为: v D = 0.4 , v H = 0.2 , v W = 0.2 v_D=0.4, v_H=0.2, v_W=0.2 vD​=0.4,vH​=0.2,vW​=0.2, 那么我们就可以计算得出这里的D’=10,H’=400,W’=352。
  • 设置随机采用的T=35,并且采用两个VFE层:VFE-1(7,32)和VFE-2(32,128),最后的全连接层将VFE-2的输出映射到 R 128 R^{128} R128。
  • 那么最终我们的特征学习网络得到的输出即为一个尺寸为(128×10×400×352)的4D稀疏张量,其中128代表特征维度,后面是Voxel的个数。

Convolutional Middle Layers

中间卷积层:

  • 经过前面的处理后点云图的特征已经变成了规则的4D tensor,然后使用3D卷积来进行特征提取,卷积中间层在逐渐扩展的感受野中聚集voxel feature,为形状描述添加更多信息。(这一层是整个网络时间开销最大的一部分)
  • 每个卷积中间层包含一个3维卷积,一个BN层,一个非线性Relu层,用来描述一个3D卷积中间层, C i n C_{in} Cin​代表输入的通道数; C o u t C_{out} Cout​表示输出的通道数;k是卷积核的大小,对于三维卷积而言,卷积核的大小是(k ,k,k);s 表示stride ,卷积操作的步长;p即padding , 填充的尺寸。

经过FLN之后,输出变为128×10×400×352(128代表特征维度,后面是voxel的个数);

经过Conv3D(128,64,3,(2,1,1),(1,1,1)), Conv3D(64,64,3,(1,1,1),(0,1,1)), Conv3D(64,64,3,(2,1,1),(1,1,1))之后,输出变为 64×2×400×352,经过reshape,变为128×400×352。 所以输入RPN的feature map的大小就是128×400×352.

Region Proposal Network

RPN区域候选网络:

  • RPN网路的输入是通过 Convolutional Middle Layers出来的特征图;
  • 该网络包含三个全卷积层块(Block),每个块的第一层通过步长为2的卷积将特征图采样为一半,之后是三个步长为1的卷积层,每个卷积层都包含BN层和ReLU操作。将每一个块的输出都上采样到一个固定的尺寸并串联构造高分辨率的特征图。
  • 最后,该特征图通过两种2D卷积被输出到期望的学习目标:①概率评分图(Probability Score Map)②回归图(Regression Map)。

Efficient Implementation

提效措施:

(1)第一步是初始化一个tensor,储存为 K × T × 7 的feature buffer。K表示一个有存在的非空的体素的最大值,T表示的每个voxel中点的最大值。7就是每一个点编码的特征维度。

(2)第二步是对于点云中的任意一个点去查找它所在的voxel是否初始化,如果已经初始化了那么就检查是否大于T个点,没有的话就插入进去,否则不要这个点。假如这个voxel没有被初始化,那么就需要初始化并把这个点加入进去。

(3)建立了input buffer之后呢,采用GPU的并行计算对点级别和voxel级别的VFE计算,在VFE中的concate之后,把没有点的特征再次设置为0。最后,使用存储的坐标缓冲区,将计算的稀疏体素结构重新组织到密集体素网格。

标签:voxel,Voxel,卷积,Feature,VoxelNet,128,网络结构,体素
From: https://blog.csdn.net/zfjBIT/article/details/145200475

相关文章

  • 神经网络入门之一 搭建网络结构与数据采集
    此篇文章在2022年11月30日被记录转移这篇文章时,突然想到了为了采集样本在公司楼下跑步了20分钟入门神经网络一样本采集在本科的时候对神经网络颇有兴趣,感觉很神秘,特别是当时的yolov5目标检测算法,让我感觉特别震撼,计算机在图像识别上已经超过了人眼。但是这么长时间以来一直......
  • Stable Diffusion核心网络结构——VAE
    本文详细介绍SD模型的三部件之一——VAE,阐述VAE在SD模型中的作用和完整的架构。目录传统VAEStableDiffusion核心网络结构SD模型整体架构初识VAE模型【1】StableDiffusion中VAE的核心作用【2】StableDiffusion中VAE的高阶作用【3】StableDiffusion中VAE模型的完......
  • swin-transform网络结构一文详解
    简介: SwinTransformer是一种专为计算机视觉任务设计的分层Transformer架构,其主要创新在于采用了滑动窗口机制和层级化结构。这种设计使得模型在处理图像时能够高效地提取多尺度特征,同时保持较低的计算复杂度。以下是SwinTransformer网络结构的详细介绍。滑动窗口机制......
  • YOLOv11改进 | 代码逐行解析(三) | 从yaml文件到网络结构解析到模型定义
     ......
  • tensorflow快速入门--如何定义张量、定义网络结构、超参数设置、模型训练???
    前言由于最近学习的东西涉及到tensorflow的使用,故先简单的学习了一下tensorflow中如何定义张量、定义网络结构、超参数设置、模型训练的API调用过程;欢迎大家,收藏+关注,本人将持续更新。文章目录1、基本操作1、张量基础操作创建0维度张量创建1维张量创建多维张量2、转换......
  • 论文复现--基于LeNet网络结构的数字识别
    前言一直就听说学习深度学习无非就是看论文,然后复现,不断循环,这段时间也看了好几篇论文(虽然都是简单的),但是对于我一个人自学,复现成功,我感觉还是挺开心的本人初学看论文的思路:聚焦网络结构与其实验的效果LeNet虽然简单,很老了,但是毕竟经典,对于初学的的我来说,我感觉还是很......
  • 网卡与Linux网络结构(上)
    原本是想借着之前学习的中断进一步拓展到网卡与中断的,标题都写好了,结果低估了其中的知识面和难度。。。。。于是调整为了网卡与Linux网络结构(上),没错,仅仅只是上。。。我还是进一步低估了学习需要花费的时间,网络这块的确是弱项,以前都是死记硬背TCP的三次握手、四次挥手,这次正好......
  • Fast R-CNN网络结构、框架原理详解
    一、FastR-CNN简介FastR-CNN是一种基于区域卷积网络(Region-basedConvolutionalNetwork)的快速目标检测方法。是R-CNN作者RossGirshick继R-CNN之后的又一力作,原文链接。与R-CNN相同,FastR-CNN同样使用VGG16作为网络的backbone,FastR-CNN训练非常深的VGG16网络比R-CN......
  • 【YOLOv8改进 - 特征融合NECK】 HS-FPN :用于处理多尺度特征融合的网络结构,降低参数
    摘要在标准的医院血液检测中,传统过程需要医生使用显微镜从患者的血液显微图像中手动分离白细胞。然后,这些分离出的白细胞通过自动白细胞分类器进行分类,以确定血液样本中不同类型白细胞的比例和数量,从而辅助疾病诊断。这种方法不仅耗时费力,而且由于图像质量和环境条件等因素,容易出......
  • 9.2.1 简述图像分割中经常用到的编码器-解码器网络结构的设计理念。
    9.2图像分割场景描述:图像分类图像识别图像分割不同标注出每个目标的类别像素级别的图像识别,标注出图像中每个像素所属的对象类别不同对整张图像进行识别进行稠密的像素级分类应用场景视频软件中的背景替换、避开人物的弹幕模板、自动驾驶以及医疗辅助判断等分类前景分割(f......