Supervision 官方紫蓝渐变横幅

Supervision

—StarsSupervision GitHub Trending #1 Repository of the Day

面向计算机视觉工程的通用工具库,覆盖检测结果表示、几何计算、标注渲染、视频跟踪与数据集处理,连接模型输出与业务分析。

PyPI · v0.30.1Python 3.10–3.14MIT
NUMERICAL GEOMETRY · STABILITY

先回到局部坐标,再计算几何量

平移不改变多边形质心,却能同时避开整数溢出和大数相减造成的精度损失。

GLOBAL COORDINATES≈ 10¹²乘积 ≈ 10²⁴
溢出 / 浮点消减
TRANSLATEp′ = p − originfloat64 · local frame
LOCAL COMPUTE0 … 50,000求质心后加回 origin
大数问题

坐标乘积放大溢出与消减

`sv.get_polygon_center()` 直接沿用输入数组的数据类型计算鞋带公式。大整数顶点会在 `int32` 乘法阶段先溢出;即使转成浮点,所有坐标都带有很大的绝对偏移时,两个接近的大面积矩相减仍会发生灾难性消减,使质心偏离多边形甚至落到完全错误的位置。

不变量

质心对平移保持等价

质心对整体平移保持等价,因此没有必要用远离原点的大数完成面积积分。先把计算域提升到 `float64` 解决整数乘积范围,再选取首个顶点作为局部原点缩小中间量,才能同时处理溢出与数值条件,而不是只修复其中一种症状。

局部计算

float64 坐标先减去原点

将所有数值 ndarray 坐标统一转换为 `float64`,减去首顶点后在局部坐标中计算有向面积和质心,最后把原点加回全局结果;同步放宽公开类型标注,并加入 `int32` 乘法溢出、万亿级坐标偏移和零面积多边形回归。

适用范围

万亿级偏移仍保持稳定

大图像、地理坐标和远离原点的多边形现在都能稳定计算质心;平移前后的几何结果保持等价,int32 溢出与大数消减不再把质心推离真实位置。普通小坐标输入继续得到与原实现一致的结果。

PR #2491 已随 Supervision v0.30.1 正式发布
  • 数值精度与稳定性修复
  • Release Notes 收录 PR #2491
  • Contributors 官方署名
查看正式版本