【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。
参考书籍:《人工智能点云处理及深度学习算法》
H3DNet 是一种anchor-free的室内三维目标检测算法,发表在ECCV 2020 《H3DNet: 3D Object Detection Using Hybrid Geometric Primitives》,论文地址为“https://arxiv.org/abs/2006.05682”。H3DNet的核心特点在于采用目标表面和棱中心的预测来对目标几何中心和尺寸的直接预测结果进行约束和改进,是建立在VoteNet基础之上的算法模型。VoteNet采用一种投票中心(几何中心)来预测目标,而H3DNet采用1个几何中心、6个面中心和12个棱中心来预测目标。这样一方面能够获取更加丰富的特征,另一方面对目标形状提供了更加完整的约束。另一个优势是模型对图元预测噪点的容忍度更高,结果更具鲁棒性。下图所示排名数据和图片来源于paperwithcode官网(2022.12.20),目前,H3DNet在ScanNet v2数据集上三维目标检测任务的排名仍然比较靠前,地址为“https://paperswithcode.com/sota/3d-object-detection-on-scannetv2”。
1 源码与数据输入
H3DNet官方源码地址为“https://github.com/zaiweizhang/H3DNet”。这里主要介绍mmdetection3d中实现的版本。mmdetection3d安装和调试验证可参考本专栏之前的博客:【mmdetection3d】mmdetection3d安装详细步骤_Coding的叶子的博客-优快云博客_mmdetection3d,里面有详细介绍。
H3DNet官方源码支持ScanNet v2和SUN RGB-D两种数据集,而Mmdetection3d HDNetz主要支持ScanNet v2数据集。
2 mmdetection3d ScanNet V2数据处理与模型训练
Mmdetection3d关于ScanNet v2数据集的官方处理过程介绍地址为“https://github.com/open-mmlab/mmdetection3d/tree/master/data/scannet”。
2.1 ScanNet v2下载
Scannet是一个大型的室内场景数据集,其中包括真实环境的3D扫描以及标注的3D对象实例,并组织成一组场景。该数据集由斯坦福大学的一组研究人员创建,旨在支持3D场景理解研究,如对象识别、语义分割和3D重建。
Scannet是计算机视觉和3D场景理解领域的重要资源,并已在许多研究论文和项目中使用。其官方地址为“https://github.com/ScanNet/ScanNet”,并且需要发送邮件至scannet@googlegroups.com进行申请下载。
申请成功之后会获得两份python下载程序,分别对应ScanNet和ScanNet v2下载,前者仅5.6GB,而后者容量远大于这个量级。
为了快速进行算法模型研究和验证,我们仅下载数据集中的一小部分,例如下载10个扫描场景。
2.2 mmdetection 3D数据预处理
2.2.1 batch_load_scannet_data.py
运行该程序会提取点云和标注数据。程序中默认的训练集样本场景列表为meta_data/scannet_train.txt。我们需要改成scannetv2_train.txt以提取ScanNet v2的训练场景数据。如下所示。
parser.add_argument( '--train_scan_names_file', default='meta_data/scannetv2_train.txt', help='The path of the file that stores the scan names.')
如上所述,如果我们仅仅下载了一部分数据集,那么需要对data/scannet/meta_data文件夹下的训练场景列表文件scannetv2_train.txt、验证场景列表文件scannetv2_train.txt和测试场景列表文件scannetv2_train.txt进行修改,确保文件列表中的扫描场景在下载的部分数据集中即可。
2.2.2 extract_posed_images.py
运行该程序以提取RGB图像和姿态信息,并且可通过max-images-per-scene来限定每个场景中提取的图像数量。
2.2.3 mmdetection3d 处理
结合前两步,mmdetection3d ScanNet v2的处理程序如下。
cd data/scannet
python batch_load_scannet_data.py
python extract_posed_images.py
cd ../..
python tools/create_data.py scannet --root-path ./data/scannet --out-dir ./data/scannet --extra-tag scannet
2.3 目录结果
Scannet v2数据集预处理完成之后,其目录结构如下图所示。
3 H3DNet简介
H3DNet模型属于anchor-free的三维目标检测算法,并且是在VoteNet模型基础上进行的改进。H3DNet的核心特点在于采用目标表面和棱中心的预测来对目标几何中心和尺寸的直接预测结果进行约束和改进。模型的整体结构如下图所示,采用1个几何中心、6个面中心和12个棱中心共三种图元来预测目标的候选框,并对几何中心候选框进行匹配和refine,使最终检测结果更加准确。这样一方面能够获取更加丰富的特征,另一方面对目标形状提供了更加完整的约束。另一个优势是模型对图元预测噪点的容忍度更高,结果更具鲁棒性。
模型的主要过程包括:
- 采用4个PointNet2SASSG分支作为主干网络,获得种子点及其特征。
- 利用主干网络的种子点及其特征完成对几何中心、面中心和棱中心图元的投票预测,并产生初始候选框(Init. BBs)和改进后的候选框(Refined BBs)。初始候选框由几何中心产生,改进后的候选框则由三种图元共同预测产生。
- 将两种候选框进行匹配,通过损失函数重点优化两种方案共同预测正确的图元和候选框,最终提高候选框分类和位置预测的准确性。
4 模型结构与代码详解
模型详细结构及推理过程请参考下一篇博客:预计本周内更新。
5 【python三维深度学习】python三维点云从基础到深度学习_Coding的叶子的博客-优快云博客_python 数学形态 点云
【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。
更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.youkuaiyun.com/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。