STARK代码学习笔记

  • 前言
  • 一、环境安装
  • 二、设置项目路径
  • 三、训练STARK
  • 四、测试STARK
    • 1. 下载预训练模型
    • 2. 准备测试数据集
  • 五、STARK代码细节
  • 六、测试过程可视化

前言


本文记录了STARK代码学习阶段的步骤,核心内容从原作者的github中搬运,对于部分内容(如不同数据集的测试语句)仅以一个为例进行展示,详细请查看原github页面。

code链接:https://github.com/researchmm/Stark
paper链接:https://arxiv.org/abs/2103.17154

STARK的Highlights:

  1. End-to-End: 直接预测一个精准的边界框作为跟踪结果。
  2. Post-processing Free: 不需要任何超参数敏感性的处理,性能稳定。
  3. Real-Time Speed: STARK-ST50, STARK-ST101在Tesla V100上的运行时间分别为40和30FPS;STARK-Lightning在RTX TITAN上的运行时间为200-300FPS

开始前的准备工作,从https://github.com/researchmm/Stark中下载代码部分

一、环境安装

该项目基于pytorch17的框架,如果已经有pytorch17的环境可以直接在自己电脑中的环境中运行,不用再重建虚拟环境。

进入自己的pytorch17的虚拟环境中,安装STRAK中的所需的其他库(记得进入install_pytorch17.sh把前4行中安装pytorch的语句删除)。

conda activate pytorch17 # 我的虚拟环境的名称就叫做pytorch17
bash install_pytorch17.sh # 安装其他库

二、设置项目路径

cd到STARK文件夹,执行以下语句,会在 lib/train/admin/local.py 和 lib/test/evaluation/local.py 中分别生成训练数据和测试数据的路径,之后如果要修改数据路径也是在对应local.py文件中修改。

python tracking/create_default_local_file.py --workspace_dir . --data_dir ./data --save_dir .

三、训练STARK

用单个GPU训练

python tracking/train.py --script stark_s --config baseline --save_dir . --mode single

四、测试STARK

1. 下载预训练模型

直接进行测试的话,需要下载一个预训练好的模型

  • 官方链接:https://github.com/researchmm/Stark/blob/main/MODEL_ZOO.md
  • 我自己只下了STARK-ST50的baseline,存放在阿里云盘里了,下载挺快的:https://www.aliyundrive.com/s/erHasVGm46h

下载完成后在项目根目录下创建checkpoints/train/strak_st2/baseline文件夹,并将文件放在里面。

2. 准备测试数据集

以LaSOT数据集为例,在项目的根目录下创建data文件夹,然后放入自己下好的LaSOT数据集。

  • LaSOT链接:http://vision.cs.stonybrook.edu/~lasot/download.html
  • 全部的LaSOT序列太大了,我这里只下载了truck的序列视频(约5G),阿里云盘链接:

以LaSOT数据集为例,终端环境下测试语句如下:

# 在终端下测试
python tracking/test.py stark_st baseline --dataset lasot --threads 32
python tracking/analysis_results.py # need to modify tracker configs and names

直接运行会出BUG,还需要修改以下几个地方。

  1. 将lasotdataset.py中的def _get_sequence_list()方法里的sequence_list改为[‘truck-1’,…,] (这是因为我们只下载了truck序列的数据集)

  2. 在终端重新运行

python tracking/test.py stark_st baseline --dataset lasot --threads 32

会提示Downloading: restnet50之类的语句,这是在下载backbone,虽然只有97.8M还是很慢,我自己下载好后放到了该语句中提示的下载处。

restnet50的阿里云盘链接:https://www.aliyundrive.com/s/yb9SVcm4wY2

这时再重新运行,进行测试

python tracking/test.py stark_st baseline --dataset lasot --threads 32

五、STARK代码细节

持续补充ing…

测试结果会保存在STARK/test/tracking_results文件夹中
若要观察代码运行过程中每一帧的预测结果,STARK/lib/test/evaluation/tracker.py中约line 87

output = self._track_sequence(tracker, seq, init_info)

print(‘output[‘target_bbox’]’) # 视频中所有帧的预测结构

六、测试过程可视化

为了实时看到测试的结果,可以对原始代码略加修改,增加可视化部分。

这里需要注意一下:LaSOT的annotations和该项目中的output的预测框格式都是**[x,y,w,h]**,其中x:左上角的横坐标,y:左上角的纵坐标,w:目标的宽,h:目标的高。

所以可视化预测框的代码如下,将其添加在STARK/lib/test/evaluation/tracker.py的约line145行后(也就是_store_outputs(…)后),

