Engineering MVP / Prototype

BibVision

赛事号码布识别与可搜索视频事件工程系统。

从号码布检测、OCR、时序稳定,到视频索引与片段规划,将不稳定的视觉观测转换为可搜索的视频事件。

Detection → OCR → Temporal Stabilization → Video Indexing → Clip Planning

多人号码布检测视频。
AI 生成的多人跑者概念图

01 / 问题与约束

问题与约束

赛事视频中的号码布识别需要结合多帧观测。

实际输入会同时面对:

  • 号码布尺寸较小
  • 运动模糊与遮挡
  • 同一画面可能出现多名运动员
  • 相邻视频帧 OCR 结果会波动
  • 同一号码会被连续重复观测
  • 原始赛事视频可能被拆分成多个文件

BibVision 将视觉观测整理为稳定、可搜索且带时间位置的号码事件。

02 / 系统设计

分层离线处理流水线

BibVision 将检测、OCR、时序稳定和视频索引拆分为职责明确的阶段,尽量将原始视觉证据与后续业务索引逻辑分开。

号码布检测算法 · V3:PC 端流程将号码布检测与 OCR 接入可搜索视频事件和片段规划。Android 实验 · RTMDet-Tiny:独立 Kotlin 工程探索端侧推理。

交互式系统架构

BibVision

离线号码布识别与可搜索视频事件

工程 MVP / 原型号码布检测算法 · V3

输入

视频或静态图像

感知处理

定位并校验完整号码候选

时序稳定

整合相邻帧的观测证据

索引与输出

可搜索的离线事件索引

Stage 5.5 · 直接路径

各文件观测映射到统一时间轴与 Presence intervals、ClipPlan;该路径与 SQLite 索引并行。

关键设计要点

  1. 按完整 OCR 字符串汇总时序证据
  2. 校验候选,同时保留原始观测
  3. 事件保留来源与时间上下文

范围边界

  1. PC 端号码布检测算法 · V3
  2. Stage 5.5 的 Presence / ClipPlan 路径可绕过 SQLite
  3. ClipPlan 记录源片段范围和剪辑顺序

03 / 关键工程决策

关键工程决策

01

单帧 OCR → 时序判断

连续观测为识别判断提供完整的时序证据。

02

赛事号码格式约束

利用赛事号码格式筛选候选,并保留原始 OCR 观测供后续核查。

03

碎片视频的逻辑时间轴

原始视频文件保持独立,同时将事件映射到统一逻辑时间轴,便于跨文件搜索和片段规划。

04

可追溯的评估与数据来源

固定 benchmark、模型版本和实验来源,便于追溯指标变化。

04 / 评估

固定号码布检测基准。

已保存的检测基准汇总

核心指标对比

50 张图像 · 66 个 GT 框

检测基准范围

50张图像

66个 GT 框

2张负样本图像

评估协议

输入尺寸
960
标准 AP 置信度
0.001
固定置信度阈值
0.25
一对一匹配 IoU
0.50

核心指标对比

V2 基线V3 原型基线分数范围 0–1

精确指标值,可直接复制
指标V2 基线V3 原型基线
mAP50 0.544060.92273
mAP50:95 0.300520.57318
固定阈值 Precision 0.729730.86765
固定阈值 Recall 0.409090.89394
固定阈值 F1 0.524270.88060

GT 匹配迁移(66 个 GT)

GT 迁移类别数量
两版均匹配 TP27
V2 漏检、V3 找回32
V2 TP、V3 漏检0
两版均漏检7
匹配术语:TP FP FN

来源:已保存的 Stage 5.4 检测对比汇总。

固定数据集上的号码布检测指标。

05 / 时序 OCR 稳定

时序 OCR 稳定

BibVision 汇总相邻帧中的完整 OCR 候选,并进行置信度加权投票。

原始 OCR 候选保留完整字符串,便于沿时间线核对。

whole-string voting / 完整字符串投票

投票以真实观测到的完整号码字符串为单位。

ShortTrack

关联相邻帧的局部轨迹观测。

教学示例

按完整号码汇总时序证据

A0382 = 3.36 · A038B = 0.43 raw

选择一帧查看原始观测

完整字符串原始权重合计

A03823.36

A038B0.43

示例格式校验后的可投票权重

A03823.36

A038B不参与有效候选合计

