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文件夹下存放的是每个点云的标签文件。
如果只有激光雷达数据,可以只新建一个lidar和label文件夹。
标注过程
在浏览器页面的左上角,可以找到选择数据集文件夹和选择要标注的点云文件的下拉框按钮。选择完毕后就可以在页面中看到点云被加载进来了。
鼠标右键选择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)