Loading...
Loading...
Sparse4D for multi-camera temporal 3D object detection and tracking. Uses sparse queries with deformable attention across camera views and time for end-to-end 3D perception, with an instance bank for temporal tracking. Use when training, evaluating, exporting, quantizing, or running inference for a TAO Sparse4D model. Trigger phrases include "train Sparse4D", "multi-camera 3D detection", "temporal 3D tracker", "sparse query 3D perception".
npx skill4agent add promptingcompany/nv-skills tao-train-sparse4dschemas/<action>.schema.jsonschemas/manifest.jsonreferences/spec_template_<action>.yamldefaultreferences/skill_info.yamlautoml_enabledschemas/train.schema.jsonreferences/spec_template_train.yamlautoml_default_parametersautoml_disabled_parameters~/tao-corereferences/skill_info.yamlautoml_policyautoml_policy: offautoautoml_policy: autoautoml_enabled: trueschemas/train.schema.jsonreferences/spec_template_train.yamltao-skill-bank:tao-run-automlskill_dirautoml_policyautoml_policy: offevaluateinferenceexportautoml_policy| Action | Spec Key | Source | Files | List? |
|---|---|---|---|---|
| dataset_convert | aicity.root | id | No | |
| evaluate | dataset.data_root | eval_dataset | (from convert job, spec: aicity.split) | No |
| evaluate | model.head.instance_bank.anchor | train_datasets | /results/{dataset_convert_job_id}/anchor_init.npy | No |
| evaluate | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |
| evaluate | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |
| evaluate | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |
| export | model.head.instance_bank.anchor | train_datasets | /results/{dataset_convert_job_id}/anchor_init.npy | No |
| inference | dataset.data_root | inference_dataset | (from convert job, spec: aicity.split) | No |
| inference | model.head.instance_bank.anchor | train_datasets | /results/{dataset_convert_job_id}/anchor_init.npy | No |
| inference | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |
| inference | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |
| inference | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |
| quantize | dataset.data_root | train_datasets | (from convert job, spec: aicity.split) | No |
| quantize | model.head.instance_bank.anchor | train_datasets | /results/{dataset_convert_job_id}/anchor_init.npy | No |
| quantize | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |
| quantize | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |
| quantize | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |
| quantize | dataset.quant_calibration_dataset.images_dir | train_datasets | No | |
| train | dataset.data_root | train_datasets | (from convert job, spec: aicity.split) | No |
| train | model.head.instance_bank.anchor | train_datasets | /results/{dataset_convert_job_id}/anchor_init.npy | No |
| train | dataset.train_dataset.ann_file | train_datasets | (from convert job, spec: aicity.split) | No |
| train | dataset.val_dataset.ann_file | eval_dataset | (from convert job, spec: aicity.split) | No |
| train | dataset.test_dataset.ann_file | inference_dataset | (from convert job, spec: aicity.split) | No |
spec_overridesS3_TRAIN = "s3://bucket/data/train"
S3_EVAL = "s3://bucket/data/eval"{
"train.num_epochs": 30,
"train.checkpoint_interval": 10,
"train.validation_interval": 10,
"train.num_gpus": 1,
"dataset.sequences.split_num": 90,
"train_dataset.sequences_split_num": 90,
"dataset.data_root": {"spec": f"{S3_TRAIN}/aicity.split)"},
"model.head.instance_bank.anchor": f"{S3_TRAIN}//results/{dataset_convert_job_id}/anchor_init.npy",
"dataset.train_dataset.ann_file": {"spec": f"{S3_TRAIN}/aicity.split)"},
"dataset.val_dataset.ann_file": {"spec": f"{S3_EVAL}/aicity.split)"},
"dataset.test_dataset.ann_file": {"spec": f"{S3_EVAL}/aicity.split)"},
}{
"dataset.data_root": {"spec": f"{S3_EVAL}/aicity.split)"},
"model.head.instance_bank.anchor": f"{S3_TRAIN}//results/{dataset_convert_job_id}/anchor_init.npy",
"dataset.train_dataset.ann_file": {"spec": f"{S3_TRAIN}/aicity.split)"},
"dataset.val_dataset.ann_file": {"spec": f"{S3_EVAL}/aicity.split)"},
"dataset.test_dataset.ann_file": {"spec": f"{S3_EVAL}/aicity.split)"},
}{
"model.head.instance_bank.anchor": f"{S3_TRAIN}//results/{dataset_convert_job_id}/anchor_init.npy",
}{
"dataset.data_root": {"spec": f"{S3_EVAL}/aicity.split)"},
"model.head.instance_bank.anchor": f"{S3_TRAIN}//results/{dataset_convert_job_id}/anchor_init.npy",
"dataset.train_dataset.ann_file": {"spec": f"{S3_TRAIN}/aicity.split)"},
"dataset.val_dataset.ann_file": {"spec": f"{S3_EVAL}/aicity.split)"},
"dataset.test_dataset.ann_file": {"spec": f"{S3_EVAL}/aicity.split)"},
}{
"dataset.data_root": {"spec": f"{S3_TRAIN}/aicity.split)"},
"model.head.instance_bank.anchor": f"{S3_TRAIN}//results/{dataset_convert_job_id}/anchor_init.npy",
"dataset.train_dataset.ann_file": {"spec": f"{S3_TRAIN}/aicity.split)"},
"dataset.val_dataset.ann_file": {"spec": f"{S3_EVAL}/aicity.split)"},
"dataset.test_dataset.ann_file": {"spec": f"{S3_EVAL}/aicity.split)"},
"dataset.quant_calibration_dataset.images_dir": f"{S3_TRAIN}",
}python| Spec Key | Description | Default |
|---|---|---|
| Number of GPUs | 1 |
| GPU device indices | [0] |
| Number of nodes | 1 |
ddp_find_unused_parameters_truesync_batchnormnum_frames * num_bev_groups / (num_nodes * num_gpus * batch_size)WORLD_SIZENODE_RANKMASTER_ADDRMASTER_PORTNUM_GPU_PER_NODEconfig.jsoncreate_job()infer_params.pysparse4d.config.json| Action | Spec Field | Inference Function | Meaning |
|---|---|---|---|
| dataset_convert | | | current job results directory |
| evaluate | | | encryption key |
| evaluate | | | model file inferred from the parent job results folder |
| evaluate | | | current job results directory |
| export | | | encryption key |
| export | | | model file inferred from the parent job results folder |
| export | | | output ONNX path |
| export | | | current job results directory |
| inference | | | encryption key |
| inference | | | model file inferred from the parent job results folder |
| inference | | | current job results directory |
| quantize | | | encryption key |
| quantize | | | model file inferred from the parent job results folder |
| quantize | | | current job results directory |
| train | | | encryption key |
| train | | | current job results directory |
| train | | | PTM when no resume checkpoint exists |
| train | | | model file inferred from the current job results folder |
parent_modelparent_model_folderparent_job_idconfig.json