Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ readiness, not by the number of models mentioned in the catalog.

## 当前优先级(2026-09-19 证据更新)

**2026-09-22 四算法公开集成完成:** 本地 Tracking `0.2.0-rc.1` 已接入 BoT-SORT 根工厂、严格运动类型、四算法 Demo 和版本化运动序列导入导出,见[集成回执](../../../reports/tracking/2026-09-22-botsort-integration/README.md)。原三算法与 ByteTrack 默认保留;220项测试、实际包消费、18组Demo浏览器流程及固定七段/05浏览器对齐通过,09退步继续披露。下一阶段为 rc.1 预发布和线上回读,再设计浏览器自动运动估计。本轮仅本地交付,不扩展视频/摄像头、手机或Workflow;以下“下一步”为历史记录。

**2026-09-22 外部运动矩阵核心完成:** Tracking 同包本地 `0.2.0-rc.0+botsort-core.1` 已实现严格帧/时间/矩阵契约、显式失败和可选外观融合;208项测试、候选双格式/类型消费、完整05浏览器及原Demo回归通过,见[阶段回执](../../../reports/tracking/2026-09-22-botsort-core/README.md)。固定七段5316帧三配置各运行两次,轨迹逐字对齐前期探针,CMC/CMC+外观IDF1仍54.5850%/55.3487%,09仍退步。仅平移消融也退步,后续估计器须验证近静止策略,当前不调参或替换默认。下一阶段将候选接入公开根工厂、版本/manifest、四算法双语Demo和导入导出,再做发布验收;本轮无远程发布。自动图像估计、视频/摄像头和Workflow继续独立后置。以下“下一步”为历史,以本段为准。

**2026-09-21 BoT-SORT 可行性完成:** 固定七段 MOT17 FRCNN train 的 5316 帧/67639 检测,原 ByteTrack、加相机运动补偿(CMC)、再加门控外观融合的合计 IDF1 为 48.2922%/54.5850%/55.3487%,IDSW 为 1101/519/489,见[研究回执](../../../reports/tracking/2026-09-21-botsort-feasibility/README.md)。09 段退步;离线 Python 图像估计的逐段中位数约 34–48 ms,尚未在浏览器实现。完整 05 的 837 帧三配置浏览器 CPU 回放与 Node 一致,恒等补偿及历史基线一致。本轮仅本地研究,公开三算法 RC 与稳定版状态沿用下方发布回执。下一阶段先设计并实现**调用者提供原图帧间矩阵的同包 BoT-SORT 风格 CPU 核心**,严格定义帧/时间、失败/恒等、丢帧、seek/reset、尺寸和错误原子性;再评估可选浏览器估计子入口,调查退步序列。不是官方 BoT-SORT 完整复现或第四算法已上线。自动视频/摄像头编排与 Workflow 仍后置;以下早期“下一步”保留为历史,以本段为准。

**2026-09-21 RC 已发布:** Tracking `0.2.0-rc.0` 已经 PR #3、CI、不可变标签与 OIDC 发布到 npm `next`,`latest` 保留 `0.1.0`;公开包 SHA256/sha512、registry 签名和 provenance 已验证。HTTPS Demo 的三算法、ModelScope/WASM、Hugging Face/WebGPU、取消/复位/缓存及中英文窄屏流程通过。门户结构化条目继续描述稳定 0.1.0,在摘要与限制中提供 RC 预览说明,见[本轮回执](../../../reports/tracking/2026-09-21-02-release/README.md)。以下日期相同的候选与早期“下一步”均为历史记录,以本段为准。下一阶段优先做 BoT-SORT 的相机运动补偿及输入契约可行性,再决定同包实现;JDE/FairMOT/CenterTrack 继续分阶段评估,不承诺列表中的算法均能直接切换。视频/摄像头 Demo、手机和跨 SDK Workflow 仍待独立设计。

**2026-09-21发布候选验收:** Tracking已整理为本地`0.2.0-rc.0`,包/runtime/Demo版本统一;预发布使用npm `next`,正式版使用`latest`。176项单测、实际包消费、12组浏览器流程、ModelScope/WASM和Hugging Face/WebGPU生产UI通过,见[RC回执](../../../reports/tracking/2026-09-21-02-rc/README.md)。源码逐项核对证明运行逻辑相对已评测alpha仅版本标识变化,历史成绩保留原身份。ByteTrack默认、OC-SORT/DeepSORT可选、人体ReID实验状态不变。下一步是本版本发布及发布后回读;当前未执行远程写入,门户生产registry/npm/线上Demo仍0.1.0,视频/摄像头、手机及Workflow不在本阶段。
Expand Down Expand Up @@ -161,7 +167,7 @@ APIs remain separate Labs work and are not prerequisites for the MVP.

