创建点云序列输入清单 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建点云序列输入清单

清单是一个 UTF -8 编码的文件,其中每一行都是一个完整且有效的JSON对象。每行都以标准换行符 \n 或 \r\n 分隔。因为每行都必须是有效的JSON对象,所以不能有未转义的换行符。在点云序列输入清单文件中,清单中的每一行包含一个点云帧序列。序列中每帧的点云数据可以以二进制或ASCII格式存储。有关更多信息,请参阅 接受的原始 3D 数据格式。这是 3D 点云对象跟踪所需的清单文件格式。(可选)您也可以为每个点云帧提供点属性和摄像机传感器融合数据。创建序列输入清单文件时,必须以世界坐标系提供 Li DAR 和摄像机传感器融合数据。

以下示例说明了在清单中的每一行是序列文件时用于输入清单文件的语法。输入清单文件中的每一行都必须采用 Lin JSONes 格式。

{"source-ref": "s3://amzn-s3-demo-bucket/example-folder/seq1.json"} {"source-ref": "s3://amzn-s3-demo-bucket/example-folder/seq2.json"}

每个点云帧序列的数据都需要存储在JSON数据对象中。以下是用于序列文件的格式示例。有关每个帧的信息作为一个JSON对象包含并在frames列表中列出。这是一个序列文件的示例,其中包含两个点云帧文件 frame300.binframe303.bin。这些区域有:... 用于指示应在何处包含有关其他帧的信息。为序列中的每一帧添加一个JSON对象。

以下代码块包含一个用于单个序列文件的JSON对象。为了便于阅读,已对该JSON对象进行了扩展。

{ "seq-no": 1, "prefix": "s3://amzn-s3-demo-bucket/example_lidar_sequence_dataset/seq1/", "number-of-frames": 100, "frames":[ { "frame-no": 300, "unix-timestamp": 1566861644.759115, "frame": "example_lidar_frames/frame300.bin", "format": "binary/xyzi", "ego-vehicle-pose":{ "position": { "x": -2.7161461413869947, "y": 116.25822288149078, "z": 1.8348751887989483 }, "heading": { "qx": -0.02111296123795955, "qy": -0.006495469416730261, "qz": -0.008024565904865688, "qw": 0.9997181192298087 } }, "images": [ { "image-path": "example_images/frame300.bin_camera0.jpg", "unix-timestamp": 1566861644.759115, "fx": 847.7962624528487, "fy": 850.0340893791985, "cx": 576.2129134707038, "cy": 317.2423573573745, "k1": 0, "k2": 0, "k3": 0, "k4": 0, "p1": 0, "p2": 0, "skew": 0, "position": { "x": -2.2722515189268138, "y": 116.86003310568965, "z": 1.454614668542299 }, "heading": { "qx": 0.7594754093069037, "qy": 0.02181790885672969, "qz": -0.02461725233103356, "qw": -0.6496916273040025 }, "camera-model": "pinhole" }] }, { "frame-no": 303, "unix-timestamp": 1566861644.759115, "frame": "example_lidar_frames/frame303.bin", "format": "text/xyzi", "ego-vehicle-pose":{...}, "images":[{...}] }, ... ] }

下表提供了有关序列文件的顶级参数的详细信息。有关序列文件中的各个帧所需的参数的详细信息,请参阅各个点云帧的参数

参数

必需

接受的值

Description

seq-no

整数

序列的有序编号。

prefix

String

接受的值

s3://<bucket-name>/<prefix>/

序列文件所在的 Amazon S3 位置。

前缀必须以正斜杠结尾:/

number-of-frames

整数

序列文件中包含的总帧数。该数字必须与下一行中的 frames 参数列出的总帧数匹配。

frames

JSON物体清单

帧数据列表。列表长度必须等于 number-of-frames。在工作人员 UI 中,序列中的帧与该数组中的帧顺序相同。

有关每个帧的格式的详细信息,请参阅各个点云帧的参数

各个点云帧的参数

下表显示了可包含在输入清单文件中的参数。

参数

必需

接受的值

描述

frame-no

整数

帧编号。这是客户指定的可选标识符,用于识别序列中的帧。Ground Truth 不使用该标识符。

unix-timestamp

数字

unix 时间戳是从 1970 年 1 月 1 日起到传感器收集数据之前的秒数。UTC

每帧的时间戳必须不同,并且时间戳必须是连续的,因为它们用于长方体插值。理想情况下,这应该是收集数据时的真实时间戳。如果不可用,则必须使用增量时间戳序列,其中序列文件中的第一个帧对应于序列中的第一个时间戳。

