MMDetection3D中使用纯点云数据集的技术指南

MMDetection3D中使用纯点云数据集的技术指南

mmdetection3d OpenMMLab's next-generation platform for general 3D object detection. mmdetection3d 项目地址: https://gitcode.com/gh_mirrors/mm/mmdetection3d

点云数据预处理

点云格式转换

在MMDetection3D中,我们目前仅支持.bin格式的点云数据进行训练和推理。如果您需要使用其他格式的点云数据,需要先进行格式转换。

常见的点云数据格式包括:

  • PCD格式:一种常见的点云数据格式
  • LAS格式:激光雷达数据常用格式
转换工具推荐
  1. PCD转BIN:可以使用开源工具进行转换
  2. LAS转BIN:通常需要先转换为PCD格式,再转为BIN格式

点云标注

MMDetection3D本身不提供点云标注功能,但可以使用以下开源标注工具:

  1. SUSTechPOINTS:适用于点云标注
  2. LATTE:提供改进版本,使用体验更佳

支持新数据格式

转换为现有格式

如果您的数据集仅包含点云文件和3D边界框标注,建议转换为以下基本格式:

[
    {
        'sample_idx': '样本ID',
        'lidar_points': {
            'lidar_path': '点云文件路径',
            ...
        },
        'annos': {
            'box_type_3d': 'LiDAR/Camera/Depth',
            'gt_bboxes_3d': '3D边界框数组',
            'gt_names': '类别名称列表',
            ...
        },
        'calib': { ... },
        'images': { ... }
    }
]

转换为中间格式

另一种方法是转换为pickle文件格式,这种格式总结了模型训练和推理所需的所有信息。一个基本的KITTI数据集示例如下:

[
    {
        'image': { ... },
        'point_cloud': { ... },
        'calib': { ... },
        'annos': { ... }
    }
]

自定义数据集实现

简单实现

如果您的pickle文件仅包含必要的键,可以直接使用Custom3DDataset

dataset_A_train = dict(
    type='Custom3DDataset',
    ann_file='annotation.pkl',
    pipeline=train_pipeline
)

复杂实现

如果需要更复杂的处理,可以创建自定义数据集类:

@DATASETS.register_module()
class MyDataset(Custom3DDataset):
    CLASSES = ('cabinet', 'bed', 'chair', ...)
    
    def __init__(self, ...):
        super().__init__(...)
        
    def get_ann_info(self, index):
        # 自定义获取标注信息的逻辑
        ...

然后在配置中使用:

dataset_A_train = dict(
    type='MyDataset',
    ann_file='annotation.pkl',
    pipeline=train_pipeline
)

数据集包装器

MMDetection3D支持多种数据集包装器来混合或修改数据集分布:

重复数据集

dataset_A_train = dict(
    type='RepeatDataset',
    times=N,
    dataset=dict(
        type='Dataset_A',
        ...
    )
)

类别平衡数据集

dataset_A_train = dict(
    type='ClassBalancedDataset',
    oversample_thr=1e-3,
    dataset=dict(
        type='Dataset_A',
        ...
    )
)

合并数据集

  1. 同类型数据集合并:
dataset_A_train = dict(
    type='Dataset_A',
    ann_file=['anno_file_1', 'anno_file_2'],
    pipeline=train_pipeline
)
  1. 不同类型数据集合并:
data = dict(
    train=[dataset_A_train, dataset_B_train],
    val=dataset_A_val,
    test=dataset_A_test
)

修改数据集类别

可以修改数据集类别来训练子集:

classes = ('person', 'bicycle', 'car')
data = dict(
    train=dict(classes=classes),
    val=dict(classes=classes),
    test=dict(classes=classes))

或者从文件读取类别:

classes = 'path/to/classes.txt'
data = dict(
    train=dict(classes=classes),
    val=dict(classes=classes),
    test=dict(classes=classes))

点云加载调整

根据点云数据的维度调整配置:

dict(
    type='LoadPointsFromFile',
    coord_type='LIDAR',
    load_dim=3,  # 点云实际维度
    use_dim=3),  # 实际使用的维度

训练设置调整

点云范围

调整point_cloud_range以改变训练点云范围:

point_cloud_range = [0, -39.68, -3, 69.12, 39.68, 1]

体素大小

体素大小voxel_size应与点云范围配合设置:

voxel_size = [0.05, 0.05, 0.1]

锚点设置

调整锚点生成器的范围和大小:

anchor_generator=dict(
    type='Anchor3DRangeGenerator',
    ranges=[
        [0, -40.0, -0.6, 70.4, 40.0, -0.6],
        ...
    ],
    sizes=[[0.8, 0.6, 1.73], ...]
)

通过以上设置,您可以有效地在MMDetection3D中使用自定义的纯点云数据集进行3D目标检测训练。

mmdetection3d OpenMMLab's next-generation platform for general 3D object detection. mmdetection3d 项目地址: https://gitcode.com/gh_mirrors/mm/mmdetection3d

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

### 适用CloudCompare的点云数据 对于寻找适用于CloudCompare的点云数据,可以考虑多个公开资源库。点云分析方法的发展确实始于PointNet和PointNet++的研究工作[^1]。然而,在获取适合特定应用的数据方面,需关注专门提供三维点云数据的平台。 #### 常见的点云数据源 - **ModelNet40**:这是一个广泛使用3D对象识别基准测试合,包含了来自40个类别的超过12,000个CAD模型。虽然原始形式不是粹的点云文件,但可以通过采样转换成PLY格式供CloudCompare读取。 - **ShapeNetCore.v2**:提供了更丰富的物体类别,并且已经预处理成了多种表示方式,包括点云版本。此数据中许多条目都具有详细的元数据描述以及高质量的几何结构,非常适合用于训练或验证基于点的操作算法。 - **Stanford Large-Scale 3D Indoor Spaces Dataset (S3DIS)**:专注于室内环境扫描场景下的大规模语义分割任务。该数据库由六个不同区域组成,每个区域内含有大量标注过的房间实例及其内部设施布局信息,全部以XYZRGB六维特征存储,可以直接加载到CloudCompare中进行探索性研究。 ```bash wget http://buildingparser.stanford.edu/dataset/area_1.zip unzip area_1.zip -d ./data/s3dis/ ``` 为了确保所选数据能够被CloudCompare顺利解析并展示,建议优先选用支持PLY、LAS/LAZ等标准交换格式的数据产品。上述提到的一些知名开源项目通常都会提供这些通用类型的下载链接或者API接口访问权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温艾琴Wonderful

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值