## Next Concrete Task

Tracking 0.2 RC 发布收口后,下一项是 **BoT-SORT 可行性评估**:核对独立实现依据与许可,明确相机运动信息由调用者提供还是可选图像模块提取,比较同输入质量与完整耗时,确认失败回退和状态复位边界。可行性通过后再形成实现计划;本轮没有把 BoT-SORT、JDEFairMOTCenterTrack 加入已实现清单。保持独立 SDK、桌面优先、默认 ByteTrack、ReID 实验状态与门户只登记的边界。
Tracking 已完成 BoT-SORT 研究、外部矩阵核心及本地 rc.1 公开集成。下一项是 **rc.1 预发布与线上回读**;随后设计可选浏览器运动估计模块,验证矩阵质量、失败策略及总成本。JDE/FairMOT/CenterTrack 仍需各自的模型和输入契约评估。保持独立 SDK、桌面优先、默认 ByteTrack、ReID 实验状态与门户只登记的边界。

### 历史任务快照(由上方发布进度更新)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@

**目标:** 明确 PP-Detection 单 SDK 的模型边界,并完成下一阶段 2D 检测模型兼容性评估,选择一个有证据支持的候选进入后续移植。

**2026-09-22 Tracking集成更新:** [本地rc.1回执](../../../reports/tracking/2026-09-22-botsort-integration/README.md)完成 BoT-SORT 公开根入口、四算法Demo和完整运动导入导出,保持 ByteTrack 默认与独立SDK边界。220项测试、实际包消费、18组桌面浏览器流程及固定输入结果对齐通过,09退步保留。下一步是候选预发布及线上回读,再设计浏览器自动运动估计;本轮无远程写入,不扩展媒体、手机和Workflow。后文早期“下一步”保留为历史。

**2026-09-22 Tracking核心更新:** [外部运动矩阵候选](../../../reports/tracking/2026-09-22-botsort-core/README.md)已实现并通过208项测试、候选包消费及桌面浏览器验收。七段5316帧三配置两次输出一致且对齐前期研究,CMC收益与09退步都保留;未将第四算法写入公开清单。下一阶段为根工厂、版本/manifest、四算法Demo与导入导出的公开集成和发布验收;本轮不发布。单任务同包/独立SDK边界不变,图像估计、媒体与Workflow仍后置。

**2026-09-21 BoT-SORT 研究更新:** [可行性回执](../../../reports/tracking/2026-09-21-botsort-feasibility/README.md)已完成同输入七段 5316 帧评估。原 ByteTrack、加 CMC、再加外观融合的 IDF1 为 48.2922%/54.5850%/55.3487%,IDSW 为 1101/519/489;09 段退步、离线图像估计有明显成本。证据支持下一阶段设计并实现调用者提供运动矩阵的同包 CPU 核心,自动浏览器估计另行验收。当前是保留既有滤波/生命周期的研究探针,未完整复现或公开第四算法;RC/stable 发布状态沿用下方回执。继续单任务 SDK、桌面优先、Workflow 后置,与最初分层无冲突。以下日期相同的“下一步”均为早期时点,以本段为准。

**2026-09-21 发布更新:** 独立 Tracking SDK `0.2.0-rc.0` 已发布到 npm next,并完成 OIDC/provenance、公开包哈希和线上 Demo 双源/双后端验证;latest 保留 0.1.0。门户条目继续登记稳定版本,在摘要/限制中说明 RC 预览。完整状态见[发布回执](../../../reports/tracking/2026-09-21-02-release/README.md)与[总路线](2026-08-17-web-model-sdk-portal-roadmap.md)。下方同日评测及更早的“下一步”保留为历史;后续先评估 BoT-SORT 的运动补偿与输入契约,仍保持独立 SDK、桌面优先、Workflow 暂缓。

