Criar um arquivo manifesto de entrada de quadro da nuvem de pontos - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar um arquivo manifesto de entrada de quadro da nuvem de pontos

O manifesto é um arquivo codificado em UTF-8 em que cada linha é um objeto JSON completo e válido. Cada linha é delimitada por uma quebra de linha padrão, \n ou \r\n. Como cada linha deve ser um objeto JSON válido, não é possível ter caracteres de quebra de linha sem escape. No arquivo manifesto de entrada de quadro único, cada linha no manifesto contém dados para um quadro da nuvem de pontos único. Os dados de quadro da nuvem de pontos podem ser armazenados no formato binário ou ASCII (consulte Formatos aceitos de dados 3D brutos). Essa é a formatação do arquivo manifesto necessária para a detecção de objetos e a segmentação semântica da nuvem de pontos 3D. Se preferir, você também poderá fornecer dados de fusão de sensores de câmera para cada quadro de nuvem de pontos.

O Ground Truth oferece apoio à nuvem de pontos e à fusão de sensores da câmera de vídeo no sistema de coordenadas mundial para todas as modalidades. Se você conseguir obter o sensor 3D extrínseco (como um LiDAR extrínseco), recomendamos que transforme quadros de nuvem de pontos 3D no sistema de coordenadas mundial usando o extrínseco. Para obter mais informações, consulte Fusão de sensores.

No entanto, se não conseguir obter uma nuvem de pontos no sistema de coordenadas mundial, você poderá fornecer coordenadas no sistema de coordenadas original em que os dados foram capturados. Se estiver fornecendo dados de câmera para fusão de sensores, é recomendável que você forneça o sensor LiDAR e a pose de câmera no sistema de coordenadas mundial.

Para criar um arquivo manifesto de entrada de quadro único, identifique o local de cada quadro da nuvem de pontos que deseja que os operadores rotulem usando a chave source-ref. Além disso, é necessário usar a chave source-ref-metadata para identificar o formato do conjunto de dados, um timestamp para esse quadro e, opcionalmente, dados de fusão de sensores e imagens da câmera de vídeo.

O exemplo a seguir demonstra a sintaxe usada para um arquivo manifesto de entrada para um trabalho de rotulagem de nuvem de pontos de quadro único. O exemplo inclui dois quadros de nuvem de pontos. Para obter detalhes sobre cada parâmetro, consulte a tabela que segue este exemplo.

Importante

Cada linha no arquivo manifesto de entrada deve estar no formato JSON Lines. O seguinte bloco de código mostra um arquivo manifesto de entrada: Cada objeto JSON é usado para apontar e fornecer detalhes sobre um único quadro de nuvem de pontos. Os objetos JSON foram expandidos para facilitar a leitura, mas você deve minimizar cada objeto JSON para caber em uma única linha ao criar um arquivo manifesto de entrada. Um exemplo é fornecido sob esse bloco de código.

