ATOM追踪代码在Windows上运行

ATOM追踪代码在Windows上运行

  • ATOM追踪代码在Windows上运行
    • 前言
    • 运行条件
    • github
    • 安装各式各样的包
      • ninja
      • pycocoapi
      • 配置VC环境变量
    • google下载
    • 路径的问题
    • torch.load()
    • ninja
    • 运行方式和结果

ATOM追踪代码在Windows上运行

前言

本人刚刚本科毕业,准备出国所以跟着清华导师做个项目,最近开了物体追踪的坑,老师话不多说直接让跑代码,作为一个萌新,尤其是懒得装双系统的萌新,决定直接在windows上跑。从代码架构上可以看出作者很有代码功底,然而唯一不足的是他引用了适用性比较坑的prpooling代码,导致在Windows上跑炸裂。事先说明,如果实验室用linux环境的同学尽量用linux跑,windows跑要做好折腾的准备。既然你已经准备好啦,那就来吧
Github代码:https://github.com/visionml/pytracking
论文地址: https://arxiv.org/pdf/1811.07628.pdf

运行条件

  • anaconda 自己去下一个装上就可以了
  • vs2015/vs2017 对,你没有看错,真的需要这个东西。因为pycocoapi和ninja需要vs编译,不需要完整的,只需要VC部分就可以惹。因为我本科生当过C语言助教,所以电脑里有两个版本,导致路径和只有一个版本的路径不一样,所以后续配置环境变量的时候大家看好自己的路径
  • VC别忘了装Windows Kit,如果我没记错的话2015是不带的
    ATOM追踪代码在Windows上运行_第1张图片
  • cuda和cudnn,什么你没有cuda,那放弃吧,你跑不起来的,因为prpooling这部分只支持CUDA,CPU版本还没有实现。因此,用虚拟机也不可能跑起来的。
    PrPooing的Github

https://github.com/vacancy/PreciseRoIPooling

说明如下
ATOM追踪代码在Windows上运行_第2张图片还有一个小问题要注意吧,大家要看好自己的显卡支持的最高CUDA版本,方法为 桌面右键-NVIDIA选项-帮助-系统信息-组件-NVCUDA.dll
ATOM追踪代码在Windows上运行_第3张图片

  • pytorch 看好自己的的cuda版本,去官网上下就好了,最好用anaconda,在自己的虚拟环境里安装好

github

作者在代码里引用了其他github代码,默认是不下载的,所以在download的时候别忘了进入pytracking/ltr/external/ 下载prpooling的源码
如果你用git下载需要两个命令

git clone https://github.com/visionml/pytracking.git
git submodule update --init  

不然真正跑代码的时候会提示缺少包

安装各式各样的包

这一步还算简单,用记事本打开install.sh,打开anaconda prompt一步一步敲就好,创建虚拟环境就自己弄吧~我们从虚拟环境activate后开始

conda install -y matplotlib
conda install -y pandas
pip install opencv-python
pip install tensorboardX
pip install visdom
conda install -y cython
pip install jpeg4py 
mkdir pytracking/networks

如果我没有记错的话,这些都是可以直接装上的,如果装不上去看看网上的其他教程,看看缺什么包
还有几个就是深坑了…容我们慢慢来

ninja

这个东东要去github上下载,送上地址
https://github.com/ninja-build/ninja/releases
把这个东东下载下来,让后加入到环境变量里
访问cmd,输入ninja可以直接运行就ok,碰到错误系统找不到指定的文件,没关系,pytorch会生成那个文件的~

pycocoapi

这个东西就是深坑了,可以看看网上其他的教程
我是这么安装上的

  1. github下载源码 https://github.com/cocodataset/cocoapi
  2. 配置vc环境变量 如果安装以下步骤出错则需要自己配置变量,多数都是因为cmd无法访问注册表或者找不到vc专门配环境的那个bat
  3. 进入cocoAPI/PythonAPI目录
  4. python setup.py build_ext --inplace
  5. python setup.py build_ext install
  6. 编译过后的PythonAPI文件夹复制到虚拟环境包目录即可(.\虚拟环境\Lib\site-packages)

再送上两个教程
https://blog.csdn.net/benzhujie1245com/article/details/82686973
https://www.jianshu.com/p/820f0177b867

配置VC环境变量

这个就是比较麻烦的地方了,但是不要嫌麻烦,后面ninja还要用这个变量的,坑死我了
一共有三个
PATH

C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\bin\amd64
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\Common7\Tools

LIB

C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\lib\amd64;
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\ucrt\x64;
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10586.0\um\x64;
D:\Anaconda3\envs\pytorch\Lib\site-packages\torch\lib;

INCLUDE