**2026-09-21真实序列评测完成:** Tracking在固定七段MOT17 FRCNN训练序列全部5316帧、67639检测上完成三算法同输入比较,浏览器与两次Node结果一致、零容量丢弃。ByteTrack/OC-SORT/DeepSORT+PPLCNet的IDF1分别48.2922%/48.4107%/45.4637%,完整IDSW/MOTA/FP/FN与实测成本见[最新回执](../../../reports/tracking/2026-09-21-mot-reid/README.md)。当前组合不支持替换ByteTrack默认;建议进入0.2本地发布候选收口,OC-SORT/DeepSORT显式可选,ReID保留人体场景实验能力。先确定候选版本、变更日志和发布预检,再取得发布授权;门户生产registry/npm/线上Demo仍0.1.0。视频/摄像头、跨设备及Workflow继续暂缓,后文早期进度保留为历史。
Expand Down
60 changes: 60 additions & 0 deletions docs/superpowers/plans/2026-09-22-tracking-botsort-core.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Tracking 外部运动矩阵核心实施计划

> 执行方式:按 superpowers:executing-plans 在当前已有隔离工作树内执行,相关接口紧密耦合;数学模块可并行委托实现,结束使用 requesting-code-review 独立审查。清单以 `[ ]`/`[x]` 标记。

**目标:** 完成同包 BoT-SORT 风格 CPU 核心候选及固定输入桌面验收。
**架构:** 复用原跟踪引擎内部策略钩子,新增 `src/botsort/`,候选不经正式入口导出;原3算法保持兼容。
**技术:** TypeScript、Vitest、esbuild、Playwright、固定Python/TrackEval。
**设计:** [正式设计](../specs/2026-09-22-tracking-botsort-core-design.md)。

## 全局约束

- 分层为单SDK;默认入口CPU/main,禁止静态图像引擎/ORT依赖。当前工厂与Demo三算法不增加公开声明。
- 候选身份 `web-sdk-pp-tracking@0.2.0-rc.0+botsort-core.1`;仅本地构建/验证/提交,不远程发布。
- 中文文档、注释与提交,英文镜像英文;手工改动用apply_patch。先失败测试再代码,不读取第三方跟踪实现。
- pnpm命令均附 `--config.verify-deps-before-run=false --config.manage-package-manager-versions=false`。
- SDK目录 `C:/Users/chenm/.codex/worktrees/tracking-algorithms/web-sdk-PP-Tracking`;门户规划/checker在本仓。两个工作树分支均 `codex/botsort-core`。

## 任务1:运动契约与核心接入

文件:新增 SDK `src/botsort/{types,motion,index}.ts`、`src/tracking-strategy.ts`、`tests/botsort-{motion,core}.test.ts`;修改 `src/tracker.ts` 内部共享钩子,根 `src/index.ts` 不加候选导出。

接口:`BoTSortFrame`、`BoTSortOptions`、`BoTSortResult`、`BoTSortTracker`、`createBoTSortTracker`;数学 `compensateMotion(state:GaussianState,matrix:AffineMatrix):GaussianState`,`validateMotionMatrix(value:unknown,size:{width:number;height:number}):AffineMatrix`。内部 `createTrackingCore(options:TrackerOptions,strategy?:TrackingStrategy):Tracker` 提供 prepareFrame、transformPrediction、similarity、updateGallery、initializeGallery 和可选featureSpace。

- [x] 写失败测试并运行 `pnpm … test -- tests/botsort-core.test.ts tests/botsort-motion.test.ts`。关键字面预期:平移 `[1,0,50,0,1,0]` 将x50的20×80框保持ID1并移至x100;非法from不改变下一次正确帧输出;首帧estimated必须INVALID_INPUT;协方差缩放2对应方差4(数学函数不承担估计器输入边界)。

```ts
const tracker = createBoTSortTracker({ minHits: 1 });
tracker.update({ frameId: 0, timestampMs: 0, imageSize: {width:640,height:480}, detections: [], motion:{status:'initial',from:null,to:{frameId:0,timestampMs:0}} });
expect(() => tracker.update({frameId:2,timestampMs:100,imageSize:{width:640,height:480},detections:[],motion:{status:'identity',from:{frameId:1,timestampMs:0},to:{frameId:2,timestampMs:100}}})).toThrow();
```

