56 lines
2.1 KiB
Markdown
56 lines
2.1 KiB
Markdown
|
|
---
|
|||
|
|
name: best-frame-selector
|
|||
|
|
description: 汽车旧伤去重与最佳展示帧筛选。用于 best_frame_selector 能力:读取 damage-grounding 生成的 workspace/grounding.json,先对跨批次重复的同一物理损伤进行合并,再从多张红框标注帧中选择最清晰的最佳展示帧,输出 workspace/best_frames.json;前置条件是已有 taskId 和 grounding.json。
|
|||
|
|
license: MIT
|
|||
|
|
metadata:
|
|||
|
|
version: "1.0.0"
|
|||
|
|
category: vehicle-inspection
|
|||
|
|
skillType: compute-entry
|
|||
|
|
aliases: ["best_frame_selector"]
|
|||
|
|
tags: ["vehicle", "best-frame", "dedupe", "旧伤去重", "最佳帧"]
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 旧伤最佳帧选择
|
|||
|
|
|
|||
|
|
前置条件:已完成 `damage-grounding`,workspace 中存在 `grounding.json`。
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"name": "best-frame-selector",
|
|||
|
|
"input": {
|
|||
|
|
"taskId": "order_10001",
|
|||
|
|
"topN": 1
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 工作流程
|
|||
|
|
|
|||
|
|
1. 读取 `grounding.json` 的损伤定位与标注帧。
|
|||
|
|
2. 先合并跨批次重复的同一物理损伤。
|
|||
|
|
3. 对每组损伤:
|
|||
|
|
- 帧数 `<=3` 时全部作为最佳帧;
|
|||
|
|
- 帧数 `>3` 时优先调用模型筛选;
|
|||
|
|
- 模型不可用或失败时使用 bbox 精准度、面积、居中程度、文件大小等启发式评分兜底。
|
|||
|
|
4. 将最佳帧复制到 `best_frames/`,写入 `best_frames.json`。
|
|||
|
|
|
|||
|
|
## 输入
|
|||
|
|
|
|||
|
|
- `taskId`: 必填。
|
|||
|
|
- `topN`: 可选,默认 `1`。
|
|||
|
|
- `dedupeResult`: 可选,外部模型去重结果,格式见 `references/dedupe-prompt.md`。
|
|||
|
|
- `bestFrameResults`: 可选,外部模型最佳帧结果。
|
|||
|
|
|
|||
|
|
## 输出
|
|||
|
|
|
|||
|
|
返回 `totalDamages` 和 `bestFrameCount`。
|
|||
|
|
|
|||
|
|
## 注意
|
|||
|
|
|
|||
|
|
- 需要 Node.js 18+。
|
|||
|
|
- 共享 workspace 根目录优先读取 `VEHICLE_SCRATCH_WORKSPACE_ROOT`,其次兼容 `RZYX_AI_WORKSPACE_ROOT`,否则使用 `RZYX_AI_DATA_DIR/workspace/vehicle-scratch-inspection`。
|
|||
|
|
- 配置 `ARK_API_KEY` 时会优先调用模型做损伤去重和最佳帧选择;没有模型配置或模型失败时使用启发式兜底。
|
|||
|
|
- `best_frames.json` 中的 `damages` 是去重合并后的最终旧伤列表。
|
|||
|
|
- 不要把未被 grounding 到 bbox 的候选帧优先作为最佳帧,除非没有其它可用帧。
|
|||
|
|
- 用中文回答所有内容。
|