Pointpillar算法复现结果分析

        由于原论文中作者只给出了基于测试集的数据结果分析(结果如下),在自己花了一天的时间训练之后与官网中作者给出的验证集结果进行对比。

pointpillar官方链接:https://github.com/zhulf0804/PointPillars?tab=readme-ov-file

论文链接:https://arxiv.org/abs/1812.05784

代码:GitHub - open-mmlab/OpenPCDet: OpenPCDet Toolbox for LiDAR-based 3D Object Detection.

算法复现:基于kitti数据集的3D目标检测算法的训练流程_mini kitti 数据集-优快云博客


目录

一、测试集结果分析

  (一)定量分析

(二)定性分析

二、验证集结果分析

(一)官方验证集结果

(二)复现结果


一、测试集结果分析

 (一)定量分析

图1:pointpillar测试集结果

        上表是KITTI测试BEV检测基准的结果,下表是KITTI测试3D检测基准的结果。所有检测结果均使

        用官方KITTI评估指标进行测量,即:鸟瞰图(BEV)、3D、2D和平均方向相似度(AOS)。2D检测在图像平面上完成,平均方向相似度评估二维检测的平均方向(以BEV为单位测量)。KITTI 数据集分为简单、中等和困难的困难,官方 KITTI 排行榜按中等性能排名。如上表 所示,PointPillars 在平均精度 (mAP)方面优于所有已发布的方法。与仅激光雷达的方法相比,PointPillars 在所有类和难度层上都取得了更好的结果,除了简单的汽车层。它还优于基于汽车和骑自行车的人的融合方法。

        虽然 PointPillars 预测 3D 定向框,但 BEV 和 3D 指标没有考虑方向。使用 AOS评估方向,这需要将 3D 框投影到图像中,执行 2D 检测匹配,然后评估这些匹配的方向。与仅预测定向框的两种 3D 检测方法相比,PointPillars 在 AOS 上的性能在所有层中显着超过。一般来说,只有图像的方法在2D检测上表现最好,因为盒子在图像中的三维投影可以导致松散的盒子,这取决于3D姿势。尽管如此,PointPillars中度自行车AOS为68.16优于最好的基于图像的方法。

图2: KITTI测试平均方向相似度(AOS)检测基准的结果。

(二)定性分析

图3: 基于kitti数据集的算法可视化结果

        上图是KITTI的定性分析。作者展示了激光雷达点云(上)的鸟瞰图,以及投影到图像中的3D边界框,以便更清晰的可视化。请注意,作者仅使用激光雷达。展示了汽车(橙色)、自行车(红色)和行人(蓝色)的基本事实(灰色)和预测框。框方向由从底部中心到框前面的直线显示。下图是KITTI上的失败案例。与上图中的相同可视化设置,但专注于几种常见的故障模式。

        作者在两张图中提供了定性结果。虽然只在激光雷达点云上进行训练,为了便于解释,作者从 BEV 和图像的角度可视化 3D 边界框预测。图 3 显示了检测结果,具有紧密方向的 3D 边界框。汽车的预测特别准确,常见的故障模式包括困难样本(部分遮挡或远处的物体)上的假阴性或相似类(vans或trams)上的假阳性。检测行人和骑自行车的人更具挑战性,导致一些有趣的故障模式。行人和骑自行车的人通常相互错误分类(有关标准示例,请参见图 4a,图 4d 用于将行人和桌子组合分类为骑自行车者)。此外,行人很容易与极点或树干等环境的狭窄垂直特征混淆(见图4b)。在某些情况下,可以正确地检测到地面实况注释中缺少的对象(参见图 4c)。

二、验证集结果分析

(一)官方验证集结果

进入官网:GitHub - open-mmlab/mmdetection3d: OpenMMLab's next-generation platform for general 3D object detection.

 根据以下路径找到pointpillar文件夹: mmdetection3d/configs/pointpillars

图4:pointpillar文件夹

点进去之后会出现文献,往下翻就能找到各种数据集的结果,这里我们找到kitti数据集、3 class的日志文件进去查看。

图5:kitti数据集官方验证结果

直接查看日志文件会有点乱(但没有办法),这里我们直接翻到文件最下面看到AP40的结果:

图6:基于kitti数据集的pointpillar官方验证集结果

(二)复现结果

AP11结果

图7: 复现结果(AP11)

AP40结果:

图8:复现结果(AP40)

其中

  • bbox:2D检测框的准确率
  • bev:bird'eye view 鸟瞰图下的准确率
  • 3d: 3D检测框的准确率
  • aos:检测目标旋转角的检测率(Average Orientation Similarity 平均方向相似度)
  • 三列代表的事不同困难程度下的结果,依次是easy(简单)、moderate(中等)和hard(困难)
  • @0.7……代表的事bbox/bev/3d评估时的IoU的阈值
  • AP_R40代表的是基于40个召回位置计算的AP

AP(Average Precision)指的是平均精度,AP11使用并不常见,现在大多采用的是AP40,它在计算精确率时使用了40个等间距的召回率值作为分类器的工作点。我们在对比结果时,主要看精度稳定的一项,对应图6即为每一类检测对象的第一块结果。

经过整体比较,本人复现结果较官方验证集数据更好,准确度方面都较高,复现结果整体较好(本人于4090服务器上训练,仅用了半天时间跑完80轮结)。

### PointPillars实现教程 #### 一、环境准备 为了成功复现PointPillars,需搭建合适的开发环境。推荐使用Anaconda管理Python环境以及依赖包安装。 ```bash conda create -n pointpillars python=3.8 conda activate pointpillars pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 ``` 上述命令创建了一个名为`pointpillars`的新虚拟环境并激活它;接着安装了PyTorch及其相关库版本匹配CUDA工具包[^1]。 #### 二、获取源码与配置文件 访问OpenPCDet仓库克隆项目至本地: ```bash git clone https://github.com/open-mmlab/OpenPCDet.git cd OpenPCDet ``` 此操作下载了包含PointPillars在内的多个点云处理算法开源实现代码。之后按照官方文档说明设置好路径变量和其他必要的预编译工作。 #### 三、数据集准备 对于KITTI这样的公开可用的数据集来说,可以参照给定链接中的指导完成下载和解压过程,并通过建立软连接的方式简化不同模型间共享同一份数据的操作[^3]。 ```bash ln -s /path/to/kitti/training ./data/kitti/training ln -s /path/to/kitti/testing ./data/kitti/testing ``` 这里假设已经提前准备好完整的KITT数据集放在指定位置,只需执行以上指令即可让PointPillars识别到所需资源。 #### 四、训练模型 调整参数设定后启动训练流程,在终端运行如下脚本开始迭代优化权重矩阵直至收敛: ```bash python train.py --cfg_file cfgs/kitti_models/pv_rcnn.yaml --batch_size 4 --epochs 80 --workers 4 ``` 这段命令指定了特定的任务配置文件(`pv_rcnn.yaml`)以及其他超参选项来控制整个学习周期内的行为表现。 #### 五、评估性能 当训练完成后可借助测试模式下的预测功能检验最终成果的好坏程度。具体做法是在验证集中挑选部分样本作为输入传入已保存的最佳checkpoint中得到输出结果并与真实情况对比分析差异大小。 ```bash python test.py --ckpt ../output/kitti_models/pv_rcnn/default/ckpt/checkpoint_epoch_80.pth --eval_all ``` 该段代码加载了第80轮次结束后的权值快照来进行全面评测,同时打印出各类指标得分供进一步研究探讨。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值