点云语义标注工具PointLabeler使用

工具地址:    

https://github.com/jbehley/point_labelericon-default.png?t=N7T8https://github.com/jbehley/point_labeler

目前开源的点云语义标注工具并不多,这一款算是比较好用且不太会遇到编译问题的。

还有一款是semantic-segmentation-editor

简介

它最大的优点就是:可以同时标注在一定区块内的所有点云。也是SemantiKITT所用的标注工具。

需要提供

  • 点云原始文件(.bin格式,放在velodyne文件夹)[必需]
  • 每个点的位姿信息(poses.txt)[必需]
  • 标定文件 (calib.txt) [必需]
  • 标签文件(.label格式,标签的解析方法参考semantickitti,或者看下面的代码,放在labels文件夹)[可选]
  • 图像文件(放在image_2文件夹)[可选]

因此文件组织形式如下:

这里需要标定文件主要是因为这个工具还能在标定时,查看对应的图像。不过没有图像数据时,只需要向calib.txt填入:

P0: 1 0 0 0 0 1 0 0 0 0 1 0
P1: 1 0 0 0 0 1 0 0 0 0 1 0
P2: 1 0 0 0 0 1 0 0 0 0 1 0
P3: 1 0 0 0 0 1 0 0 0 0 1 0
Tr: 1 0 0 0 0 1 0 0 0 0 1 0

label文件的读取如下:

            label = np.fromfile(filename,dtype=np.uint32)
            label = label.reshape((-1))
            sem_label = label & 0xFFFF  # semantic label in lower half
            pred_label = label - 1
            inst_label = label >> 16  # instance id in upper half

使用

软件操作

这部分直接看github上的wiki

也可以搜其他博客,基本上都是对改文档的机翻。

位姿问题

这部分主要是针对没有位姿的情况。

这时候有两种方法。

1. 计算位姿

如果真的想同时标注多张点云(这也是官方推荐的),而手里的数据集又没有pose,这里推荐一个slam库-kiss-icp(也是官方推荐的)。安装很方便,跟着库里的教程就可以很容易的得到位姿信息,你只需要提供点云数据。

2. 单张标注

在笔者实际使用时,发现方法1标注起来有点困难,点云太过于密集了,还有一些“重叠”,总之暂时选择了单张标注,也有可能是生成的位姿不够准确

 注意:在选择这种方法时,勾选选项卡左侧的 `show single scan` ,反之则不要。

这时候只需要往poses.txt中填入

1 0 0 0 0 1 0 0 0 0 1 0
1 0 0 0 0 1 0 0 0 0 1 0
...
1 0 0 0 0 1 0 0 0 0 1 0
1 0 0 0 0 1 0 0 0 0 1 0

行数需要和点云文件数完全相等,否则会报错。

软件参数讲解

主要就是在bin/settings.cfg中的:

tile size: 150.0
max scans: 300
min range: 0.75
max range: 100

在讲解前需要先了解下该工具的运行逻辑。代码首先会读取位姿,根据tile_size将整一个数据集分为若干段(下图左上角缩略图):

通过点击缩略图的小方块(tile)就可以直接跳到对应tile所包含的点云,不过要先勾选 `follow pose` ,不然很有可能找不到点云在哪了。

 有了上述知识,就比较好理解参数:

  • tile_size 每个tile的大小,越小分辨率越高。
  • max_scan 每个tile中加载的最大点云,注意,这里并不是指文件数,而是对应的点云数目。比如max_scan = 50,程序就为提前在GPU上分配 50 * 150k点云(即每帧默认代表15w点云内存)所需要的内存。在max_scan过小时,会提示你该tile下没有加载全部点云,这时候重新打开就好了

        

  • min_range, max_range 对每一帧的点云进行距离筛选,主要是去掉车自身点云以及太远的,这个看个人需要设置。

对于单帧标注的方案,因为位姿每一帧都相同,因此会导致路径下所有点云都会被加载到一起,这时候GPU内存可能就会吃不消了,我自己的方法是手动把数据集进行切分,即将一部分放到另一个文件夹下。当然也可以向poses.txt中填入不同的位姿信息,从而利用tile完成数据集的分割。不过这个方法笔者没试过。

软件存在的问题

笔者在semanticKITTI数据集sequence00(有官方位姿、标签)上测试时,发现一打开点云非常混乱:

完全无法进行标注,但是一帧一帧看时正常的,目前还不知道原因。(在其他根据kiss-icp算出位姿的数据集则没有这种情况,最多就是上文提到的点云过于密集与重叠)

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值