基于 Rerun + Gradio + SAM 2 的交互式 3D 标注应用:annotation_gradio 示例深度解析
2026/9/16 23:22:21 网站建设 项目流程

基于 Rerun + Gradio + SAM 2 的交互式 3D 标注应用:annotation_gradio 示例深度解析

【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun

本篇文章围绕仓库中的examples/python/annotation_gradio外部示例展开,剖析如何将 Rerun 与 Gradio 组合,构建一个可交互的 3D 标注应用:无论是单目视频流中的对象追踪(实时生成深度图与点云),还是多视角 RGB-D 数据中 2D 掩码的三角化与跨视角传播,均基于 Segment Anything 2(SAM 2)实现。读完本文,你将掌握该示例的两种工作模式、完整的运行方法(基于 Pixi),以及背后 Rerun 用于承载 2D/3D 空间数据的核心可视化原语。

示例定位:仓库中的 Image & Video Understanding 类外部示例

在 Rerun 仓库的示例清单 examples/manifest.toml 中,annotation_gradio被归类在"Image and video understanding"(图像与视频理解)类别下,与detect_and_track_objectssam3d_bodysam2_depthanythingsegment_anything_model等示例并列。该分类的描述是"与图像和视频处理相关的示例,突出 Rerun 在 2D 方面的能力"——而本示例更进一步,将 2D 分割能力与 3D 空间信息(深度、点云、多视角几何)打通。

需要特别说明的是:这是一个外部示例(external example)。Rerun 仓库内仅保留其说明文档 examples/python/annotation_gradio/README.md,实际代码托管在独立的annotation-example仓库中,运行前需要通过git clone拉取完整代码。这与仓库内sam2_depthanything等外部示例的形态一致(见 examples/python/sam2_depthanything/README.md)。

技术栈概览

该应用的核心技术组合如下:

组件职责
Rerun负责数据的可视化与交互:2D 掩码、深度图、点云、多视角 3D 场景的实时呈现
Gradio提供 Web 交互界面,让用户通过浏览器完成对象点选、标注与结果查看
Segment Anything 2(SAM 2)提供图像/视频分割能力,是两种模式共用的底层分割与追踪模型

SAM 2 是 Segment Anything 的延续工作,其关键改进在于引入了跨帧的会话级记忆模块(per-session memory module),使模型能够在整段视频中持续追踪被选中的对象——即使对象暂时离开视野,模型也能凭借此前帧的上下文信息恢复跟踪。这一特性正是本示例"在视频流中标注并追踪对象"能力的基石。

两种工作模式详解

该应用包含两种工作模式,两者都基于 SAM 2,但数据输入与 3D 重建策略完全不同。

模式一:单目视频流中的对象追踪(Monocular)

第一种模式聚焦于在单目视频流中追踪一个对象。除了分割掩码之外,应用还会实时生成深度图(depth maps)点云(point clouds),为标注过程提供完整的 3D 空间上下文。用户可以:

  • 直接在三维空间中可视化、检查(inspect)被追踪的对象;
  • 在 3D 视角下对对象进行标注,而不再局限于 2D 画面。

这意味着仅凭一个普通单目摄像头,你就能获得"2D 分割 + 3D 空间位置"的完整标注体验。仓库内与之技术路线相近的参考示例是 examples/python/sam2_depthanything/README.md——该示例把 SAM 2 的视频追踪能力与单目深度估计模型结合,实现"仅从一段单目视频中在 3D 空间追踪对象",与本模式一脉相承,可作为理解单目深度可视化链路的对照材料。

模式二:多视角 RGB-D 数据的 3D 掩码重建与传播(Multiview RGB-D)

第二种模式使用多视角 RGB-D 视频数据集,处理流程可以拆解为四个关键步骤:

  1. 双视角分割:从两路同步且已标定(synchronized and calibrated)的 RGB-D 视角中分别获取分割掩码;
  2. 三角化重建 3D 掩码:利用两路 2D 掩码进行三角化(triangulate),重建出所选对象的精确 3D 掩码;
  3. 跨视角传播:将这一 3D 掩码传播到所有相机视角;
  4. 跨帧传播:将 3D 掩码沿视频逐帧传播,最终得到对象随时间演化的完整 3D 追踪轨迹(fully tracked 3D object trajectory over time)

这一模式展示了"2D 分割 → 3D 几何 → 时序追踪"的完整链路,非常适合需要精确 3D 对象级标注的数据生产场景。

运行指南:基于 Pixi 一键启动

由于该示例是外部示例,运行前需要先克隆其独立仓库,并确保本机已安装Pixi 包管理器(Pixi 是该项目广泛使用的环境与任务管理工具,仓库内大量示例与开发任务均依赖它,参见 examples/python/README.md 中"Running examples with Pixi"一节)。

