LingBot-Map视频分辨率选择指南:518×378为何是黄金比例
【免费下载链接】lingbot-map(ECCV 2026 oral) LingBot-Map: Geometric Context Transformer for Streaming 3D Reconstruction项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-map
LingBot-Map 是一个流式 3D 重建模型(Geometric Context Transformer),它逐帧消费视频画面、实时输出相机位姿和点云。而视频分辨率是新手跑通效果时最容易踩坑的一步——官方默认输入为518×378,这不是随意挑选的数字,而是由模型 14 像素的 patch 结构、KV 缓存显存和约 20 FPS 的推理速度共同决定的"黄金比例"。本文带你用 5 分钟搞懂如何为 LingBot-Map 选对视频分辨率。
先认识 LingBot-Map:流式 3D 重建模型
LingBot-Map(ECCV 2026 oral)用前馈网络把视频流式地重建为 3D 场景:每帧只前向一次,配合分页 KV 缓存注意力,就能在 518×378 分辨率下稳定跑到约 20 FPS,并支撑超过 10000 帧的长视频重建。
上图正是官方用约 518×378 级别的输入分辨率重建的长视频:上方为多房间室内行走视频,下方为户外驾驶视频。
518×378 是怎么来的?一切由 14 像素 patch 决定
LingBot-Map 的视觉主干是 DINOv2 ViT-L/14,patch_size = 14,见 lingbot_map/models/gct_stream.py。这意味着:
- 图像的宽、高都必须是 14 的整数倍,否则无法被均匀切分成 patch;
- 518 = 37 × 14,378 = 27 × 14,恰好整除,零浪费;
- 每帧被切成37 × 27 = 999 个 patch——这个数值直接决定 KV 缓存页的大小与显存占用,参见 lingbot_map/layers/flashinfer_cache.py 中"972 for 504×378"的注释(504×378 则是 36×27=972 个 patch,同一体系的近邻尺寸)。
也就是说,518×378 是在"保持接近 4:3 的常见视频画幅"和"14 整除 + 控制 patch 总量"之间取得的最佳折中。
为什么不用 720p / 1080p?
| 输入分辨率 | 宽×高 ÷ 14 | 每帧 patch 数 | 结论 |
|---|---|---|---|
| 518×378(默认) | 37 × 27 | 999 | ✅ 黄金基准 |
| 504×378 | 36 × 27 | 972 | ✅ 官方 profiling 脚本的默认值 |
| 1280×720 | 91 × 51 | ≈ 4641 | ⚠️ 约 4.6 倍显存/计算,明显变慢 |
| 1920×1080 | 137 × 77 | ≈ 10549 | ❌ 约 10 倍,长视频几乎不可用 |
patch 数与每帧注意力计算量、KV 缓存页数成正比,分辨率翻倍,速度远不止减半。
黄金比例带来什么:速度、显存与长视频稳定
- 速度快:518×378 下约 20 FPS;开启
--compile(torch.compile)后还能再快约 5 FPS(见 demo.py); - 显存省:每帧仅 999 个 patch,分页 KV 缓存占用小,普通消费级显卡也能跑;
- 长视频稳:官方 25000 帧、13 分钟的室内视频就是用这套分辨率完成的,轨迹闭环依旧贴合。
实操指南:如何设置 LingBot-Map 视频分辨率
一键默认:什么都不用改
lingbot_map/utils/load_fn.py 中的预处理会自动把你的视频帧处理成模型友好的尺寸:
python demo.py --model_path /path/to/lingbot-map.pt \ --video_path your_video.mp4 --fps 10--image_size默认为518(demo.py),即宽度缩放到 518;- 高度按原始比例换算后自动取 14 的整数倍;
crop模式:宽度锁 518,若换算后高度超过 518 则居中裁剪;pad模式:最长边缩到 518,另一边补白填充,保留全部像素。
💡 想确认实际输入尺寸?加
--export_preprocessed ./out可导出预处理后的图像,直接量一下尺寸即可。
自定义分辨率:记住"14 的整数倍"
做性能测试时可用 gct_profile.py:
python gct_profile.py --img_size 518 --img_h 378 --img_w 504 --compile参数说明里明确写着Must be divisible by 14——高度和宽度都要能被 14 整除,如 378、392、406… 官方 benchmark 同样固定了这一基准,见 benchmark/configs/methods/lingbot_map.yaml(_image_size: 518、_patch_size: 14、_align: 14)以及 benchmark/configs/datasets/tum.yaml。
竖屏视频怎么办?
手机竖拍视频宽高比倒置后可能过窄,可加--rotate_clockwise_90(demo.py)先顺时针旋转 90° 再走缩放/裁剪流程。
新手避坑清单
- 不要手动把视频硬缩放到 1920×1080 再喂给模型——交给默认的
--image_size 518自动处理即可; - 高度不是 14 的倍数时会被自动取整,这是预期行为,不是 bug;
- 不同帧宽高比不一致时,预处理会把所有帧白边补齐到相同形状再批量推理;
- **高帧率视频(如 60 FPS 行车记录仪)**建议
--fps 10或增大--stride抽帧,控制总帧数; - 超过 320 帧时 KV 缓存会增长,
demo.py会自动计算keyframe_interval只缓存关键帧,无需手动干预; - **长序列(>3000 帧)**改用
--mode windowed --window_size 128,分辨率保持默认即可。
上图是 benchmark 中以 518 宽度(benchmark/assets/traj/)评估 TUM 数据集的位姿结果:蓝色估计轨迹与灰色参考轨迹高度重合,说明该分辨率下的重建精度已满足科研与工程需求。
总结:三步选对 LingBot-Map 视频分辨率
- 直接信任默认值:
--image_size 518,高度自动对齐 14 的整数倍; - 追求速度/省显存:保持 518×378 画幅,加
--compile提速; - 有特殊画幅需求:自定义宽/高,但要同时被 14 整除,并参考 999 patch/帧 的量级评估显存。
一句话记住:宽 518、高 378、patch 14、帧数 320 以内——这就是 LingBot-Map 的流式 3D 重建黄金组合。
【免费下载链接】lingbot-map(ECCV 2026 oral) LingBot-Map: Geometric Context Transformer for Streaming 3D Reconstruction项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-map
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考