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时会用到,二选一)
- 安装时间:2022.7.12(当天下载的新版本,部分安装文件的代码与之前的有所不同)
2. Detectron2下载地址
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(' gbk').strip())
C:\Users\irace.conda\envs\yolov7\Lib\site-packages\torch\include\torch\csrc\jit\runtime\argument_spec.h
第170行,注释的是原语句,后一行是改后的
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_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
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
(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
error: Download error for https://files.pythonhosted.org/packages/42/ba/a9d64c7bcbc7e3e8e5f93a52721b377e994c22d16196e2b0f1236774353a/pathspec-0.9.0-py2.py3-none-any.whl
- 检查发现是要找 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系列模型下载地址:
(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
本文更新地址:https://blog.csdn.net/iracer/article/details/125755029?spm=1001.2014.3001.5501 转载请注明出处。
|