首页
/ MMDetection3D中nuScenes数据集预处理加速优化方案

MMDetection3D中nuScenes数据集预处理加速优化方案

2025-06-06 16:25:59作者:邵娇湘

在3D目标检测领域,nuScenes数据集是一个重要的基准数据集,包含丰富的多模态传感器数据。然而在使用MMDetection3D框架进行数据处理时,许多开发者遇到了数据集预处理速度极慢的问题,特别是生成Ground Truth数据库(create_groundtruth_database)阶段,处理速度可能低至0.4 task/s,导致整个预处理过程需要20小时以上。

问题分析

nuScenes数据集预处理缓慢的主要原因在于默认的单线程处理方式。当处理包含28,130个训练样本的大规模数据集时,单线程处理无法充分利用现代多核CPU的计算能力。特别是在生成GT数据库阶段,需要对大量点云数据进行处理、裁剪和保存,这些操作都是计算密集型任务。

解决方案

MMDetection3D框架中其实已经内置了多线程处理工具GTDatabaseCreater,但默认仅用于Waymo数据集。通过修改create_data.py脚本,我们可以将这个高效的多线程处理器应用于nuScenes数据集预处理。

关键修改点如下:

# 替换原有的单线程处理函数
# create_groundtruth_database(dataset_name, root_path, info_prefix,
#                            f'{info_prefix}_infos_train.pkl')

# 使用多线程GTDatabaseCreater
GTDatabaseCreater(
    dataset_name,
    root_path,
    info_prefix,
    f'{info_prefix}_infos_train.pkl',
    relative_path=False,
    with_mask=False,
    num_worker=4).create()

优化效果

通过启用多线程处理后,nuScenes数据集的预处理时间从预估的20多小时大幅缩短至约3.5小时。性能提升的关键参数是num_worker,它控制着并行处理的工作线程数量。根据实际测试,设置为4个工作线程可以在大多数机器上取得良好的加速效果。

注意事项

  1. 工作线程数(num_worker)应根据实际CPU核心数进行调整,通常设置为CPU物理核心数的50-75%为宜
  2. 内存消耗会随工作线程数增加而线性增长,在内存有限的机器上需谨慎设置
  3. 预处理过程中建议监控系统资源使用情况,避免因资源耗尽导致失败

总结

对于大规模3D视觉数据集的处理,合理利用并行计算能力是提升效率的关键。MMDetection3D框架虽然提供了高效的多线程工具,但默认配置可能未针对所有数据集优化。开发者应当根据实际需求调整处理策略,充分发挥硬件性能。这一优化方案不仅适用于nuScenes数据集,其思路也可借鉴到其他3D视觉任务的预处理流程中。

登录后查看全文
热门项目推荐
相关项目推荐