admin 管理员组

文章数量: 887019

Windows11安装Detectron2

0.简介

Detectron2 是 Facebook AI Research 的下一代目标检测库,可提供最先进的检测和分割算法。 它是 Detectron 和 maskrcnn-benchmark 的继任者。它支持 Facebook 中的许多计算机视觉研究项目和生产应用程序。现在也有越来越多的模型基于detectron2构建或部署。下面是框架模型能实现的基本效果。

由于detectron2 官方不支持Windows系统,所以在windows系统上安装有些坑需要注意,本文介绍在windows11系统上安装Detectron2步骤和注意事项
图像来源:https://github/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仓库地址

  • 下载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/simple/pathspec/
Downloading https://files.pythonhosted/packages/42/ba/a9d64c7bcbc7e3e8e5f93a52721b377e994c22d16196e2b0f1236774353a/pathspec-0.9.0-py2.py3-none-any.whl#sha256=7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a
error: Download error for https://files.pythonhosted/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/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/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系列模型下载地址:
Namelr schedtrain time (s/iter)inference time (s/im)train mem (GB)box APmodel iddownload
R50-C41x0.5510.1024.835.7137257644model | metrics
R50-DC51x0.3800.0685.037.3137847829model | metrics
R50-FPN1x0.2100.0383.037.9137257794model | metrics
R50-C43x0.5430.1044.838.4137849393model | metrics
R50-DC53x0.3780.0705.039.0137849425model | metrics
R50-FPN3x0.2090.0383.040.2137849458model | metrics
R101-C43x0.6190.1395.941.1138204752model | metrics
R101-DC53x0.4520.0866.140.6138204841model | metrics
R101-FPN3x0.2860.0514.142.0137851257model | metrics
X101-FPN3x0.6380.0986.743.0139173657model | 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/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
      –output
      output
      –opts
      MODEL.WEIGHTS
      …/models/faster_rcnn_R_50_FPN_3x/model_final_280758.pkl

    • 点击【ok】后,直接即可在pycharm中运行demo.py

    • 运行后,检测结果rally.jpg将自动保存在D:\python\detectron2-main\demo\output文件夹下

  • 至此,Windows 11下安装Detectro2圆满结束。

本文更新地址:https://blog.csdn/iracer/article/details/125755029?spm=1001.2014.3001.5501
转载请注明出处。

本文标签: 操作指南 详细