asset-harvester

작성자: nvidia

Use to install and run NVIDIA Asset Harvester (Apache-2.0) to extract per-object 3D Gaussian Splat assets (`gaussians.ply`) from AV NCore V4 clips or masked…

npx skills add https://github.com/nvidia/nurec-skills --skill asset-harvester

Asset Harvester

Purpose

Install and drive NVIDIA Asset Harvester to extract per-object 3D Gaussian Splat assets from sparse autonomous-vehicle (AV) object observations — either a multi-view crop pulled from an NCore V4 driving log or a single masked image. The output is a simulation-ready gaussians.ply plus optional metadata.yaml that NVIDIA Omniverse NuRec can ingest as an external asset. Apache-2.0 upstream code lives at https://github.com/NVIDIA/asset-harvester.

When to Use / When NOT to Use

Use this skill when:

  • The user has AV clips or masked single images and wants per-object 3D assets via the SparseViewDiT + TokenGS pipeline.
  • The user has NCore V4 driving-log clips and wants per-track 3D assets for simulation.
  • The user asks about SparseViewDiT, TokenGS, or wants to reproduce the Asset Harvester paper / HF Space demo locally.
  • The user wants .ply Gaussians + metadata.yaml suitable for NVIDIA Omniverse NuRec object insertion.

Do NOT use this skill when:

  • The user wants a full-scene reconstruction (use the nre skill).
  • The user has no per-object masks or AV-style object crops.
  • The user wants text-to-3D, indoor scans, or non-AV imagery — out of distribution.
  • The user wants to ingest raw sensor data into NCore V4 (use the ncore skill first).
  • The user wants to re-train SparseViewDiT or TokenGS — this skill is install + inference only.
  • The user just wants the no-install demo: point them at https://huggingface.co/spaces/nvidia/asset-harvester.

Background

Open-source (Apache-2.0) image-to-3D pipeline pairing SparseViewDiT (multiview diffusion, 16 consistent views) with TokenGS (feed-forward Gaussian lifting):

NCore V4 clip ──► NCore parsing ──► SparseViewDiT (16-view diffusion)
              ──► TokenGS lifting ──► gaussians.ply
              ──► (optional) metadata.yaml for NuRec object insertion

Single HF repo nvidia/asset-harvester ships four checkpoints: AH_object_seg_jit.pt (AV-object Mask2Former), AH_multiview_diffusion.safetensors (SparseViewDiT), AH_camera_estimator.safetensors (camera pose, used when calibration is absent), and AH_tokengs_lifting.safetensors (TokenGS).

