Routeur Physical AI Neural Reconstruction (NuRec)
Objectif
Ceci est un routeur allégé pour les requêtes NVIDIA Neural Reconstruction (NuRec). Il pointe vers le skill upstream nurec-index à https://github.com/NVIDIA/nurec-skills et ses cinq skills frères (physical-ai-datasets, ncore, nre, asset-harvester, nurec-fixer). Utilisez ce skill pour :
- Identifier quel skill frère upstream répond à une question NuRec.
- Localiser, cloner ou actualiser le checkout canonical
nurec-skills. - Orchestrer des workflows NuRec multi-étapes (données → conversion → entraînement → rendu → nettoyage) avant d'ouvrir la recette upstream.
Les recettes canoniques (entraînement, rendu, conversion de données, téléchargements de datasets, extraction d'objets, nettoyage de frames) résident dans les skills frères upstream. Ne copiez ni ne reconstruisez jamais leurs commandes ici.
N'utilisez PAS ce skill pour :
- Packaging SimReady de CAD ou de maillages sources → utilisez
omniverse-cad-to-simready. - Optimisation USD générique sans rapport avec NuRec → utilisez
omniverse-usd-performance-tuning. - Configuration infrastructure AKS / OSMO / NIM Operator → utilisez
physical-ai-infrastructure-setup-and-resilient-scaling.
Quand l'utiliser
Lisez ce skill d'abord quand un utilisateur mentionne l'un des termes suivants :
nurec, nurec router, nurec index, neural reconstruction, neural reconstruction engine, NRE, 3DGUT, 3DGRT, USDZ, NCore V4, sensor sim, novel view synthesis, PhysicalAI-Autonomous-Vehicles-NuRec, PhysicalAI-NuRec-PPISP, Cosmos-Drive-Dreams, asset harvester, nurec fixer, DiffusionHarmonizer, harmonizer, difix, difix3d, serve-grpc, render-grpc, warm serve-grpc, nre thin client, batch_render_rgb, nurec teardown, "where do I start with NuRec", "which NuRec skill should I use for X?".
Déterminez quel skill frère upstream répond à la question, récupérez-le (voir Localiser et récupérer les skills upstream), puis suivez le contenu de ce skill.
Prérequis
Le skill routeur lui-même n'a aucun prérequis runtime au-delà de git pour récupérer l'upstream. Les skills frères en aval nécessitent :
- Docker + NVIDIA Container Toolkit + GPU — pour les conteneurs
nre,nre-tools, etnurec-fixer(nvcr.io/nvidia/nre/nre,nvcr.io/nvidia/nre/nre-tools,nvcr.io/nvidia/cosmos/cosmos-predict2-container:1.2). - Clé API NGC (
NGC_API_KEY) — pour extraire les conteneurs NGC. - Token Hugging Face (
HF_TOKEN) avec les licences protégéesnvidia/PhysicalAI-*,nvidia/DiffusionHarmonizer, etnvidia/asset-harvesteracceptées à l'avance sur Hugging Face. - Python 3.10+ avec
huggingface_hubinstallé. - (Optionnel) CARLA, Isaac Sim 5.1, ou AlpaSim pour l'intégration simulateur via
serve-grpc.
Vérifiez les secrets de manière sûre (ne signalez pas les valeurs) :
hf auth whoami
[ -n "${HF_TOKEN:-}" ] && echo "HF_TOKEN length=${#HF_TOKEN}" || echo "HF_TOKEN unset"
[ -n "${NGC_API_KEY:-}" ] && echo "NGC_API_KEY length=${#NGC_API_KEY}" || echo "NGC_API_KEY unset"
Voir references/secrets-handling.md pour les anti-patterns bash à éviter.
Qu'est-ce que NuRec ?
NuRec (NVIDIA Omniverse Neural Reconstruction) prend des enregistrements caméra, LiDAR, radar ou stéréo — typiquement d'une voiture autonome ou d'un robot — et les transforme en une scène 3D que vous pouvez restituer de n'importe quel point de vue. Voici les noms qui reviennent souvent :
- NRE — « Neural Reconstruction Engine ». NuRec est le produit ; NRE est le moteur qui entraîne et restitue. Les deux routent vers le skill upstream
nre. - USDZ — le format de fichier d'une scène entraînée. Une archive ZIP qu'Omniverse, Isaac Sim et CARLA peuvent ouvrir.
- NCore V4 — le format d'entrée que NRE consomme. Les enregistrements bruts doivent être convertis en NCore V4 avant l'entraînement.
- 3DGUT / 3DGRT — les deux variantes 3D Gaussian Splatting utilisées en interne par NRE. La recette Hydra par défaut en sélectionne une ; la plupart des utilisateurs ne la définissent jamais manuellement.
Un projet NuRec typique comporte trois étapes :
- Obtenir l'entrée — convertissez votre propre enregistrement en NCore V4 (
ncore), ou téléchargez un dataset pré-converti (physical-ai-datasets). - Entraîner la reconstruction — alimentez NCore V4 à NRE ; vous obtenez un USDZ (
nre). - Restituer de nouvelles vues — restituez des images, des vidéos ou des balayages LiDAR à partir de l'USDZ (
nre).
Les projets qui veulent simplement utiliser une scène publiée par NVIDIA existante sautent l'étape 2.
Choisir un skill
Associez l'objectif de l'utilisateur dans la colonne de gauche et ouvrez le skill upstream nommé à droite. Les flèches signifient « faites ceci dans cet ordre ».
| Je veux… | Skill upstream |
|---|---|
| Trouver ou télécharger un dataset NuRec publié par NVIDIA | physical-ai-datasets |
| Convertir mon propre enregistrement caméra / LiDAR / radar / profondeur / stéréo en NCore V4 | ncore |
| Écrire un nouveau convertisseur pour une configuration de capteur non supportée (drone, RGB-D, sac ROS 2, COLMAP, ScanNet++) | ncore |
| Entraîner une reconstruction 3D à partir d'un clip NCore | ncore → nre |
| Générer les entrées supplémentaires dont NRE a besoin (masques de segmentation, profondeur, masque ego) | nre (utilise le conteneur nre-tools) |
| Restituer un USDZ le long des positions caméra originales | nre |
| Restituer à la pleine résolution / qualité maximale | nre (voir « Quality presets ») |
| Restituer le long d'une trajectoire décalée (p. ex. voiture déplacée de 3 m vers la gauche) | nre |
| Restituer via un serveur pour que CARLA / Isaac Sim / AlpaSim / un simulateur personnalisé puisse demander des frames | nre (serve-grpc) |
| Restituer le même USDZ plusieurs fois d'affilée depuis Python avec une latence minimale par appel | nre (warm serve-grpc + thin Python client / batch_render_rgb) |
| Restituer des balayages LiDAR (nuages de points) à partir d'un USDZ | nre (render-grpc --lidar) |
| Ignorer l'entraînement et simplement restituer une scène NuRec construite par NVIDIA | physical-ai-datasets → nre |
| Extraire des objets 3D individuels (voitures, piétons) d'un clip de conduite | asset-harvester |
| Ajouter, supprimer ou remplacer des voitures / piétons dans une scène NuRec | asset-harvester → nre |
| Nettoyer ou harmoniser les frames restitués (fantômes, flotteurs, scintillement, éclairage/ombres) | nurec-fixer, ou --enable-difix dans nre pour la restitution en ligne |
| Exporter la scène en tant que PLY, maillage, cartes de profondeur, masque ego, etc. | nre |
| Mettre à niveau un ancien USDZ pour que les versions NRE plus récentes le chargent plus vite | nre (upgrade-artifact) |
| Ouvrir un USDZ ou PLY dans un visualiseur de navigateur | nre (viewer / ply_viewer) |
| Mesurer la qualité de restitution (PSNR, SSIM, LPIPS) par rapport à la vérité de terrain | nre (eval-rendering-metrics) |
| Comparer différentes méthodes de reconstruction sur les mêmes scènes | physical-ai-datasets (PhysicalAI-NuRec-PPISP) → nre |
| Entraîner sur plusieurs GPU ou sur SLURM | nre (Workflow D) |
Workflows courants
Six workflows de bout en bout sont documentés dans references/workflows.md :
- A. Créer une scène NuRec à partir de votre propre enregistrement.
- B. Utiliser une scène NuRec déjà entraînée par NVIDIA.
- C. Ajouter, supprimer ou remplacer des objets 3D dans une scène.
- D. Nettoyer les frames restitués.
- E. Comparer la qualité de reconstruction.
- F. Connecter NuRec à un simulateur.
Ouvrez ce fichier quand la tâche de l'utilisateur s'étend sur plus d'un skill frère.
Skills frères (upstream)
| Nom | Dossier upstream | Ce qu'il fait |
|---|---|---|
physical-ai-datasets |
.agents/skills/physical-ai-datasets/ |
Catalogue et recettes de téléchargement pour chaque dataset NVIDIA Physical AI sur Hugging Face (conduite, robotique, manipulation, scènes NuRec, benchmarks). |
ncore |
.agents/skills/ncore/ |
Convertit tout enregistrement de capteur en NCore V4 (le format dont NRE a besoin). Couvre aussi l'écriture d'un nouveau convertisseur. |
nre |
.agents/skills/nre/ |
Le Neural Reconstruction Engine lui-même. Entraîne, restitue (localement, via warm serve-grpc + thin Python client / batch_render_rgb, ou vers un simulateur externe), exporte des maillages / nuages de points / profondeur, édite les acteurs, évalue la qualité. |
asset-harvester |
.agents/skills/asset-harvester/ |
Pipeline Apache-2.0 open-source qui extrait des objets 3D individuels de vues peu denses dans un clip de conduite et les sauvegarde en tant que splats Gaussiens .ply avec métadonnées. |
nurec-fixer |
.agents/skills/nurec-fixer/ |
Workflow DiffusionHarmonizer NVIDIA autonome — successeur public des plus anciennes recettes Fixer / Difix3D+ — qui nettoie les frames restitués, harmonise les acteurs insérés, évalue PSNR/LPIPS, et affine optionnellement le modèle. |
Pour les chevauchements de noms (NRE vs Fixer, ncore vs nre, AV-NuRec vs Cosmos-Drive-Dreams, NuRec vs SimReady) voir references/mix-ups.md.
Localiser et récupérer les skills upstream
Recette rapide (version complète dans references/upstream-fetch.md) :
UPSTREAM_ROOT="${NUREC_SKILLS_UPSTREAM_ROOT:-${PHYSICAL_AI_SKILL_HUB_UPSTREAM_ROOT:-$HOME/.physical-ai-skill-hub/upstreams}}"
mkdir -p "$UPSTREAM_ROOT"
if [ -d "$UPSTREAM_ROOT/nurec-skills/.git" ]; then
git -C "$UPSTREAM_ROOT/nurec-skills" fetch --tags
git -C "$UPSTREAM_ROOT/nurec-skills" checkout main
git -C "$UPSTREAM_ROOT/nurec-skills" pull --ff-only
else
git clone --depth 1 https://github.com/NVIDIA/nurec-skills.git \
"$UPSTREAM_ROOT/nurec-skills"
fi
test -f "$UPSTREAM_ROOT/nurec-skills/.agents/skills/SKILL.md"
Ensuite, lisez le skill upstream avant d'exécuter toute commande mutante :
cat "$UPSTREAM_ROOT/nurec-skills/.agents/skills/SKILL.md" # router
cat "$UPSTREAM_ROOT/nurec-skills/.agents/skills/<folder>/SKILL.md" # frère
Ordre de recherche local (essayez dans l'ordre avant le clone upstream) :
.agents/skills/<name>/SKILL.md(Cursor, Codex, NemoClaw).claude/skills/<name>/SKILL.md(Claude Code).cursor/skills/<name>/SKILL.md(project-scoped)~/.cursor/skills/<name>/SKILL.md(personal skills)
Règles strictes
- Routeur uniquement — ne dupliquez pas les recettes NuRec upstream ici. Lisez le contenu du skill frère upstream avant d'exécuter toute commande mutante.
- Référencez les skills frères par leur
name:(p. ex.nre), pas par le chemin du dépôt. Les dispositions de dossiers peuvent changer ; le nom est portable. - Clonez ou actualisez
https://github.com/NVIDIA/nurec-skillssous la racine upstream partagée (${NUREC_SKILLS_UPSTREAM_ROOT:-${PHYSICAL_AI_SKILL_HUB_UPSTREAM_ROOT:-$HOME/.physical-ai-skill-hub/upstreams}}/nurec-skills). Ne scannez pas les espaces de travail développeur généraux comme~/Codeset ne réutilisez pas de vieux clones sans rapport. physical-ai-datasetscouvre les datasets Hugging Face protégés. Ne contournez pas les conditions de licence des datasets ; l'utilisateur doit accepter les licences protégéesPhysicalAI-*sur Hugging Face et fournir un token avant de télécharger.- Asset Harvester s'exécute avant l'empaquetage en USDZ. N'appelez pas
export-external-assetsdenresur des fichiers.plycréés à la main à moins que l'utilisateur ne demande explicitement de ignorer Asset Harvester. - Pour le nettoyage d'artefacts, préférez le chemin
--enable-difixintégré dansnre. Routez vers lenurec-fixerautonome uniquement quand l'utilisateur a besoin du code public/model card, de l'évaluation appariée, de l'affinage, ou de correctifs sur les frames précédemment restitués. - N'inventez pas de commandes NRE / NCore / DiffusionHarmonizer de mémoire. Relisez le skill frère upstream — les versions bougent vite (la tag
release_26.04de NRE est actuellement épinglée). - Ce routeur ne déploie pas d'infrastructure. Routez la configuration AKS / OSMO / NIM Operator vers
physical-ai-infrastructure-setup-and-resilient-scaling.
Limitations
- Routeur uniquement. Ce skill n'exécute jamais de commandes NuRec mutantes. Tout l'entraînement, la restitution, la conversion et l'harmonisation se font dans les skills frères upstream.
- Épinglé à l'upstream. Les recettes résident dans
https://github.com/NVIDIA/nurec-skills, qui évolue en dehors de ce dépôt. Les clones obsolètes peuvent dériver ; toujoursgit pulll'upstream avant de dépendre d'un skill frère. - Contenu protégé.
nvidia/PhysicalAI-*,nvidia/DiffusionHarmonizer, etnvidia/asset-harvesterexigent que l'utilisateur accepte d'abord les conditions de licence sur Hugging Face. Le routeur ne peut pas contourner cela. - Empreinte lourde. Un workflow NuRec complet peut laisser 150 GB+ sur le disque. Voir
references/teardown.md. - Stack NVIDIA uniquement. Nécessite un GPU NVIDIA plus NVIDIA Container Toolkit. AMD / Intel / Apple Silicon ne sont pas supportés.
- Pas un pipeline SimReady. NuRec produit un USDZ renderable à partir d'un enregistrement ; l'empaquetage SimReady de CAD ou de maillages sources est un pipeline différent (voir
omniverse-cad-to-simready).
Dépannage
| Erreur / symptôme | Cause probable | Solution |
|---|---|---|
Clone nurec-skills manquant ou vide |
Upstream non récupéré encore | Exécutez le bloc de clone dans Localiser et récupérer les skills upstream |
403/401 en extrayant nvidia/PhysicalAI-* depuis HF |
Licence protégée non acceptée, ou HF_TOKEN non défini / mauvaise portée |
Acceptez la licence protégée sur Hugging Face, puis hf auth login avec un token ayant accès read |
denied: requested access to the resource is denied depuis nvcr.io/nvidia/nre/* |
NGC_API_KEY manquante ou expirée |
docker login nvcr.io avec $oauthtoken / NGC_API_KEY ; rotez la clé à org.ngc.nvidia.com/setup/api-key si nécessaire |
| NRE refuse de charger un clip (« not valid NCore V4 ») | L'enregistrement n'a pas été converti | Exécutez le skill ncore avant d'invoquer nre |
Latence démarrage froid serve-grpc domine une boucle Python |
Invocation Docker unique par restitution | Utilisez la recette warm serve-grpc de nre + thin Python client (batch_render_rgb) |
Les fichiers de sortie appartiennent à root après docker run |
-u $(id -u):$(id -g) était manquant |
sudo chown -R "$(id -u):$(id -g)" <output_dir> ; ajoutez le flag -u la prochaine fois |
| Les frames ont des fantômes / flotteurs / scintillement après restitution | Nettoyage en ligne non activé | Restituez à nouveau avec nre --enable-difix, ou post-traitez avec nurec-fixer (DiffusionHarmonizer) |
Noms de skills obsolètes (ncore-data-conversion, ancien nvidia/Fixer) dans la sortie agent |
Skill en cache obsolète | Mettez à jour les références vers ncore et nurec-fixer (DiffusionHarmonizer) ; voir references/maintenance.md |
Anti-pattern bash ${HF_TOKEN:+yes}${HF_TOKEN:-no} a signaté la valeur du token |
Mauvaise utilisation de l'expansion de paramètre bash | Rotez le token ; utilisez hf auth whoami ou des vérifications longueur uniquement (voir references/secrets-handling.md) |
Démantèlement cross-skill
Un workflow NuRec complet peut laisser 150 GB+ sur le disque entre les images conteneur, les poids de modèle, les clones de code, les envs conda, et les répertoires de sortie. Chaque skill frère a sa propre section Teardown dédiée — lisez-les dans l'ordre documenté dans references/teardown.md quand l'utilisateur n'a plus besoin du workflow.
Maintenir ce routeur à jour
La procédure pour ajouter de nouveaux skills frères, des renommages, ou les changements d'URL upstream réside dans references/maintenance.md. Traitez le nurec-index upstream à https://github.com/NVIDIA/nurec-skills/blob/main/.agents/skills/SKILL.md comme faisant autorité ; ce skill ne reflète que les tables de sélection, l'orchestration du workflow, et la recette de récupération upstream.