TTT3R长序列数据集准备指南:ScanNet、TUM、Sintel、Bonn、KITTI逐步上手

【免费下载链接】TTT3R

[ICLR 2026] A simple state update rule to enhance length generalization for CUT3R

项目地址:https://gitcode.com/gh_mirrors/ttt/TTT3R
点击查看免费下载

TTT3R 是一款把「3D 重建当作测试时训练」的长序列重建模型(ICLR 2026),通过一个简单的状态更新规则显著增强了 CUT3R 的长度泛化能力。想复现它的评测?关键在于把ScanNet、TUM-dynamics、Sintel、Bonn、KITTI五个数据集整理成 TTT3R 评测脚本能识别的长序列目录结构。本指南带你从零完成 TTT3R 数据集准备,并跑通相机位姿、视频深度与 3D 重建三类评测。

为什么需要"长序列"数据集准备

TTT3R 的核心卖点是length generalization(长度泛化):模型用 4~64 帧训练,却能评测 500 甚至 1000 帧的长视频。为了公平对比,官方把每个数据集按不同帧数(50/100/…/1000)切成多套序列,命名规则统一为:

数据集命名格式含义
ScanNetscannet_s3_{N}采样间隔 3 帧,取前 N 帧
TUMtum_s1_{N}采样间隔 1 帧,取前 N 帧
Bonnbonn_s1_{N}间隔 1,从第 30 帧起取 N 帧
KITTIkitti_s1_{N}间隔 1,取前 N 帧
Sintelsintel固定 14 条训练序列,无需切分

准备脚本集中在 datasets_preprocess/ 目录,评测说明见 eval/eval.md。

先下载仓库与模型权重

git clone https://gitcode.com/gh_mirrors/ttt/TTT3R cd TTT3R

按 README.md 的 Installation 一节创建 conda 环境、编译 RoPE 的 CUDA kernel,然后用gdown下载 CUT3R 权重cut3r_512_dpt_4_64.pth放到src/下——所有评测脚本默认从这里加载权重。

TTT3R 沿用了 CroCo 风格的编码器-解码器结构:双视图输入经过 Encoder 提取特征,再由共享的 Decoder 恢复几何信息,TTT3R 在此基础上用状态更新规则处理超长序列。

ScanNet 长序列准备:按 3 帧间隔采样 1000 帧

ScanNet 的原始数据包含color/(RGB)、depth/(深度)、pose/(位姿)三个子目录。准备脚本 long_prepare_scannet.py 会遍历所有场景,按SAMPLE_INTERVAL = 3采样,并为 50~1000 帧各生成一份:

python datasets_preprocess/long_prepare_scannet.py

脚本会输出类似data/long_scannet_s3/{seq}/color_{N}、depth_{N}、pose_{N}.txt的结构,位姿被展平合并成单个 txt 文件。注意脚本中的数据集根路径(第 11~16 行)硬编码在/home/share/Dataset/3D_scene/ScanNet/scans_test/,需改成你本机的实际路径。

TUM-dynamics 准备:时间戳对齐后切帧

long_prepare_tum.py 的做法稍有不同:它先读取rgb.txt与groundtruth.txt两个时间戳文件,用associate()函数在 ±0.02s 窗口内做帧级对齐,再按SAMPLE_INTERVAL = 1取前 N 帧。

python datasets_preprocess/long_prepare_tum.py

产出为data/long_tum_s1/{seq}/rgb_{N}/与groundtruth_{N}.txt。TUM 的原始目录结构(含rgb.txt/groundtruth.txt索引文件)建议参照 MonST3R 与 Spann3R 的数据说明组织。

Bonn 准备:从第 30 帧截取固定区间

long_prepare_bonn.py 从START_FRAME = 30开始,对每条序列截取 N 帧(50~500),同时保证 RGB、深度、真值位姿三者的帧数一致(取三者可用帧数的最小值,见第 40~45 行):