- [x] 实现设计全部矩阵/状态检查;在原工作副本生命周期插入钩子,不复制引擎。result wrapper仅在内部成功后提交前帧身份;校验计时在core validation阶段,外层total时钟真实测量。
- [x] 写外观门控/EMA失败测试:近邻相同IoU时特征使ID对应交换,门控外不能远距离接回;低分错外观不污染EMA,featureSpace不符与零向量不推进状态。
- [x] 实现一条EMA与固定空间校验;三算法原测试+候选测试/typecheck通过,再独立审查接口与原子性。

## 任务2:候选消费与固定序列验收

文件:新增 `scripts/build-botsort-candidate.mjs`、`scripts/evaluation/botsort-core/{run.mjs,browser.mjs,score.py}` 与 `reports/2026-09-22-botsort-core/`;研究输出仅 `.tmp/botsort-core/`。

- [x] 构建候选ESM/CJS及声明,实际动态import/require和 `.mts/.cts` NodeNext 类型消费;根包 `pnpm … check:package` 保持通过。
- [x] 使用固定来源摘要核验输入/特征/矩阵,逐帧构造带from/to身份的motion,非estimated转换为显式unavailable+identity策略。无外观路径移除向量,外观路径保留固定特征身份。

```js
const motion = row.status === 'estimated'
? {status:'estimated',from,to,matrix:row.matrix,source:'固定ORB研究归档',confidence:row.support.inlierRatio}
: {status:'unavailable',from,to,reason:row.status};
```

- [x] 七段CMC/CMC-ReID轨迹对齐旧探针、恒等候选对齐原ByteTrack;两次候选非耗时结果一致。评分前核对所有输出hash,复用固定官方TrackEval评分。
- [x] 09序列冻结参数仅做恒等/平移/完整矩阵消融,记录估计分布和丢失轨迹几何,避免把探索当新最优参数。
- [x] Chromium完整05 CPU候选回放对齐Node;首帧/错误/取消/reset/dispose实际消费检查,不执行模型推理或图像估计。

## 任务3:文档、标准和交付

文件:SDK `docs/zh-CN/botsort-candidate.md`、`docs/en/botsort-candidate.md`、研究报告与校验;门户两份roadmap、多算法设计和阶段回执。

- [x] 写双语可运行候选示例、状态/来源/算法差异与耗时范围;核验矩阵估计不确定性和旋转包络风险。
- [x] 执行SDK typecheck/test/build/check:package、候选浏览器及旧Demo浏览器流程;门户checker修改前后、test/build;所有日志/来源/摘要归档但不提交原图/GT/特征/真实轨迹。
- [x] 请求只读独立审查,修复阻塞项;报告实际结果、局部退步与后续公开集成门槛,校验链接与Git证据字节。
- [x] 两仓明确文件暂存、中文本地提交;保留原发布/历史报告与用户改动,不push/PR/npm/Demo写入。SDK提交与Git对象字节复核记录于[阶段回执](../../../reports/tracking/2026-09-22-botsort-core/README.md)。
55 changes: 55 additions & 0 deletions docs/superpowers/plans/2026-09-22-tracking-botsort-integration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Tracking 四算法公开接入实施计划

> 使用 superpowers:subagent-driven-development 执行独立实现任务;主代理负责文档、版本整合和验证。任务采用复选框,独立只读审查由主代理发起,不重复委托。

**目标:** 本地 rc.1 提供四算法工厂、运动序列 Demo 与可复现导入导出。
**设计:** [公开接入设计](../specs/2026-09-22-tracking-botsort-integration-design.md)。
**目录:** SDK 为 `C:/Users/chenm/.codex/worktrees/tracking-algorithms/web-sdk-PP-Tracking`;门户为本仓。两仓 `codex/botsort-integration`,基线分别 `d9cbac817b8aac8fdf02776b8a199d6627dd9040`、`2c3907b9647763b779d801af94519760a2ad6be8`。

## 全局约束

- 中文代码注释、文档与提交;英文镜像英文;手工编辑用 apply_patch。pnpm 带 `--config.verify-deps-before-run=false --config.manage-package-manager-versions=false`。
- 不改核心数学/默认算法,不复制第三方跟踪代码,不静态加载 ORT,不远程写入。历史报告保持原样,当前验证另建 `reports/2026-09-22-botsort-integration/`。
- 独立任务仅修改指定文件、不自行提交、不启动子代理;主代理统一审查和提交。

### Task 1: 公开工厂与严格类型

文件:`src/factory.ts`、`src/index.ts`、`src/types.ts`、`src/botsort/{index,types}.ts`、`src/tracker.ts`、`tests/botsort-public.test.ts`。生产版本字面量由主代理统一改 rc.1,任务本身可先保留 rc.0。

