效果图(github项目原图)
有新问题会及时写上(有任何该项目部署的问题可以私信我或者在评论区交流)
1. 下载FairMOT源码
FairMOT从出现开始,在多目标跟踪的多项竞赛都拿到了"State of the Art",如下表
Dataset MOTA IDF1 IDS MT ML FPS
2DMOT15 60.6 64.7 591 47.6% 11.0% 30.5
MOT16 74.9 72.8 1074 44.7% 15.9% 25.9
MOT17 73.7 72.3 3303 43.2% 17.3% 25.9
MOT20 61.8 67.3 5243 68.8% 7.6% 13.2
作者的开发环境是ubuntu,如果想要在windows上运行该项目,会有些坑(对于我这种初学者就是折磨),因此记录一下环境搭建的过程。
使用命令下载:
git clone https://github.com/ifzhang/FairMOT.githttps://github.com/ifzhang/FairMOT.git
或者直接自己下载压缩文件解压到你的工作目录中
2. 环境搭建(作为菜鸟最艰辛的路程)
Anaconda安装
Anaconda的安装请参考其他教程。
创建虚拟环境
注意你的Anaconda对应的Python版本,我的对应的python版本是3.8.5
2020年12月3日的FairMOT最新版本中, python 3.7 和 pytorch >= 1.2.0。
为了保持和项目作者一样的环境(减少意料之外的错误), 先创建虚拟环境,然后切换到虚拟环境
conda create -n FairMOT
conda activate FairMOT
安装 pytorch
这里一定要注意区分几个概念
cuda 与 cudatoolkit
在windows环境下,如果你有一块独立显卡(目前只要是台式机基本都会有),那么你肯定需要安装你的独立显卡对应的显卡驱动版本
比如我的显卡是 GeForce GTX 1660 Super, 我的显卡驱动程序版本是 457.30
这个安装的 CUDA Toolkit 是Nvidia官方提供的,它的版本需求并不是我们安装PyTorch时候的需求
Nvidia 官方提供安装的 CUDA Toolkit 包含了进行 CUDA 相关程序开发的编译、调试等过程相关的所有组件。
但对于 Pytorch 之类的深度学习框架而言,其在大多数需要使用 GPU 的情况中只需要使用 CUDA 的动态链接库支持程序的运行( Pytorch 本身与 CUDA 相关的部分是提前编译好的 )
就像常见的可执行程序一样,不需要重新进行编译过程,只需要其所依赖的动态链接库存在即可正常运行。
故而,Anaconda 在安装 Pytorch 等会使用到 CUDA 的框架时,会自动为用户安装 cudatoolkit,其主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。
在安装了 cudatoolkit 后,只要系统上存在与当前的 cudatoolkit 所兼容的 Nvidia 驱动,则已经编译好的 CUDA 相关的程序就可以直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit .
一般情况下Nvidia官方提供的cuda版本大于你PyTorch所需的cudatoolkit版本即可!
安装
根据FairMOT项目的环境安装PyTorch,要求 python 3.7 and pytorch >= 1.2.0
conda install pytorch==1.2.0 torchvision==0.4.0 cudatoolkit=10.0 -c pytorch
国内的朋友可能会遇到下载速度慢的情况,设置conda源,我用的是清华源
添加源并设置超时时间(网络不好的情况很容易超时安装失败)
conda config --add http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --set show_channel_urls yes
conda config --set remote_connect_timeout_secs 1000
3. 安装环境依赖
cd ${FAIRMOT_ROOT}
pip install -r requirements.txt
在windows下这个命令一次是绝对无法完成的,除非你之前就搭建过类似的环境。
我出现的错误有如下几个
\'cl.exe\' not found
首先确保你安装了C++编译工具,我直接安装了VS2019社区版。一定要选择上C++编译工具。
在你的系统添加环境变量,我的安装位置如下
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\bin\Hostx64\x64\cl.exe
因此在Path下添加
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\bin\Hostx64\x64
之后确保你的Anaconda有权限执行你的windows系统环境的命令
一开始我的 Anaconda base环境(必须是管理员模式)是可以执行cl.exe的,但是新创建的FairMOT环境无法执行
我的解决办法是base环境下进入到所在文件夹,然后切换到我们创建的新环境,再执行,就能在虚拟环境使用cl.exe
(可能是我的系统环境变量只在当前用户添加了的原因)
DCNv2在windows上编译
将下载的DCNv2放在如下路径(对应修改自己的)
E:\FairMOT\src\lib\models\networks\DCNv2
进入到上面的路径执行如下口令编译即可
python setup.py build develop
DCNv2 的 testcpu.py 和 testcuda.py
cpu上测试得到报错
是因为DCNv2使用的是双精度浮点数,需要修改对应文件即可。
Windows下必须安装cudatoolkit才可以使用在运行时调用gpu
在windows下安装cython-bbox
报错如下:
cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp”
下载对应的cython-bbox压缩包,解压到你的环境目录(任意),然后在你的环境中切换到解压缩目录,修改如下一行,然后再执行安装即可。