目标跟踪序列化测试以及搜参

2023-11-04

1、序列化测试

对于一些跟踪算法,特别是siamese系列,一般进行20epochs的训练,对应20个训练模型,特别是backbone解冻的后10个模型,均有可能出现最好的结果(got-10k与lasot的结果一般容易出现在10-15,;otb通用模型的最好结果一般出现在15-20轮)。所以就需要对所有的model进行测试,而手动测试需要自己盯着每次测试结束后再次运行,比较麻烦,所以再此贴出一个序列化测试的代码(自行调整从strat_epoch-end_epoch的模型测试)。

import sys
sys.path.append("..")
import os
import time
import argparse
from mpi4py import MPI

# 多个GPU同时进行测试多个epoch
parser = argparse.ArgumentParser(description="multi-gpu test all epochs")
parser.add_argument("--start_epoch", default=13, type=int, help="test end epoch")
parser.add_argument("--end_epoch", default=20, type=int, help="test end epoch")
parser.add_argument("--gpu_nums", default=2, type=int, help="gpu numbers")
# parser.add_argument("--threads", default=2, type=int, required=True)
parser.add_argument("--dataset", default="VOT2018", type=str, help="benchmark to test")
args = parser.parse_args()

# init gpu and epochs
comm = MPI.COMM_WORLD
size = comm.Get_size()
rank = comm.Get_rank()
GPU_ID = rank % args.gpu_nums
node_name = MPI.Get_processor_name()  # get the name of the node
os.environ["CUDA_VISIBLE_DEVICES"] = str(GPU_ID)
print("node name: {}, GPU_ID: {}".format(node_name, GPU_ID))
time.sleep(rank * 5)

start_epoch = args.start_epoch
# run test scripts -- one epoch for each thread
for i in range(args.end_epoch - args.start_epoch + 1):
    dataset = args.dataset
    # try:
    #     epoch_ID += args.threads
    # except:
    #     epoch_ID = rank % (args.end_epoch - args.start_epoch + 1) + args.start_epoch
    epoch_ID = start_epoch + i

    if epoch_ID > args.end_epoch:
        continue

    snapshot = "snapshot/checkpoint_e{}.pth".format(epoch_ID)
    print("==> test {}th epoch".format(epoch_ID))

    os.system("python test.py  --dataset {0}  --snapshot {1}  --config ../experiments/siamgat_googlenet_vot/config.yaml".format(dataset, snapshot))

2、模型搜参

对于跟踪来说,特别是siamese模型来说,训练出一个模型之后很重要的一点就是模型搜参(window_inf/penalty_k/lr),一个合适的参数对于模型的性能提升很大,这也是为什么复现一些算法模型时,往往不能达到论文中的精度。
这里还是要用到@回忆浅离博主git上的代码,链接:https://github.com/Giveupfree/SiamCAR-CAM/tree/master/tools,执行tune.py即可进行对应的搜参,可以同时对不同的数据集进行搜参,以提高效率。搜参的过程相当于自动使用不同的参数值去测试,“试”出最好的结果,目前设置为500轮,所以需要的时间会比较久,OTB100/GOT-10k大约一周,VOT大约4天,LaSOT大约20多天。
其中关于GOT-10k的搜参,需要将SOTDrawRect项目SOT_eval文件夹中的GOT-10k-test.json更名为GOT-10k.json,并替换GOT-10k数据集中的json(因为默认的json文件没有GT框标注),最后说明GOT-10k搜到的结果与实际有出入,因为是相当于与自制的json做IOU,所以不一定搜到的结果高,实际就高,还需要一一上传官网进行测试。
最后说明,搜出的参数小数很长,如果想要使用搜好的参数进行测试,必须要使用带有全部小数的参数进行测试,才能得到最好的效果。其中的module_builder,以及其中的测试算法需要根据自身实际使用的算法进行对应的小改动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

目标跟踪序列化测试以及搜参 的相关文章

