Fix bbox offset

This commit is contained in:
Xin Wang
2026-08-27 15:08:38 +08:00
parent 11f197724f
commit 694473b475
3 changed files with 130 additions and 11 deletions
+15 -4
View File
@@ -49,7 +49,7 @@ LOCAL_ARGS=(
--feature-root "$FEATURE_ROOT" --target-root "$TARGET_ROOT"
--model-id "$MODEL" --device cuda:0 --dtype bfloat16 --flash-attention-2
--video-fps 2 --visual-window-seconds 1 --audio-window-seconds 1
--box-kind face --box-coordinate-space camera
--box-kind face --box-coordinate-space encoded
)
# 不加载模型;输出四张带框图片,请先检查框是否真在人脸上。
@@ -62,11 +62,22 @@ python extract_turn_local_features.py "${LOCAL_ARGS[@]}" \
```
EasyCom face 标注首帧是 1,head 首帧是 0;按**原始解码帧号**取框。
视频裁去左侧身份 banner,保留右侧 1920 像素;默认框坐标属于裁后的相机图像。
如果你的导出文件的框坐标含 banner,需要改成 `--box-coordinate-space encoded`。
必须通过 preview 检查这个约定,不能只看最终特征维度。
视频裁去左侧身份 banner,保留右侧 1920 像素;这份 EasyCom 标注的框坐标包含 banner。
EasyCom 默认使用 `encoded`,先减去当前源视频的裁剪起点,再裁框:
`x_camera = x_annotation - (source_width - 1920)`。例如已核对的 Session_4 原视频宽度
为 2124,应减去 204;不同视频可能不同,不能统一硬编码。y 也按实际裁剪起点转换。
`camera` 仅用于已经手动换算到裁后图像的标注;Ego4D 无此 banner 裁剪,默认仍为 `camera`。
之前示例中的 `camera` 参数会导致这份原始 EasyCom 标注统一右偏,现已更正。
若当前 shell 的 `LOCAL_ARGS` 还含旧参数,请修改它,或将 `--box-coordinate-space encoded`
放在 `"${LOCAL_ARGS[@]}"` **后面**覆盖旧值。仅更新代码不会覆盖显式传入的旧参数。
预览会打印 source/cropped 尺寸与实际扣除偏移,同时在预览目录生成 `boxes.json`,
记录原框、裁后框与源帧号。必须检查框确实落在人脸上,不能只看最终特征维度。
官方帧号与 banner 说明见 [EasyCom 数据说明](https://github.com/facebookresearch/EasyComDataset#notes-and-known-issues)。
若已经用错误坐标提取局部视觉特征,必须重新从图像提取,不能靠修改 `.pt` 中的框坐标修复。
推荐输出到新目录(例如 `local_qwen_1s_encoded`),并把训练的 `LOCAL_ROOT` 指向新目录。
原全局 Omni 特征和 baseline 无需重算;旧局部 V/AV 训练结果不可与修正后的特征混用。
```bash
python - <<'PY'
import torch