环境
硬件
硬件:
CPU:Intel®Core™i5-10400F CPU @2.90GHz 2.90GHz
GPU: NVIDIA GeForce GTX 1660 Ti (6G显存)
内存:16.0GB(15.9GB可用)
软件:
Visual Studio 2019
CUDA10.1,cudnn
Anaconda3
torch 1.6.0+cu101
torchvision 0.7.0+cu101
python=3.8.0
detectron2
准备工作
- Anaconda3,Visual Studio 2019,CUDA,cudnn等安装方法参考网上安装教程。
- detectron2
detectron2的GitHub下载链接(master)
安装
1. 创建虚拟环境
以管理员身份运行Anaconda Promp,详细步骤如下图:
鼠标放在Anaconda Prompt上面,按下鼠标右键,选择“更多->以管理员身份运行”出现Anaconda Prompt命令行
点击【以管理员身份运行】
设置清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
创建虚拟环境
conda create --name detectron2py38 python=3.8.0
激活虚拟环境
conda activate detectron2py38
查看已有的虚拟安装环境
conda env list
conda常用命令:
conda list:查看安装了哪些包。
conda install package_name(包名):安装包
conda env list 或 conda info -e:查看当前存在哪些虚拟环境
conda create -n your_env_name python=X.X(2.7、3.6等): 创建虚拟环境
conda activate your_env_name(虚拟环境名称):进入虚拟环境
conda deactivate your_env_name(虚拟环境名称):退出虚拟环境
conda remove -n your_env_name(虚拟环境名称) --all:删除虚拟环境
2. 安装pytorch与torchvision
python -m pip install torch1.6.0+cu101 torchvision0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
测试pytorch 安装是否成功
python
import torch
torch.cuda.is_available()
显示为True即为安装成功
3. 安装相关依赖库
安装pycocotools:
python -m pip install pycocotools
安装opencv:
python -m pip install opencv-python
安装scrapy
conda install scrapy
4. 编译安装detectron2
切换到detectron2所在的盘符,例如切换到D盘
d:
切换到detectron2所在目录,例如
cd D:\detectron2\detectron2_master
编译安装
python setup.py build develop
说明:
develop命令不会安装软件包,但它会创建一个.egg-link部署目录回项目源代码目录。
所以这就像安装,但不是复制到site-packages。它添加一个符号链接(.egg-link充当多平台符号链接)。这样,您可以编辑源代码并直接查看更改,而无需在每次进行一些更改时重新安装,重装pytorch之后detectron2需要重新编译
5. 测试detectron2的运行环境
在D:\detectron2\tests的文件夹下创建一个test_windows_install.py文件夹,里面输入:
from detectron2.engine import DefaultPredictor
from detectron2.data import MetadataCatalog
from detectron2.config import get_cfg
from detectron2.utils.visualizer import ColorMode, Visualizer
from detectron2 import model_zoo
import cv2
import numpy as np
import requests
# Load an image
res = requests.get("https://live.staticflickr.com/700/33224654191_fdaee2e3f1_c_d.jpg")
image = np.asarray(bytearray(res.content), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
config_file = 'COCO-Detection/faster_rcnn_R_101_FPN_3x.yaml'
cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file(config_file))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.75 # Threshold
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(config_file)
cfg.MODEL.DEVICE = "cuda" # cpu or cuda
# Create predictor
predictor = DefaultPredictor(cfg)
# Make prediction
output = predictor(image)
print(output)
v = Visualizer(image[:, :, ::-1],
scale=0.8,
metadata=MetadataCatalog.get(cfg.DATASETS.TRAIN[0]),
instance_mode=ColorMode.IMAGE
)
v = v.draw_instance_predictions(output["instances"].to("cpu"))
cv2.imshow('images', v.get_image()[:, :, ::-1])
cv2.waitKey(0)
运行:
python tests\test_windows_install.py
测试结果:
6. 使用说明
编译成功后会在detectron2(子目录)目录下生成一个pyd文件,使用detectron2平台时将此pyd文件复制到对应的detectron2目录下,或将detecttion2目录复制到python工程目录下,例如使用centernet2网络时,操作如下:
问题汇总
1. Error: Internal Compiler Error (codegen): "there was an error in verifying the lgenfe output!
系统环境变量CUDA版本问题,例如使用CUDA10.1时,设置如下:
2. deform_conv_cuda_kernel.cu
用notepad++打开deform_conv_cuda_kernel.cu文件
查找:floor
替换为:floorf
3. nms_rotated_cuda.cu
用notepad++打开nms_rotated_cuda.cu文件
需要把红色标出的部分注释掉,再加入#include “box_iou_rotated/box_iou_rotated_utils.h”
下图所示为改动后的结果
4. ROIAlignRotated_cuda.cu
用notepad++打开ROIAlignRotated_cuda.cu文件
查找:ceil
替换为:ceilf(注意不是替换所有,只替换四个,如下图所示)
5. OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized
在报错脚本顶部添加:
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'