创建点云序列输入清单 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

创建点云序列输入清单

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

以下示例说明了在清单中的每一行是序列文件时用于输入清单文件的语法。输入清单文件中的每个行必须位于JSON 行格式的日期和时间。

{"source-ref": "s3://awsexamplebucket/example-folder/seq1.json"} {"source-ref": "s3://awsexamplebucket/example-folder/seq2.json"}

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

以下代码块包含单个序列文件的 JSON 对象。JSON 对象已经过扩展,以便于阅读。

{ "seq-no": 1, "prefix": "s3://awsexamplebucket/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":[{...}] }, ... ] }

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

参数

必需

接受的值

描述

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

Number

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

List

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

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

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

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

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

参数

必需

接受的值

描述

position

JSON 对象

必需的参数

x, y, 和 z. 为这些参数输入数字。

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

heading

JSON 对象

必需的参数

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

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

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

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

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

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

参数

必需

接受的值

描述

image-path

String

格式示例

<folder-name>/<imagefile.png>

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

unix-timestamp

Number

图像的时间戳。

camera-model

字符串:

接受的值

"pinhole", "fisheye"

默认值

"pinhole"

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

fx, fy

数字

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

cx, cy

数字

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

k1, k2, k3, k4

Number

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

p1, p2

Number

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

skew

Number

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

position

JSON 对象

必需的参数

x, y, 和 z. 为这些参数输入数字。

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

heading

JSON 对象

必需的参数

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

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

序列文件和点云帧限制

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

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