Skip to content

Commit 6f64d39

Browse files
Add the M1 algorithms and the owner's posture-break definition to the plan
A posture break counts only when Wolf's posture bar was full or nearly full and is then cleared completely; a full bar that is not cleared does not count, since a perfect deflect never breaks posture, even with both difficulty items. PyTorch and a pretrained vision model are approved for the local research tooling. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent c19ae3e commit 6f64d39

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

  • research/failure_attribution

‎research/failure_attribution/plan.md‎

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
## 已定的事(2026-10-16)
1818

1919
- **每一次扣血都算一次失败**(工作量允许的前提下),躯干被打崩和死亡也记,报告里分开统计。
20+
- **被打崩的定义**:打崩之前狼的躯干条已经满了或接近满,没能完美格挡,被打出硬直,并且躯干条随后被彻底清空,才算被打崩。躯干条满了但没有清空不算:就算开着双难,完美格挡也不会崩躯干(你在 2026-10-16 确定)。所以检测时要求"接近满 → 短时间内直接归零";慢慢自然回落、死亡、回生和过场时的清空都不算。
21+
- 认 Boss 动作可以用 PyTorch 和预训练视觉模型(只用在本地研究工具里,不进产品)。
2022
- **额外录 1–2 场开着叠加层的实战**,当作自动答案:被打中那一刻他在放哪个动画,叠加层上直接写着。
2123
- **叠加层里的实时动作编号一律遮掉**:系统读取任何一帧时,先把"[Active Anime]"标题下面的动作行涂黑,这些编号永远不会进入训练或评测的输入,只有生成答案的脚本能读。标题和上面几行(角色编号、Boss 血条和忍杀点)保持可见,因为阶段本来就能从录像上看出来(你在 2026-10-16 决定)。遮挡由 `scripts/overlay_mask.py` 的 `mask_overlay()` 统一完成。
2224
- 录像都放在 `C:\Users\wuyil\Desktop\Sekiro-genichiro-recordings`,包括已有的两次开发者菜单录像(`local.config` 的 `recordings_dir` 指向这里)。
@@ -41,6 +43,34 @@
4143
4. **合并**:同一招的连续几下算一次失败(比如飞渡浮舟七连击被打中三下);死亡和造成死亡的那一下合并。
4244
5. **出报告**:本地网页,每次失败一行,附截图,再按招式汇总次数。
4345

46+
## 算法
47+
48+
```text
49+
录像(逐帧,先过 mask_overlay)
50+
├─ ① 读 HUD ──→ 扣血 / 被打崩 / 死亡事件 + 当前阶段
51+
└─ ② 认 Boss 动作 ──→ 每一帧"他在放哪个动画"的概率
52+
↓
53+
③ 在事件时刻往前解出动画序列 → 打中你的那个动画 → 目录条目 → 产品招式(前 3 个候选)
54+
↓
55+
④ 合并同一次失败 → ⑤ 报告兼标注页面
56+
```
57+
58+
- **① 读 HUD**(只用图像测量):
59+
- 血条:每帧截血条那一条,按颜色逐列分出红色血量、白色残影和空槽,算血量比例,再做中值滤波;比例突然下降就是扣血,下降开始的那一帧就是被打中的时刻。每份录像先在满血时校准血条长度;HUD 消失(过场、菜单)的帧跳过。
60+
- 躯干条:从中心向两边量出彩色部分的宽度;按上面的定义判断被打崩。
61+
- 死亡:中央的大红色"死"字(模板匹配),再看是回生还是读档。
62+
- 阶段:Boss 血条上方用掉的忍杀点;三阶段 Boss 名字变成"巴流 苇名弦一郎"。
63+
- **② 认 Boss 动作**:
64+
- 训练和参考数据来自两次开发者菜单录像(每一帧都知道他在放哪个动画,动作行读帧时先遮掉,标签取自之前提取好的数据),以及你新录的开叠加层实战。
65+
- 以锁定时 Boss 身上的白色锁定点为中心截出 Boss 的区域;没锁定时再考虑加人体检测。
66+
- 用预训练视觉模型(如 DINOv2,RTX 3080,每秒 15–20 帧)提取特征,再用动态时间规整(DTW)和每个动画的参考出现比相似度;不够准再在特征上训练小分类器。
67+
- **③ 解出打中你的那一招**:
68+
- 缩小候选:阶段、危字(出现时刻对应 TAE 的 98x 标记,可以反推动作开始时刻)、雷电/射箭/近战;
69+
- 时机:候选动画的开始时刻加上 TAE 里的攻击判定时间,必须正好落在被打中的时刻;
70+
- 衔接:用 V3.1 核对过的 AI 链作为"谁后面能接谁"的约束、TAE 和录像给出时长,用维特比算法解出最可能的动画序列。这样能分清同一个动画在不同招式里(比如 3010 后的 3025 是连斩,3030 后的 3025 是跳劈后续)。
71+
- **④ 合并**:同一次出招里连续几下算一次;死亡、被打崩和造成它的那一下合并。
72+
- **⑤ 报告兼标注页面**:见下一节。
73+
4474
## 标注页面
4575

4676
用鼠标操作,和之前的审核页一样:系统找出的每个失败事件列成一行,附截图和候选招式,你确认、修改或标"不确定",也能补上漏检的事件。标注结果存在 `research/ground_truth/annotations/`,录像本身不提交。这个页面是 M1 的交付之一:就算自动识别永远做不到完美,它也要好用。

0 commit comments

Comments
 (0)