自动驾驶系统进阶与项目实战(十)基于PointPillars的点云三维目标检测和TensorRT实战(1)

自动驾驶系统进阶与项目实战(十)基于PointPillars的点云三维目标检测和TensorRT实战(1)

发表于CVPR2019的PointPillars是目前比较受业内认可的激光雷达三维检测算法,其推理速度和性能俱佳,百度Apollo和Autoware两个开源自动驾驶项目的感知系统均包含了基于PointPillars目标检测模块。本文首先从理论层面解析PointPillars方法,接着使用PyTorch和Kitti数据集从零开始训练一个神经网络,我们将使用kitti的测试数据推理并可视化检测结果。在下一篇文章中,我们将模型导出为ONNX,并且进一步导出为TensorRT的engine模型,最后在C++项目中推理TensorRT模型。完成本文,你将能复现以下结果:

和2D图像的深度学习目标检测很不相同,点云数据具有两个显著特征:(1)相对2D图像来说,点云数据非常稀疏;(2)点云数据是三维的。为了将图像领域卷积神经网络做模式识别的经验引入三维点云中,一些深度学习方法采用了三维卷积方法或者是将点云投射为2维深度图,还有一类方法是使用鸟瞰视角(Bird’s Eye View)来组织点云数据的输入,相比于2维深度图,鸟瞰图不存在遮挡问题,但是数据分布更加稀疏,造成网络特征学习效率低下。为了解决特征稀疏问题,一种做法是对鸟瞰视角下的平面做网格划分,然后提取网格内的某些统计学特征(百度CNN-SEG即是采用此方法做特征输入),显然人为设计的统计学特征在模型泛化上可能存在缺陷,行业的新方法往往趋向于end-to-end learning,即使用神经网络去学习鸟瞰网格内的特征表示,VoxelNet是第一个这么做的(可以参考我18年的介绍VoxelNet的文章:https://blog.csdn.net/AdamShan/article/details/84837211?spm=1001.2014.3001.5501 )。但是VoxelNet及其继任者SECOND因为都采用了三维卷积,在推理上的实时性比较差。

这两个特点带来的好处包括:自学习的特征表示会有更好的泛化能力,仅采用2D卷积层在计算上显著提升了速度,此外,Pillar的数据表示不需要工程师对具体的激光雷达(线数不同,垂直角度分布不同)做配置和适配。

如果你不想使用kitti数据集从头训练一个PointPillars网络(考虑到很多读者没有训练用的GPU条件或者没有办法下载完整的Kitti 3D检测数据集),那么你还可以直接下载AdamShan训练好的模型以及一帧Kitti样例测试数据进行PointPillars网络的推理验证:

link: https://pan.baidu.com/s/1cDq5Nwi_EfZflQHHiOOZWA password: 32nn

  • checkpoint_epoch_80.pth: 笔者基于Kitti训练的Single head的pointpillars模型checkpoint文件
  • txt, png, bin:分别为Kitti测试集中的一帧数据的标定文件、左相机图片、激光雷达点云

将下载好的checkpoint文件( checkpoint_epoch_80.pth)拷贝到 output/kitti_models/pointpillar/default/ckpt/目录下,将下载好的样例数据 000099.bin拷贝到 data/kitti/testing/velodyne/目录下,将 000099.txt拷贝到 data/kitti/testing/calib/目录下,将 000099.png拷贝到 data/kitti/testing/image_2/目录下。

运行demo.py可视化模型在测试集上的推理效果:

inside your conda env
cd tools
python demo.py --cfg_file cfgs/kitti_models/pointpillar.yaml  --data_path ../data/kitti/testing/velodyne/000099.bin --ckpt ../output/kitti_models/pointpillar/default/ckpt/checkpoint_epoch_80.pth

其中 --cfg_file跟模型配置文件, --data_path跟要可视化的点云数据(测试集), --ckpt跟训练的模型的路径。可以看到单帧数据可视化的效果:

再使用以下脚本将检测结果可视化到图像中:

cd visual_tools
python draw_3d_onimg.py

*

结合Open3D的可视化效果,最终得到以下推理结果:

  • PointPillars原文:https://arxiv.org/pdf/1812.05784.pdf
  • OpenPCDet官方仓库: https://github.com/open-mmlab/OpenPCDet
  • 本文项目仓库:https://github.com/AbangLZU/EasyPointPillars
  • Adam预训练的模型文件和kitti样例数据下载链接: https://pan.baidu.com/s/1cDq5Nwi_EfZflQHHiOOZWA 密码: 32nn

Original: https://blog.csdn.net/luoganttcc/article/details/122625351
Author: luoganttcc
Title: 自动驾驶系统进阶与项目实战(十)基于PointPillars的点云三维目标检测和TensorRT实战(1)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/682736/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球