SUSTechPOINTS三维点云标注工具使用

官方地址:SUSTechPOINTS

官方中文教程

相关文章:
OpenPCDet安装、使用方式及自定义数据集训练

安装

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文件夹。

标注过程

SUSTechPOINTS三维点云标注工具使用_第1张图片

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

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

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

SUSTechPOINTS三维点云标注工具使用_第2张图片

快捷键

可以按住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)

你可能感兴趣的:(python,三维点云,openPCDet,点云标注)