Potato 2.8:标注一切,然后测量它
Potato 2.8 新增了计算机视觉、十亿像素深度缩放、三维点云、深度图、机器人回合、生成式视频评估与 VLM 定位——并对上述全部内容报告经机遇校正的一致性。
Potato 曾是一个带有图像模式的文本标注平台。从 2.8 起,它覆盖图像、视频、十亿像素扫描件、三维点云、深度图、机器人回合、生成式视频推演与视觉语言定位,并且对其中每一项都会报告标注者是否一致。
后半句值得读两遍。绘图工具并不稀缺:CVAT、Label Studio、Roboflow、V7 与 Supervisely 都能画框和多边形,其中几家画得比 Potato 还好。稀缺的是针对空间标签的、经机遇校正的信度统计量。我们没有找到另一个会报告它的标注平台。通行做法是原始 IoU 或百分比匹配。
Potato 2.8
如果你是从 PyPI 安装的,请升级
先说这件事。2.7.1 及之前的 wheel 用单层通配符声明包数据,因此存放在子目录中的 27 个模板从未进入发布包。对于用 pip install 安装的人,solo 模式的设置路由、管理看板、评审校准与语料地图全都是坏的。从 git 检出运行的人从未遇到过,这也正是测试套件没能发现它的原因。
pip install --upgrade potato-annotation为什么原始 IoU 不等于一致性
设想一份语料,其中每张图片都有一个居中的大目标。两位都在中间画框的标注者会有很高的重叠度,因此平均 IoU 算出来约 0.95。
而一位看都没看就在中间画了个框的标注者,结果也是如此。
这个数字衡量的是任务有多容易,而不是标注者有多一致,而这恰恰是机遇校正当初为类别标签所要解决的问题。Potato 报告 σ,它是把 α 自身的 1 − D_o/D_e 形式推广到任意距离,其机遇基线通过比较不同条目的标注来经验地估计。σ = 0 意味着标注者之间的一致程度,与他们在互不相关的图片上的表现无异。
显而易见的替代方案——在 1 − IoU 上套用 Krippendorff's α——结果是行不通的,而这值得说明原因,因为那正是我们最初的方案。IoU 距离会饱和:随机配对的两个框几乎总是 IoU 为 0,于是期望分歧收敛到约等于 1,α 退化为 1 − 平均距离,其中已不剩任何机遇校正。Braylan、Alonso 与 Lease(WWW 2022)在实证上得出了同样的结论,报告称对于边界框,α 会把普通 L2 排在 IoU 与 GIoU 之上,与实践者给出的排序恰好相反。
空间一致性也被报告为三个数字而非一个:标注者是否找到了相同的对象、是否给出了相同的名称、是否放在了相同的位置。一位找全了一切却把标签全标错的标注者,与一位标签正确但框画得松垮的标注者,面对的是不同的问题,两者的纠正方式也不同。
让这一切变得必要的那个缺陷
裁决逻辑比较的是标注的键名。而图像模式会把所有内容存放在一个名为 _data 的键下。
于是每一对图像标注都得到 1.0 的一致性。两位在任何地方都不一致的标注者看上去完全一致,并且没有任何一张图片被送去复核。
该问题已经修复,这也正是一致性计算内建于每种标注类型之中、而非叠加在其之上的原因。
浏览器中的分割与文本提示
点击一个对象,约 130 毫秒后得到掩码,无需 GPU,每次点击也不产生网络调用。这是运行在 ONNX Runtime Web 上的 MobileSAM。
输入一个短语,所有匹配项都会被框出来。这一项用的是 Grounding DINO,而许可才是值得注意的部分:人们普遍以为文本提示标注必须依赖 SAM 3 的非商业条款,其实不必。Grounding DINO 是 Apache-2.0,这正是它能面向所有人发布、而不是只面向付费层级的原因。
构建过程中有两个细节,其适用范围超出了 Potato 本身:
编码器契约是对照真实权重核验过的。 SAM 的输入规格允许多种看似合理的解读,其中三种会产出自信、看似合理却错误的掩码:质心误差在 70 到 148 像素之间,看上去像是标注者有点马虎,而不像是流水线坏了。正确的解读落在 0.1 像素。只有对照真实权重与真实基准做核验,才能把它们区分开。
量化方案是由实测选出的。 对照 686 MB 的全精度 Grounding DINO 导出,q4f16 的框 IoU 为 0.972,而 int8 为 0.874——并且 q4f16 还小 50 MB。采用惯常选择,就会用更大的文件装上一个更差的模型。
视频,以及"拒绝作答"的价值
在一帧上画好掩码,按下"向前跟踪",SAM 2 就会让该对象贯穿其后的各帧。对照已知基准实测:逐帧 IoU 为 0.974 至 0.979,从第一帧到最后一帧没有衰减,CPU 上大约每帧 1.32 秒。
这一项运行在服务端,且是有意为之。它的开销按帧计而非按提示计,而在浏览器标签页中跑上一百帧视频模型,意味着页面要冻结好几分钟。Potato 另有一条更轻量的浏览器内延续路径,两者不应混为一谈。
在标注闭环中最重要的性质是:模型会自行判断对象何时被遮挡,并返回一个空帧,而不是去猜。在被遮挡的帧上给出看似合理却错误的掩码,是要花功夫撤销的;而空帧可以被立刻读懂,并且它也正是正确答案。
三维、深度与机器人
spatial_annotation 可读取 PCD、PLY、LAS、KITTI .bin 与 .xyz,具备八叉树细节层次、正交切片面板,以及能把每个三维框投影到每一张相机图像上的标定,使标注者可以在三维中编辑、在二维中核验。
旋转以四元数而非偏航角存储。正是它让 KITTI 导入做到无损,包括那约 0.85° 的相机相对激光雷达的安装倾角——只有偏航角的字段会一声不吭地把它丢掉——而导出回 KITTI 时会报告舍弃了多少朝向信息,而不是悄悄把框压平。
深度图可读取 16 位 PNG 与 TIFF、NPY、PFM 与 EXR,并在光标处给出米制读数。零会被涂成品红色,而不是被渲染成"非常近",因为零是几乎通用的无返回编码,而一台面对无纹理墙面的双目装置确实会返回 80% 的空洞。
episode_annotation 把 N 路同步视频流与 M 条机器人时序轨道放在同一条时间轴上。三种结果,而非两种:在真实机器人数据中,"部分成功"是出现频率最高的结果,把它强行压成二元,会摧毁那个让数据集值得标注的信号。轨道降采样会保留极值,因此只持续一帧的力峰值也能挺过被绘制到 300 像素轨道的过程——这一点很重要,因为一次失败的抓取,在力曲线上会比在画面上早若干帧显现。
标出世界崩坏之处
rollout_evaluation 把 2 到 N 段生成视频放在同一时钟上,请标注者标出世界开始不成立的那一帧,再标注是哪一条物理或因果性质被破坏。
给"物理合理性"打 5 分中的 3 分,既无法核查、无法定位,也无法据以修复任何东西。而一个帧号加一个类别三者兼备,并且两位标注者的答案是数轴上的两个点,因此真正的一致性统计量在此适用。
断点一致性以检测、定位与类别三方面报告,匹配容差以扫描曲线而非单一数字呈现,因为 0.25 秒下与 2 秒下的一致性,是关于同一份数据的两种不同断言。
我们预计会被低估的那项功能
预标注让标注者更快。它也让走过场式的盖章毫无阻力:建议弹出,标注者点击接受,数据集就变成了一份模型与自己达成一致的记录。
标注本身没有任何东西能把这与认真复核区分开。几何形状完全相同,而所有质量指标看起来都更好,标注者间一致性也在其列,因为都接受同一份预标注的标注者,在构造上就是一致的。
唯一显出差别的地方是时间。绘制遥测记录每个图形的耗时、笔迹动态、修改次数与 AI 建议的接受延迟——并且任何情况下都不记录坐标,这是事件记录的结构性属性,而非一条政策。
随着一键自动标注成为常态,这是唯一能把认真复核与盖章通过区分开的信号。
2.8 中的其他内容
- 带回复结构的会话。
dialogue显示类型会依据每条发言的reply_to渲染回复结构,而potato convokit可导入任意 ConvoKit 语料并导出回去,且不依赖convokit。 - 15 种导入格式与 29 种导出格式,其中 11 种可双向往返。Darwin 双向可用,如果你是要离开某个平台而不是加入它,这一点很关键。
- 实时数据库摄入。 启动之后新建的行,会在
poll_interval_seconds内变为可标注,无需重启。 - 机器可读规格。 一份涵盖 159 个配置键、61 种标注类型与 24 种显示类型的 JSON Schema,外加一份含 419 条路径的 OpenAPI 文档。两者均由代码生成,并在 CI 中校验。
- 没有对外请求。 全部 14 个模板中的每一份资源都由安装自身提供。
styles.css此前一直以一条指向 Google Fonts 的@import开头,它会在每次页面加载时把每位标注者的 IP 地址发送给第三方——而人们自托管这个工具,恰恰是为了让数据不离开自己的基础设施。它躲过了此前三次气隙审计,因为每道防护读取的都是<script src>与<link href>,而样式表内部的@import两者都不是。 - 管理端的实例列表页从平方级降到了线性:2,000 个条目从 15.1 秒降至 23 毫秒。
图像标注的键盘快捷键现在默认遵循 V7 约定(b 画笔、r 矩形、f 填充、k 关键点、v 选择)。对已经在进行中的研究,可设置 keybinding_profile: legacy 恢复旧键位。
从哪里开始
以上全部内容都在免费、可自托管的产品中。这里没有付费层级。