AtomVision_Autovision:

分支2Tags0

# AtomVision 物理先验融合轨迹恢复项目

目录

1. 项目概述

本项目面向 BPT-V 赛道,目标是在遮挡、缺失和复杂运动条件下恢复小球轨迹。
终结版方案采用“物理先验融合 + 序列残差学习 + 事件与不确定性联合建模”,兼顾精度、稳定性和可复现性。

2. 核心思路

模块 做法 作用
多先验融合 融合全局拟合、分段拟合等多路先验并动态加权 提升先验质量,降低单一先验偏差
残差学习 预测 pred_xy - fused_prior 的残差项 用小模型修正先验误差
事件分支 同步预测关键运动事件概率 强化关键时刻的判别能力
不确定性分支 预测 logvar 并进行门控 抑制不稳定帧的过激修正
难样本采样 训练阶段启用 hard mining 提高复杂样本上的鲁棒性

3. 方法流程

3.1 端到端流程

  1. 构建缺失区间的多路物理先验。
  2. 提取轨迹与运动学特征,送入 GRU+TCN 编码器。
  3. 输出残差、事件概率和不确定性,得到最终轨迹恢复结果。
  4. 联合损失训练,并以综合指标选择最优权重。

3.2 最终预测关系

pred_xy = fused_prior + residual * uncertainty_gate

4. 模型结构

组件 说明
主干编码器 2 层 GRU + 轻量 TCN 融合
先验融合头 学习动态权重并融合多路先验
残差头 预测 2 维坐标残差
事件头 预测逐帧事件 logit
不确定性头 预测 logvar 并生成门控系数

5. 最终结果

5.1 最终提交配置(final_optimized

项目 数值
运行名称 final_optimized
训练轮数 20
批大小 8
学习率 5e-4
最优模型选择策略 hybrid

5.2 核心评测指标

来源文件:outputs/metrics/model_eval_final_optimized.json

指标 数值
模型预测均方误差(MSE) 1924.18378
物理先验均方误差(MSE) 2842.93694
相对物理先验提升 32.32%
事件 F1(固定阈值) 0.3212
事件 F1(校准阈值) 0.3223
事件最优阈值 0.50
不确定性负对数似然(NLL) 1785.19803
样本数 18

5.3 推理时延(CPU,batch=1seq_len=21

指标 数值
平均时延 2.7468 ms
中位时延(p50) 2.4404 ms
95 分位时延(p95) 4.2872 ms
99 分位时延(p99) 4.9993 ms

5.4 轻量化信息

项目 数值
模型文件 checkpoints/final_optimized/best_model.pt
文件大小 0.31 MB
运行设备 CPU

6. 物理约束使用方式

环节 使用方式
先验构建 全局拟合 + 分段拟合生成多路轨迹先验
分段依据 结合速度变化与接触约束检测关键节点
运动学特征 数值微分得到 vx, vy, ax, ay
最终恢复 采用“先验融合 + 残差修正 + 不确定性门控”逐帧恢复

7. 运行指南

7.1 环境安装

pip install -r requirements.txt

7.2 一键终端流程(推荐)

py run_final.py --dataset-dir "<训练集目录或评委评测数据目录>" --epochs 20 --run-name final_optimized

7.3 训练模型

py train.py --dataset-dir "<训练集目录>" --epochs 20 --batch-size 8 --lr 5e-4 --run-name final_optimized

7.4 评估模型

py evaluate_physics.py --dataset-dir "<评委评测数据目录或测试集目录>" --ckpt checkpoints/final_optimized/best_model.pt --tag final_optimized

7.5 推理时延测试

py benchmark.py --ckpt checkpoints/final_optimized/best_model.pt --runs 200 --warmup 50

7.6 全数据集批量评测

py batch_evaluate.py --dataset-dir "<评委评测数据目录或测试集目录>"

8. 结果展示区

8.1 原始轨迹

原始轨迹

8.2 缺失与恢复对比

轨迹对比

8.3 分段拟合结果

分段轨迹

8.4 轨迹动画

轨迹动画

8.5 端到端自验证截图

以下截图展示了从一键命令启动、训练完成到评估输出的完整自验证链路。

一键流程启动截图 训练阶段截图 评估结果截图

9. 环境与复现说明

  • 当前机器由于 CUDA 与本地显卡架构兼容问题,训练与评估默认走 CPU。
  • 脚本均可在 CPU 环境完整复现,不影响提交验证流程。
  • 评委侧只需保证 --dataset-dir 指向有效数据目录即可运行。

10. 工程实现与落地性

维度 当前实现
一键可复现 run_final.py 统一训练与评估入口
训练可配置 train.py 支持数据目录、训练轮数、损失权重等参数化
评估可追溯 结果固定输出到 outputs/metrics/
可视化完整 静态图 + 动画 + 终端自验证截图
部署友好 模型体积小、CPU 可运行、目录结构清晰

11. 项目结构(含用途说明)

project/
├── LICENSE                     # 项目使用与分发规则说明文件
├── README.md                   # 项目说明文档(终结版)
├── requirements.txt            # Python 依赖列表
├── main.py                     # 单视频演示主流程
├── run_final.py                # 一键训练 + 评估入口(推荐)
├── train.py                    # 模型训练脚本
├── evaluate_physics.py         # 模型评估脚本
├── benchmark.py                # 推理时延测试脚本
├── batch_evaluate.py           # 全数据集批量评测脚本
├── models/
│   └── physics_residual_gru.py # 多先验融合残差模型
├── utils/
│   └── dataset_builder.py      # 样本构建与特征生成
├── scripts/
│   ├── data_loader.py          # 轨迹 JSON 读取
│   ├── physics_fit.py          # 全局拟合与先验构建
│   ├── segment_fit.py          # 分段拟合与反弹检测
│   ├── evaluate.py             # 误差计算工具
│   └── visualize.py            # 可视化工具
├── checkpoints/
│   └── final_optimized/        # 终结版权重与训练日志
└── outputs/
    ├── figures/                # 轨迹静态图
    ├── animations/             # 轨迹动画
    ├── submission_screenshots/ # 提交用自验证截图
    └── metrics/                # 指标与评测报告文件

12. 许可证

本项目包含开源使用许可,明确了代码使用、修改、再发布与责任边界, 用于保障项目共享协作中的权利与义务清晰一致。

13. 致谢

  • 感谢 BPT-V 赛道提供任务与数据支持。
  • 感谢 PyTorch、NumPy、Matplotlib 等开源社区提供基础工具。
  • 感谢指导老师与比赛组织方的建议与反馈。