Windows11安装Detectron2超详细操作指南
Posted iracer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows11安装Detectron2超详细操作指南相关的知识,希望对你有一定的参考价值。
Windows11安装Detectron2
0.简介
Detectron2 是 Facebook AI Research 的下一代目标检测库,可提供最先进的检测和分割算法。 它是 Detectron 和 maskrcnn-benchmark 的继任者。它支持 Facebook 中的许多计算机视觉研究项目和生产应用程序。现在也有越来越多的模型基于detectron2构建或部署。下面是框架模型能实现的基本效果。
由于detectron2 官方不支持Windows系统,所以在windows系统上安装有些坑需要注意,本文介绍在windows11系统上安装Detectron2的步骤和注意事项。
图像来源:https://github.com/facebookresearch/detectron2
1.系统环境
测试机器的软硬件基本配置如下:
- windows 11
- anaconda(conda版本4.12.0)
- pytorch 1.11.0
- torchvision 0.12.0
- cuda 11.3
- cuDNN 8.0
- python 3.8 (其他支持的版本也可以)
- RTX 3080 laptop
- Visual Studio(编译detectron2时会用到,二选一)
- vs 2015
- vs 2019
- 安装时间:2022.7.12(当天下载的新版本,部分安装文件的代码与之前的有所不同)
2. Detectron2下载地址
- Detectron2仓库地址(下载框架源码)
- Detectron2官方文档(介绍安装和使用方法,无windows安装选项)
- Detectron2 Model Zoo地址(通过Model Zoo下载预训练模型测试或是用)
- 下载detectron2-main.zip后,解压到没有中文路径名的文件夹下例如:D:\\python\\detectron2-main
3. windows11安装detectron2
- Detectron2官方不提供windows支持
- 实践证明windows 11可以正常安装和使用Detectorn2
- 以下步骤在本机测试有效,不排除因不同电脑的系统环境等因素出现其他问题,建议根据提示逐一解决
(1) 新建conda环境
- 创建新环境yolov7。因本机已经有pytorch1.11的环境,因此这里直接拷贝该环境,避免重复安装pytorch1.11
conda create -n yolov7 --clone pytorch1.11
- 激活环境
conda activate yolov7
(2) 安装pytorch
对于还没有安装pytorch1.11的同学,可以在刚创建的conda环境中执行如下命令快速安装指定版本的torch和cudatoolkit
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio cudatoolkit=11.3
(3) 安装cocoapi
- 为使用户更好地使用 COCO 数据集, COCO 提供了各种语言的API
- Detectron2依赖cocoapi,在此提前安装
- cocoapi下载地址
- 下载cocoapi-master.zip后解压到D:\\python\\cocoapi-master
- 启动conda prompt进入D:\\python\\cocoapi-master\\PythonAPI目录
(yolov7) D:\\python\\cocoapi-master>
(yolov7) D:\\python\\cocoapi-master>cd PythonAPI
(yolov7) D:\\python\\cocoapi-master\\PythonAPI>
- 执行【生成命令】
(yolov7) D:\\python\\cocoapi-master\\PythonAPI>python setup.py build_ext --inplace
- 执行【安装命令】
(yolov7) D:\\python\\cocoapi-master\\PythonAPI>python setup.py build_ext install
# 执行提示:
Installed c:\\users\\irace\\.conda\\envs\\yolov7\\lib\\site-packages\\pycocotools-2.0-py3.8-win-amd64.egg
Processing dependencies for pycocotools==2.0
Finished processing dependencies for pycocotools==2.0
(4) 安装fvcore
- fvcore是一个轻量级的核心库,它提供了在各种计算机视觉框架(如Detectron2)中共享的最常见和最基本的功能
- fvcore仓库地址
- 下载fvcore-main.zip后解压到D:\\python\\fvcore-main
- 将conda promt窗口切换到D:\\python\\fvcore-main目录
- 编译安装
(yolov7) D:\\python\\fvcore-main>python setup.py build --force develop
# 安装提示:
Finished processing dependencies for fvcore==0.1.5
(5) 安装ninja
- Ninja是一个比Make更快速的小型构建系统
- 安装Detectron2需用用到Ninja,在此提前安装
- 继续在conda promt窗口yolov7环境下安装ninja
conda install ninja
(6) 安装Detectron2
-
下载detectron2-main.zip后解压到D:\\python\\detectron2-main
-
修改文件内容:注意以下所有要修改的文件都是在yolov7环境下找,别改错其他环境的文件了
-
可通过everything搜索找到yolov7环境下对应文件,举例修改argument_spec.h文件,找env\\yolov7文件夹中的文件
-
修改cpp_extension.py
C:\\Users\\irace.conda\\envs\\yolov7\\Lib\\site-packages\\torch\\utils\\cpp_extension.py
第318行,注释的是原语句,后一行是改后的
# match = re.search(r'(\\d+)\\.(\\d+)\\.(\\d+)', compiler_info.decode(*SUBPROCESS_DECODE_ARGS).strip())
match = re.search(r'(\\d+)\\.(\\d+)\\.(\\d+)', compiler_info.decode(' gbk').strip())
- 修改argument_spec.h
C:\\Users\\irace.conda\\envs\\yolov7\\Lib\\site-packages\\torch\\include\\torch\\csrc\\jit\\runtime\\argument_spec.h
第170行,注释的是原语句,后一行是改后的
// static constexpr size_t ARG_SPEC_DEPTH_LIMIT = 128;
static const size_t ARG_SPEC_DEPTH_LIMIT = 128;
- 修改Detectron2文件夹下ROIAlignRotated_cuda.cu
D:\\python\\detectron2-main\\detectron2\\layers\\csrc\\ROIAlignRotated\\ROIAlignRotated_cuda.cu
将所有的ceil改为ceilf
建议用vs code等工具打开代码查找并替换,注意不能用replace all,因为有文件中有的函数名中包含ceil字母,必须一个个查看替换:
- 修改Detectron2文件夹下deform_conv_cuda_kernel.cu
D:\\python\\detectron2-main\\detectron2\\layers\\csrc\\deformable\\deform_conv_cuda_kernel.cu
将所有的floor改为floorf
- 修改Detectron2文件夹下cocoeval.cpp
D:\\python\\detectron2-main\\detectron2\\layers\\csrc\\cocoeval\\cocoeval.cpp
487行,注释的是原语句,后一行是改后的
// localtime_r(&rawtime, &local_time);
localtime_s(&local_time,&rawtime);
- 下面可以开始编译,在Detectron-main文件夹下,执行命令
(yolov7) D:\\python\\detectron2-main>python setup.py build develop
可能的错误1:
- 检测到的 CUDA 版本 (10.0) 与用于编译的版本不匹配
# 错误提示:
raise RuntimeError(CUDA_MISMATCH_MESSAGE.format(cuda_str_version, torch.version.cuda))
RuntimeError:
The detected CUDA version (10.0) mismatches the version that was used to compile
PyTorch (11.3). Please make sure to use the same CUDA versions.
- 使用conda list命令,检查pytroch的cuda版本为cuda11.3:
pytorch 1.11.0 py3.8_cuda11.3_cudnn8_0
- 再检查系统安装的CUDA目录
C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA
- 发现本机装了多个CUDA版本:9.2,10.0,11.3
- 再检查系统环境变量CUDA_PATH设置是v10.0的版本
- 因此,将系统环境变量CUDA_PATH改为11.3版本:
C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.3
-
重启conda prompt (修改环境变量后必须重启命令行工具生效)
-
再次激活yolov7环境,并进入detectron2-main目录,再次执行命令
(yolov7) D:\\python\\detectron2-main>python setup.py build develop
可能的错误2:
- 发现在执行上述安装命令过程中,会下载很多个依赖库,一直报下载超时的错误
- 例如:下载pathspec>=0.9.0超时,提示:
Installed c:\\users\\irace\\.conda\\envs\\yolov7\\lib\\site-packages\\mypy_extensions-0.4.3-py3.8.egg
Searching for pathspec>=0.9.0
Reading https://pypi.org/simple/pathspec/
Downloading https://files.pythonhosted.org/packages/42/ba/a9d64c7bcbc7e3e8e5f93a52721b377e994c22d16196e2b0f1236774353a/pathspec-0.9.0-py2.py3-none-any.whl#sha256=7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a
error: Download error for https://files.pythonhosted.org/packages/42/ba/a9d64c7bcbc7e3e8e5f93a52721b377e994c22d16196e2b0f1236774353a/pathspec-0.9.0-py2.py3-none-any.whl#sha256=7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a: timed out
- 检查发现是要找 pathspec>=0.9.0时下载超时,可以用pip选择清华源安装
pip install pathspec==0.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
# ...
Successfully installed pathspec-0.9.0
- 为了节约时间不一个个下载,可以执行setup.py时,直接将清华源加上,随后过程一马平川:
(yolov7) D:\\python\\detectron2-main>python setup.py build develop -i https://pypi.tuna.tsinghua.edu.cn/simple
- 最后的结果
Finished processing dependencies for detectron2==0.6
4.测试安装
(1) 下载模型
- Detectron2 Model Zoo地址
- 选择model zoo中一个模型下载用于测试
- 注意1个模型需要下载2个文件:
- 表格第1列模型名称右键另存的是 [*.yaml] 模型描述文件
- 表格倒数第2列model按钮右键另存为的是 [*.pkl] 权重文件
- 下载权重文件*.pkl
- 例如,下载模型权重文件为:model_final_280758.pkl
- 在D:\\python\\detectron2-main下新建一个models目录存放下载的模型权重(也可以放其他地方)
- 在models目录下新建models\\faster_rcnn_R_50_FPN_3x目录(模型多了,用文件夹名区分不同的模型权重)
- 将权重model_final_280758.pkl拷贝到D:\\python\\detectron2-main\\models\\faster_rcnn_R_50_FPN_3x\\中
- 下载网络结构文件*.yaml
- 例如,下载模型结构文件为:faster_rcnn_R_50_FPN_3x.yaml
- 将上述文件拷贝到D:\\python\\detectron2-main\\configs中合适的文件夹下(该文件夹下默认已经有很多模型的结构文件了)
- 下面是Faster R-CNN系列模型下载地址:
Name | lr sched | train time (s/iter) | inference time (s/im) | train mem (GB) | box AP | model id | download |
---|---|---|---|---|---|---|---|
R50-C4 | 1x | 0.551 | 0.102 | 4.8 | 35.7 | 137257644 | model | metrics |
R50-DC5 | 1x | 0.380 | 0.068 | 5.0 | 37.3 | 137847829 | model | metrics |
R50-FPN | 1x | 0.210 | 0.038 | 3.0 | 37.9 | 137257794 | model | metrics |
R50-C4 | 3x | 0.543 | 0.104 | 4.8 | 38.4 | 137849393 | model | metrics |
R50-DC5 | 3x | 0.378 | 0.070 | 5.0 | 39.0 | 137849425 | model | metrics |
R50-FPN | 3x | 0.209 | 0.038 | 3.0 | 40.2 | 137849458 | model | metrics |
R101-C4 | 3x | 0.619 | 0.139 | 5.9 | 41.1 | 138204752 | model | metrics |
R101-DC5 | 3x | 0.452 | 0.086 | 6.1 | 40.6 | 138204841 | model | metrics |
R101-FPN | 3x | 0.286 | 0.051 | 4.1 | 42.0 | 137851257 | model | metrics |
X101-FPN | 3x | 0.638 | 0.098 | 6.7 | 43.0 | 139173657 | model | metrics |
(2) 安装opencv
- demo需要是用opencv库
- 安装opencv-python,从清华源找一个可以下的版本,这里选择4.5.5.62版下载
(yolov7) D:\\python\\detectron2-main>pip install opencv-python==4.5.5.62 -i https://pypi.tuna.tsinghua.edu.cn/simple
(3) 运行测试代码
-
准备待测图像
- demo.py同级目录下新建images文件夹:D:\\python\\detectron2-main\\demo\\images
- 将待测图像拷贝到D:\\python\\detectron2-main\\demo\\images文件夹(也可以放其他目录)
-
demo运行方式1:命令行运行demo.py
- 用conda promt在D:\\python\\detectron2-main目录下运行demo/demo.py(注意demo.py的路径)
- 这个命令参数太多太长,容易输入错误,各种提示找不到文件或路径
python demo/demo.py --config-file ../configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml --input images/rally.jpg --opts MODEL.WEIGHTS ../models/faster_rcnn_R_50_FPN_3x/model_final_280758.pkl
-
demo运行方式2:在pycharm中运行demo.py,这种方式方便调试
-
在pycharm中打开Detectron2工程中的demo.py文件
-
设置命令行参数:Run → Edit Configuration → Configuration → Parameters中输入命令行参数如下:
–config-file
…/configs/COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml
–input
images/rally.jpg
–opts
MODEL.WEIGHTS
…/models/faster_rcnn_R_50_FPN_3x/model_final_280758.pkl
-
点击【ok】后,直接即可在pycharm中运行demo.py
-
运行后,检测结果output.png将自动保存在D:\\python\\detectron2-main\\demo文件夹下
-
-
至此,Windows 11下安装Detectro2圆满结束。
本文更新地址:https://blog.csdn.net/iracer/article/details/125755029?spm=1001.2014.3001.5501
转载请注明出处。
以上是关于Windows11安装Detectron2超详细操作指南的主要内容,如果未能解决你的问题,请参考以下文章
Windows11安装Detectron2(附详细操作指南)