Robotics
reward-model
File size: 3,503 Bytes
7f90fbe
 
87f8154
 
 
 
 
 
7f90fbe
87f8154
 
 
e2bcfda
87f8154
e2bcfda
87f8154
e2bcfda
87f8154
e2bcfda
87f8154
e2bcfda
 
 
 
87f8154
e2bcfda
87f8154
 
 
e2bcfda
87f8154
e2bcfda
87f8154
e2bcfda
87f8154
e2bcfda
87f8154
 
 
 
 
e2bcfda
87f8154
e2bcfda
87f8154
e2bcfda
87f8154
e2bcfda
87f8154
 
 
 
 
 
 
 
e2bcfda
87f8154
 
 
 
 
 
 
 
e2bcfda
87f8154
e2bcfda
87f8154
e2bcfda
87f8154
 
 
 
 
e2bcfda
87f8154
 
 
 
 
e2bcfda
87f8154
e2bcfda
87f8154
e2bcfda
87f8154
 
 
 
 
 
 
 
 
 
 
e2bcfda
87f8154
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
---
license: apache-2.0
base_model: Wan-AI/Wan2.2-TI2V-5B
datasets:
  - RimbotAI/LOOM
tags:
  - robotics
  - reward-model
---

# NimCritic

NimCritic estimates per-frame task progress and completion from a robot video and a task instruction.

[Project page](https://rimbot.com/en/research/nimcritic/) · [Paper](https://arxiv.org/abs/2610.32776) · [Benchmark][hf-benchmark] · [Demo](https://critic.rimbot.com/)

## Contents

| Path | Contents |
|---|---|
| `infer_nimcritic.py` | Frame loading, the sliding window, and the command-line arguments. |
| `nimcritic_model.py` | The model: video DiT, value DiT, VAE, and text encoder. |
| `nimcritic_step_128000.pt` | Step 128000. Video expert 5.00B, value expert 1.02B, bfloat16. |
| `base/` | Wan2.2 VAE, UMT5-XXL encoder, and tokenizer. The Wan2.2 DiT is not included: the full video-expert weights are already in the `.pt`. |

`base/` contains:

- `DiffSynth-Studio/Wan-Series-Converted-Safetensors/Wan2.2_VAE.safetensors`
- `DiffSynth-Studio/Wan-Series-Converted-Safetensors/models_t5_umt5-xxl-enc-bf16.safetensors`
- `Wan-AI/Wan2.1-T2V-1.3B/google/umt5-xxl/` (tokenizer)

License: Apache-2.0.

## Environment

Python 3.12+. Install the inference dependencies in this directory:

```bash
uv sync
```

Dependencies are listed in `pyproject.toml`: PyTorch, `transformers` (4.57, below 4.58), `safetensors`, `einops`, `opencv-python-headless`, `Pillow`, `numpy`, and `tqdm`.

The model code is `nimcritic_model.py`. The checkpoint and `base/` are in the same directory. Inference does not read any other path and does not download extra files.

## Inference

Run from this directory. The defaults are `nimcritic_step_128000.pt` and `base/` next to the script.

```bash
uv run python infer_nimcritic.py \
  --video clip.mp4 \
  --task "pick up the cup" \
  --output result.json
```

A video file is sampled to 2 Hz from the container frame rate (`--sample-hz`, default 2), and the last frame is kept. A frame sequence that is already 2 Hz uses `--frames` and is not resampled:

```bash
uv run python infer_nimcritic.py \
  --frames frames_dir/ \
  --task "pick up the cup" \
  --output result.json
```

`--base` is the `base/` directory, not the `DiffSynth-Studio/` directory inside it.

Defaults: frames are resized to 256×448 (`stretch`); progress is a delta relative to the condition frame of the current window and is mapped back to 0–1 before it is written; `rollout_stride=1`; `distance` aggregation; 20 steps; seed 42. Add `--rollout-stride 2` to match the short-task table in the paper.

Arguments, choices, and defaults:

```bash
uv run python infer_nimcritic.py --help
```

Check frame sampling and arguments without loading weights:

```bash
uv run python infer_nimcritic.py --self-check
```

Reserve at least 24 GB of GPU memory. CPU inference is `--device cpu` and is slower than the GPU.

In the result JSON, `progress` and `success` are per-frame values in 0–1. `sampling` records the frame indices that were used.

## Citation

```bibtex
@article{xu2026nimcritic,
  title   = {Predictive Long-Horizon Progress Modeling with Action-Aware Quantification},
  author  = {Xu, Tianchi and Zheng, Yalin and Zhu, Yangxin and Ren, Ruonan and Fu, Zheng and Wang, Yunlong and Zhong, Yuanxin},
  journal = {arXiv preprint arXiv:2610.32776},
  year    = {2026},
  url     = {https://arxiv.org/abs/2610.32776}
}
```

Cite [LOOM][hf-benchmark] as well when reporting benchmark numbers.

[hf-benchmark]: https://huggingface.co/datasets/RimbotAI/LOOM