npx skills add ...
npx skills add nvidia/nurec-skills --skill nurec-fixer
Use to run NVIDIA DiffusionHarmonizer (public successor to the older Fixer recipes) to enhance, harmonize, evaluate, or fine-tune novel-view frames from NRE / NuRec / 3DGS / NeRF reconstructions. Do NOT use for training the 3D reconstruction itself (use `nre`) or for sensor-to-NCore conversion (use `ncore`).
npx skills add nvidia/nurec-skills --skill nurec-fixer
Run NVIDIA DiffusionHarmonizer on rendered images from neural reconstructions. DiffusionHarmonizer is a single-step, temporally-aware image diffusion enhancer for NeRF / 3DGS / NuRec-style renderings. It improves realism, reduces reconstruction artifacts, and harmonizes inserted dynamic objects with the surrounding scene.
Use this skill when the user has rendered frames from NRE, NuRec, 3DGS, NeRF, or a similar reconstruction pipeline and wants to enhance, harmonize, evaluate, or optionally fine-tune the DiffusionHarmonizer model.
Do NOT use this skill when:
nre).ncore).--enable-difix. That remains an NRE runtime feature; use the
nre skill for the complete serve-grpc / render-grpc
command shape.This skill follows the public NVIDIA/harmonizer release, not
the older NGC JIT .pt artifact recipe. Use these public
release artifacts:
nvidia/Harmonizer on Hugging Face (the paper checkpoint
models/diffusion_harmonizer.pkl), plus the base
nvidia/Cosmos-Predict2-0.6B-Text2Image model that inference
also requires../download_checkpoints.sh from the repo
root. It fetches the Harmonizer checkpoints into models/
(diffusion_harmonizer.pkl, harmonizer_nontemporal.pt) and
the base Cosmos DiT + tokenizer into
src/checkpoints/nvidia/Cosmos-Predict2-0.6B-Text2Image/.harmonizer-cosmos-env image built from
Dockerfile.cosmos (base nvcr.io/nvidia/pytorch:25.10-py3).src/inference_pix2pix_turbo_harmonizer.py,
run from inside /work/src so it can import its sibling
modules.src/evaluate_test_dataset.pysrc/train_pix2pix_turbo_harmonizer.pyDo not use the obsolete standalone recipe that downloads
nvidia/nre/nurec-fixer:cosmos_3dgut_fixer_harmonizer, mounts
harmonizer_temporal.pt, or runs inference_jit_harmonizer.py
inside nvcr.io/nvidia/pytorch:24.10-py3 unless the user
explicitly asks for that older beta artifact. Do not run
inference_pretrained_model.py; the current README documents
inference_pix2pix_turbo_harmonizer.py as the inference entry
point.
DiffusionHarmonizer is described in DiffusionHarmonizer: Bridging Neural Reconstruction and Photorealistic Simulation with Online Diffusion Enhancer (arXiv 2602.24096, CVPR 2026). It distills a pretrained multi-step diffusion model into a single-step enhancer designed for online simulation and offline data cleanup.
Two operating modes:
The public model card describes DiffusionHarmonizer-cosmos-0.6B,
a Cosmos Predict2 Diffusion Transformer post-trained at
576x1024 input and output resolution.
./download_checkpoints.sh
from the repo root. It places the paper checkpoint at
models/diffusion_harmonizer.pkl and the required base Cosmos
model under
src/checkpoints/nvidia/Cosmos-Predict2-0.6B-Text2Image/..png,
.jpg, .jpeg) to enhance.inference_pix2pix_turbo_harmonizer.py does
not take an output flag; it writes to a sibling folder named
<input_dir>_<model_identifier> next to the input directory.nvidia/Harmonizer, nvidia/Cosmos-Predict2-0.6B-Text2Image,
and (if used) nvidia/Harmonizer-Dataset. Accept the
model/dataset license terms first.docker pull
from nvcr.io. Use only for container pulls, not model
download.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 checks Docker, the
NVIDIA Container Toolkit, GPU architecture, git, the
Hugging Face CLI, token presence, and free disk space — and
exits non-zero on any missing prerequisite.
Clone the code and build (or pull) the runtime image.
Full commands and the Blackwell patch caveat live in
references/inference.md.
Download the checkpoints. From the repo root run the helper, which fetches both the Harmonizer checkpoints and the base Cosmos model into the paths the code expects.
Verify models/diffusion_harmonizer.pkl and
src/checkpoints/nvidia/Cosmos-Predict2-0.6B-Text2Image/
exist.
Confirm input_dir exists and filenames sort into frame
order. The temporal inference script sorts frames with
natural sort and uses previous outputs as references; prefer
zero-padded names such as frame_000001.png.
Run inference inside the container with the repo mounted
at /work, then cd /work/src and run
inference_pix2pix_turbo_harmonizer.py. Pin
-u $(id -u):$(id -g) so outputs are owned by the host user.
Output frames land in
<input_dir>_<model_identifier>. Full docker run recipe and
flag matrix in
references/inference.md.
Validate that the output frame count matches the input
frame count, spot-check frames, and (if ground truth is
available) run paired evaluation with PSNR/LPIPS — see
references/evaluation.md.
(Optional) Train or fine-tune. Download the dataset (or
prepare JSON manifests in the documented format), then run
src/train_pix2pix_turbo_harmonizer.py with the recommended
hyperparameters. For fine-tuning, initialize from the released
checkpoint with --pretrained_path /path/to/diffusion_harmonizer.pkl. Full recipe + NuRec
data-pair recipes in
references/training.md.
(Optional) Teardown. Follow
references/teardown.md to remove
images, code clones, model weights, datasets, and outputs.
Run scripts/validate_setup.py, build the image once (see
references/wrapper-image.md), then
invoke inference_pix2pix_turbo_harmonizer.py inside the
harmonizer-cosmos-env container with the repo checkout mounted at
/work. From /work/src, point --input_image at the rendered
frames, --model_path at /work/models/diffusion_harmonizer.pkl,
set --model_identifier, and pass typical flags
--timestep 250 --resolution 1024 --use_sched. Enhanced frames are
written to <input_dir>_<model_identifier>. The canonical
docker run command and the full flag matrix live in
references/inference.md.
Prepare the paired test_dataset/{scene}/render +
test_dataset/{scene}/gt layout, then run
src/evaluate_test_dataset.py inside the container. See
references/evaluation.md for the
exact directory shape and the docker run command.
Download nvidia/Harmonizer-Dataset, prepare the
training JSON, then run
src/train_pix2pix_turbo_harmonizer.py with the multi-GPU
accelerate launch recipe in
references/training.md. For
fine-tuning add --pretrained_path /path/to/diffusion_harmonizer.pkl and use
--fixing_data_weight 3 on the released dataset.
inference_pix2pix_turbo_harmonizer.py is temporal by default
and uses previous enhanced frames as references
(--offset_list -1 -2 -3 -4). When the user wants each frame
enhanced independently (e.g. unordered images), add
--nontemporal to disable temporal conditioning. Full command +
--offset_list defaults in
references/inference.md.
nre --enable-difix is still the right answer when the user
wants NRE to enhance frames as part of rendering without a
separate harmonizer checkout. That path is owned by the sibling
nre skill. Do not mix the standalone DiffusionHarmonizer
HF/Cosmos workflow with NRE's internal cache flags unless the
NRE documentation for the user's tag explicitly says they share
weights.
Use this standalone skill when the user wants the public DiffusionHarmonizer code, model card, training/evaluation scripts, or post-processing of frames that already exist on disk.
>= 8.0; A100, A10, L40, H100, RTX 30/40/PRO,
B200, GB200).git, python3, Hugging Face CLI (hf or
huggingface-cli).HF_TOKEN with the
nvidia/Harmonizer
and
nvidia/Cosmos-Predict2-0.6B-Text2Image
licenses accepted (required to download model weights and
the optional dataset).NGC_API_KEY (often required for docker login nvcr.io
before pulling nvcr.io/nvidia/pytorch:25.10-py3).The fail-fast check that enforces all of the above is
scripts/validate_setup.py.
| Script | Purpose | Usage |
|---|---|---|
scripts/validate_setup.py | Verify Docker, NVIDIA Container Toolkit, GPU architecture, git, Hugging Face CLI, token presence, and disk space. No network calls. | run_script("scripts/validate_setup.py") or python scripts/validate_setup.py |
scripts/.env.example | Template for HF_TOKEN and optional NGC_API_KEY. | cp scripts/.env.example .env && set -a && . ./.env && set +a |
references/inference.md — container
build, raw-base fallback, Blackwell patches, checkpoint
download, inference_pix2pix_turbo_harmonizer.py flag matrix,
non-temporal mode.references/evaluation.md — paired
test_dataset/ layout and evaluate_test_dataset.py command.references/training.md — dataset
download, training JSON format, multi-GPU accelerate launch
recipe, fine-tuning flags, NuRec data-pair recipes.references/wrapper-image.md —
build and run the project image for repeat inference.references/troubleshooting.md
— extended diagnostic notes.references/teardown.md — cleanup
inventory for images, code, Hugging Face caches, datasets,
and outputs.1024 to 1024x576. Only 1024, 960,
and 1360 are supported keys; 1024 matches the model-card
operating point.--nontemporal for
unordered images.inference_pix2pix_turbo_harmonizer.py as the inference entry
point; if a future checkout renames it, prefer the script and
flags present in that checkout.| Error / symptom | Most common cause |
|---|---|
docker: could not select device driver ... gpu | NVIDIA Container Toolkit missing or Docker is not configured for the NVIDIA runtime. |
docker pull 401 / 403 from nvcr.io | Docker is not authenticated to NGC, or the API key lacks container access. |
hf download ... 401 / 403 | HF_TOKEN is missing/expired/lacks read scope, or the model/dataset license has not been accepted. |
diffusion_harmonizer.pkl missing | Checkpoint download path is wrong or incomplete. Re-run ./download_checkpoints.sh from the repo root. |
Output files owned by root | The docker run omitted -u $(id -u):$(id -g). |
Full matrix in
references/troubleshooting.md.
A full workflow can leave large artifacts on disk: the Cosmos
image, project image, build cache, harmonizer code checkout,
Hugging Face model weights, optional dataset, evaluation
outputs, and enhanced frames. Reclaim them with the inventory
in references/teardown.md. Do not
revoke HF_TOKEN or NGC_API_KEY as normal cleanup. Rotate a
token only if you suspect it was leaked.