windows平台FairMOT的实现

2023-10-10 03:44
文章标签 实现 平台 windows fairmot

本文主要是介绍windows平台FairMOT的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境:python3.6+pytorch1.1.0+torchvision0.3.0+cuda9.2+vs2015

该项目需要装3个c++库(dcn_v2,apex,cython_bbox)特别坑,各种环境不匹配,各种bug。本人c++小白,但是一路摸索总算成功了。下面总结一下:

一、
1.先把源码下下来,用git(自己手安)克隆或者直接下载zip文件都可:https://github.com/ifzhang/FairMOT

2. 安装anaconda3,并用conda搭建虚拟环境:

conda create -n FairMOT python=3.6 #-n 代表环境名字
activate
conda activate FairMOT #激活这个叫FairMOT的环境

3.安装pytorch1.1.0,在官网上下载https://download.pytorch.org/whl/torch_stable.html,我选择的是:cu100/torch-1.1.0-cp36-cp36m-win_amd64.whl,下载后使用pip安装

pip install torch-1.1.0-cp36-cp36m-win_amd64.whl

4.安装对应的torchvision

pip install torchvision-0.3.0-cp36-cp36m-win_amd64.whl

5.安装cython,ninja

pip install cython
pip install ninja

6.安装opencv-python:

pip install -U opencv-python==4.1.1.26

7.安装依赖项:

pip install -r requirements.txt

8.安装:DCNv2:

下载:GitHub - maohule/DCNv2

进入DCNv2-master文件夹运行:

python setup.py build develop

在Python下import dcn_v2不报错就安装成功了。

9.安装cython_bbox,在这里下载cython-bbox · PyPI,运行下面指令安装:

python setup.py build develop install

可能报错:

cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp”

修改如下一行,然后再执行安装即可。

在Python下import cython_bbox不报错就安装成功了。

参考:cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp”-CSDN博客

invalid numeric argument '/Wno-cpp' 解决方法-CSDN博客

10.安装apex:

git clone https://github.com/NVIDIA/apex.git这个官方的怎么安都报错,于是乎,找了这个博客(apex安装常见的三个报错并成功解决(亲测有效)_安装apex库错误-CSDN博客)的第四种方法,很有效:

git clone https://github.com/ptrblck/apex.git
cd apex
git checkout apex_no_distributed
pip install -v --no-cache-dir ./

安装后需要将FairMOT代码中的from torch.cuda import amp改为from apex import amp

在Python下import apex不报错就安装成功了。

11.修改FairMOT代码FairMOT-master\src\lib\opts.py

--load_model 设置上一步下载好的模型权重位置

在opts.py的19行

0代表第一个gpu

–input-video要测试视频的位置
–output-root测试完视频的输出位置

12.在src文件夹下运行demo.py文件,即可测试:

python demo.py mot --input-video ../videos/MOT16-03.mp4 --load_model ../models/fairmot_dla34.pth --conf_thres 0.4

运行时出现如下错误:

Traceback (most recent call last):File "demo.py", line 14, in <module>from track import eval_seqFile "C:\Users\93260\FairMOT-master1\src\track.py", line 20, in <module>import datasets.dataset.jde as datasets
ModuleNotFoundError: No module named 'datasets.dataset'

解决:将datasets.dataset.jde改为datasets.dataset.jde

出现错误:找不到models模块

解决:在models块添加__init__.py文件即可

出现错误:

AttributeError: module 'torch' has no attribute 'true_divide'

发生该错误主要原因是我用低版本的torch,torch1.7就没有这样的错误。

解决:将torch.true_divide改为 torch.div即可

二、一些坑的总结:

1.torch1.1.0+torchvision0.3.0+cuda9.2+vs2015可以成功编译dcn_v2,但是编译apex时候报错,参照Pytorch 安装 APEX 疑难杂症解决方案 - 知乎,大概意思是torch的cuda版本

torch.version.cuda

是10.0,但是nvcc --version查到的cuda版本是9.2,所以导致Cuda extensions are being compiled with a version of Cuda that does not错误。因此我按照nvcc查到的版本卸载安装了torch1.2和torchvision0.4即下载安装

利用pip uninstall 卸载torch和torchvision,再安装

pip install torch-1.2.0+cu92-cp36-cp36m-win_amd64.whl
pip install torchvision-0.4.0+cu92-cp36-cp36m-win_amd64.whl