接口:新增 `BoTSortTrackerOptions`、`AnyTrackerOptions`,保留原 `TrackerOptions` 仅接受三算法;`TrackerAlgorithm` 为四算法。工厂重载 `(BoTSortTrackerOptions):BoTSortTracker`、`(TrackerOptions?):Tracker`、`(AnyTrackerOptions):Tracker|BoTSortTracker`。BoTSortResult 使用公共 RuntimeInfo,移除候选版本后缀。BoT-SORT 类型从根导出,不额外导出内部核心或直接工厂。

- [x] 先添加根入口失败测试,执行并保存 `.tmp/botsort-integration/public-red.log`。
```ts
const tracker = createTracker({ algorithm: 'botsort', minHits: 1 });
const frame = { frameId: 0, timestampMs: 0, imageSize: {width:640,height:360}, detections: [], motion: {status:'initial' as const, from:null, to:{frameId:0,timestampMs:0}} };
expect(tracker.update(frame).algorithm).toBe('botsort');
expect(() => tracker.update({...frame, frameId:1, timestampMs:100})).toThrow();
```
- [x] 实现无循环分派,拒绝未知算法/非法工厂输入;测试默认ByteTrack、显式三算法、BoT-SORT首帧/平移、错误不推进、可选外观。
- [x] typecheck 和相关新旧测试通过,记录需主代理更新的包消费/版本断言。不得修改 Demo、文档或发布脚本。

### Task 2: 四算法 Demo 与运动序列

文件:`demo/src/{data,playback}.ts`、`demo/src/App.tsx`、必要的`demo/src/style.css`、`tests/botsort-demo.test.ts`、`tests/botsort-demo-browser.mjs`。消费 Task 1 的公开重载与类型。主代理处理旧浏览器版本字面量;新页面标 rc.1、本地候选。

- [x] 写往返/失败原子性测试,保存失败日志后实现。
```ts
const prepared = await prepareSequence(JSON.parse(serialized), 'botsort', options);
const playback = new Playback(prepared.frames, prepared.options);
playback.seek(prepared.frames.length - 1);
expect(playback.results.at(-1)?.algorithm).toBe('botsort');
```
- [x] 保留现有函数旧调用兼容,新增运动字段深复制;版本化导出保留算法和生效选项,重新导入遵守它们。旧格式仍使用当前算法参数。不得为外部输入补造motion、不得丢弃非法字段来规避核心校验。
- [x] 新增合成平移样例和BoT-SORT选项、失败策略与可选外观参数;内置样例在切算法时正确恢复/去除不使用的向量,导入序列不得静默剥离。临时验证后替换,参数失败/末帧失败保留原状态;类型与旧样例兼容。
- [x] 浏览器新流程覆盖切换/完整播放、motion回执、导入导出往返、seek、非法from和矩阵保留原结果、语言与390px。使用已有浏览器测试基础设施,不添加生产依赖,不启用自动图像估计。

### Task 3: 版本、包消费、文档和整体验收

文件:`package.json`、`sdk-manifest.yaml`、运行时/现有测试版本字面量、`scripts/check-package.mjs`、中英文README/API/指南/checklist、`CHANGELOG.md`、新版本说明与研究报告、门户路线图和阶段回执。

- [x] 统一准备 rc.1,npm链接保留真实包入口且明确本地未发布;四算法实际打包消费与正/负NodeNext类型用例通过。
- [x] 新根入口七段回放对齐旧MOT,固定05浏览器对齐;脚本输出另存新目录,历史报告和原始证据不覆盖。
- [x] 完整SDK verify、新Demo浏览器、门户前后checker/test/build,双语示例实跑与相对链接验证;记录实际通过项和09限制。
- [x] 独立功能/最终审查,修复阻塞项;记录来源/输出哈希,明确文件暂存,两仓中文本地提交,不push/PR/发布。

2026-09-22 收口:SDK提交 `e6a749566a7f6cfb0564dcc2bfc1eecbd3436b51`;220单测、18浏览器组、实际包及固定序列对齐通过。门户136单测、21页面构建及标准检查通过。两轮独立审查无剩余阻塞,详情见[阶段回执](../../../reports/tracking/2026-09-22-botsort-integration/README.md)。
Loading
Loading