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算法解析

相关推荐
段一凡-华北理工大学13 小时前
AI推动工业智能化转型~系列文章24:钢铁工业 AI 全景图:从原料场到轧机的场景地图
人工智能·深度学习·模型生命周期·钢铁工业·ai全景
chen_zn9515 小时前
《VLA 系列》Human-to-Robot Transfer | 人类视频共训练 | 跨本体涌现迁移 | 论文解析
人工智能·深度学习·transformer·具身智能·vla
CCC:CarCrazeCurator15 小时前
DeepSeek‑Harness Windows 本地快速上手
深度学习·数据挖掘
还不秃顶的计科生16 小时前
具身智能论文学习8:Octo: An Open-Source Generalist Robot Policy
人工智能·深度学习·学习·机器学习·语言模型·vla·vlm
lucas_AI17 小时前
1.2B 小模型赢过 235B 大模型:NaviDC-OCR 把文档解析卷明白了
人工智能·深度学习·算法
杀生丸学AI17 小时前
【稀疏重建】StructSplat:基于非校准稀疏视图的可泛化3DGS
深度学习·3d·音视频·transformer·三维重建·空间智能
qfljg19 小时前
如何学习opencode和openclaw源码
深度学习
zhenaibo52120 小时前
摘要、研究背景、文献综述AI风险高,怎么优化?
人工智能·深度学习·自然语言处理
hhzz1 天前
Tiger AI 平台「手势识别」功能全解析:从数字手势 0–9,到中国手语字母,再到本地视频批量识别——一条链路,三种输入,双模型可同开;双手比划,机器秒懂
人工智能·python·深度学习·aigc·音视频
自学机械人的小白ing1 天前
深度学习系统学习
人工智能·深度学习·学习