PySOT调试

PySOT调试

目录

*
零、准备工作
一、使用PySOT进行训练
二、使用PySOT进行测试与评估
三、使用多卡训练
附:

零、准备工作

文件下载

  1. 作者代码下载:pysot
  2. 数据集: VID Youtube-BB: 百度云盘 提取码:h964 DET COCO
  3. 预训练模型:Google Drive
  4. 最终模型:百度云盘 提取码:j9yb

注:详细见代码中的ReadMe部分,另外,以上文件除了数据集,我都保存至百度云盘 提取码:c215

数据集处理

以VID数据集为例,将文件名进行对应的修改,并将VID/val移动到train的文件夹下。


Annotations/VID/train/ILSVRC2015_VID_train_0000  改为Annotations/VID/train/a
Annotations/VID/train/ILSVRC2015_VID_train_0001  改为Annotations/VID/train/b
Annotations/VID/train/ILSVRC2015_VID_train_0002  改为Annotations/VID/train/c
Annotations/VID/train/ILSVRC2015_VID_train_0003  改为Annotations/VID/train/d
Annotations/VID/val   修改并移动Annotations/VID/train/e

Data/VID/train/ILSVRC2015_VID_train_0000  改为Data/VID/train/a
Data/VID/train/ILSVRC2015_VID_train_0001  改为Data/VID/train/b
Data/VID/train/ILSVRC2015_VID_train_0002  改为Data/VID/train/c
Data/VID/train/ILSVRC2015_VID_train_0003  改为Data/VID/train/d
Data/VID/val   修改并移动Data/VID/train/e

准备好数据集后,依次运行training_dataset/vid下的 python文件:

parse_vid.py
// 注意修改VID文件路径 VID_base_path,另外若不修改保存位置,则对应的文件都保存在 parse_vid.py所在文件夹下。

par_crop.py

// 进行图片的剪切,若使用服务器进行多进程操作,会很快。我在本地剪切完数据大概用了300min,另外,生成的内容大概有72G,在当前文件路径下的crop511文件夹下,所以要注意适当更改路径。

gen_json.py

// 生成相应的 JSON文件,同样也是注意读取和保存文件路径。

在数据集处理过程中需要注意的是,在windows下和Linux的路径表示和 os.path.join方法是不同的,因此在对文件名称进行路径分割是不同的,在Linux下路径使用 ./进行划分,因此在 parse_vid.py的第44行使用的是 /进行划分。在WIndows下使用 .\或者是 //进行路径的划分,因此在进行路径分割时要修改对应的分割标志。路径分割不对时会导致第三步生成的JSON文件存在问题,以至于在train时加载数据过程中 dataset.py的第45行出错 has no frames

一、使用PySOT进行训练

  1. 修改pysot/core/config.py文件

如果是对单个数据集进行训练,将DATASET.NAMES修改为单个数据集,同时将暂不使用的数据集的配置注释掉,如单独使用VID数据集时修改为如下:

__C.DATASET.NAMES = ['VID']

__C.DATASET.VID = CN()

__C.DATASET.VID.ROOT = '/home/user2/Documents/dataset/ILSVRC2015/croped'
__C.DATASET.VID.ANNO = '/home/user2/Documents/dataset/ILSVRC2015/train.json'
__C.DATASET.VID.FRAME_RANGE = 100
__C.DATASET.VID.NUM_USE = 100000

  1. 修改experiments/./config.yaml

在训练过程中,若需要加入预训练模型,则在对应的实验文件夹下的config.yaml文件,将PRETRAINED后面参数修改为存放预训练模型的路径。

注:对于各个实验文件夹alex表示使用 AlexNet,r50_lxyz表示使用 ResNet50网络的不同阶段的输出,mobilev2表示使用 MobileNetV2。dwxcorr表示逐通道的深度互相关。otb代表 OTB数据集,lt表示 VOT long-term tracking challenge。不带后缀的为 VOT short-term tracking challenge

  1. 训练

将config.yaml文件路径添加到train.py代码中38行,修改—cfg的默认参数。在config.yaml文件中:

RPN:
    TYPE:'DepthwiseRPN'
    TYPE:'MultiRPN'

MASK:
    MASK:True
  1. 对于多卡和单卡训练

这块参考作者的说明文档,我是用的单卡训练。

二、使用PySOT进行测试与评估

准备OTB和VOT数据集

VOT2018

OTB100(OTB2015)

JSON文件:百度云盘

我将对应的处理好的数据集保存在百度云盘中:

VOT2018 提取码:yo34

OTB100(OTB2015) 提取码:j6sy

  1. OTB数据集

需要将CVRP13.json,OTB100.json,OTB50.json文件放在OTB数据集下。此外,需要将Jogging文件复制为Jogging-1和Jogging-2,将Skating2复制为Skating2-1和Skating2-2。文件夹架构如下:

| -- OTB100/
    | -- Basketball
    |   ......
    | -- Woman
    | -- OTB100.json
    | -- OTB50.json
    | -- CVPR13.json
  1. VOT数据集

将VOT2018.json文件放在VOT2018文件夹下,整体文件夹内容如下:

|--VOT2018/
    |--annotions
    |--ants1
        |--color
            |--00000...jpg
            ...
        |--groundtruth.txt
        ...
    |--ants3
    ...
    |--zebrafist1
    |--VOT2018.json

测试

tools/test.py

--dataset
--config
--snapshot

dataset_root

确认好以上文件的路径,然后运行基本上没什么问题。

测试OTB100:

PySOT调试

测试VOT2018:

PySOT调试

测试完成之后,默认在tools文件夹下生成一个result文件夹,下面存放在不同测试集上的测试结果:

PySOT调试

评估:

tools/eval.py

--tracker_path
--dataset
--tracker_prefix

root

确认以上路径后,运行即可。

SiamRPN++在OTB100下评估结果:

PySOT调试

SiamRPN++在VOT2018下评估结果:

PySOT调试

三、使用多卡训练

最近想尝试多卡训练,参考作者给出的教程,我教研室的服务器是一台机器4张RTX2080Ti的配置,其中课题组同学用了两张,因此只剩下两张卡,所以我进行多卡训练时依次使用以下命令:


conda activate pysot

export PYTHONPATH=[your code path]:$PYTHONPATH

cd experiments/siamrpn_r50_l234_dwxcorr_8gpu

CUDA_VISIBLE_DEVICES=2,3 python -m torch.distributed.launch --nproc_per_node=2 --master_port=2333 ../../tools/train.py --cfg config.yaml

目前已经将PySOT的代码调通,并可以进行训练。

附:

PySOT代码调试起来比较简单,我一开始使用的是Window系统,所以很多路径问题得注意。还有就是对数据的预处理部分,默认生成的数据是在当前的training_dataset下具体数据集名称的文件夹下,导致整个工程很大,所以我对数据集的保存位置进行了修改。在服务器有空余的显卡后,我又将程序同步到服务器,在本地使用Pycharm进行远程调试,并将文件的路径做了相应的修改,因此很快就调通了。

按照作者给出的模型,最后评估的结果和文章上给出的结果还是存在一定的差距,目前这是比较困惑我的地方。

Original: https://blog.csdn.net/qq_30287833/article/details/124181413
Author: Brilliant Cheng
Title: PySOT调试

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/708993/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球