Rerun 0.37 新特性:Viewer 加载资产数据(Assets)与rerun --asset实战指南
【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun
Rerun 的资产(Asset)机制为多模态机器人数据引入了"静态数据共享"模型:把机器人网格、URDF 模型、标定文件等注册为数据集上的资产,让同一数据集的多个分段(Segment)复用,而无需重复拷贝进每条录制。本文围绕 changeset-0-37.md 中的 Assets 变更与 cli-asset-flag.md 的rerun --asset功能展开,结合 catalog-object-model.md 与 cli.md 的完整说明,带你掌握 Viewer 加载资产数据的完整工作流:从 CLI 注册资产、Viewer 内查看与增删,到 Python Catalog API 查询资产与性能考量。
什么是 Rerun 资产(Assets)
资产是注册在数据集(Dataset)上、并被该数据集所有分段共享的静态数据,典型例子包括机器人 URDF、房间网格(room mesh)或标定数据(calibration)。在 Rerun 0.37 的数据模型里,资产与蓝图(blueprint)类似,拥有自己独立的数据集,归属于它所服务的数据集:
- 资产只需注册一次,不必复制进每一条录制(segment);
- 删除所属数据集时,其资产数据集与资产存储会一并删除;
- 资产只能包含静态数据——如果一个
.rrd文件包含时间维度的数据,则无法注册为资产。
完整的数据模型说明见 catalog-object-model.md。
Viewer 如何加载并缓存资产
打开分段时按需下载
当 Rerun Viewer 打开某个分段时,它会连同分段自身的数据一起加载所属数据集的资产。资产数据会被缓存起来,因此同一数据集的其他分段再次打开时,无需重复下载同一个资产——这是 0.37 引入的核心体验改进,见 changeset-0-37.md 的 Assets 章节。
在 Viewer 中查看与管理资产
数据集的视图现在会列出已注册的资产及其元数据。与之前只能通过外部手段注册不同,0.37 起可以直接在 Viewer 内完成资产的注册与注销,操作界面直观可见(Assets标签页列出资产并允许注册/注销)。
命令行:rerun --asset注册资产
基本用法
rerun --asset允许你在启动 Viewer 时,把一个.rrd文件注册为指定本地录制所在数据集的资产:
rerun rec.rrd --asset asset.rrd这条命令会把asset.rrd注册到rec.rrd所属数据集的资产中,使该资产在录制中可见。在 0.37 之前,一个资产文件若以自己的 recording id 写入,会作为独立的录制被打开;现在它作为资产挂靠在录制所在的数据集下,语义更清晰(见 cli-asset-flag.md)。
多条命令的注册规则
- 每个
--asset都会被注册到命令行中所有指定本地.rrd录制所在的数据集,与参数顺序无关:
rerun --asset mesh.rrd rec0.rrd rec1.rrd --asset robot.rrd上面的命令会把mesh.rrd与robot.rrd两个资产都注册到rec0.rrd、rec1.rrd两个录制各自的数据集中。
- URL、蓝图及其他非录制参数不会接收资产。
- 若在没有任何本地
.rrd录制的情况下单独使用--asset,会产生错误。 --asset可以重复传多次(如上面示例所示)。
依赖 Viewer catalog 设置
该功能需要Settings → Viewer catalog下的Load files via Viewer catalog设置处于开启状态;使用--asset时,如果该设置当前是关闭的,Rerun 会自动将其启用,无需手动干预。
完整的 CLI 参数列表见 CLI manual,其中对--asset <PATH>的官方定义为:一个指向.rrd文件的路径,将其注册为所有包含指定本地录制的数据集的资产;资产持有静态数据(如网格或机器人模型),可被数据集内所有录制共享。
Python API:用 Catalog 操作资产
除了 CLI 与 Viewer,Rerun 的 Python Catalog API 同样支持资产的全生命周期管理(示例取自 catalog-object-model.md):
dataset.register_asset("file:///path/to/file.rrd") # 注册资产 dataset.unregister_asset(asset_id) # 注销资产 print(dataset.assets()) # 列出当前资产register_asset()从服务器可读取的.rrd文件注册资产;不支持的情况包括:文件含时间数据、或注册后会使数据集资产数超过12 个的上限。
分段存储与资产清单
从 Python 侧,segment_store()返回的存储会同时覆盖数据集的资产与分段自身的数据。若只想处理分段数据,可传入include_assets=False排除资产,这也会跳过对资产清单(manifest)的请求:
# 覆盖分段与资产两者的 chunks both = dataset.segment_store(segment_id) # 仅覆盖分段,不获取任何资产清单 segment_only = dataset.segment_store(segment_id, include_assets=False)每个资产的清单获取都要消耗一次请求,因此只关心分段自身数据时,include_assets=False是值得的优化手段。
资产数据集的查询细节
- Dataframe 查询 API 是例外:它们只停留在数据集自身的分段上,资产永远不会出现在查询结果里。
DatasetEntry.schema()、segment_ids()、segment_table()、reader()等接口都会忽略资产数据集。- 资产数据集是隐藏的,
CatalogClient.datasets()默认不会列出它,除非传入include_hidden=True。 - 若要查询资产数据,直接以资产数据集为目标即可——每个已注册资产对应其中一个分段,且资产只含静态数据,因此读取时无需传入索引(index):
asset_dataset = dataset.asset_dataset() print(asset_dataset.schema()) df = asset_dataset.reader(index=None) # 资产仅含静态数据,无索引可读底层实现与适用场景小结
从源码结构看,资产机制构建在 Rerun 的 Catalog 对象模型之上:资产作为独立数据集存储、以.rrd文件为注册载体、按需拉取清单并缓存数据,这与蓝图的归属/级联删除语义保持一致。这套机制最典型的应用场景是跨分段共享的静态参考数据:
- 机器人数据集:每个 episode 分段都引用同一个机器人网格/URDF;
- 多房间重建:共享房间网格,各分段只记录各自的轨迹;
- 标定文件:所有相机分段复用同一份标定数据。
CLI、Viewer 界面与 Python API 三端能力对齐:命令行rerun --asset适合批量导入,Viewer 的资产标签页适合交互式增删,Pythonregister_asset/unregister_asset适合脚本化管线。三者配合即可完整覆盖"资产注册 → Viewer 加载缓存 → 跨分段复用 → 按需查询"的全流程。
【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考