A038B 保留在原始观测列表;有效投票合计按示例格式规则计算。

格式校验

此示例使用“一个字母 + 四位数字”的格式规则;A038B 保留为原始 OCR 观测,未计入示例投票。

ShortTrack

关联相邻帧的局部轨迹观测。

完整字符串投票

只对完整号码候选累加权重,不逐字符拼接号码。

STABLE

表示满足配置的投票规则;结果是基于观测生成的 OCR 识别候选。

单人号码布技术视频。
AI 生成的单人跑者概念图

06 / 视频索引与片段规划

视频索引与片段规划

每个源片段保留自身 local timestamp,并映射到统一的 logical global timeline。索引回放路径把加权决策保存为 BibEvent 并写入 SQLite,再生成回放计划。

独立连续文件流程将各文件观测映射为 Presence intervals 与 ClipPlan,与 SQLite 索引流程并行。

ClipPlan 是片段编辑决策列表 / edit decision list,记录后续渲染使用的源文件范围与时间顺序。

脚本输出 · 检测框与号码识别标签

浏览号码布识别输出

拖动时间轴,或选择下方缩略图跳转到对应片段。

0:16
当前时间 0:00总时长 0:16

本次脚本输出

号码观测跨度

选择号码查看首次至末次观测,并跳转到首次观测时间。

32 个号码
100首次观测: 0:02.302末次观测: 0:02.302
逐帧浏览号码布检测脚本输出。

原始视频素材:Miguel Guerra / Pexels

展开独立的教学时间轴示例

独立时间轴教学示例。

示意数据

从分段视频到回放计划

选择一个示例号码,高亮对应事件、出现区间和剪辑建议

当前示例: 号码 A · 已高亮相关记录

  1. 01分段视频
  2. 02统一逻辑时间轴
  3. 03号码出现区间
  4. 04剪辑建议与回放示意
01

分段视频

保留各片段的本地时间,并按逻辑顺序展示观测示例。

3 × 15s
Segment A0s–15s

片段内时间: 0–15s

0s15s
逻辑起点 0s
Segment B15s–30s

片段内时间: 0–15s

0s15s
逻辑起点 15s
Segment C30s–45s

片段内时间: 0–15s

0s15s
逻辑起点 30s
号码 A号码 B
02

统一逻辑时间轴

将本地事件位置映射到同一连续时间线。

0–45s
0s15s30s45s

逻辑时间由片段顺序和本地事件位置对应;原始片段仍分别保留。

号码 A4s号码 A11s号码 A17s号码 B24s号码 A33s号码 B42s
03

号码出现区间

把同一示例号码的相关观察归并为时间区间。

45s
号码 A4s–18s
号码 A33s–37s
号码 B24s–27s
号码 B42s–44s
0s15s30s45s
04

剪辑建议与回放示意

将相关观测区间整理为剪辑计划。

剪辑建议号码 A · 4s–18s2 个片段来源
剪辑建议号码 A · 33s–37s1 个片段来源
剪辑建议号码 B · 24s–27s1 个片段来源
剪辑建议号码 B · 42s–44s1 个片段来源
回放预览示意剪辑计划
号码 A逻辑时间范围: 4s–18s

静态剪辑计划示意。

教学示例:把分段视频观测映射到回放 ClipPlan。

07 / 结果、限制与经验

已实现流程与当前范围

已实现

  • 离线号码识别流水线
  • 时序号码稳定
  • SQLite 视频索引
  • 连续逻辑时间轴
  • 号码出现区间聚合
  • ClipPlan 与回放流程
  • 固定检测 benchmark

当前范围与待验证项

  • 短时局部轨迹关联
  • 离线视频处理
  • 实时性能:待验证
  • 号码尺寸、模糊与遮挡会影响 OCR 质量
  • ShortTrack 关联相邻帧中的局部观测
  • 应用级 ground truth 与干净环境复现:待验证。Android STABLE 表示投票规则完成;OCR 结果仍需结合识别质量核验。受控运动、遮挡恢复和多号码验收:待完成。

工程经验

  • 数据质量与数据数量同样重要。
  • 检测指标描述检测器表现;OCR 质量单独评估。
  • 视频通过连续帧保留时序证据。
  • 用于 benchmark 的评估集一旦固定,就应保持冻结。