BEV和OCC学习-5:数据预处理流程

参考:自定义数据预处理流程 --- MMDetection3D 1.4.0 文档

数据预处理流程的设计

预处理流程中的各项操作主要分为数据加载、预处理、格式化、测试时的数据增强。

接下来将展示一个用于 PointPillars 模型的数据集预处理流程的例子。

python 复制代码
train_pipeline = [
    dict(
        type='LoadPointsFromFile',
        load_dim=5,
        use_dim=5,
        backend_args=backend_args),
    dict(
        type='LoadPointsFromMultiSweeps',
        sweeps_num=10,
        backend_args=backend_args),
    dict(type='LoadAnnotations3D', with_bbox_3d=True, with_label_3d=True),
    dict(
        type='GlobalRotScaleTrans',
        rot_range=[-0.3925, 0.3925],
        scale_ratio_range=[0.95, 1.05],
        translation_std=[0, 0, 0]),
    dict(type='RandomFlip3D', flip_ratio_bev_horizontal=0.5),
    dict(type='PointsRangeFilter', point_cloud_range=point_cloud_range),
    dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range),
    dict(type='ObjectNameFilter', classes=class_names),
    dict(type='PointShuffle'),
    dict(type='DefaultFormatBundle3D', class_names=class_names),
    dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels_3d'])
]
test_pipeline = [
    dict(
        type='LoadPointsFromFile',
        load_dim=5,
        use_dim=5,
        backend_args=backend_args),
    dict(
        type='LoadPointsFromMultiSweeps',
        sweeps_num=10,
        backend_args=backend_args),
    dict(
        type='MultiScaleFlipAug',
        img_scale=(1333, 800),
        pts_scale_ratio=1.0,
        flip=False,
        pcd_horizontal_flip=False,
        pcd_vertical_flip=False,
        transforms=[
            dict(
                type='GlobalRotScaleTrans',
                rot_range=[0, 0],
                scale_ratio_range=[1., 1.],
                translation_std=[0, 0, 0]),
            dict(type='RandomFlip3D'),
            dict(
                type='PointsRangeFilter', point_cloud_range=point_cloud_range),
            dict(
                type='DefaultFormatBundle3D',
                class_names=class_names,
                with_label=False),
            dict(type='Collect3D', keys=['points'])
        ])
]

对于每项操作,我们将列出相关的被添加/更新/移除的字典项。

数据加载

LoadPointsFromFile

  • 添加:points

LoadPointsFromMultiSweeps

  • 更新:points

LoadAnnotations3D

  • 添加:gt_bboxes_3d, gt_labels_3d, gt_bboxes, gt_labels, pts_instance_mask, pts_semantic_mask, bbox3d_fields, pts_mask_fields, pts_seg_fields

预处理

GlobalRotScaleTrans

  • 添加:pcd_trans, pcd_rotation, pcd_scale_factor

  • 更新:points, *bbox3d_fields

RandomFlip3D

  • 添加:flip, pcd_horizontal_flip, pcd_vertical_flip

  • 更新:points, *bbox3d_fields

PointsRangeFilter

  • 更新:points

ObjectRangeFilter

  • 更新:gt_bboxes_3d, gt_labels_3d

ObjectNameFilter

  • 更新:gt_bboxes_3d, gt_labels_3d

PointShuffle

  • 更新:points

PointsRangeFilter

  • 更新:points

格式化

DefaultFormatBundle3D

  • 更新:points, gt_bboxes_3d, gt_labels_3d, gt_bboxes, gt_labels

Collect3D

  • 添加:img_meta (由 meta_keys 指定的键值构成的 img_meta)

  • 移除:所有除 keys 指定的键值以外的其他键值

测试时的数据增强

MultiScaleFlipAug

  • 更新: scale, pcd_scale_factor, flip, flip_direction, pcd_horizontal_flip, pcd_vertical_flip (与这些指定的参数对应的增强后的数据列表)

扩展并使用自定义数据集预处理方法

  1. 在任意文件中写入新的数据集预处理方法,如 my_pipeline.py,该预处理方法的输入和输出均为字典

    python 复制代码
    from mmdet.datasets import PIPELINES
    
    @PIPELINES.register_module()
    class MyTransform:
    
        def __call__(self, results):
            results['dummy'] = True
            return results
  2. 导入新的预处理方法类

    python 复制代码
    from .my_pipeline import MyTransform
  3. 在配置文件中使用该数据集预处理方法

    python 复制代码
    train_pipeline = [
        dict(
            type='LoadPointsFromFile',
            load_dim=5,
            use_dim=5,
            backend_args=backend_args),
        dict(
            type='LoadPointsFromMultiSweeps',
            sweeps_num=10,
            backend_args=backend_args),
        dict(type='LoadAnnotations3D', with_bbox_3d=True, with_label_3d=True),
        dict(
            type='GlobalRotScaleTrans',
            rot_range=[-0.3925, 0.3925],
            scale_ratio_range=[0.95, 1.05],
            translation_std=[0, 0, 0]),
        dict(type='RandomFlip3D', flip_ratio_bev_horizontal=0.5),
        dict(type='PointsRangeFilter', point_cloud_range=point_cloud_range),
        dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range),
        dict(type='ObjectNameFilter', classes=class_names),
        dict(type='MyTransform'),
        dict(type='PointShuffle'),
        dict(type='DefaultFormatBundle3D', class_names=class_names),
        dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels_3d'])
    ]
相关推荐
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
猎头南楼1 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
高洁011 天前
未来三年,AI 落地的五个确定性判断一
人工智能·深度学习·机器学习·transformer·知识图谱
2502_938530222 天前
WACV 2025 | MCOR:基于跨模态信息互补与余弦相似度通道重采样模块增强的多光谱目标检测
目标检测
`流年づ2 天前
人工智能学习笔记 - 补充
人工智能·笔记·深度学习·学习
成为深度学习高手2 天前
CrossLinear:即插即用的跨相关嵌入,让线性模型也能用好外生变量
人工智能·python·深度学习·数据挖掘
科技苑2 天前
如何打造一个高效的全栖内容制作生态系统?
深度学习
YOLO数据集集合2 天前
天空红外小目标检测数据集 | 红外小目标 天空目标检测 无人机检测 鸟类识别 低空安防9099期
人工智能·目标检测·计算机视觉·目标跟踪·无人机·无人机视角·直升机检测
江屿风2 天前
【认识深度学习】【深度学习分类与计算机视觉任务要点解析】流食般投喂
大数据·人工智能·深度学习·计算机视觉·目标跟踪·自然语言处理·语音识别
童园管理札记2 天前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法