【安装教程】Windows10/11安装detectron2教程

2023.1.4 更新,经过测试,直接使用“二、修复VS2022的链接错误”这个方法即可成功解决VS进行编译时的报错问题

2023.1.3 更新,关于使用VS进行编译时的报错问题

部分vs版本,例如最新的vs2022可能在detectron2编译时报错:

 lazy_init_num_threads@internal@at@@YAXXZ@4_NA vision.obj : error LNK2001: 无法解析的外部符号 __imp___tls_index_?init@?1??

【安装教程】Windows10/11安装detectron2教程

可能的原因是vs2022的线程初始化有一些问题,这可能是vs的一个bug,也有可能是pytorch的bug,在未来的版本可能会修复,我在安装detectron2时是没有遇到这个问题的。这里给出解决办法:

一、添加环境变量

 方法一:添加临时的环境变量

注意!这种方法添加的环境变量在关闭命令行之后就会失效

找到vs安装目录下的vcvars64.bat文件,使用命令行打开,例如我的文件位置在E:\VSIDE\VC\Auxiliary\Build\vcvars64.bat,那么在命令行中输入:

E:\VSIDE\VC\Auxiliary\Build\vcvars64.bat

开启VS2022的x64环境,接着输入三条指令:

set MAX_JOBS=4
set DISTUTILS_USE_SDK=1
set OMP_NUM_THREADS=1

然后尝试在当前命令行窗口中重新安装detectron2.

方法二:在系统环境变量中添加

这个方法就是在环境变量中添加,自行搜索win10/11添加系统环境变量。这种方法优点是不需要每次开启新命令行是都使用set XXX命令

方法三:在vcvars64.bat中添加

使用记事本打开vcvars64.bat,在原有的文本后输入三个set命令:

【安装教程】Windows10/11安装detectron2教程

 不推荐这种办法,因为会修改vs文件。

添加环境变量后如果安装还是报错,请尝试第二个解决办法:

二、修复VS2022的链接错误

该解决办法来自github的pull89511,pytorch的源码中有模棱两可的说法的问题,最简单的办法如下:

【安装教程】Windows10/11安装detectron2教程

 将pytorch源码的parallel.h中第32行的(如果你是base环境,那么位置在anaconda3\Lib\site-packages\torch\include\ATen\Parallel.h)

inline TORCH_API void lazy_init_num_threads() {

更改为:

inline void lazy_init_num_threads() {

注意,如果你有多个python环境安装了多个pytorch,那会有很多个Parallel.h,要找到你在使用的环境的pytorch源码目录(一定要找对,不然修改了不起作用)。例如我有一个叫py38的环境,那么我pytorch源码的路径就是anaconda3\envs\py38\Lib\site-packages\torch\include\ATen\Parallel.h

如果觉得找文件很麻烦,这里推荐一个软件everything,可以非常快搜索电脑上的文件。

想要进一步了解错误产生原因的建议进pull89511仔细看一下。

下面是原文章(2022.11.28):

由于Facebook的detectron2没有对windows平台做官方支持,所以在安装的时候发生了很多问题,于是有了这篇问题记录的贴子。截至2022.11.28GitHub上detectron2的版本为0.6。

如果文章对你有帮助请给我一个小小的赞。

1.安装环境

pyhon 3.7.6

cuda 11.6

pytorch 1.13

由于安装需要编译,请安装VS的C++开发环境

2.下载源码

官方github源码地址

使用git命令下载

git clone https://github.com/facebookresearch/detectron2.git

3.下载安装pycocotools-windows

使用pip命令安装

pip install git+https://github.com/philferriere/cocoapi.git#subdirectory=PythonAPI

如果需要前置安装包,按要求下载即可。

为什么要手动安装pycocotools?

首先是pycocotools官方不支持windows系统,detectorn2却需要pycocotools,到时候安装detectron2时也会自动调用pip安装,但是会安装失败(因为直接pip install pycocotools会报错)。

4.修改detectron2的安装配置文件(重要)

1)修改setup.py

将setup.py中install_requires内容做如下修改(大概在165行):

"pycocotools>=2.0.2" 修改为 "pycocotools"

因为windows版本的pycocotools最新为2.0版本,故需要删除版本要求。修改完成后保存即可。

2)修改detectron2\detectron2\layers\csrc\nms_rotated\nms_rotated_cuda.cu文件

将using namespace detectron2;这一行之前(其实就是1-12行)的内容用如下程序段替代(其实就是注释了部分内容):

#include <ATen/ATen.h>
#include <ATen/cuda/CUDAContext.h>
#include <c10/cuda/CUDAGuard.h>
#include <ATen/cuda/CUDAApplyUtils.cuh>
/*#ifdef WITH_CUDA
#include "../box_iou_rotated/box_iou_rotated_utils.h"
#endif
// TODO avoid this when pytorch supports "same directory" hipification
#ifdef WITH_HIP
#include "box_iou_rotated/box_iou_rotated_utils.h"
#endif*/
#include "box_iou_rotated/box_iou_rotated_utils.h"

这样改的原因参见GitHub网页的issues2769

5.安装detectron2

上述步骤都完成后,就可以安装detectron2了,使用官方安装文档的代码:

python -m pip install -e detectron2

注意此时终端的路径应该是detectron2的上一级目录,比如你使用git clone将源码拷贝到了D:/detectron2,那么你的pip命令执行时终端的目录应该在D盘根目录。

安装过程中请保持网络畅通,pip需要下载detectron2的依赖包,因为网络原因下载失败的话请多试几次。

【安装教程】Windows10/11安装detectron2教程

等待几分钟安装就完成了。 注意,如果pip出现红字提醒你版本不匹配或者有其他包没有安装的话,请安装提示更新或者安装对应版本的包即可。

6.测试detectron2

参考官方文档的Getting Started部分,切换终端路径到demo,输入代码:

python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml  --webcam  --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl

–webcam 使用摄像头测试,如果要测试图片,使用–input指令:

python demo.py --config-file ../configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml \
  --input input1.jpg input2.jpg  --opts MODEL.WEIGHTS detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl

得到检测结果

【安装教程】Windows10/11安装detectron2教程

 以上就是detecron2安装的全部内容了,如果有什么问题或者疑问欢迎在评论区或私信指出。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年3月4日 下午12:27
下一篇 2023年3月4日 下午12:28

相关推荐