
1. 环境准备从零搭建Windows 11开发环境在Windows 11上部署Detectron2之前我们需要先搭建一个完整的开发环境。这个过程可能会遇到不少坑特别是对于刚接触计算机视觉的开发者来说。我自己在第一次尝试时就踩了不少坑比如CUDA版本不匹配、环境变量配置错误等等。下面我会详细分享每一步的操作细节帮你避开这些常见问题。首先我们需要安装Visual Studio 2019。虽然现在已经有更新的版本但VS2019在兼容性方面表现最好不容易出现奇怪的编译错误。你可以直接从微软官网下载社区版这是完全免费的。安装时记得勾选使用C的桌面开发工作负载这是Detectron2编译所必需的组件。接下来是显卡驱动和CUDA的安装。这里有个关键点一定要先更新显卡驱动再安装CUDA工具包。我建议先去NVIDIA官网下载最新的Game Ready驱动而不是Studio驱动因为前者通常更新更及时。安装完驱动后再去下载CUDA 12.1工具包。安装CUDA时建议选择自定义安装只勾选CUDA组件这样可以避免安装不必要的软件。2. 配置Python环境与PyTorch安装有了基础开发环境后我们需要配置Python环境。我强烈建议使用Anaconda来管理Python环境它能很好地解决不同项目间的依赖冲突问题。安装完Anaconda后我们可以创建一个新的conda环境conda create -n detectron2 python3.8 conda activate detectron2选择Python 3.8是因为它在稳定性和兼容性方面表现最好。虽然Python 3.9/3.10也能用但可能会遇到一些第三方库的兼容性问题。接下来是安装PyTorch。这里要特别注意PyTorch版本与CUDA版本的对应关系。对于CUDA 12.1我们应该使用PyTorch 2.0或更高版本。可以使用以下命令安装conda install pytorch2.0.1 torchvision0.15.2 torchaudio2.0.2 pytorch-cuda12.1 -c pytorch -c nvidia安装完成后建议运行以下命令验证PyTorch是否能正确识别GPUimport torch print(torch.__version__) print(torch.cuda.is_available())如果输出True说明PyTorch已经正确配置。如果遇到问题可能是CUDA环境变量没有设置好需要检查PATH中是否包含了CUDA的bin和lib目录。3. 安装依赖库与配置cuDNNDetectron2还需要一些额外的依赖库。首先是OpenCV我们可以直接通过pip安装pip install opencv-python opencv-contrib-python然后是cuDNN的安装。这是NVIDIA提供的深度神经网络加速库能显著提升模型运行速度。下载cuDNN时需要注册NVIDIA开发者账号选择与CUDA 12.1兼容的版本。下载后解压将bin、include和lib目录中的文件复制到CUDA安装目录下对应的文件夹中。还有一个重要的依赖是Git因为我们需要从GitHub克隆Detectron2的源代码。安装Git后建议配置一下全局用户信息git config --global user.name Your Name git config --global user.email your.emailexample.com4. 编译安装Detectron2现在我们可以开始安装Detectron2了。首先克隆官方仓库git clone https://github.com/facebookresearch/detectron2.git如果遇到网络问题无法克隆可以直接从GitHub下载zip包解压。进入detectron2目录后我们需要先修改一个配置文件。找到detectron2/layers/csrc/nms_rotated/nms_rotated_cuda.cu文件在开头添加#define WITH_HIP这个修改是为了解决Windows下的编译问题。接下来还需要修改CUDA的一个配置文件。找到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include\crt\host_config.h将第1940行的#if _MSC_VER 1920改为#if _MSC_VER 2000。最后在激活的conda环境中运行安装命令pip install -e .这个过程可能会花费一些时间因为它需要编译C扩展模块。如果一切顺利你会看到Successfully installed detectron2的提示。5. 验证安装与运行示例为了验证Detectron2是否安装成功我们可以运行一个简单的示例。创建一个新的Python文件比如demo.py输入以下代码from detectron2.engine import DefaultPredictor from detectron2.config import get_cfg from detectron2 import model_zoo import cv2 # 加载配置和预训练模型 cfg get_cfg() cfg.merge_from_file(model_zoo.get_config_file(COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml)) cfg.MODEL.WEIGHTS model_zoo.get_checkpoint_url(COCO-Detection/faster_rcnn_R_50_FPN_3x.yaml) cfg.MODEL.DEVICE cuda # 使用GPU # 创建预测器 predictor DefaultPredictor(cfg) # 读取图像并预测 im cv2.imread(input.jpg) outputs predictor(im) print(outputs[instances].pred_classes) # 打印检测到的类别运行这个脚本如果能看到输出结果而没有报错说明Detectron2已经成功安装。你可以尝试用不同的预训练模型比如实例分割模型COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml看看效果如何。在实际项目中我建议先用官方提供的预训练模型进行测试确保整个流程能跑通然后再考虑训练自己的模型。Detectron2提供了丰富的模型配置和预训练权重可以满足大多数计算机视觉任务的需求。