SUSTechPOINTS三维点云标注工具使用


SUSTechPOINTS三维点云标注工具使用

SUSTechPOINTS使用

官方地址:SUSTechPOINTS

官方中文教程

安装

git clone https://github.com/naurril/SUSTechPOINTS
cd SUSTechPOINTS
pip install -r requirement.txt
wget https://github.com/naurril/SUSTechPOINTS/releases/download/0.1/deep_annotation_inference.h5  -P algos/models

启动

python main.py

然后浏览器打开http://127.0.0.1:8081

使用

准备数据集

SUSTechPOINTS/data目录下添加准备标注的数据集。详细的目录结构可以参考下面的结构。

+- data
    +- scene1
       +- lidar
            +- 0000.pcd
            +- 0001.pcd
       +- camera
            +- front
                 +- 0000.jpg
                 +- 0001.jpg
            +- left
                 +- ...
       +- aux_lidar
            +- front
                 +- 0000.pcd
                 +- 0001.pcd
       +- radar
            +- front_points
                 +- 0000.pcd
                 +- 0001.pcd
            +- front_tracks
                 +- ...
       +- calib
            +- camera
                 +- front.json
                 +- left.json
            +- radar
                 +- front_points.json
                 +- front_tracks.json
       +- label
            +- 0000.json
            +- 0001.json
    +- scene2

label文件夹下存放的是每个点云的标签文件。

如果只有激光雷达数据,可以只新建一个lidarlabel文件夹。

标注过程

在浏览器页面的左上角,可以找到选择数据集文件夹选择要标注的点云文件的下拉框按钮。选择完毕后就可以在页面中看到点云被加载进来了。

鼠标右键选择New,可以看到预定义了许多标注类别,这些标注类别可以在obj_cfg.js文件中找到定义。

选择新建一个Pedestrian类别,可以看到多了一个3D框。选择这个3D框,可以在左侧三个不同视图下调整方框的大小和位置。

快捷键

可以按住Ctrl,使用鼠标左键选中点云,可以进行快速框选。之后可以在这个基础上进行微调。

q ==> 逆时针旋转 e ==> 顺时针旋转

r ==> 逆时针旋转同时自动调整box大小 f ==> 顺时针选择同时自动调整box大小

g ==> 反向

1 ==> 前一个box 2 ==> 后一个box

3/PageUP ==> 前一帧点云 4/PageDown ==> 后一帧点云

先标号一个物体后,按V键进入批量操作,然后可以选择多个点云,右键选择Auto annotate,可以实现自动标注。

将label文件转化成OpenPCDet的格式

import json

filename = "777.json"

with open(filename, 'r') as f:
    data = json.load(f)

label_list = []
for obj_dict in data:
    label_name = obj_dict["obj_type"]
    pos_xyz = obj_dict["psr"]["position"]
    rot_xyz = obj_dict["psr"]["rotation"]
    scale_xyz = obj_dict["psr"]["scale"]
    
    temp = str(label_name) + " "
    for xyz_dict in [pos_xyz, scale_xyz]:
        for key in ["x", "y", "z"]:
            temp += str(xyz_dict[key])
            temp += " "
    temp += str(rot_xyz["z"]) + "\n"
    label_list.append(temp)

txt_name = filename.split(".")[0] + ".txt"
with open(txt_name, "w") as f:
    for label in label_list:
        f.write(label)

文章作者: LightningMaster
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LightningMaster !
评论
  目录