随机推荐

  • 【Qt Quick聊天软件练习】二、登录界面搭建

    目录 1 主界面 2 创建登录面板qml文件 3 补充 结语 1 主界面 大概长成这样 2 创建登录面板qml文件 新建一个qml文件命名为LoginPanel qml 首先先把右上角两个圆圈搓出来 一个是缩小 一个是关闭 main qml
  • Anaconda下安装mysql-python的包

    Anaconda下需要使用Python与MySQL数据库进行交互 所以需要import一个mysql python的包 但是在ipython中引用的时候发现Anaconda并没有包含该包 因此需要自己对该依赖包进行安装 打开windows下
  • 非投资建议

    沪深300 PE在10左右 就是基金的买点 20不能买 低值买入 基金经理 从业5年 年华收益15 以上 PE PB P 总市值 E 盈利 净利润 B 净资产 PE 市盈率 PB 市净率 一 市盈率PE 1 公式是 PE P E 市盈率的计
  • ARM LINUX与普通LINUX区别

    相对于ARM linux 我们说的普通linux指的是X86 linux 他们都是linux系统 但是由于ARM和X86是不同的CPU架构 他们的指令集不同 所以软件编译环境不同 软件代码一般不能互用 一般需要进行兼容性移植 X86是经典的
  • 一篇关于程序员的文章

    选择比努力更重要 关于方向的选择其实越早确定越好 生活中我们要面临无数个选择 前几天看的一个黑客相关的美剧中有句台词说的不错 life is binary 生活就是二进制 一个个0101组成的 每一次抉择 选了就是1 不选就是0 另外也有一
  • java 多线程面试题及答案

    1 并行和并发有什么区别 并行是指两个或者多个事件在同一时刻发生 而并发是指两个或多个事件在同一时间间隔发生 并行没有对 CPU 资源的抢占 并发执行的线程需要对 CPU 资源进行抢占 并行执行的线程之间不存在切换 并发操作系统会根据任务调
  • maven安装与配置 及 执行命令mvn -v报错解决方案

    写在前边 需要准备的前提 JDK IDEA Maven程序包 安装包下载地址 http maven apache org download cgi 解压后如下图 记住解压路径 然后新建环境变量MAVEN HOME 并赋值 D apache
  • 单相Boost功率因数校正电路(PFC)设计与仿真(Simulink & Saber):第一章 PFC基础知识与电路参数设计

    写在前面 教程是根据Mathworks公司的有源功率因数校正教程 点这里跳转 和那日沙等老师编著的 电力电子 电机控制系统的建模及仿真 改写的 设计思路基本与之一致 嫌看文章麻烦的同学可以直接跳转看视频和查阅相关书籍 Simulink仿真部
  • vue实现绑定微信登录全过程

    一 需求说明 通过vue绑定微信登录 首次进入获取code 通过code获取openId查用户 然后进行登录 第二次进入若绑定过微信 直接登录进入主界面 若没绑定过微信 则跳转到登录页面 二 准备工作 1 开通微信公众号的相关功能 测试账号
  • oracle时间相减得到天_Oracle 时间相减得出毫秒、秒、分、时、天,,【转】

    http blog csdn net redarmy chen article details 7351410 oracle 两个时间相减默认的是天数 oracle 两个时间相减默认的是天数 24 为相差的小时数 oracle 两个时间相减
  • Linux netstat

    摘录 https www runoob com w3cnote linux check port usage html Linux 查看端口占用情况可以使用 lsof 和 netstat 命令 lsof lsof list open fil
  • 电赛公开课整理(一),电路基础,截图+模电知识【16000字】【个人注释】【转载】

    文章目录 电赛公开课整理 一 电路基础 截图 模电知识 15000字 原创 电赛公开课整理 二 电路基础 截图 模电知识 16000字 原创 一 电压源和电流源 1 电压源的内阻 2 电流源的内阻 课后问题 二 电阻 电容与电感 1 电阻
  • (小白学习之路1)Linux环境下C语言链接Mysql数据库,连接失败问题

    可能出现的问题 can t connect to xxx数据库 说明数据库验证成功但是打不开 需要添加libmysqlclient so动态库 需要查看动态库的位置 一般在usr local下 如果没有该库需要手动下载 http blog
  • 20行代码实现人脸检测

    如今 刷脸 已经成为人们生活中的日常 刷脸支付 人脸解锁 门禁等 都运用了人脸识别技术 人脸识别技术已广泛应用于金融 司法 公安 教育 医疗等诸多领域 同时也涌现出如 旷视科技 商汤科技等一批优秀的企业 人脸识别算法主要分为三个流程 人脸检
  • DNF类游戏动作实现(C语言)

    没有接触制作小游戏前 感觉做游戏很不可思议 游戏里的人物是怎么移动的 怎么攻击 释放技能 现在逐渐了解到之后 发现2d游戏人物的动作更多是图片的拼接 动作是否精细 由这个动作的帧数决定 这篇博客会简单实现2d人物的动作 效果如下 2d人物动
  • rnn pytorch_pytorch介绍rnn字符级文本生成

    rnn pytorch Today we ll continue our journey through the fascinating world of natural language processing NLP by introdu
  • MySQL可见_MySQL 8.0新特性 -- 不可见索引

    MySQL支持不可见索引 即优化器不会使用该索引 不可见索引特性不可以用于主键 默认索引是可见的 可以在create table create index alter table操作中使用关键字visible invisible来指定索引是
  • Python之整型

    1 python中一切都是对象 因此python中其实根本不存在int float这些类型 2 int其实是一个python对象 3 整数类型 int 在python中实际是上长整型 理论是可以存储无限大小的整型数 正数负数和0 一 int
  • linux杀死进程的五种方法

    方法一 Terminal终端输入 gnome system monitor 就可以打开system monitor 如图 然后找到相应进程 右击选择kill process就可以了 方法二 通过kill 进程id的方式可以实现 首先需要知道
  • 目标跟踪序列化测试以及搜参

    1 序列化测试 对于一些跟踪算法 特别是siamese系列 一般进行20epochs的训练 对应20个训练模型 特别是backbone解冻的后10个模型 均有可能出现最好的结果 got 10k与lasot的结果一般容易出现在10 15 ot