【论文】点云实例分割:3D-BoNet

1 简介

3D-BoNet是一个高效、优雅、简洁的点云实例分割算法,相较于往常算法,有high objectness、not require expensive and dense proposals、no post-processing steps等特性,主要由bounding box prediction与point mask prediction构成。
在这里插入图片描述
在这里插入图片描述

2 功能介绍

2.1 bounding box prediction

此功能以一个全局特征向量为输入,回归出若干边界盒,然后以一个联系层将真实值与预测值相联系,训练神经网络。
在这里插入图片描述
bounding box prediction

Neural Layers
以点云为输入,得到一个全局特征向量和点特征向量,这里全局特征向量经由MLPs得到一个六维的矩阵代表预测边界盒以及一个一维向量表示这些盒的置信度。

Bounding Box Association Layer
得到的边界预测盒无法直接与真实值联系进行训练,原因有三:一是数量不均等,二是顺序不对应,三是无锚点将二者联系,因此此处提出了Bounding Box Association Layer用以匹配预测值与真实值。

创建二维布尔矩阵 A A A A i , j A_{i,j} Ai,j的值代表了对应的预测盒与真实值是否联系。

将一个预测盒与真实盒联系是要有代价付出的,预测盒与真实盒越匹配,则代价越低,创建一个大小与A相同的矩阵 C C C,每一种匹配情况都对应着一个代价值,找到最小代价,就找到了最优匹配办法。

按这种思路,就把问题转化为了寻找最优解的问题。

即,在C确定的情况下,如何确定 A A A

幸运的是,这个式子已有Hungarian algorithm做以解决,因此,只需要确定好 C C C的值就行了。
在这里插入图片描述
optimal assignment problem

作者提供了三个影响代价的指标,分别是欧式距离,最小最大覆盖。

1)欧式距离容易理解,即真实值与预测值各个顶点的距离平均值,欧式距离越高,代价越大:
在这里插入图片描述
欧式距离

2)最小覆盖这一块,需要做以思考,作者抛出了一个不可忽视的情况,如图所示
在这里插入图片描述

即对于真实盒#0来说,预测盒#1与#2中,#2肯定预测的更好一点。但是#1与#0和#2与#0的欧式距离也是相等的,所以这里就要考虑一下点云最小覆盖的问题。

设输入点云 P P P N N N个点,建立 N × 1 N\times1 N×1维布尔矩阵代表点是否在真实盒里,这样,每一个点相对于某一个真实盒的情况就能直接得出,但是对于预测盒,如果我们还是以这种方式来确定,则会由于离散化导致结果不可微。

作者提出了一种point-in-pred-box-probability算法,将每一个是否在预测盒的情况转化为可以参与连续计算的概率值。概率值的获取参照其相对于预测盒最大点和最小点的距离以及两个超参数。
在这里插入图片描述
point-in-pred-box-probability

这样,就获得了这对预测盒与真实盒的所有点位情况,作者采用了交并比的思路来考察点的最小覆盖,即点云中最紧凑的部分。交并比关注重叠区域,零星分布的数据对结果影响较小。交并比越高,重合越密切,真实盒与预测盒选择越合适,代价越低,即代价与 I o U IoU IoU值呈负相关,加上负号,量化这种影响。
在这里插入图片描述
sIoU

3)对于最大覆盖,作者使用了交叉熵来考察,交叉熵关注所有预测值与真实值的差异情况,对全局都有所关照。交叉熵越小,相对熵越小,预测盒与真实盒选择越合适,代价越低,即代价与交叉熵值呈负相关,加上负号,量化这种影响。
在这里插入图片描述交叉熵

则连接代价矩阵得以获得,则 A A A得以求出,则真实盒与预测盒也得以成果匹配。
在这里插入图片描述
连接代价矩阵

Loss Functions
上述步骤仅仅是把预测值与真实值联系了起来,现在需要进行反向传播,源自于盒子联系的损失可以描述为:
在这里插入图片描述
Multi-criteria Loss for Box Prediction

仅仅考虑成功联系起来的盒是不够的,因为这样会使那些未参与连接的预测盒逃避损失方程的惩罚,即他们产生的负面影响未有考虑至损失中,这里将成功匹配的真实值盒子的置信度设为1,再次使用交叉熵来计算损失,
在这里插入图片描述
Loss for Box Score Prediction

损失方程建立,训练网络,则可求得最优的预测边界盒。

2.2 Point Mask Prediction

在预测盒足够精准的情况下,点位掩膜将很容易获取。以预测值、全局特征向量和点特征向量为输入,经由下述神经网络,得到预测掩膜。
在这里插入图片描述
Point Mask Prediction

2.3 End-to-End Implementation

考虑语义分割的损失,则总误差可以记做
在这里插入图片描述
combinedmulti-task loss

至此,完成了实例分割。

3 总结

该算法创造性的使用了 B o u n d i n g B o x A s s o c i a t i o n L a y e r Bounding Box Association Layer BoundingBoxAssociationLayer来实现预测值与真实值的连接,在条件不足的情况下完成了神经网络的建立。这是本人阅读的第一篇点云处理的英语原文文献,在被作者们的奇思妙想与大刀阔斧的研究所震撼时,也不由得惊叹其行文之流畅与逻辑之缜密。受限于硬件条件,未能对实验结果予以复现,望日后抓紧补齐知识短板,潜心修学。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
3D-BoNet 是一个用于三维物体检测的深度学习模型,可以使用自己的数据集进行训练。下面是一个大致的步骤来训练自己的数据集: 1. 数据准备: - 收集或制作带有标注的三维物体数据集。每个物体应包含其在三维空间中的边界框(bounding box)和类别标签。 - 将数据集划分为训练集和验证集,通常按照一定比例划分,以便在训练过程中评估模型的性能。 2. 数据预处理: - 对输入数据进行预处理,例如将点云数据转换为模型所需的输入格式,如 3D 网格或体素表示。 - 标准化数据,以便均值为零并具有相似的尺度。 - 可选地对数据进行增强,如旋转、平移、缩放、翻转等操作,以扩充数据集。 3. 模型配置: - 根据你的任务需求,配置 3D-BoNet 模型的网络结构、损失函数、优化器和超参数。 - 确保模型结构和输入输出尺寸与你的数据集和物体类别数目相匹配。 4. 训练模型: - 使用训练集数据进行模型训练。将输入数据送入模型,计算出模型的输出,并与标签进行比较以计算损失。 - 使用反向传播算法更新模型的权重,以最小化损失函数。 - 重复上述步骤直到达到指定的迭代次数或其他停止准则。 5. 模型评估: - 使用验证集数据评估训练好的模型的性能。计算预测结果与标签之间的准确率、精确率、召回率等指标,以评估模型在未见过的数据上的表现。 6. 调优和迭代: - 根据评估结果,调整模型的超参数、网络结构或其他配置,以改进模型性能。 - 可选地,使用更多的数据进行训练,或尝试其他数据增强技术,以进一步提高模型的泛化能力。 以上是一个大致的训练流程。具体实现时,你需要根据数据集和任务需求进行调整和优化。此外,还可以参考 3D-BoNet论文和代码库中的说明来了解更多细节和实践技巧。 希望这些信息能对你有所帮助!如果你有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值