img = cv.imread(frame_path)
pred_bbox = out['target_bbox']
cv.rectangle(img,(int(pred_bbox[0]),int(pred_bbox[1])),(int(pred_bbox[0]+pred_bbox[2]),int(pred_bbox[1]+pred_bbox[3])),(0,0,255),3)
cv.imshow(seq.name, img)
cv.waitKey(1)

再重新测试就可以看到实时检测的画面了,红色框就是算法的预测框。

STARK代码详细学习笔记相关推荐

  1. monodepth-pytorch代码实现学习笔记(一)

    monodepth-pytorch代码实现学习笔记(一) 前言 一.前期准备 1. 数据集 2. 训练与测试 二.数据预处理 1. data_loader.py 1.1 __init__(self,r ...

  2. 步步为营 .NET 代码重构学习笔记 九

    步步为营 .NET 代码重构学习笔记系列 步步为营 .NET 代码重构学习笔记 一.为何要代码重构 步步为营 .NET 代码重构学习笔记 二.提炼方法(Extract Method) 步步为营 .NE ...

  3. 步步为营 .NET 代码重构学习笔记 十一

    步步为营 .NET 代码重构学习笔记系列 步步为营 .NET 代码重构学习笔记 一.为何要代码重构 步步为营 .NET 代码重构学习笔记 二.提炼方法(Extract Method) 步步为营 .NE ...

  4. 步步为营 .NET 代码重构学习笔记 十

    步步为营 .NET 代码重构学习笔记系列 步步为营 .NET 代码重构学习笔记 一.为何要代码重构 步步为营 .NET 代码重构学习笔记 二.提炼方法(Extract Method) 步步为营 .NE ...

  5. 重要性采样(Importance Sampling)详细学习笔记

    重要性采样(Importance Sampling)详细学习笔记 文章目录 重要性采样(Importance Sampling)详细学习笔记 前言: 参考主体: on-policy 和 off-pol ...

  6. 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)

    Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...

  7. Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)

    所有示例使用的数据表均为Oracle提供的SQL基础数据表(t_employees.sql dept.sql emp.sql salgrade.sql) 熟练掌握多多练习即可达到完成后端开发所需具备的 ...

  8. 陈宝林《最优化理论与算法》超详细学习笔记 (八)————最优性条件

    陈宝林<最优化理论与算法>超详细学习笔记 (八)----最优性条件 无约束问题的极值条件 必要条件 二阶充分条件 充要条件 约束极值问题的最优性条件 不等式约束的一阶最优性条件 无约束问题 ...

  9. 陈宝林《最优化理论与算法》超详细学习笔记 (七)————第五章 运输问题

    陈宝林<最优化理论与算法>超详细学习笔记 (七)----第五章 运输问题 第1节 运输问题的数学模型 第2节 表上作业法 2.1 确定初始基可行解 2.2 最优解的判别 2.3 改进的方法 ...

最新文章

  1. JAVA-初步认识-第三章-if语句练习-星期和季节
  2. 用ASP实现简单的繁简转换
  3. Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数
  4. 四、极大似然参数估计
  5. Piggy-Bank POJ - 1384(完全背包+背包放满)
  6. 简单解决XP共享连接数10限制(转)
  7. 时间复杂度O(1) O(n) O(logn) O(nlogn)是什么意思?
  8. 如何使用 Spring 对数据库进行 CURD?
  9. 解决Zarp报错,成功运行
  10. 解决办法:look up error: undefined symbol
  11. mysql-8.0.26-winx64 的下载与安装教程
  12. VS201x提示无法查找或打开 PDB 文件
  13. 【Python K均值聚类算法】
  14. 导航动态避让算法RVO的优化ORCA(Optimal Reciprocal Collision Avoidance)
  15. 几点个人信息安全感受
  16. html 显示doc文件
  17. vc显示html文档,VC++ 显示内存中地HTML内容
  18. Android 10.0 关机对话框UI定制化开发(一)
  19. 关于国企、外企、私企(转)
  20. 青岛农商银行计算机防病毒应用培训,农信银资金清算中心——青岛农商银行举办2020年新入职员工培训班...

热门文章

  1. 云效首发应用交付和项目协作新品,助力企业DevOps到BizDevOps
  2. 图论入门(一),拓扑排序生成拓扑序列与Dijkstra求最短路
  3. R语言学习笔记4_参数估计
  4. Java自定义模板设计
  5. java通过POI快速读取excel大量数据的方式
  6. 社会工程攻击——setoolkit使用(含错误解决)
  7. 大学python难不难_“大学四年怎么过?”其实是有答案的
  8. SQL注入漏洞测试(参数加密)
  9. a该内存不能为“read”或“written解决方案
  10. 最小生成树(克鲁斯卡尔算法 普里姆算法)