Création d'un fichier manifeste d'entrée de trame de nuage de points - Amazon SageMaker

Création d'un fichier manifeste d'entrée de trame de nuage de points

Le manifeste est un fichier codé en UTF-8 dans lequel chaque ligne est un objet JSON complet et valide. Chaque ligne est délimitée par un saut de ligne standard, \n ou \r\n. Chaque ligne étant un objet JSON valide, elle ne peut pas comporter de caractères de saut de ligne sans échappement. Dans le fichier manifeste d'entrée à une seule trame, chaque ligne du manifeste contient des données pour une seule trame de nuage de points. Les données de la trame de nuage de points peuvent être stockées au format binaire ou ASCII (voir Formats de données 3D brutes acceptés). Il s'agit du format de fichier manifeste requis pour la détection d'objets et la segmentation sémantique de nuage de points 3D. Vous pouvez éventuellement fournir aussi des données de fusion de capteur de caméra pour chaque trame de nuage de points.

Ground Truth prend en charge le nuage de points et la fusion de capteurs de caméra vidéo dans le système de coordonnées mondial pour toutes les modalités. Si vous pouvez obtenir les données extrinsèques de votre capteur 3D (données extrinsèques LiDAR, par exemple), nous vous recommandons de convertir les trames de nuages de points 3D au système de coordonnées mondial à l'aide des données extrinsèques. Pour de plus amples informations, veuillez consulter . Fusion de capteurs.

Toutefois, si vous ne pouvez pas obtenir un nuage de points dans le système de coordonnées mondial, vous pouvez fournir des coordonnées dans le système de coordonnées d'origine dans lequel les données ont été capturées. Si vous fournissez des données de caméra pour la fusion des capteurs, il est recommandé de fournir les données de pose du capteur LiDAR et de la caméra dans le système de coordonnées mondial.

Pour créer un fichier manifeste d'entrée à une seule trame, vous identifiez l'emplacement de chaque trame de nuage de points qui doit être étiquetée par les collaborateurs à l'aide de la clé source-ref. En outre, vous devez utiliser la clé source-ref-metadata pour identifier le format de votre ensemble de données, un horodatage pour cette trame et, éventuellement, les données de fusion de capteurs et les images de caméra vidéo.

L'exemple suivant illustre la syntaxe utilisée pour un fichier manifeste d'entrée pour une tâche d'étiquetage de nuage de points à trame unique. L'exemple inclut deux trames de nuage de points. Pour de plus amples informations sur chaque paramètre, veuillez consulter le tableau suivant cet exemple.

Important

Chaque ligne de votre fichier manifeste source doit être au format JSON Lines. Le bloc de code suivant présente un fichier manifeste source avec deux objets JSON. Chaque objet JSON est utilisé pour pointer et fournir des détails sur une trame de nuage de point unique. Les objets JSON ont été développés pour plus de lisibilité, mais vous devez minimiser chaque objet JSON pour qu'il s'adapte sur une seule ligne lors de la création d'un fichier manifeste source. Un exemple est fourni sous ce bloc de code.

{ "source-ref": "s3://awsexamplebucket/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://awsexamplebucket/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://awsexamplebucket/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://awsexamplebucket/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" }] } }

Lorsque vous créez un fichier manifeste source, vous devez réduire vos objets JSON pour qu'ils tiennent sur une seule ligne. Par exemple, le bloc de code ci-dessus apparaît comme suit dans un fichier manifeste source :

{"source-ref":"s3://awsexamplebucket/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://awsexamplebucket/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://awsexamplebucket/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://awsexamplebucket/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"}]}}

Le tableau suivant présente les paramètres que vous pouvez inclure dans votre fichier manifeste d'entrée :

Paramètre

Obligatoire

Valeurs acceptées

Description

source-ref

Oui

Chaîne

Format de valeur de chaîne accepté:

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

Emplacement Amazon S3 d'une trame de nuage de points unique.

source-ref-metadata

Oui

un objet JSON

Paramètres acceptés:

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

Utilisez ce paramètre pour inclure des informations supplémentaires sur le nuage de points dans source-ref, et pour fournir des données de caméra pour la fusion des capteurs.

format

Non

Chaîne

Valeurs de chaîne acceptées: "binary/xyz", "binary/xyzi", "binary/xyzrgb", "binary/xyzirgb", "text/xyz", "text/xyzi", "text/xyzrgb", "text/xyzirgb"

Valeurs par défaut:

Lorsque le fichier identifié dans source-ref a une extension .bin, binary/xyzi

Lorsque le fichier identifié dans source-ref a une extension .txt, text/xyzi

Utilisez ce paramètre pour spécifier le format de vos données de nuage de points. Pour de plus amples informations, veuillez consulter . Formats de données 3D brutes acceptés.

unix-timestamp

Oui

Nombre

Horodatage Unix.

L'horodatage unix est le nombre de secondes écoulées depuis le 1er janvier 1970 jusqu'à l'heure UTC à laquelle les données ont été collectées par un capteur.

ego-vehicle-pose

Non

un objet JSON

Pose de l'appareil utilisé pour collecter les données du nuage de points. Pour de plus amples informations sur ce paramètre, veuillez consulter Inclusion des informations de pose de véhicule dans votre manifeste d'entrée.

prefix

Non

Chaîne

Format de valeur de chaîne accepté:

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