frame

String

格式示例

<folder-name>/<sequence-file.json>

序列文件在 Amazon S3 中的相对位置。该相对路径将附加到您在 prefix 中指定的路径后面。

format

String

接受的字符串值"binary/xyz""binary/xyzi""binary/xyzrgb""binary/xyzirgb""text/xyz""text/xyzi""text/xyzrgb""text/xyzirgb"

默认值

binary/xyzi(在 source-ref 中指定的文件具有 .bin 扩展名时)

text/xyzi(在 source-ref 中指定的文件具有 .txt 扩展名时)

可以使用该参数以指定点云数据的格式。有关更多信息,请参阅 接受的原始 3D 数据格式

ego-vehicle-pose

JSON对象

用于收集点云数据的设备的姿势。有关该参数的更多信息,请参阅 在输入清单中包含车辆姿势信息

prefix

String

接受的字符串值格式

s3://<bucket-name>/<folder-name>/

在 Amazon S3 中存储该帧的元数据(例如摄像机图像)的位置。

前缀必须以正斜杠结尾:/

images

列表

描述用于传感器融合的彩色摄像机图像的列表参数。您最多可以在该列表中包含 8 个图像。有关每个图像所需的参数的更多信息,请参阅在输入清单中包含摄像机数据

在输入清单中包含车辆姿势信息

可以使用自主车辆位置以提供有关用于捕获点云数据的车辆姿势的信息。Ground Truth 使用这些信息来计算 Li 的DAR外在矩阵。

Ground Truth 使用外部矩阵以在 3D 场景和 2D 图像之间投影标签。有关更多信息,请参阅 传感器融合

下表提供了有关在提供自主车辆信息时所需的 position 和方向 (heading) 参数的更多信息。

参数

必需

接受的值

Description

position

JSON对象

必需的参数

xyz。为这些参数输入数字。

自主车辆在世界坐标系中的平移向量。

heading

JSON对象

必需的参数

qxqyqzqw。为这些参数输入数字。

安装在车辆上的设备或传感器(用于检测周围环境)的参照系的方向,在坐标系中以四元数 (qx, qy, qz, qw) 表示。

在输入清单中包含摄像机数据

如果要将彩色摄像机数据与帧包含在一起,请使用以下参数以提供有关每个图像的信息。当 images 参数包含在输入清单文件中时,下表中的必需列适用。您无需在输入清单文件中包含图像。

如果包含摄像机图像,则必须包含有关用于捕获图像的摄像机的 position 和方向 (heading) 信息。

如果图像发生畸变,Ground Truth 可以使用您在输入清单文件中提供的图像相关信息以自动校正畸变,包括畸变系数 (k1, k2, k3, k4, p1, p1)、摄像机型号和焦距 (fx, fy) 以及主点 (cx, cy))。要了解这些系数和校正图像畸变的更多信息,请参阅使用 OpenCV 校准摄像机。如果不包含畸变系数,则 Ground Truth 不会校正图像畸变。

参数

必需

接受的值

Description

image-path

String

格式示例

<folder-name>/<imagefile.png>

图像文件在 Amazon S3 中的相对位置。该相对路径将附加到您在 prefix 中指定的路径后面。

unix-timestamp

数字

图像的时间戳。

camera-model

字符串:

接受的值

"pinhole", "fisheye"

默认值

"pinhole"

用于捕获图像的摄像机型号。该信息用于校正摄像机图像畸变。

fx, fy

数字

摄像机在 x (fx) 和 y (fy) 方向上的焦距。

cx, cy

数字

主点的 x (cx) 和 y (cy) 坐标。

k1, k2, k3, k4

数字

径向畸变系数。鱼眼针孔摄像机型号支持。

p1, p2

数字

切向畸变系数。针孔摄像机型号支持。

skew

数字

测量图像中的任何已知偏斜的参数。

position

JSON对象

必需的参数

xyz。为这些参数输入数字。

安装在车辆上的摄像机(用于捕获图像)的参照系的位置或原点。

heading

JSON对象

必需的参数

qxqyqzqw。为这些参数输入数字。

安装在车辆上的摄像机(用于捕获图像)的参照系的方向,以四元数 (qx, qy, qz, qw) 表示。

序列文件和点云帧限制

您最多可以在输入清单文件中包含 10 万个点云帧序列。您最多可以在每个序列文件中包含 500 个点云帧。

请注意,3D 点云标注作业的预处理时间比其他 Ground Truth 任务类型长。有关更多信息,请参阅 Job 预处理时间