在自动驾驶工作中,激光雷达点云的处理必不可少,比较传统的算法库是pcl,它提供了点云可视化工具pcl_viewer,但在深度学习模型开发过程中,我们不仅仅需要显示点云,还需要显示检测结果。

因此不管是pcl_viewer,还是CloudCompare都无法满足要求。

那么能不能有这样的一个工具,首先能够可视化点云和包围盒,除此之外还足够灵活(可以定制数据处理过程)。灵活很好实现,比较确定的路线是python,足够灵活,定制起来也很方便,可视化就一直没搞定,找不到比较好的库,最后不得不说,找到了open3d,很多方面都设计的非常优秀。 。

技术方案大致确定了,利用open3d作为底层图形库,用python搭框架来实现可视化点云和标签。功能上

  1. 支持主流的数据集,可以直接显示数据。
  2. 用户可以自定义数据处理函数,足够灵活。
  3. 支持数据分析和数据清洗。

等到我想出来,实际上open3d-ml已经实现了类似的事情,并且还集成了深度学习的训练过程。不过pcdviz更专注于做显示和分析,不涉及深度学习训练,因此在一些场景可能也有用武之地。

下面我们开始介绍pcdviz

github.com/daohu527/pcdviz

安装

你可以通过以下命令快速的安装pcdviz

pip3 install pcdviz

安装完成之后,你可以在很多场景中使用它,下面我们举一些示例。

显示点云

如果你仅仅只是想显示点云,可以通过以下命令快速的实现

pcdviz --pcd=data/kitti/velodyne/training/000003.bin --example

# --example 为示例,正式使用中不需要

pcdviz~点云可视化工具_数据集

显示多个点云

如果你想显示多个点云,例如在查找地面过程中显示地面和非地面,或者在点云配准过程中查看2帧点云的配准结果。

从这里开始,为了灵活配置,会使用配置文件的方式

pcdviz --cfg=config/multi_pointcloud.yaml --example

pcdviz~点云可视化工具_点云_02

显示点云和包围盒

显示点云,以及检测结果(包围盒),你可以设置多个标签,例如同时显示ground truth和模型推理的结果,方便进行对比。

pcdviz --cfg=config/frame_visualize.yaml --example

pcdviz~点云可视化工具_深度学习_03

显示数据集

你也可以显示整个数据集,并且通过快捷键(按键N)来切换下一帧。

pcdviz --cfg=config/dataset_visualize.yaml --example

pcdviz~点云可视化工具_数据集_04

计划

目前还遗留2个大的工作没有完成。一是用户自定义的回调,目前已经把回调的接口设计完成了,功能还没有实现,二是数据集统计和过滤的工作还没有完成。