第 9 章
测试与提交脚本
·约 4 分钟
训练完模型后,需要在各个数据集上跑测试、分析结果,部分数据集还需要在线提交评测。这里介绍实验室里积累的自动化脚本。
| 脚本包 | 内容 | 下载 |
|---|---|---|
| 测试脚本 | 批量测试 + 结果汇总 + 数据集定义 | 下载 |
| GOT-10k 自动提交 | Selenium 自动化在线评测提交 | 下载 |
1. 批量测试脚本
训练一个跟踪器通常会保存多个 epoch 的权重,需要逐个测试找到最优 epoch。手动改配置、跑测试、跑分析、存结果,重复几十次非常痛苦。
multi_test.py 自动化了这个流程:
修改 YAML 中的 epoch → 跑 test.py → 跑 analysis_results.py → 保存结果到 ep{N} 文件夹
核心用法:
from multi_test import TrackingTester, wait_for_vram
# 等显存空闲再开始(别人在跑实验时不抢卡)
wait_for_vram(threshold_gb=1, interval_sec=300)
# 初始化测试器
tester = TrackingTester(
tracker_name="ostrack",
tracker_param="dinov3l_384_lora_film"
)
# 批量测试 epoch 296-300 在 NFS 数据集上
tester.test_epoch_range(296, 300, "nfs")
脚本会自动:
- 跳过已有结果的 epoch(断点续测)
- 修改
analysis_results.py中的数据集和 tracker 配置 - 把每个 epoch 的结果(
.txt文件)归档到nfs_ep0296/、nfs_ep0297/等文件夹
如果某个 epoch 的 _result.txt 损坏了,可以用修复功能:
tester.repair_epoch_range(296, 300, "nfs")
不同数据集的区别
本地评测数据集(OTB、LaSOT、NFS、UAV123 等)直接用 multi_test.py,跑完 analysis_results.py 就能看到指标。
GOT-10k 需要额外一步——把结果文件转成官方格式再提交:
# demo-z.py 里的流程
# [2/4] 跑测试
python3 ./tracking/test.py ostrack dinov3l_384_got10k_lora_film --dataset_name got10k_test
# [3/4] 转换结果格式
python3 ./lib/test/utils/transform_got10k.py --tracker_name ostrack --cfg_name dinov3l_384_got10k_lora_film
TrackingNet 类似,也需要 transform 后打包 zip 再上传。multi_test_trackingnet.py 专门处理这个流程。
2. 结果汇总脚本
跑完一批 epoch 后,用 result_summary.py 生成汇总报告:
from result_summary import ResultSummarizer
analyzer = ResultSummarizer(
tracker_name="ostrack",
tracker_param="dinov3l_384_lora_film"
)
# 汇总 epoch 296-300 在 NFS 上的结果
analyzer.run_analysis(296, 300, "nfs")
输出一份 Markdown 报告,包含:
- 每个 epoch 的 AUC / OP50 / OP75 / Precision / Norm Precision
- 各项指标的最优 epoch
- 综合评分推荐(AUC×0.6 + OP50×0.4)
- 性能趋势分析
3. GOT-10k 自动提交
GOT-10k 和 TrackingNet 是在线评测数据集——跑完测试后要把结果上传到官方网站,由服务器算指标。
手动提交的步骤:打开网站 → 登录 → 选 zip 文件 → 填写方法名 → 提交 → 等结果。批量提交几十个 epoch 时,这个流程同样很痛苦。
got10k_auto_submit.py 用 Selenium 自动化了整个提交过程:
# 自动登录 GOT-10k 评测网站
# 自动上传每个 epoch 的 zip 文件
# 自动填写方法名(tracker_ep{N})
# 自动等待服务器处理完成
提交地址:http://got-10k.aitestunion.com/
注意事项:
- 需要先在 GOT-10k 网站注册账号(用 edu 邮箱)
- 脚本用 Chrome + ChromeDriver,首次运行会自动下载
- 提交有频率限制,脚本内置了等待间隔