{ "source-ref": "s3://amzn-s3-demo-bucket/examplefolder/frame1.bin", "source-ref-metadata":{ "format": "binary/xyzi", "unix-timestamp": 1566861644.759115, "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 } }, "prefix": "s3://amzn-s3-demo-bucket/lidar_singleframe_dataset/someprefix/", "images": [ { "image-path": "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" }] } } { "source-ref": "s3://amzn-s3-demo-bucket/examplefolder/frame2.bin", "source-ref-metadata":{ "format": "binary/xyzi", "unix-timestamp": 1566861632.759133, "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 } }, "prefix": "s3://amzn-s3-demo-bucket/lidar_singleframe_dataset/someprefix/", "images": [ { "image-path": "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" }] } }

Ao criar um arquivo manifesto de entrada, você deve recolher os objetos JSON para caber em uma única linha. Por exemplo, o bloco de código acima apareceria da seguinte forma em um arquivo manifesto de entrada:

{"source-ref":"s3://amzn-s3-demo-bucket/examplefolder/frame1.bin","source-ref-metadata":{"format":"binary/xyzi","unix-timestamp":1566861644.759115,"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}},"prefix":"s3://amzn-s3-demo-bucket/lidar_singleframe_dataset/someprefix/","images":[{"image-path":"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"}]}} {"source-ref":"s3://amzn-s3-demo-bucket/examplefolder/frame2.bin","source-ref-metadata":{"format":"binary/xyzi","unix-timestamp":1566861632.759133,"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}},"prefix":"s3://amzn-s3-demo-bucket/lidar_singleframe_dataset/someprefix/","images":[{"image-path":"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"}]}}

A tabela a seguir mostra os parâmetros que você pode incluir no arquivo manifesto de entrada.

Parameter

Obrigatório

Valores aceitos

Descrição

source-ref

Sim

String

Formato de valor de string aceito:

s3://<bucket-name>/<folder-name>/point-cloud-frame-file

O local do Amazon S3 de um quadro de nuvem de pontos único.

source-ref-metadata

Sim

Objeto JSON

Parâmetros aceitos:

format, unix-timestamp, ego-vehicle-pose, position, prefix, images

Use esse parâmetro para incluir informações adicionais sobre a nuvem de pontos em source-ref e para fornecer dados da câmera para fusão de sensores.

format

Não

String

Valores de string aceitos: "binary/xyz", "binary/xyzi", "binary/xyzrgb", "binary/xyzirgb", "text/xyz", "text/xyzi", "text/xyzrgb", "text/xyzirgb"

Valores padrão:

Quando o arquivo identificado em source-ref tem uma extensão .bin, binary/xyzi

Quando o arquivo identificado em source-ref tem uma extensão .txt, text/xyzi

Use esse parâmetro para especificar o formato dos dados da nuvem de pontos. Para obter mais informações, consulte Formatos aceitos de dados 3D brutos.

unix-timestamp

Sim

Número

Um timestamp unix.

O timestamp unix é o número de segundos desde 1.º de janeiro de 1970 até o horário UTC em que os dados foram coletados por um sensor.

ego-vehicle-pose

Não

Objeto JSON

A pose do dispositivo usado para coletar os dados da nuvem de pontos. Para obter mais informações sobre esse parâmetro, consulte Incluir informações de pose do veículo no manifesto de entrada.

prefix

Não

String

Formato de valor de string aceito:

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

O local no Amazon S3 em que os metadados, como imagens da câmera, são armazenados para esse quadro.

O prefixo deve terminar com uma barra: /.

images

Não

Lista

Uma lista de parâmetros que descrevem imagens de câmera colorida usadas para fusão de sensores. É possível incluir até oito imagens nesta lista. Para obter mais informações sobre os parâmetros necessários para cada imagem, consulte Incluir dados da câmera no manifesto de entrada.

Incluir informações de pose do veículo no manifesto de entrada

Use a localização do veículo ego para fornecer informações sobre a localização do veículo usado para capturar dados da nuvem de pontos. O Ground Truth usa essas informações para calcular a matriz extrínseca do LiDAR.

O Ground Truth usa matrizes extrínsecas para projetar rótulos de e para a cena 3D e imagens 2D. Para obter mais informações, consulte Fusão de sensores.

A tabela a seguir fornece mais informações sobre os parâmetros de position e de orientação (heading) que são obrigatórios quando você fornece informações do veículo ego.

Parameter

Obrigatório

Valores aceitos

Descrição

position

Sim

Objeto JSON

Parâmetros necessários:

x, y e z. Insira números para esses parâmetros.

O vetor de conversão do veículo ego no sistema de coordenadas mundial.

heading

Sim

Objeto JSON

Parâmetros necessários:

qx, qy, qz e qw. Insira números para esses parâmetros.

A orientação do quadro de referência do dispositivo ou do sensor montado no veículo que detecta o entorno, medido em quaterniões, (qx, qy, qz, qw) no sistema de coordenadas.

Incluir dados da câmera no manifesto de entrada

Se você quiser incluir dados da câmera de vídeo com um quadro, use os parâmetros a seguir para fornecer informações sobre cada imagem. A coluna Obrigatório abaixo se aplica quando o parâmetro images é incluído no arquivo manifesto de entrada em source-ref-metadata. Não é necessário incluir imagens no arquivo manifesto de entrada.

Se você incluir imagens da câmera, será necessário incluir informações sobre position e heading da câmera usados na captura das imagens no sistema de coordenadas mundial.

Se as imagens estiverem distorcidas, o Ground Truth poderá corrigir a distorção automaticamente usando as informações fornecidas sobre a imagem no arquivo manifesto de entrada, incluindo coeficientes de distorção (k1, k2, k3, k4, p1 e p1), o modelo e a matriz intrínseca da câmera. A matriz intrínseca é composta pela distância focal (fx, fy) e pelo ponto principal (cx, cy)). Consulte Matriz intrínseca para saber como o Ground Truth usa a câmera intrínseca. Se os coeficientes de distorção não forem incluídos, o Ground Truth não corrigirá a distorção da imagem.

Parameter

Obrigatório

Valores aceitos

Descrição

image-path

Sim

String

Exemplo de formato:

<folder-name>/<imagefile.png>

O local relativo no Amazon S3 do arquivo de imagem. Esse caminho relativo será anexado ao caminho especificado em prefix.

unix-timestamp

Sim

Número

O timestamp unix é o número de segundos desde 1.º de janeiro de 1970 até o horário UTC em que os dados foram coletados por uma câmera.

camera-model

Não

String:

Valores aceitos:

"pinhole", "fisheye"

Padrão:

"pinhole"

O modelo da câmera usada para capturar a imagem. Essas informações são usadas para corrigir a distorção das imagens da câmera.

fx, fy

Sim

Números

A distância focal da câmera, nas direções x (fx) e y (fy).

cx, cy

Sim

Números

As coordenadas x (cx) e y (cy) do ponto principal.

k1, k2, k3, k4

Não

Número

Coeficientes de distorção radial. Compatíveis com modelos de câmera olho de peixe e pinhole.

p1, p2

Não

Número

Coeficientes de distorção tangencial. Compatíveis com modelos de câmera pinhole.

skew

Não

Número

Um parâmetro para medir a inclinação de uma imagem.

position

Sim

Objeto JSON

Parâmetros necessários:

x, y e z. Insira números para esses parâmetros.

O local ou a origem do quadro de referência da câmara montada no veículo que captura imagens.

heading

Sim

Objeto JSON

Parâmetros necessários:

qx, qy, qz e qw. Insira números para esses parâmetros.

A orientação do quadro de referência da câmera montada no veículo que captura imagens, medida usando quaterniões, (qx, qy, qz, qw), no sistema de coordenadas mundial.

Limites de quadros da nuvem de pontos

É possível incluir até 100.000 quadros da nuvem de pontos no arquivo manifesto de entrada. O trabalho de rotulagem de nuvem de pontos 3D tem tempos de pré-processamento mais longos do que os de outros tipos de tarefas do Ground Truth. Para obter mais informações, consulte Tempo de pré-processamento do trabalho.