基于相关滤波的算法大多是通过Matlab语言编写的,偶然发现有人用python语言复现了一些典型的相关滤波算法,纯相关滤波目标跟踪很难再出高水平了,后续可将相关滤波与pytorch和tensorflow结合做些工作,值得推荐。
代码来源:
https://github.com/fengyang95/pyCFTrackers
复现的代码包括:
- MOSSE
- CSK
- CN
- KCF/DCF
- DSST/DSST-LP
- SAMF
- Staple
- Staple-CA
- BACF
- CSR-DCF/CSR-DCF-LP
- DAT This tracker is not based on CF, I re-implement it just for understanding Staple better
- LDES
- MKCFup/MKCFup-LP
- MCCTH
- STRCF
Trackers from other repos - ECO/ECO-HC from pyECO
- OPENCV-CSRDCF
算法结果:
结果差异不大,作者复现还是比较成功的
本人配置平台,windows 10,python 3.7
配置过程如下:
1、创建新的虚拟环境并激活
conda create -n pyCFtrackers python=3.7.0
activate pyCFtrackers
2、安装requirements.txt
pip install -r requirements.txt
我出现了如下错误:
Building wheels for collected packages: cupy
Building wheel for cupy (setup.py) ... error
ERROR: Command errored out with exit status 1:
command: 'D:\Softwares\Anaconda3\envs\pyCFtrackers\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\XXXX\\AppData\\Local\\Temp\\pip-install-9g0qfq9v\\cupy_a9518d86b5cb41f3ba1f3565d8dd81cd\\setup.
py'"'"'; __file__='"'"'C:\\Users\\XXXX\\AppData\\Local\\Temp\\pip-install-9g0qfq9v\\cupy_a9518d86b5cb41f3ba1f3565d8dd81cd\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'
\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\XXXX\AppData\Local\Temp\pip-wheel-87am5wtd'
cwd: C:\Users\XXXX\AppData\Local\Temp\pip-install-9g0qfq9v\cupy_a9518d86b5cb41f3ba1f3565d8dd81cd\
Complete output (947 lines):
Options: {'package_name': 'cupy', 'long_description': None, 'wheel_libs': [], 'wheel_includes': [], 'wheel_metadata': None, 'no_rpath': False, 'profile': False, 'linetrace': False, 'annotate': False, 'no_cuda': False, 'use_hip': Fals
e}
简单来说就是安装cupy出错了。
我怀疑是因为cupy与cuda的版本不对应引起的,打开requirements.txt,将cupy改成cupy-cuda101,再次安装则成功。
3、export工程路径
因为windows没有export指令,参考这篇文章export工程路径:解决Windows系统下Python不能使用export指令的困扰_博博有个大大大的Dream-CSDN博客
指令为:
python exporttest.py --path E:\Codes\PyCharm\pyCFTrackers-master\pyCFTrackers-master
4、build特征提取
cd lib/eco/features/
python setup.py build_ext --inplace
cd ../../..
遇到如下提示:
No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils
这句提示的意思是:系统在numpy.distutils包中找不到numpy.distutils._msvccompiler这个module,然后去distutils包中找,就找到了。(这个是因为numpy和python版本的关系导致的)
运行后,会在路径下生成_gradient.cp37-win_amd64.pyd库文件,编译成功。
5、 build依赖库pysot的配置文件
cd lib/pysot/utils/
python setup.py build_ext --inplace
cd ../../..
build成功
6、 打开examples/cf_demo.py设置参数
7、运行
cd examples
python cf_demo.py