
MMDetection3D 3D点云检测实战5分钟环境搭建到跑通PointPillars训练【免费下载链接】mmdetection3dOpenMMLabs next-generation platform for general 3D object detection.项目地址: https://gitcode.com/gh_mirrors/mm/mmdetection3d手上有一批激光雷达点云想半天之内出一版能用的车辆3D检测模型——MMDetection3D 就是为此而生的。这篇文章按环境搭建 → 数据就位 → 训练 → 出结果的任务线走一遍读完你就能独立把一条点云丢进模型、拿到带置信度的3D检测框。3D检测环境搭建5分钟装好并看到第一个检测框 ⚡这一节解决从零到第一次看到点云上长出3D框的全部步骤装环境和跑通推理 demo 一次做完。先装依赖。GPU 和 CPU 用户只有第 2 行有差别其余完全一样conda create -n mmdet3d python3.8 -y conda activate mmdet3d conda install pytorch torchvision -c pytorch # 纯CPU机器末尾加 cpuonly pip install -U openmim mim install mmengine mmcv2.0.0rc4 mmdet3.0.0 git clone https://gitcode.com/gh_mirrors/mm/mmdetection3d cd mmdetection3d pip install -v -e .3D检测环境搭建里最容易翻车的就是 mmcv 这一步如果编译报错大概率是 CUDA 版本和 PyTorch 版本没对上直接翻到文末的踩坑速查。装完立刻验证——下载一份现成的 PointPillars 配置和权重对仓库里自带的 KITTI 点云样本demo/data/kitti/000008.bin做一次推理mim download mmdet3d --config pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car --dest . python demo/pcd_demo.py demo/data/kitti/000008.bin \ pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py \ hv_pointpillars_secfpn_6x8_160e_kitti-3d-car_20220331_134606-d42d15ed.pth --show本地有显示器时会弹出一个可旋转的点云窗口车身上套着绿色检测框服务器没有显示环境就去掉--show预测结果和可视化图会落到outputs/目录里拷回来用图片查看器打开即可。图里这种点云 3D框的效果就是后文整套训练流程的最终产物。KITTI数据就位从原始文件到可训练状态就三步 这一节讲清楚下什么、放哪里、跑哪个脚本。数据格式转换是整个流程里最容易卡住的地方所以单独把 KITTI 这一个数据集讲透nuScenes、Waymo、ScanNet 等其他数据集的思路完全一样——configs/_base_/datasets/里每个数据集都有现成配置换数据集基本就是改一下配置里的数据集名和类别列表后文不再逐一展开。KITTI 的 3D 检测需要三份文件Velodyne 点云约 29 GB、训练标注 labels约 5 MB、相机标定 calib约 16 MB从 KITTI 官网下载后按这个结构解压data/kitti/ ├── training/ │ ├── velodyne/ # 训练点云 │ ├── image_2/ # 左相机图像纯点云检测不用但转换脚本会读 │ ├── label_2/ # 3D标注 │ └── calib/ # 标定 └── testing/ # velodyne/ image_2/ calib/然后一条命令完成 KITTI 数据格式转换python tools/create_data.py kitti \ --root-path ./data/kitti --out-dir ./data/kitti --extra-tag kitti跑完data/kitti/下会多出 5 个 pkl 文件kitti_infos_train.pkl、kitti_infos_val.pkl、kitti_infos_test.pkl、kitti_dbinfos_train.pkl等。验证数据有没有转换成功最简单的办法是肉眼抽查python tools/misc/browse_dataset.py kitti \ --cfg configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py \ --out-dir outputs/browse打开outputs/browse里的图确认点云、GT 框位置正常即可。这里要特别留意一点KITTI 点云标注用的是 LiDAR 坐标系而单目相机模型用的是 Depth 坐标系框架内三种坐标系的约定如下后文查数据问题时用得上PointPillars训练一条命令启动只改4个参数 为什么第一个模型选 PointPillars因为它快、省显存消费级显卡就能跑适合先把流程跑通再谈精度。它的核心思路一句话点透把点云切成一排排柱子pillar每根柱子用一个轻量网络编码再摊平成 BEV 特征图让 CNN 去卷积比 SECOND 那种逐体素稀疏卷积省一大截算力。启动命令就这么短单卡直接跑多卡把最后一行的 8 改成你的卡数python tools/train.py configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py # 多卡分布式训练 bash tools/dist_train.sh configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py 8PointPillars 训练配置里真正需要你动的参数只有几个都在configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py它继承自configs/_base_/models/pointpillars_hv_secfpn_kitti.pydata_root data/kitti/ # 数据不在这里就改它 class_names [Car] # 换成你要检测的类别 train_dataloader dict(batch_size6) # 按显存改OOM就减半 train_cfg dict(max_epochs80, val_interval2) # model 里 voxel_layer.max_voxels(16000, 40000) 是体素上限点太密可上调其余的优化器SGD 分段余弦退火、数据增强GT 采样、随机翻转、全局旋转缩放都是论文推荐值新手阶段不建议乱动。训练产物默认落在work_dirs/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car/checkpoint、日志、可视化都在这里。监控只记一条命令和两个数tensorboard --logdir work_dirs/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car/盯loss是不是平稳下降、bbox_mAP验证集 AP是不是稳步爬升。loss 震荡不降、AP 一直贴地基本不是模型问题先跳去下一节查数据和踩坑表。出结果一条命令评估一条命令看框 ✅这一节解决训练完了怎么证明模型行不行。评估和可视化都是tools/test.py一个入口区别只在参数。python tools/test.py \ configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py \ work_dirs/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car/epoch_80.pth \ --eval bbox正常跑完日志末尾应该看到类似这样的输出数值随训练情况浮动参考量级即可Car AP0.70, 0.70, 0.70: bbox AP: 90.7, 88.0, 84.8 bev AP: 89.3, 85.1, 81.1 3d AP: 87.9, 77.6, 72.9想看框就再加--out-dirpython tools/test.py \ configs/pointpillars/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py \ work_dirs/pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car/epoch_80.pth \ --out-dir outputs/pointpillarsoutputs/pointpillars/下会生成带检测框的点云可视化和每帧预测结果 pkl图片直接打开点云丢进 CloudCompare 之类的工具就能看。一个老手的经验提示如果 mAP 明显低于你的预期先别调模型——九成是数据没转对、pkl 和原始点云对不上、或者坐标系用错了用上一节的browse_dataset.py肉眼核对 GT 框是最快的排查手段。踩坑速查症状大概率原因 一行修复训练中途 OOMbatch 或体素上限超显存配置里batch_size减半或上调max_voxelsFileNotFoundError: kitti_infos_train.pkl没跑 KITTI 数据格式转换或--out-dir填错重跑python tools/create_data.py kitti --root-path ./data/kitti --out-dir ./data/kitti --extra-tag kittimmcv 编译失败PyTorch 与 CUDA 版本不匹配重装对应版本的 torch 后再mim install mmcv2.0.0rc4mAP 全 0 或异常低类别顺序、坐标系或 pkl 没更新用tools/misc/browse_dataset.py抽查 GT确认class_names顺序与标注一致--show不弹窗口服务器无显示环境去掉--show结果落outputs/后本地查看训练极慢且显存吃紧稀疏卷积后端没装按 CUDA 版本安装 spconv 2.x如pip install spconv-cu114往下走如果你想换数据集跑nuScenes、Waymo、ScanNet→ 看configs/_base_/datasets/下对应的数据集配置和tools/create_data.py支持的参数如果你想上更强的模型CenterPoint、PV-RCNN、SECOND→ 直接挑configs/centerpoint/、configs/pv_rcnn/里的配置替换训练命令流程完全一致如果你要做点云相机融合或多模态任务 → 看projects/下的 BEVFusion、DETR3D 等扩展项目以及configs/_base_/datasets/中带 camera 模态的配置想查模型精度、复现细节或提 issue → 看仓库内的docs/目录和 模型动物园说明 这类 metafile官方文档入口在docs/zh_cn/get_started.md【免费下载链接】mmdetection3dOpenMMLabs next-generation platform for general 3D object detection.项目地址: https://gitcode.com/gh_mirrors/mm/mmdetection3d创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考