C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\shared;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\winrt;
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0;
C:\Program Files (x86)\Microsoft Visual Studio\Shared\14.0\VC\include

这里需要注意的是

  • 之前说过,我的电脑里有vs2015和vs2017两个版本,所以目录应该不太一样,找到自己电脑里的vc目录就可以~
  • 一定要看好自己的电脑是32位还是64位,vc\bin里默认的是编译x86的,编译的时候会提示目标类别与编译类别不相同,所以PATH要选择vc\bin\amd64下的文件,同理LIB也是一样
  • 在windows kit选择的时候一定选择x64目录下的文件,不要选择arm64,会提示arm64和x64不兼容,arm64和amd64是两个东西!!不要再入坑

google下载

emm,这个东西嘛,下好了

链接:https://pan.baidu.com/s/1Qd2CTxgbDyh-9obos4zn7w
提取码:ij11
复制这段内容后打开百度网盘手机App,操作更方便哦

下载好之后放到pytracking的network目录下,没有就自己建一个

路径的问题

好了,现在我萌可以开始跑啦~
如果你的笔记本有摄像头的话可以直接运行

python run_webcam.py atom default

或者

python run_webcam.py dimp dimp50

如果没有可以找一个视频,运行

python run_vidio.py atom default 视频路径

别着急,后面坑多着呢
首先是linux路径和我们的路径不太一样
在anaconda prompt里,在master目录下输入这个

python -c "from pytracking.evaluation.environment import create_default_local_file; create_default_local_file()"
python -c "from ltr.admin.environment import create_default_local_file; create_default_local_file()"

会在pytracking\evaluation\目录下创建local.py
我们需要重新改一下目录字符串,按照自己的目录改一下就行,这是我的目录
ATOM追踪代码在Windows上运行_第4张图片如果还有其他的错误,大概看一下源码,把左斜杠改成右斜杠就可以了

torch.load()

啊~这个错误让我差点买U盘装双系统……
ATOM追踪代码在Windows上运行_第5张图片
就当我尝试在虚拟机上跑代码的时候,我终于知道问题在哪了…
原因是作者的CUDA版本和我的CUDA版本不一样
在torch.load()的时候会悄无声息的推出,提示错误码0xC0000005
所以我们只需要把代码改一下 ,在ltr\admin\loading.py

def torch_load_legacy(path):
    """Load network with legacy environment."""

    # Setup legacy env (for older networks)
    _setup_legacy_env()

    # Load network
    checkpoint_dict = torch.load(path,map_location=lambda storage, loc: storage.cuda(0))

    # Cleanup legacy
    _cleanup_legacy_env()

    return checkpoint_dict

如果自己有多块显卡根据自己的需要改一下就行,参考教程

https://www.cnblogs.com/llfctt/p/10986401.html

ninja

好了,最后一个大坑
如果你跑程序的话会出现一大堆编译错误。如果上面VC都配好的话,这一步应该不会出现cl.exe不存在,math.h不存在等问题
但是你会发现编译不通过,没错~这就是prpooling比较坑的地方(虽然我觉得算法挺好的)
在运行的时候你会发现有这一句话

Emitting ninja build file C:\Users\40889\AppData\Loca\Temp\torch_extensions_prroi_pooling\build.ninja…

找到这个目录,把ninja.exe复制到build.ninja同于个目录下,先说错误原因把

  • 一开始会提示一大堆编译错误,比如没有不能有分号啊什么的,根据我C语言助教经验,需要在编译参数上加入/TP
  • 解决了这个问题之后你可能会遇到链接错误,x64和xarm64不兼容,那就说明lib的配置有问题,重新按照自己的电脑配置去配
  • 然后仍旧会出现链接错误,我发现编译的参数少了一个c10cuda.lib

ATOM追踪代码在Windows上运行_第6张图片把这两个参数加上之后,在这个目录下运行ninja应该编译成功,如果编译失败需要再找原因,有可能是环境配置错误,有可能是lib版本出现问题
但是编译通过之后发现还是不能运行,再打开ninjabuild发现文件又改回去了
于是我们只好改pytorch的代码,没错
找到出现错误的cpp_extention.py代码,CUDAExtension函数下
ATOM追踪代码在Windows上运行_第7张图片
还有这个地方,改成COMMON_MSVC_FLAGS = [’/MD’, ‘/wd4819’, ‘/EHsc’,’/TP’]
在这里插入图片描述
这样就可以生成能运行的ninja文件了,,,真艰难

运行方式和结果

ATOM追踪代码在Windows上运行_第8张图片

白上吹雪天下第一!
总之大概就是这样了~希望我分享的经验可以起一点作用
希望能攒点人品,下次托福过100

你可能感兴趣的:(物体追踪)