NimCritic
NimCritic 根据机器人视频和任务指令,逐帧估计任务进度与是否完成。
目录里有什么
| 路径 | 内容 |
|---|---|
infer_nimcritic.py |
读帧、滑窗和命令行参数。 |
nimcritic_model.py |
模型:video DiT、value DiT、VAE、文本编码器。 |
nimcritic_step_128000.pt |
step 128000。video expert 5.00B,value expert 1.02B,bfloat16。 |
base/ |
Wan2.2 VAE、UMT5-XXL 编码器和分词器。不含 Wan2.2 DiT:video expert 的完整权重已经在 .pt 里。 |
base/ 包含:
DiffSynth-Studio/Wan-Series-Converted-Safetensors/Wan2.2_VAE.safetensorsDiffSynth-Studio/Wan-Series-Converted-Safetensors/models_t5_umt5-xxl-enc-bf16.safetensorsWan-AI/Wan2.1-T2V-1.3B/google/umt5-xxl/(分词器)
许可见 Apache-2.0。
环境
Python 3.12+。在本目录安装推理依赖:
uv sync
依赖写在 pyproject.toml:PyTorch、transformers(4.57,低于 4.58)、safetensors、einops、opencv-python-headless、Pillow、numpy、tqdm。
模型代码在 nimcritic_model.py,权重与 base/ 在同目录。推理不访问其他路径,也不下载额外文件。
推理
在本目录执行。默认读取同目录的 nimcritic_step_128000.pt 与 base/。
uv run python infer_nimcritic.py \
--video clip.mp4 \
--task "pick up the cup" \
--output result.json
输入为视频文件时,按容器帧率采样至 2Hz(--sample-hz,默认 2),并保留最后一帧。输入已是 2Hz 帧序列时使用 --frames,不再按 2Hz 重采样:
uv run python infer_nimcritic.py \
--frames frames_dir/ \
--task "pick up the cup" \
--output result.json
--base 指向 base/ 这一层,不是里面的 DiffSynth-Studio/。
默认口径:帧拉到 256×448(stretch),progress 是相对当前窗口条件帧的增量,写回前还原成 0–1,rollout_stride=1,distance 聚合,20 步,seed 42。和论文短任务表同一口径时加上 --rollout-stride 2。
每个参数的含义、可选项和默认值:
uv run python infer_nimcritic.py --help
不加载权重、只检查抽帧和参数:
uv run python infer_nimcritic.py --self-check
GPU 推理建议预留不少于 24 GB 显存。CPU 推理通过 --device cpu 指定,耗时高于 GPU。
结果 JSON 中,progress 与 success 为逐帧的 0–1 数值。sampling 记录所采用的帧下标。
引用
@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}
}
基准请同时引用 LOOM。
Model tree for RimbotAI/NimCritic
Base model
Wan-AI/Wan2.2-TI2V-5BDataset used to train RimbotAI/NimCritic
Updated • 14