python datasets_preprocess/long_prepare_bonn.py

输出目录为data/long_bonn_s1/rgbd_bonn_dataset/{seq}/,包含rgb_{N}/、depth_{N}/和groundtruth_{N}.txt。Bonn 深度评测只使用 5 条固定序列:balloon2、crowd2、crowd3、person_tracking2、synchronous。

KITTI 准备:只收集深度与对应裁剪图像

long_prepare_kitti.py 面向 KITTI 的 depth_selection 验证集,把proj_depth/groundtruth/image_02下的真值深度 png 按 N 帧拷贝到data/long_kitti_s1/depth_selection/val_selection_cropped/groundtruth_depth_gathered_{N}/,并按路径规则同步收集裁剪后的 RGB 图像到image_gathered_{N}/:

python datasets_preprocess/long_prepare_kitti.py

脚本内置了depth_read()辅助函数(深度 png 需除以 256 还原),也提示了 16bit 深度图的判断逻辑。同样记得修改第 24 行的原始数据路径。

Sintel 准备:无需脚本,按规范摆放即可

Sintel 是合成数据集,序列本身较短,TTT3R 直接评测完整的 14 条训练序列,没有对应的准备脚本。你只需按 eval/relpose/metadata.py 中的路径约定组织数据:

  • 图像:data/sintel/training/final/{seq}/*.png
  • 相机参数:data/sintel/training/camdata_left/{seq}/

固定序列清单(alley_2、ambush_4、market_2、temple_2 等)已硬编码在 metadata 中,无需额外配置。

跑通三类评测:位姿、深度与重建

数据准备完毕后,结果统一保存在eval_results/*。三类评测各有一组 shell 脚本:

1. 相机位姿估计(Ate/Rpe 指标,基于 evo)

CUDA_VISIBLE_DEVICES=6,7 bash eval/relpose/run_scannet.sh CUDA_VISIBLE_DEVICES=6,7 bash eval/relpose/run_tum.sh CUDA_VISIBLE_DEVICES=6,7 bash eval/relpose/run_sintel.sh

脚本中datasets=('scannet_s3_1000')可按需换成 50~1000 的任意长度,--num_processes匹配你的 GPU 数量即可。

2. 视频深度估计(metric / scale / scale&shift 三种对齐方式)

CUDA_VISIBLE_DEVICES=5 bash eval/video_depth/run_kitti.sh CUDA_VISIBLE_DEVICES=5 bash eval/video_depth/run_bonn.sh CUDA_VISIBLE_DEVICES=5 bash eval/video_depth/run_sintel.sh

3. 多视图 3D 重建(7scenes,控制max_frames检验长序列重建质量)

CUDA_VISIBLE_DEVICES=5 bash eval/mv_recon/run.sh

常见坑与排查清单

  • 路径不匹配:准备脚本里的原始数据路径是硬编码的,且评测脚本默认数据在./data下,运行前先核对 datasets_preprocess/ 各脚本的 glob 路径。
  • 帧数不足:ScanNet 脚本会自动将目标帧数下调为序列实际可采样长度,Bonn 脚本会打印final unified frame count,看到帧数偏少属正常现象。
  • 命名不一致:评测时的--eval_dataset必须与metadata.py中注册的名称完全一致(如tum_s1_500),目录名rgb_{N}、color_{N}中的 N 也要对应。
  • 依赖环境:位姿评测需要evo,点云重建需要open3d,两者均在 README 的安装步骤中给出。

完成以上步骤,你就拥有了完整的 TTT3R 长序列评测流水线——从 50 帧到 1000 帧,可以直观观察 TTT3R 相比 CUT3R 在长视频 3D 重建上的长度泛化优势。

【免费下载链接】TTT3R

[ICLR 2026] A simple state update rule to enhance length generalization for CUT3R

项目地址:https://gitcode.com/gh_mirrors/ttt/TTT3R
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考