3D 点云算法

仅提供创新说明,不提供细节

文章目录

PointNet++

PointNet++

VoxelNet

VoxelNet 由三个模块组成:

  • Feature Learning Network:将点云划分为 voxel(体素),再提取特征;
  • Convolution Middle Layers:进行 3D 卷积,提取三维特征;
  • Region Proposal Network:分类并预测边界框。

Feature Learning Network

  1. Voxel Partition:
    根据点云划分 Voxel(空间网格状)。
  2. Grouping:
    将点云空间中的点划分到其位置对应的 Voxel 中,进行分组。(voxel 中没有点即为空)
  3. Random Samplling:
    对于每个 Voxel,若所含点数大于 T,则随机采样 T 个。
    • 节约开销。
    • 降低各voxel之间点个数的不平衡。(点过于密集易导致网络计算结果有偏差)
  4. Stacked Voxel Feature Encoding:
    对体素特征编码,先逐点计算,再逐元素计算,最后跳跃连接 c o n c a t ( ⋅ ) concat(·) concat(⋅)。

Convolution Middle Layers

卷积中间层,标准的 3D 卷积操作:

复制代码
 Conv3D() -> BN() -> ReLU()

Region Proposal Network

预测目标:

  • 概率评分图(Probability Score Map )
  • 回归图(Regression Map)

Loss

L = α 1 N p o s ∑ i L c l s ( p i p o s , 1 ) + β 1 N n e g ∑ j L c l s ( p j n e g , 0 ) + 1 N p o s ∑ i L r e g ( u i , u i ∗ ) L = \alpha \frac{1}{N_{pos}} \sum_i L_{cls}(p_i^{pos}, 1) + \beta \frac{1}{N_{neg}} \sum_j L_{cls}(p_j^{neg}, 0) + \frac{1}{N_{pos}} \sum_i L_{reg}(\mathbf{u}_i, \mathbf{u}_i^{*}) L=αNpos1i∑Lcls(pipos,1)+βNneg1j∑Lcls(pjneg,0)+Npos1i∑Lreg(ui,ui∗)

其中回归损失 如下:

每个预测结果对应一个 3D 框,其格式为: ( x c a , y c a , z c a , l a , w a , h a , θ a ) (x_c^a, y_c^a, z_c^a, l^a, w^a, h^a, \theta^a) (xca,yca,zca,la,wa,ha,θa)

真值为: ( x c g , y c g , z c g , l g , w g , h g , θ g ) (x_c^g, y_c^g, z_c^g, l^g, w^g, h^g, \theta^g) (xcg,ycg,zcg,lg,wg,hg,θg) ,其中

  • ( x c g , y c g , z c g ) (x_c^g, y_c^g, z_c^g) (xcg,ycg,zcg) 表示标注框中心的坐标,
  • ( l g , w g , h g ) (l^g, w^g, h^g) (lg,wg,hg) 表示标注框的长、宽、高,
  • θ g \theta^g θg 表示偏航角(Yaw)。

则回归的目标为以下七个量:
Δ x = x c g − x c a d a , Δ y = y c g − y c a d a , Δ z = z c g − z c a h a \Delta x = \frac{x_c^g - x_c^a}{d^a}, \quad \Delta y = \frac{y_c^g - y_c^a}{d^a}, \quad \Delta z = \frac{z_c^g - z_c^a}{h^a} Δx=daxcg−xca,Δy=daycg−yca,Δz=hazcg−zca

Δ l = log ⁡ l g l a , Δ w = log ⁡ w g w a , Δ h = log ⁡ h g h a , Δ θ = θ g − θ a \Delta l = \log \frac{l^g}{l^a}, \quad \Delta w = \log \frac{w^g}{w^a}, \quad \Delta h = \log \frac{h^g}{h^a}, \quad \Delta \theta = \theta^g - \theta^a Δl=loglalg,Δw=logwawg,Δh=loghahg,Δθ=θg−θa

其中:
d a = ( l a ) 2 + ( w a ) 2 d^a = \sqrt{(l^a)^2 + (w^a)^2} da=(la)2+(wa)2

参考链接(详解)

无人驾驶汽车系统入门(二十八)------基于VoxelNet的激光雷达点云车辆检测及ROS实现

SECOND

SECOND 主要是针对 VoxelNet 的改进:

  1. 引入稀疏 3D 卷积,替换 普通 3D 卷积;
  2. 针对 VoxelNet 中3D检测框:相反方向的预测会导致 角度损失 过大。

额外改进:

  1. 数据增强:采用数据库采样的操作;
  2. 针对正负样本不均衡,采用 Focal Loss

架构图


对比 VoxelNet 架构图

  1. 引入稀疏卷积

    稀疏卷积:

    • 先在输入数据中找到 有效数据,并记录其位置索引;
    • 再记录:与有效数据在 卷积核中的对应索引
    • 同时记录对应的 输出位置索引,形成输入--输出映射表(rulebook);
    • 卷积计算时,根据索引直接取出有效数据进行卷积,并按 rulebook 将结果写入输出矩阵。

    稀疏卷积内容可参考:

  2. 方向回归

    如图,作者在 Head 部分引入 direction map head,用于对物体方向 进行分类

  • why 引入 direction map 分支 ?
    当一个 3D 检测框的预测方向恰好与真实方向相反的时候,此时 偏航角(Yaw)损失会很大,非常不利于模型收敛。
  • 改进:
    对于角度损失: L θ = SmoothL1 ( sin ⁡ ( θ p − θ t ) ) L_{\theta} = \text{SmoothL1}(\sin(\theta_p - \theta_t)) Lθ=SmoothL1(sin(θp−θt))
    当角度正好相反时( ± π \pm π ±π), sin ⁡ ( ⋅ ) \sin(·) sin(⋅) 函数会将其抵消掉。
  • 此时模型预测到导致目标方向不确定,可能正好相反。(虽然 Loss 问题解决了)
    所以作者引入了 direction map 分支,用于对目标方向进行二分类(softmax loss)。

参考链接(详解)

【3D目标检测】SECOND算法解析

相关推荐
霖大侠3 小时前
CPAL: Cross-Prompting Adapter With LoRAs forRGB+X Semantic Segmentation
人工智能·深度学习·算法·机器学习·transformer
飞Link4 小时前
工业级时序异常检测利器:USAD 算法深度解析与实战
人工智能·深度学习·机器学习
高洁015 小时前
数字孪生在航空领域的应用方法及案例
python·深度学习·信息可视化·数据挖掘·transformer
小龙报6 小时前
【AI】高效交互的艺术:AI提示工程与大模型对话指南
人工智能·深度学习·神经网络·自然语言处理·chatgpt·交互·语音识别
山科智能信息处理实验室7 小时前
ACM MM 2024 | GeoFormer:基于三平面(Tri-Plane)与Transformer的高维点云补全原理解析
深度学习·3d
HyperAI超神经7 小时前
基于2.5万临床数据,斯坦福大学发布首个原生3D腹部CT视觉语言模型,Merlin在752类任务中全面领先
人工智能·深度学习·神经网络·机器学习·3d·语言模型·cpu
赋创小助手8 小时前
AMD OpenClaw:本地 AI Agent 运行平台解析,RyzenClaw 与 RadeonClaw 两种架构方案意味着什么?
服务器·人工智能·深度学习·自然语言处理·架构·数据挖掘·openclaw
nonono8 小时前
深度学习——ViT(Vision Transformer)学习(2020.10)
人工智能·深度学习·transformer