前置条件

  • 已安装 Pixi 包管理器;
  • 具备基本的命令行操作能力。

步骤一:克隆外部示例仓库

git clone https://github.com/rerun-io/annotation-example cd annotation-example

步骤二:运行单目模式应用

pixi run app

执行上述命令将启动单目(monocular)模式的应用,即模式一:在单目视频流中追踪对象,并实时生成深度图与点云。

步骤三:运行多视角模式应用

pixi run multiview-app

执行上述命令将启动多视角 RGB-D 模式的应用,即模式二:从两个同步且标定的 RGB-D 视角出发,重建并跨视角、跨帧传播 3D 掩码。

pixi run <task>会解析仓库内pixi.toml中预定义的任务(task)并自动管理依赖环境,因此克隆后无需手工安装依赖即可运行,这也是该示例推荐 Pixi 的原因。

可视化原理:Rerun 如何承载 2D 与 3D 标注数据

虽然本示例的实际代码在外部仓库,但它在 Rerun 侧所依赖的可视化原语,都可以在仓库内的其他示例中找到对应的标准用法。理解这些原语,有助于你读懂 annotation 应用在 Rerun Viewer 中呈现的每一类数据。

时间轴(Timeline):把每一帧数据挂到时间线上

标注与追踪数据是逐帧产生的,Rerun 通过set_time将每一份日志数据绑定到时间轴上的特定帧。参考 examples/python/segment_anything_model/README.md 中的标准写法:

for n, image_uri in enumerate(args.images): rr.set_time("image", sequence=n) # ... 记录该帧的分割结果

对于本示例,每个时刻的数据(掩码、深度、点云、相机位姿)都需要挂在同一个时间戳下,才能在 Viewer 中按时间轴同步回放。

图像与分割掩码:Image / SegmentationImage

  • 输入帧以rr.Image记录到某个实体路径下;
  • 分割掩码叠加后以rr.SegmentationImage记录,即可在 Rerun 中按类着色叠加显示。

参考写法(见 examples/python/segment_anything_model/README.md):

rr.log("image", rr.Image(image)) rr.log("image/masks", rr.SegmentationImage(segmentation_img.astype(np.uint8)))

深度图与针孔相机:DepthImage / Pinhole

模式一中"实时深度图与点云"在 Rerun 中的标准落地方式,可以参考仓库内的 RGBD 示例 examples/python/rgbd/README.md:

# 定义针孔相机模型(分辨率 + 焦距),把图像挂到 3D 世界坐标系下 rr.log( "world/camera/image", rr.Pinhole( resolution=[img_depth.shape[1], img_depth.shape[0]], focal_length=0.7 * img_depth.shape[1], ), ) # 记录深度图,meter 参数声明深度值到米的比例 rr.log("world/camera/image/depth", rr.DepthImage(img_depth, meter=DEPTH_IMAGE_SCALING))

当图像挂载了Pinhole相机模型后,Rerun 会自动将其投射到 3D 空间中,结合DepthImage即可实时生成点云视图——这正是 annotation 应用模式一中"在三维空间中检查被追踪对象"的实现基础。

3D 掩码与追踪轨迹:三角化的空间落点

模式二中的 3D 掩码与跨帧轨迹,对应 Rerun 的 3D 空间视图能力:一旦多视角相机都以Pinhole(含外参)挂载到同一world坐标系下,三角化得到的 3D 掩码点、对象轨迹点就可以作为 3D 实体直接写入场景,并随 Timeline 逐帧演进。用户可以自由旋转视角,从任意角度检查掩码重建精度与轨迹一致性——这正是"交互式 3D 标注"的核心交互体验。

实战价值与应用场景

结合本项目"Visualize, query, and stream to train on multimodal robotics data"的定位,该类交互式 3D 标注应用在以下场景中具有直接价值:

  • 机器人多模态数据标注:为抓取、操作等任务生成对象级 3D 掩码与轨迹标签,作为训练数据的生产工具;
  • 多视角重建数据质检:借助三角化与跨视角传播,快速发现重建误差或遮挡导致的掩码漂移;
  • 单目感知方案验证:仅凭普通摄像头即可获得带 3D 上下文的标注体验,降低标注硬件门槛;
  • 教学与原型演示:Gradio 的 Web 界面使得非技术成员也能参与标注流程,Rerun 则保证了全程数据的可视化可回溯。

提示:本文介绍的是外部示例的使用方式与底层可视化原理,具体代码实现请以克隆后的annotation-example仓库为准;仓库内 examples/python/annotation_gradio/README.md 保留的是该示例的入口文档,examples/manifest.toml 记录了它在示例体系中的分类归属。

【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询