

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

# 视频帧输入数据
<a name="sms-video-frame-input-data-overview"></a>

创建视频帧对象检测或对象跟踪标注作业时，可以选择视频文件（MP4 文件）或视频帧作为输入数据。所有工作人员任务都是使用视频帧创建的，因此如果选择视频文件，请使用 Ground Truth 帧提取工具从视频文件中提取视频帧（图像）。

对于这两个选项，您可以使用 Amazon A SageMaker I 控制台的 Ground Truth 部分中的**自动数据设置**选项在 Ground Truth 和您在 Amazon S3 中的输入数据之间建立连接，这样 Ground Truth 就知道在创建标签任务时在哪里查找您的输入数据。这将在 Amazon S3 输入数据集位置创建并存储输入清单文件。要了解更多信息，请参阅[设置自动视频帧输入数据](sms-video-automated-data-setup.md)。

或者，您也可以为每个需要标注的视频帧序列手动创建序列文件，并提供输入清单文件的 Amazon S3 位置，该清单文件使用 `source-ref` 键引用每个序列文件。要了解更多信息，请参阅[创建视频帧输入清单文件](sms-video-manual-data-setup.md#sms-video-create-manifest)。

**Topics**
+ [选择视频文件或视频帧作为输入数据](sms-point-cloud-video-input-data.md)
+ [输入数据设置](sms-video-data-setup.md)

# 选择视频文件或视频帧作为输入数据
<a name="sms-point-cloud-video-input-data"></a>

在创建视频帧对象检测或对象跟踪标签作业时，您可以提供一系列视频帧（图像），也可以使用 Amazon A SageMaker I 控制台让 Ground Truth 自动从您的视频文件中提取视频帧。可通过以下部分了解有关这些选项的更多信息。

## 提供视频帧
<a name="sms-video-provide-frames"></a>

视频帧是从视频文件中提取的图像序列。您可以创建 Ground Truth 标注作业，让工作人员标注多个视频帧序列。每个序列都由从单个视频中提取的图像组成。

要使用视频帧序列创建标注作业，必须在 Amazon S3 中使用唯一的[键名称前缀](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-keys)存储每个序列。在 Amazon S3 控制台中，键名称前缀是文件夹。因此，在 Amazon S3 控制台中，每个视频帧序列必须位于 Amazon S3 中自己的文件夹中。

例如，如果您有两个视频帧序列，则可以使用键名称前缀 `sequence1/` 和 `sequence2/` 来标识您的序列。在此示例中，您的序列可能位于 `s3://amzn-s3-demo-bucket/video-frames/sequence1/` 和 `s3://amzn-s3-demo-bucket/video-frames/sequence2/` 中。

如果您使用 Ground Truth 控制台创建输入清单文件，则所有序列键名称前缀应位于 Amazon S3 中的同一位置。例如，在 Amazon S3 控制台中，每个序列都可以位于 `s3://amzn-s3-demo-bucket/video-frames/` 中的文件夹中。在此示例中，您的第一个视频帧序列（图像）可能位于 `s3://amzn-s3-demo-bucket/video-frames/sequence1/` 中，而您的第二个序列可能位于 `s3://amzn-s3-demo-bucket/video-frames/sequence2/` 中。

**重要**  
即使只有一个视频帧序列需要工作人员标注，该序列也必须在 Amazon S3 中有一个键名称前缀。如果您使用的是 Amazon S3 控制台，这意味着您的序列位于文件夹中。它不能位于 S3 存储桶的根目录中。

使用视频帧序列创建工作人员任务时，Ground Truth 会为每个任务使用一个序列。在每个任务中，Ground Truth 都会使用 [UTF-8](https://en.wikipedia.org/wiki/UTF-8) 二进制顺序对视频帧进行排序。

例如，在 Amazon S3 中，视频帧可能按以下顺序排列：

```
[0001.jpg, 0002.jpg, 0003.jpg, ..., 0011.jpg]
```

按照在工作人员任务中的相同顺序排列视频帧：`0001.jpg, 0002.jpg, 0003.jpg, ..., 0011.jpg`。

也可以使用如下命名约定对帧进行排序：

```
[frame1.jpg, frame2.jpg, ..., frame11.jpg]
```

在这种情况下，在工作人员任务中，`frame10.jpg` 和 `frame11.jpg` 在 `frame2.jpg` 前面。工作人员会按以下顺序看到您的视频帧：`frame1.jpg, frame10.jpg, frame11.jpg, frame2.jpg, ..., frame9.jpg`。

## 提供视频文件
<a name="sms-point-cloud-video-frame-extraction"></a>

在控制台中创建新的标注作业时，可以使用 Ground Truth 帧拆分功能从视频文件（MP4 文件）中提取视频帧。从单个视频文件中提取的一系列视频帧被称为*视频帧序列*。

您可以让 Ground Truth 自动从视频中提取所有帧（最多 2000 帧），也可以指定帧提取频率。例如，您可以让 Ground Truth 每隔 10 帧从视频中提取一次。

使用自动数据设置提取帧时，最多可以提供 50 个视频，但是在创建视频帧对象跟踪和视频帧对象检测标注作业时，输入清单文件不能引用 10 个以上的视频帧序列文件。如果您使用自动数据设置控制台工具从 10 个以上的视频文件中提取视频帧，则需要修改该工具生成的清单文件，或创建一个新的清单文件以包含 10 个或更少的视频帧序列文件。要了解有关这些限额的更多信息，请参阅[3D 点云和视频帧标注作业限额](input-data-limits.md#sms-input-data-quotas-other)。

要使用视频帧提取工具，请参阅[设置自动视频帧输入数据](sms-video-automated-data-setup.md)。

成功从视频中提取所有视频帧后，您将在 S3 输入数据集位置中看到以下内容：
+ 以每个视频命名的键名称前缀（Amazon S3 控制台中的文件夹）。每一个前缀都会导致：
  + 从视频中提取的用于命名该前缀的视频帧序列。
  + 用于标识组成该序列的所有图像的序列文件。
+ 扩展名为 .manifest 的输入清单文件。这标识了将用于创建标注作业的所有序列文件。

从单个视频文件中提取的所有帧都用于标注任务。如果从多个视频文件中提取视频帧，则会为标注作业创建多个任务，每个视频帧序列一个任务。

 Ground Truth 会使用唯一的[键名称前缀](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#object-keys)，将提取的每个视频帧序列存储到输入数据集的 Amazon S3 位置。在 Amazon S3 控制台中，键名称前缀是文件夹。

# 输入数据设置
<a name="sms-video-data-setup"></a>

创建视频帧标注作业时，需要让 Ground Truth 知道在哪里查找输入数据。您可以通过两种方式之一来执行此操作：
+ 您可以将输入数据存储在 Amazon S3 中，并让 Ground Truth 自动检测用于标注作业的输入数据集。在[设置自动视频帧输入数据](sms-video-automated-data-setup.md)中了解有关此选项的更多信息。
+ 您可以创建输入清单文件和序列文件并将其上传到 Amazon S3。在[手动设置视频帧输入数据](sms-video-manual-data-setup.md)中了解有关此选项的更多信息。

**Topics**
+ [设置自动视频帧输入数据](sms-video-automated-data-setup.md)
+ [手动设置视频帧输入数据](sms-video-manual-data-setup.md)

# 设置自动视频帧输入数据
<a name="sms-video-automated-data-setup"></a>

您可以使用 Ground Truth 自动数据设置自动检测 Amazon S3 存储桶中的视频文件并从这些文件中提取视频帧。要了解如何操作，请参阅[提供视频文件](sms-point-cloud-video-input-data.md#sms-point-cloud-video-frame-extraction)。

如果 Amazon S3 中已有视频帧，则可以使用自动数据设置在标注作业中使用这些视频帧。对于此选项，来自单个视频的所有视频帧必须使用唯一的前缀来存储。要了解使用此选项的要求，请参阅[提供视频帧](sms-point-cloud-video-input-data.md#sms-video-provide-frames)。

选择以下部分之一，了解如何设置与 Ground Truth 的自动输入数据集连接。

## 提供视频文件和提取帧
<a name="sms-video-provide-files-auto-setup-console"></a>

使用以下过程将视频文件与 Ground Truth 连接起来，并自动从这些文件中提取视频帧以进行视频帧对象检测和对象跟踪标注作业。

**注意**  
如果您使用自动数据设置控制台工具从 10 个以上的视频文件中提取视频帧，则需要修改该工具生成的清单文件，或创建一个新的清单文件以包含 10 个或更少的视频帧序列文件。要了解更多信息，请参阅[提供视频文件](sms-point-cloud-video-input-data.md#sms-point-cloud-video-frame-extraction)。

确保您的视频文件存储在您执行自动数据设置所在 AWS 区域的 Amazon S3 存储桶中。

**使用 Ground Truth 自动连接 Amazon S3 中的视频文件并提取视频帧：**

1. 导航至 Amazon A SageMaker I 控制台中的**创建标签作业**页面：g [https://console.aws.amazon.com/sagemaker/roundtruth](https://console.aws.amazon.com//sagemaker/groundtruth)。

   输入和输出 S3 存储桶必须位于创建标注作业的同一 AWS 区域中。此链接将您带到北弗吉尼亚州 (us-east- AWS 1) 区域。如果输入数据在另一个区域的 Amazon S3 存储桶中，请切换到该区域。要更改您的 AWS 区域，请在[导航栏](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/getting-started.html#select-region)上选择当前显示的区域的名称。

1. 选择**创建标注作业**。

1. 输入**作业名称**。

1. 在**输入数据设置**部分，选择**自动数据设置**。

1. 输入 Amazon S3 URI 作为**输入数据集的 S3 位置**。S3 URI 如下所示：`s3://amzn-s3-demo-bucket/path-to-files/`。此 URI 应指向存储视频文件的 Amazon S3 位置。

1. 指定**输出数据集的 S3 位置**。这是存储输出数据的位置。您可以选择将输出数据存储在**与输入数据集相同的位置**，或**指定新位置**，并输入您要存储输出数据的位置的 S3 URI。

1. 使用下拉列表为**数据类型**选择**视频文件**。

1. 选择**是的，为对象跟踪和检测任务提取帧**。

1. 选择一种**帧提取**方法。
   + 当您选择**使用从视频中提取的所有帧来创建标注任务**时，Ground Truth 将从**输入数据集的 S3 位置**的每个视频中提取所有帧，最多可提取 2000 帧。如果输入数据集中的视频包含 2000 多个帧，则会提取前 2000 个帧用于该标注任务。
   + 当您选择 “**使用视频中的每一*x*帧来创建标注任务**” 时，Ground *x* Truth 会从您 **S3 位置的每个视频中提取每一帧作为输入数据集**。

     例如，如果您的视频长度为 2 秒，[帧频](https://en.wikipedia.org/wiki/Frame_rate)为每秒 30 帧，那么视频中就有 60 个帧。如果在此指定 10，Ground Truth 将提取视频中的每第 10 帧。这意味着提取第 1、第 10、第 20、第 30、第 40、第 50 和第 60 帧。

1. 选择或创建 IAM 执行角色。确保此角色有权访问您的 Amazon S3 位置以获取步骤 5 和 6 中指定的输入和输出数据。

1. 选择**完成数据设置**。

## 提供视频帧
<a name="sms-video-provide-frames-auto-setup-console"></a>

使用以下过程将视频帧序列与 Ground Truth 连接起来，以进行视频帧对象检测和对象跟踪标注作业。

确保您的视频帧存储在您执行自动数据设置所在 AWS 区域的 Amazon S3 存储桶中。每个视频帧序列都应该有唯一的前缀。例如，如果您在 `s3://amzn-s3-demo-bucket/video-frames/sequences/` 中存储了两个序列，则每个序列都应该有一个唯一的前缀（如 `sequence1` 和 `sequence2`），并且都应该位于 `/sequences/` 前缀的正下方。在上面的示例中，这两个序列的位置是：`s3://amzn-s3-demo-bucket/video-frames/sequences/sequence1/` 和 `s3://amzn-s3-demo-bucket/video-frames/sequences/sequence2/`。

**自动将您在 Amazon S3 中的视频帧与 Ground Truth 连接：**

1. 导航至 Amazon A SageMaker I 控制台中的**创建标签作业**页面：g [https://console.aws.amazon.com/sagemaker/roundtruth](https://console.aws.amazon.com//sagemaker/groundtruth)。

   输入和输出 S3 存储桶必须位于创建标注作业的同一 AWS 区域中。此链接将您带到北弗吉尼亚州 (us-east- AWS 1) 区域。如果输入数据在另一个区域的 Amazon S3 存储桶中，请切换到该区域。要更改您的 AWS 区域，请在[导航栏](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/getting-started.html#select-region)上选择当前显示的区域的名称。

1. 选择**创建标注作业**。

1. 输入**作业名称**。

1. 在**输入数据设置**部分，选择**自动数据设置**。

1. 输入 Amazon S3 URI 作为**输入数据集的 S3 位置**。

   这应该是存储序列的 Amazon S3 位置。例如，如果在 `s3://amzn-s3-demo-bucket/video-frames/sequences/sequence1/`、`s3://amzn-s3-demo-bucket/video-frames/sequences/sequence2/` 中存储了两个序列，请在此处输入 `s3://amzn-s3-demo-bucket/video-frames/sequences/`。

1. 指定**输出数据集的 S3 位置**。这是存储输出数据的位置。您可以选择将输出数据存储在**与输入数据集相同的位置**，或**指定新位置**，并输入您要存储输出数据的位置的 S3 URI。

1. 使用下拉列表为**数据类型**选择**视频帧**。

1. 选择或创建 IAM 执行角色。确保此角色有权访问您的 Amazon S3 位置以获取步骤 5 和 6 中指定的输入和输出数据。

1. 选择**完成数据设置**。

这些过程将在您在步骤 5 中指定的输入数据集的 Amazon S3 位置创建输入清单。如果您要使用 SageMaker API 或、或 AWS SDK 创建标签任务 AWS CLI，请使用此输入清单文件的 Amazon S3 URI 作为参数的输入`ManifestS3Uri`。

# 手动设置视频帧输入数据
<a name="sms-video-manual-data-setup"></a>

如果您已为每个视频帧序列创建了序列文件，并在清单文件中列出了对这些序列文件的引用，请选择手动数据设置选项。

## 创建视频帧输入清单文件
<a name="sms-video-create-manifest"></a>

 在创建标注任务时，Ground Truth 使用输入清单文件来标识输入数据集的位置。对于视频帧对象检测和对象跟踪标注作业，输入清单文件中的每一行都标识视频帧序列文件的位置。每个序列文件标识单个视频帧序列中包含的图像。

使用本页可以了解如何为视频帧对象跟踪和对象检测标注作业创建视频帧序列文件和输入清单文件。

如果您希望 Ground Truth 自动生成序列文件和输入清单文件，请参阅[设置自动视频帧输入数据](sms-video-automated-data-setup.md)。

### 创建视频帧序列输入清单
<a name="sms-video-create-input-manifest-file"></a>

在视频帧序列输入清单文件中，清单中的每一行都是一个 JSON 对象，其中有一个引用序列文件的 `"source-ref"` 键。每个序列文件标识视频帧序列的位置。这是所有视频帧标注作业所需的清单文件格式。

下面的示例演示了用于输入清单文件的语法：

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

### 创建视频帧序列文件
<a name="sms-video-create-sequence-file"></a>

每个视频帧序列的数据需要存储在一个 JSON 数据对象中。以下是用于序列文件的格式示例。有关每个帧的信息将包含为 JSON 对象并在 `frames` 列表中列出。为了便于阅读，下面的 JSON 已经扩展。

```
{
 "seq-no": 1,
 "prefix": "s3://amzn-s3-demo-bucket/prefix/video1/",
 "number-of-frames": 3,
 "frames":[
   {"frame-no": 1, "unix-timestamp": 1566861644, "frame": "frame0001.jpg" },
   {"frame-no": 2, "unix-timestamp": 1566861644, "frame": "frame0002.jpg" }, 
   {"frame-no": 3, "unix-timestamp": 1566861644, "frame": "frame0003.jpg" }   
 ]
}
```

下表详细介绍了此代码示例中显示的参数。


****  

|  参数  |  必需  |  接受的值  |  Description  | 
| --- | --- | --- | --- | 
|  `seq-no`  |  是  |  整数  |  序列的有序编号。  | 
|  `prefix`  |  是  |  字符串 **接受的值**： `s3://<bucket-name>/<prefix>/`  |  序列文件所在的 Amazon S3 位置。 前缀必须以正斜杠结尾：`/`。  | 
|  `number-of-frames`  |  是  |  整数  |  序列文件中包含的总帧数。该数字必须与下一行中的 `frames` 参数列出的总帧数匹配。  | 
|  `frames`  |  是  |  JSON 对象列表 **必需**： `frame-no`, `frame` **可选**： `unix-timestamp`  |  帧数据列表。列表长度必须等于 `number-of-frames`。在工作人员 UI 中，序列中的帧以 [UTF-8](https://en.wikipedia.org/wiki/UTF-8) 二进制顺序排序。要了解有关此排序的更多信息，请参阅[提供视频帧](sms-point-cloud-video-input-data.md#sms-video-provide-frames)。  | 
| frame-no |  是  |  整数  |  帧顺序号。这将决定帧在序列中的顺序。  | 
|  `unix-timestamp`  |  否  |  整数  |  帧的 unix 时间戳。从 1970 年 1 月 1 日到捕获帧时的 UTC 时间的秒数。  | 
| frame |  是  |  字符串  |  视频帧图像文件的名称。  | 