目标跟踪之Pysot系列代码训练(SiamRPN\SiamRPN++)

2023-05-16

代码地址:https://github.com/STVIR/pysot
环境配置参考博客:Siam系列跟踪算法工具包PySOT配置

一、数据集准备

Pysot系列跟踪器训练的时候,首先将数据集进行裁剪,一共是四个数据集:VID, YOUTUBEBB, DET, COCO

1.1 VID数据集

VID数据集是Object detection from video的简称,主要是ILSVRC2015的VID子集
建立软链接

ln -sfb /data3/publicData/Datasets/ILSVRC2015/Annotations/VID/train/ILSVRC2015_VID_train_0000/* ILSVRC2015_VID/Annotations/VID/train/a
ln -sfb /data3/publicData/Datasets/ILSVRC2015/Annotations/VID/train/ILSVRC2015_VID_train_0001/* ILSVRC2015_VID/Annotations/VID/train/b
ln -sfb /data3/publicData/Datasets/ILSVRC2015/Annotations/VID/train/ILSVRC2015_VID_train_0002/* ILSVRC2015_VID/Annotations/VID/train/c
ln -sfb /data3/publicData/Datasets/ILSVRC2015/Annotations/VID/train/ILSVRC2015_VID_train_0003/* ILSVRC2015_VID/Annotations/VID/train/d
ln -sfb /data3/publicData/Datasets/ILSVRC2015/Annotations/VID/val/* ILSVRC2015_VID/Annotations/VID/train/e

ln -sfb /data3/publicData/Datasets/ILSVRC2015/Data/VID/train/ILSVRC2015_VID_train_0000/* ILSVRC2015_VID/Data/VID/train/a
ln -sfb /data3/publicData/Datasets/ILSVRC2015/Data/VID/train/ILSVRC2015_VID_train_0001/* ILSVRC2015_VID/Data/VID/train/b
ln -sfb /data3/publicData/Datasets/ILSVRC2015/Data/VID/train/ILSVRC2015_VID_train_0002/* ILSVRC2015_VID/Data/VID/train/c
ln -sfb /data3/publicData/Datasets/ILSVRC2015/Data/VID/train/ILSVRC2015_VID_train_0003/* ILSVRC2015_VID/Data/VID/train/d
ln -sfb /data3/publicData/Datasets/ILSVRC2015/Data/VID/val/* ILSVRC2015_VID/Data/VID/train/e

进入到"./pysot-master/training_dataset/vid/"目录,

  1. 运行python parse_vid.py,将每张图片的groundtruth读取,并保存。
    (也可以不软连接,直接修改一下sub_sets = sorted({'a', 'b', 'c', 'd', 'e'})VID_base_path
    运行完成如下,会生成vid.json文件:
    在这里插入图片描述

  2. 运行python par_crop.py 511 12,将图片裁剪为511*511大小,12是线程数。
    运行成功后,会在vid文件夹底下生成crop511文件夹,里面是裁剪后用于训练的样本图片。
    在这里插入图片描述

  3. 运行python gen_json.py,生成train.json和val.json
    在这里插入图片描述

1.2 COCO数据集

进入到"./pysot-master/training_dataset/coco/"目录(下载的COCO数据集train2017,val2017,annotations_trainval2017都放在对应目录底下,或者使用软连接放在此目录底下),执行如下指令

cd pycocotools && make && cd ..
python par_crop.py 511 12
python gen_json.py

1.3 DET&YT_BB数据集

DET数据集是ILSVRC2015数据集的DET,处理方式和COCO一样,而YT_BB是从YouTube上面整理的数据集(DaSiamRPN里面提到的训练方式),考虑到该数据集体量庞大,处理时间相当长,所以这两个数据集就没用于训练了。

1.4 pretrained_model下载

从作者提供的谷歌网盘地址下载预训练模型并修改pysot/core/config.py:https://gitcode.net/mirrors/stvir/pysot/-/blob/master/TRAIN.md在这里插入图片描述

二、多GPU训练

进入到目录:pysot/core,打开config.py,修改用于训练的数据集(138行)
在这里插入图片描述

cd experiments/siamrpn_r50_l234_dwxcorr
CUDA_VISIBLE_DEVICES=0,1
python -m torch.distributed.launch \
    --nproc_per_node=2 \
    --master_port=2333 \
    ../../tools/train.py --cfg config.yaml

此处用的是GPU0和GPU1两块显示,所以CUDA_VISIBLE_DEVICES=0,1,--nproc_per_node=2可以根据自己的条件修改。

在这里插入图片描述
模型保存在snapshot文件夹底下,如下:
在这里插入图片描述

三、训练断点重续

训练过程中不可避免会出现意外,而且训练时间很久,如果重新运行算法,训练会默认重新训练(从epoch1开始),不会断点重续,但其实Pysot代码是有这个功能的,我也是好多次之后才发现。。。
打开tools/train.py文件修改第三百行,指定cfg.TRAIN.RESUME的路径,即可加载之前一半的模型。

在这里插入图片描述

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

目标跟踪之Pysot系列代码训练(SiamRPN\SiamRPN++) 的相关文章

  • BA(Basic authentication)认证实践

    1 概念介绍 Basic authentication xff1a 是一种最简单的对Web资源进行访问控制的方法 xff0c 属应用层的安全保障手段 常用的签名算法有 xff1a base64 HmacSHA1 1 xff09 优点 xff
  • 累加校验和C语言实现

    发送方 xff1a 对要数据累加 xff0c 得到一个数据和 xff0c 对和求反 xff0c 即得到我们的校验值 然后把要发的数据和这个校验值一起发送给接收方 接收方 xff1a 对接收的数据 包括校验和 进行累加 xff0c 如果得到0
  • C++项目工程在Linux环境开发、部署和运行问题

    背景 当我们自己开发的项目程序需要在linux上进行部署 调试时 xff0c 项目代码完整拷贝过去之后 xff0c 直接运行我们自己的可执行程序 xff0c 往往提示找不到所相关的 so库 xff0c 会报错 这是因为 xff0c 系统只会
  • Jetson Xavier NX上安装ROS、Cartographer、基于D435i的Yolov5+TensorRT7的流程及问题解决

    主要记录下自己在Jetson Xavier NX上运行ROS Cartographer 基于D435i的Yolov5 43 TensorRT的系统环境配置流程 xff0c 经过了无数次在ARM上的安装 xff0c 这次是最流畅的一次环境配置
  • 计算机进制转换:二进制、八进制、十进制、十六进制

    一 什么是进制 在生活中 xff0c 我们通常都是使用阿拉伯数字计数的 xff0c 也就是10进制 xff0c 以10为单位 xff0c 遇10进一 xff0c 所以是由0 xff0c 1 xff0c 2 3 4 5 6 7 8 9组成的
  • 摘要认证,使用HttpClient实现HTTP digest authentication

    文章目录 前言一 四个过程二 过程细节三 HttpClient 代码示例 前言 今天工作需要做了摘要认证 xff08 digest authentication xff09 xff0c 下面就工作中遇到的问题及过程做一个总结 一 四个过程
  • C语言之带参数的宏

    这两天在学习C语言 xff0c 发现宏定义挺有意思 xff0c 可以减少代码量 带参宏定义 的一般形式为 define 宏 名 形参表 字符串 带参宏调用 的一般形式为 xff1a 宏 名 实参表 xff1b define M X Y X
  • visual studio升级

    visual studio升级 概述升级步骤温馨提示 概述 有时处于开发要求或者安全要求 xff0c 需要将visual studio升级到最新的版本 本篇文章记录一下如何升级 升级步骤 1 找到visual studio的安装路径下的安装
  • STL中那些好用的东西!(持续更新)

    一 数据结构部分 1 set amp map xff08 后续持续更新 xff09 2 queue xff08 priority queue xff09 queue lt int gt a 定义 a push i 压入 a pop 弹出 a
  • 工业机器人虚拟仿真设计

  • HTTP详解

    一 什么是HTTP xff1f HTTP xff08 HyperText Transfer Protocol xff0c 超文本传输协议 xff09 是一个简单的请求 响应协议 xff0c 它通常运行在TCP之上 xff08 应用层 xff
  • android练习之为 TextView 添加监听器 ,添加后退按钮 ,从按钮到图标按钮

    为 TextView 添加监听器 NEXT按钮不错 xff0c 但如果用户单击应用的TextView文字区域 xff08 地理知识问题 xff09 xff0c 也可以跳转 到下一道题 xff0c 用户体验会更好 添加后退按钮 为GeoQui
  • ORA-01918: 用户 'SCOTT' 不存在 解决方法

    SQL gt alter user scott account unlock alter user scott account unlock 第 1 行出现错误 ORA 01918 用户 SCOTT 不存在 找到scott sql 文件 S
  • idea 里form表单action提交servlet文件出现报错

    由于在action的字符串中加了空格 xff0c 导致于于url pattern不匹配 xff0c 所以报错
  • 数据结构——二维数组

    二维数组可以理解为数组的数组 二维数组组织为矩阵 xff0c 可以表示为行和列的集合 但是 xff0c 创建二维数组以实现关系数据库外观相似的数据结构 它提供了一次容纳大量数据的便利性 xff0c 可以在任何需要的地方传递给任意数量的功能
  • 数据结构——链表

    链表是一种随机存储在内存中的节点的对象集 节点包括两个字段 xff0c 即存储在该地址的数据和包含下一节点地址的指针 链表的最后一个节点包含指向null的指针 1 链表的用途 链表不需要连续存在于存储器中 节点可以是存储器中任何位置并链接在
  • 多线程学习笔记--第一章 多线程技能(1)

    1 什么是进程 xff1f 进程是操作系统结构的基础 xff0c 是一次程序的执行 xff1b 是一个程序及其数据在处理机上顺序执行时所发生的活动 xff1b 是程序在一个数据集合上运行的过程 xff0c 它是系统进行资源分配和调度的一个独
  • 多线程学习笔记--第一章 多线程技能(2)

    1 currentThread方法 该方法返回代码段正在被哪个线程调用的信息 2 isAlive方法 判断当前线程是否处于活动状态 活动状态是线程已经启动且尚未终止 线程处于运行或准备开始运行的状态 如果将线程对象以构造参数的方式传递给Th
  • Qt编程过程中若给定一些数,把它们四舍五入后,保留两位小数

    double类型的数进行四舍五入后保留两位小数 场景实现方式方法一 方法二总结 场景 开发的过程中需要显示一些double类型的数 xff0c 但是又不能直接显示 xff0c 需要四舍五入之后保留两位小数 如 xff1a 0 124567
  • C语言中,头文件、源文件和库文件的关系(转)

    初学c xff0c 一直搞不懂几个概念 xff0c 偶然看到一篇比较好的文章 xff0c 转载一下 xff0c 原文https blog csdn net xhbxhbsq article details 78955216 一下是原文内容

随机推荐