Emplacement dans Amazon S3 où vos métadonnées, telles que les images de caméra, sont stockées pour cette trame.

Le préfixe doit se terminer par une barre oblique: /.

images

Non

Liste

Liste des paramètres décrivant les images de caméra couleur utilisées pour la fusion des capteurs. Vous pouvez inclure jusqu'à 8 images dans cette liste. Pour de plus amples informations sur les paramètres requis pour chaque image, veuillez consulter Inclusion des données de la caméra dans votre manifeste d'entrée.

Inclusion des informations de pose de véhicule dans votre manifeste d'entrée

Utilisez l'emplacement du véhicule ego pour fournir des informations sur l'emplacement du véhicule utilisé pour capturer les données du nuage de points. Ground Truth utilise ces informations pour calculer la matrice extrinsèque LiDAR.

Ground Truth utilise des matrices extrinsèques pour projeter des étiquettes vers et depuis la scène 3D et les images 2D. Pour de plus amples informations, veuillez consulter . Fusion de capteurs.

Le tableau suivant fournit des informations supplémentaires sur les paramètres position et d'orientation (heading) qui sont requis lorsque vous fournissez des informations sur le véhicule ego.

Paramètre

Obligatoire

Valeurs acceptées

Description

position

Oui

un objet JSON

Paramètres requis:

x, y, et z. Entrez des nombres pour ces paramètres.

Vecteur de translation du véhicule ego dans le système de coordonnées mondial.

heading

Oui

Objet JSON

Paramètres requis:

qx, qy, qz, et qw. Entrez des nombres pour ces paramètres.

Orientation de la trame de référence de l'appareil ou du capteur monté sur le véhicule détectant l'environnement, mesurée en quaternions, (qx, qy, qz, qw) dans le système de coordonnées.

Inclusion des données de la caméra dans votre manifeste d'entrée

Si vous souhaitez inclure des données de caméra vidéo avec une trame, utilisez les paramètres suivants pour fournir des informations sur chaque image. La colonne Obligatoire ci-dessous s'applique lorsque le paramètre images est inclus dans le fichier manifeste d'entrée sous source-ref-metadata. Vous n'êtes pas obligé d'inclure des images dans votre fichier manifeste d'entrée.

Si vous incluez des images de caméra, vous devez inclure des informations sur les éléments position et heading de la caméra utilisés pour capturer des images dans le système de coordonnées mondial.

Si vos images sont déformées, Ground Truth peut corriger automatiquement cette déformation à l'aide des informations que vous fournissez sur l'image dans votre fichier manifeste source, en particulier les coefficients de distorsion (k1, k2, k3, k4, p1, p1), le modèle de la caméra et la matrice intrinsèque de la caméra. La matrice intrinsèque est constituée de la longueur focale (fx, fy) et du point principal (cx, cy). Veuillez consulter Matrice intrinsèque pour savoir comment Ground Truth utilise la matrice intrinsèque de la caméra. Si les coefficients de distorsion ne sont pas inclus, Ground Truth ne corrigera pas les déformations de l'image.

Paramètre

Obligatoire

Valeurs acceptées

Description

image-path

Oui

Chaîne

Exemple de format:

<folder-name>/<imagefile.png>

Emplacement relatif, dans Amazon S3, de votre fichier image. Ce chemin relatif sera ajouté au chemin que vous spécifiez dans prefix.

unix-timestamp

Oui

Nombre

L'horodatage unix est le nombre de secondes écoulées depuis le 1er janvier 1970 jusqu'à l'heure UTC à laquelle les données ont été collectées par une caméra.

camera-model

Non

Chaîne :

Valeurs acceptées:

"pinhole", "fisheye"

Par défaut:

"pinhole"

Modèle de caméra utilisé pour capturer l'image. Ces informations sont utilisées pour corriger la déformation des images de la caméra.

fx, fy

Oui

Nombres

Distance focale de la caméra, dans les directions x (fx) et y (fy).

cx, cy

Oui

Nombres

Coordonnées x (cx) et y (cy) du point principal.

k1, k2, k3, k4

Non

Nombre

Coefficients de distorsion radiale. Pris en charge pour les modèles de caméras fisheye et à sténopé.

p1, p2

Non

Nombre

Coefficients de distorsion tangentielle. Pris en charge pour les modèles de caméras à sténopé.

skew

Non

Nombre

Paramètre permettant de mesurer l'inclinaison d'une image.

position

Oui

un objet JSON

Paramètres requis:

x, y, et z. Entrez des nombres pour ces paramètres.

Emplacement ou origine de la trame de référence de la caméra montée sur le véhicule qui capture des images.

heading

Oui

Objet JSON

Paramètres requis:

qx, qy, qz, et qw. Entrez des nombres pour ces paramètres.

Orientation de la trame de référence de la caméra montée sur le véhicule qui capture des images, mesurée à l'aide de quaternions, (qx, qy, qw, qz), dans le système de coordonnées mondial.

Limites de trame de nuage de points

Vous pouvez inclure jusqu'à 100 000 trames de nuage de points dans votre fichier manifeste d'entrée. Les tâches d'étiquetage de nuage de points 3D ont des temps de prétraitement plus longs que les autres types de tâches Ground Truth. Pour de plus amples informations, veuillez consulter . Temps de prétraitement de la tâche.