Windows10环境下自己配置Pytracking详细流程(有参考博客)

关于pytracking以及配置前的一些准备

Pytracking是一个基于pytoch的用于视觉对象跟踪和视频对象分割的通用的python框架。

1.1 配置前的准备

windows系统下预装支持VS的CUDA10.0以及对应的cuDnn
下载及安装参考博客:CUDA10.0下载及安装

注:(1)最好使用cuda10.0,否则需要自己在一些地方重新编译。会很麻烦,windows只适合用来跑demo,训练的话还是推荐ubuntu
(2)并且电脑需要安装VS2015

配置过程中参考了pytracking中对windows配置的说明:https://gitcode.net/mirrors/visionml/pytracking/-/blob/master/INSTALL_win.md
以及一个博主的配置说明:
CSDN搜索(pytracking系列跟踪算法的配置(LWL, KYS, PrDiMP, DiMP and ATOM Trackers)(windows10版本))

2.配置过程

2.1 创建环境并激活

conda create --name pytracking python=3.7
conda activate pytracking

2.2 安装pytorch
有两种方式,第一种是自己下载torch版本,进行本地安装
下载地址:https://download.pytorch.org/whl/torch_stable.html
下载cuda对应的torch,torchvision。

第二种方法不推荐:是按照以下方式进行自动安装(但是我用这种方法默认下载的是cpu版本的torch,故我使用第一种方法进行安装)

conda install -y pytorch torchvision cudatoolkit=10.0 -c pytorch

2.3 安装各种依赖库

pip install matplotlib pandas jpeg4py
pip install opencv-python visdom tb-nightly

matplotlib是一个2D绘图库;
pandas是一种数据分析工具;
jpeg4py是一种快速读取jpg图片的工具;
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,而opencv-python是OpenCV的python的API接口;
visdom是python的可视化工具;
最后一个不是很清楚

pip install cython pycocotools

cython是一种编程语言,它使Python语言的C扩展像Python本身一样简单,此处目的是用来编译COCO工具包;
pycocotools:python api tools of coco

2.4 安装Pricise ROI pooling
(1)DiMP和ATOM需要Precise ROI pooling模块,可以直接下载模块,将解压后的pytorch文件夹拷贝到路径E:\Codes\PyCharm\pytracking-master\ltr\external\PreciseRoIPooling\

(2)下载prroi_pool.pyd文件
这个文件是使用C++生成的库文件,DIMP和ATOM算法会用到,下载地址作者已提供:prroi
_pool.pyd(有时候需要科学上网才可以下载),下载周将其保存到路径:D:\Python\Anaconda_install\envs\pytracking\Lib\site-packages

(3)添加环境变量(到用户变量)
路径如下:***\envs\pytracking\Lib\site-packages\torch\lib
图片上传总是失败,但是按照这个路径就可以

(4)添加代码
打开pytracking\ltr\external\PreciseRoIPooling\pytorch\prroi_pool\functional.py,添加如下代码:

def _import_prroi_pooling():
    global _prroi_pooling
    
    #load the prroi_pool module    
	import imp
    file, path, description = imp.find_module('prroi_pool')
    with file:
        _prroi_pooling = imp.load_module('prroi_pool', file, path, description)

添加完成之后应该是这样的:

import torch
import torch.autograd as ag

__all__ = ['prroi_pool2d']

_prroi_pooling = None

def _import_prroi_pooling():
    global _prroi_pooling

    #load the prroi_pool module
    import imp
    file, path, description = imp.find_module('prroi_pool')
    with file:
        _prroi_pooling = imp.load_module('prroi_pool', file, path, description)
    
    if _prroi_pooling is None:
        try:
            from os.path import join as pjoin, dirname
            from torch.utils.cpp_extension import load as load_extension
            root_dir = pjoin(dirname(__file__), 'src')

            _prroi_pooling = load_extension(
                '_prroi_pooling',
                [pjoin(root_dir, 'prroi_pooling_gpu.cpp'), pjoin(root_dir, 'prroi_pooling_gpu_impl.cu')],
                verbose=True
            )
        except ImportError:
            raise ImportError('Can not compile Precise RoI Pooling library.')

    return _prroi_pooling

(5)创造配置文件(此处参考博客)
在工程路径下新建createlocalfiles.py,(这里的路径要与pytracking和ltr保持同级,通过右键第二个pytracking-master新建python文件即可) 并写入如下代码:


import ltr.admin.environment as ltrae
import pytracking.evaluation.environment as pyee
 
ltrae.create_default_local_file()
 
pyee.create_default_local_file()

运行之后,会在\pytracking\evaluation\路径和\ltr\admin\路径下生成local.py,打开这两个文件可以配置一些我们的实验参数。如指定数据集路径和预训练模型路径等。

(6)下载预训练模型(此处参考博客)
下载地址(官方给的需要):
https://github.com/visionml/pytracking/blob/master/MODEL_ZOO.md
百度云下载链接:
链接:https://pan.baidu.com/s/12R58DNaRJqHodNcT5YzjUQ
提取码:wbrq
新建networks路径保存下载的预训练模型

(7)打开服务可视化(参考博客)

python -m visdom.server

(8)打开另一个终端运行(参考博客)

activate pytracking
 
python pytracking/run_tracker.py atom default --dataset_name otb --sequence Soccer --debug 1 --threads 0

atom是需要运行的跟踪器名字

default是参数设置,在pytracking/parameter/atom路径下有很多参数可选。

otb是需要运行的数据集名称

Soccer是需要运行的视频序列名字

debug控制可视化等级

threads运行的线程数

报错:
File “pytracking…\pytracking\utils\load_text.py”, line 14, in load_text_numpy
raise Exception(‘Could not read file {}’.format(path))
Exception: Could not read file E:\OTB100/BlurCar1/groundtruth_rect.txt
博客中提到这事由于groundtruth_rect.txt读取格式不对应造成的,解决方法按照博客修改就可以的

打开pytracking/utils/load_text.py更改函数:

def load_text_numpy(path, delimiter, dtype)

改为:

def load_text_numpy(path, delimiter, dtype):
    if isinstance(delimiter, (tuple, list)):
        for d in delimiter:
            try:
                # ground_truth_rect = np.loadtxt(path, delimiter=d, dtype=dtype)
                
                # to deal with different delimeters
                import io
                with open(path,'r') as f:
                    ground_truth_rect=np.loadtxt(io.StringIO(f.read().replace(',',' ')))
                
                return ground_truth_rect
            except:
                pass
 
        raise Exception('Could not read file {}'.format(path))
    else:
        ground_truth_rect = np.loadtxt(path, delimiter=delimiter, dtype=dtype)
        return ground_truth_rect

(9)再次运行,报错
File “

博客中说到这事由于作者提供的prroi_pool.pyd与系统不兼容,需要使用VS编译来生成依赖库prroi_pool.pyd,我想下载博主自己编译的prroi_pool.pyd尝试了一下。、
调试成功!!!!!

你可能感兴趣的:(pytracking,python)