Inputs

  • image_root — directory of per-object folders, each with frame.jpeg (512×512) and (optional) mask.png (required unless component_store is given).
  • component_store — path to NCore V4 clip .json manifest, comma-separated component-store paths, or .zarr.itar glob (required when running the NCore parsing path).
  • output_dir — where per-sample outputs (gaussians.ply, multiview/, 3d_lifted/, *.mp4) are written (default outputs/).
  • offload_flag — enable CPU offload (--offload_model_to_cpu / --offload) when VRAM < ~16 GB.
  • HF_TOKEN — HuggingFace access token for the gated nvidia/asset-harvester repo and the PhysicalAI NCore dataset (obtain at https://huggingface.co/settings/tokens).

Instructions

  1. Validate the host. Have the agent execute scripts/validate_setup.py via its standard script runner — e.g. run_script("scripts/validate_setup.py") or python scripts/validate_setup.py. It confirms conda, the NVIDIA driver, GCC, and HF_TOKEN are in place and exits non-zero on any missing prerequisite. Do not print $HF_TOKEN directly; see references/installation.md.
  2. Install. Use the one-shot bash setup.sh path unless the user asks for a manual install. Full commands and the pinned gsplat step are in references/installation.md.
  3. Download checkpoints. hf auth login first, then hf download nvidia/asset-harvester --local-dir checkpoints (see references/installation.md).
  4. Pick the inference path:
  5. Execute with appropriate VRAM flag. If < 16 GB VRAM, add --offload_model_to_cpu (direct run_inference.py) or --offload (run.sh).
  6. Validate outputs. Confirm gaussians.ply and the two MP4s exist under ${OUTPUT_DIR}/<sample>/.
  7. (Optional) Benchmark. Clone the env to av-object-benchmark and run benchmark/eval.py for PSNR / LPIPS / SSIM and DINOv3 embedding metrics. See references/end-to-end-ncore.md.
  8. (Optional) Hand off to NuRec. Rotate Gaussians with orient_gaussians_for_nurec, emit metadata.yaml, then follow the NuRec external-assets docs.

Examples

Three concrete entry points. Each one points at the workflow file with the full command; nothing here is meant to be copy-pasted in isolation.

Example 1 — Smoke-test the install with bundled samples

python scripts/validate_setup.py          # then `bash setup.sh` once
python3 run_inference.py \
    --diffusion_checkpoint checkpoints/AH_multiview_diffusion.safetensors \
    --lifting_checkpoint   checkpoints/AH_tokengs_lifting.safetensors \
    --data_root            data_samples/rectified_AV_objects/ \
    --output_dir           outputs/harvesting

See Workflow Q in references/workflows.md.

Example 2 — One masked single image → 3D asset

python -m asset_harvester.utils.image_segment \
    --checkpoint checkpoints/AH_object_seg_jit.pt \
    --image_folder data_samples/OOD_images
python3 run_inference.py \
    --diffusion_checkpoint checkpoints/AH_multiview_diffusion.safetensors \
    --ahc_checkpoint       checkpoints/AH_camera_estimator.safetensors \
    --lifting_checkpoint   checkpoints/AH_tokengs_lifting.safetensors \
    --image_dir            data_samples/OOD_images \
    --output_dir           outputs/single

See Workflow S in references/workflows.md.

Example 3 — NCore V4 clip → NuRec-ready external assets

bash scripts/run_ncore_parser.sh --component-store <clip.json>
bash run.sh --data-root ./outputs/ncore_parser --output-dir ./outputs/ncore_harvest
python -m asset_harvester.utils.orient_gaussians_for_nurec \
    --input-dir ./outputs/ncore_harvest \
    --output-dir ./outputs/ncore_harvest_nurec
python asset_harvester/utils/generate_external_assets_metadata.py \
    --input-dir ./outputs/ncore_harvest_nurec

Full walkthrough including sample-clip download, the benchmark flow, and the NuRec PPISP caveat lives in references/end-to-end-ncore.md.

Scripts

ScriptPurposeUsage
scripts/validate_setup.pyVerify host meets Asset Harvester prerequisites (conda, driver, GCC, HF_TOKEN). No network access.Invoke via the agent's run_script helper, or python scripts/validate_setup.py.

Output Format

Per input sample (image or NCore track) the pipeline writes:

${OUTPUT_DIR}/<sample_id>/
├── multiview/           # 16 RGB views generated by SparseViewDiT
├── 3d_lifted/           # TokenGS-rendered views of the lifted Gaussians
├── gaussians.ply        # 3D Gaussian Splat asset (Omniverse/NuRec-ready)
├── multiview.mp4
└── 3d_lifted.mp4

When the NuRec handoff runs, metadata.yaml is additionally written at the root of the oriented output directory.

Prerequisites

Linux (Ubuntu 22.04 tested), conda, NVIDIA driver >= 570 (CUDA 12.8), GCC 10–13, ~16 GB GPU VRAM, ~30 GB free disk, HF_TOKEN with the nvidia/asset-harvester model card accepted, and egress to github.com, huggingface.co, pypi.org, download.pytorch.org. The check that fails-fast on a missing prerequisite is scripts/validate_setup.py; secret-handling guidance lives in references/installation.md.

References

Limitations

  • AV-only domain. Non-road / non-AV objects are out of distribution.
  • AH_object_seg_jit.pt is class-restricted (vehicles, VRUs, cyclists, road objects). Supply your own mask.png for arbitrary objects.
  • Scale is not predicted. NuRec insertion reads scale from the source clip's cuboid tracks.
  • 16 GB VRAM is the practical floor; lower-VRAM users must offload to CPU (slower).
  • Inputs must be 512×512 square crops.
  • benchmark/eval.py needs a separately cloned conda env (av-object-benchmark) because transformers>=4.56.0 conflicts with the main env's pinned transformers==4.48.3.
  • Linux-only install path (tested on Ubuntu 22.04 + CUDA 12.8).
  • Optional SAM 3D Body metric needs the gated facebook/sam-3d-body-dinov3 repo; eval falls back to PSNR/LPIPS/SSIM if unavailable.

Troubleshooting (top 4)

ErrorCauseSolution
gsplat import / CUDA ABI mismatchInstalled gsplat from PyPI wheel instead of the pinned commitReinstall from the pinned source commit; see references/installation.md.
nvcc "unsupported GNU version"GCC outside 10–13 on PATHInstall GCC 12 and export CC/CXX/CUDAHOSTCXX before setup.sh.
CUDA error: out of memoryGPU VRAM < ~16 GBAdd --offload_model_to_cpu (direct) or --offload (run.sh).
401 Unauthorized from hf downloadModel-card terms not accepted, or missing HF_TOKENAccept the model card and re-run hf auth login.

Full matrix + teardown live in references/troubleshooting.md.

nvidia의 다른 스킬

compileiq-debug
nvidia
Use when something is wrong: Search() hangs, all evaluations return INVALID_SCORE, scores aren't improving, every config returns the same number, ptxas errors…
official
create-github-pr
nvidia
gh CLI를 사용하여 GitHub 풀 리퀘스트를 생성합니다. 사용자가 새 PR을 만들거나, 코드 리뷰를 제출하거나, 풀 리퀘스트를 열고자 할 때 사용합니다. 트리거 키워드 -…
official
diagnose-perf
nvidia
First-responder performance triage for Isaac Sim and Isaac Lab. Identifies bottleneck category (GPU-bound, CPU-bound, VRAM, loading) using nvidia-smi and…
official
eagle3-review-logs
nvidia
Review EAGLE3 pipeline experiment logs from the launcher's experiments/ directory. Summarizes pass/fail status for all 4 tasks, diagnoses failures with root…
official
nemoclaw-maintainer-cross-issue-sweep
nvidia
다른 열린 이슈들을 스캔하여 주어진 PR이 함께 수정하거나 실수로 망가뜨릴 수 있는 이슈를 찾습니다. 인접 수정 기회와 모순 위험을 file:line…과 함께 출력합니다.
official
karpathy-guidelines
nvidia
일반적인 LLM 코딩 실수를 줄이기 위한 행동 지침입니다. 코드 작성, 검토 또는 리팩토링 시 과도한 복잡성을 피하고 정밀한 변경을 위해 사용하세요.
official
fhir-basics
nvidia
에이전트에게 FHIR R4 API의 작동 방식, 사용 가능한 리소스, 검색 매개변수를 사용한 쿼리 방법, 모든 응답 형식을 올바르게 파싱하는 방법을 가르칩니다…
official
underdeclared-agent
nvidia
유용한 도우미 에이전트
official