这样编译apex就没错了,但是import dcn_v2又报错了。因此安装完apex后又重新卸载安装了torch1.1.0和torchvision0.3.0,重新编译dcn_v2。编译成功后import dcn_v2和import apex均不报错。(遇见flat_hash_map.h错误,没解决,但是通过重安pytorch方法,版本匹配后,就没有这个错误了)

2.'cl.exe' not found

首先确保你安装了C++编译工具,我直接安装Microsoft Visual studio 14.0了。一定要选择上C++编译工具。

配置环境变量:在你的系统添加环境变量,在搜索框输入sysdm.cpl,选择高级,环境变量,系统变量,Path添加:

3.系统可以同时存在多个版本的cuda,使用哪个更改环境变量即可。比如我安装了cuda9.2和cuda11.2,因此如果要用cuda9.2,在系统变量的Path中将9.2版本的cuda放在11.2前面:

另外在系统变量中将CUDA_PATH的路径指向9.2:

4. visual studio c++ build tools时安装缺失问题:

解决visual studio C++ build tools时安装包缺失或损坏的问题(亲测绝对有用!!!)_visual studio build tools-CSDN博客win10安装visual studio C++ build tools超简单教程(离线适用)_microsoft c++ build tools 离线-CSDN博客

即百度网盘下载:
链接:https://pan.baidu.com/s/1msbwwqLleQ0GagZ4ymKvhQ
提取码:owk0
下载解压后的文件夹如图所示:

然后双击VisualCppBuildTools_Full.exe离线安装。

5.不要卸载setuptools,在安装dcn_v2时,出现错误,根据搜索提示,需要安装低版本的setuptools,我于是卸载了setuptools导致每次运行都会报一个文件出错,于是还重新安装了annaconda。变成低版本的setuptools,只需要直接安装即可,例如:pip install setuptools=59.x.x。如果不小心卸载了setuptools参照以下方法解决:

手贱,pip uninstall setuptools报错!!!-CSDN博客

[python]python2.7卸载setuptools导致No module named pkg_resources_python卸载setuptools_FL1623863129的博客-CSDN博客

6. pip下载安装出现SSLError,解决:关掉翻墙软件。

[python]python2.7卸载setuptools导致No module named pkg_resources_python卸载setuptools_FL1623863129的博客-CSDN博客

7.conda激活虚拟环境发生错误:CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘。

解决:在shell环境下应该要先启动conda的base环境

activate

再激活虚拟环境:

conda activate FairMOT1

参考:CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘.简单解决方案_rothschildlhl的博客-CSDN博客

8.关于apex的一些总结:

apex安装问题解决_nvidia apex安装_一根黄三的博客-CSDN博客

Pytorch 安装 APEX 疑难杂症解决方案 - 知乎

CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘.简单解决方案_rothschildlhl的博客-CSDN博客

9.关于dcn_v2的一些总结:

解决在windows上DCNv2编译问题(强推!亲测有效!!)_windows编译dcnv2-CSDN博客

10.flat_hash_map.h总结:

没办法用人工智障跳鸡你太美让我很伤心! - 哔哩哔哩

python - flat_hash_map.h : error C3203: 'templated_iterator': unspecialized class template - Stack Overflow

11.python3.8+pytorch1.7+cuda11.2+vs2019参照:

FairMOT配置(VS2019+Win10+CUDA11.0)_importerror: cannot import name '_nt_quote_args' f-CSDN博客

Tracking(目标跟踪):Mot(多目标跟踪系列)-FairMot,快速入门代码、小白都看懂_he_eeeeeeeeeee的博客-CSDN博客

12.其他的FairMOT的总结:

https://www.cnblogs.com/huiyanliu/p/14080785.html

关于在windows上完成目标检测模型Centernet 以及自己数据的训练 - 灰信网(软件开发博客聚合)FairMOT实时多目标跟踪_fairmot dla-CSDN博客关于在windows上完成目标检测模型Centernet 以及自己数据的训练 - 灰信网(软件开发博客聚合)

FairMOT训练自己的数据集及学习笔记_fairmot修改类别数-CSDN博客

解决在windows上DCNv2编译问题(强推!亲测有效!!)_windows编译dcnv2-CSDN博客

13.conda如何添加,删除镜像channel,管理虚拟环境,以及其他常见命令

conda如何添加,删除镜像channel,管理虚拟环境,以及其他常见命令。_conda config --add channels_音程的博客-CSDN博客

这篇关于windows平台FairMOT的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177703

相关文章

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体