在Windows上搞定OBBDetection:用WSL2+RTX3060复现Oriented R-CNN训练HRSC2016(附排错记录)

张开发
2026/4/22 9:54:24 15 分钟阅读

分享文章

在Windows上搞定OBBDetection:用WSL2+RTX3060复现Oriented R-CNN训练HRSC2016(附排错记录)
在Windows上搞定OBBDetection用WSL2RTX3060复现Oriented R-CNN训练HRSC2016附排错记录对于许多计算机视觉研究者来说Windows系统下的深度学习环境配置一直是个令人头疼的问题。特别是当遇到像OBBDetection这样主要面向Linux系统设计的工具包时传统解决方案要么是双系统切换要么是租用云服务器。但今天我要分享的是如何利用WSL2Windows Subsystem for Linux和本地NVIDIA显卡如RTX3060在Windows环境下完美运行OBBDetection的全过程。这个方案特别适合那些拥有高性能Windows游戏本或工作站却苦于无法充分利用硬件资源的研究者。通过本文你将获得一个完整的、经过实战检验的配置指南包括从WSL2环境搭建到最终训练HRSC2016数据集的每个步骤以及我在这个过程中遇到的各种坑和解决方案。1. 环境准备与方案对比在开始具体配置之前我们先来对比几种常见的解决方案优劣。对于Oriented Object Detection这类任务传统上主要有三种环境选择纯Linux系统最理想的开发环境但需要完全放弃Windows生态Windows原生环境兼容性差很多工具包无法正常运行WSL2方案兼顾Windows易用性和Linux开发环境我最终选择WSL2方案主要基于以下几点考虑硬件利用率可以直接调用本地NVIDIA显卡无需额外硬件投资开发便利性保留Windows的办公娱乐功能同时获得Linux开发环境性能表现WSL2的IO性能已大幅提升接近原生Linux的90%1.1 硬件与系统要求要成功运行本方案你的设备需要满足以下最低配置组件最低要求推荐配置操作系统Windows 10 2004或更高Windows 11 22H2CPU支持虚拟化的64位处理器Intel i7或Ryzen 7以上内存16GB32GB或更高显卡NVIDIA GTX 1060RTX 3060及以上存储50GB可用空间NVMe SSD提示在开始前请确保你的BIOS中已开启虚拟化支持Intel VT-x或AMD-V1.2 WSL2基础安装首先我们需要安装WSL2的基础环境# 以管理员身份打开PowerShell wsl --install wsl --set-default-version 2安装完成后从Microsoft Store获取Ubuntu 20.04 LTS发行版。这个版本与OBBDetection的兼容性最好。2. CUDA与PyTorch环境配置WSL2中的CUDA配置与纯Linux系统有些许不同这是最容易出错的环节之一。2.1 NVIDIA驱动安装在Windows端安装最新版NVIDIA驱动后还需要在WSL2中安装对应的CUDA工具包# 在WSL2的Ubuntu终端中执行 wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/3bf863cc.pub sudo add-apt-repository deb https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/ / sudo apt-get update sudo apt-get -y install cuda安装完成后验证CUDA是否可用nvidia-smi你应该能看到类似如下的输出显示你的GPU信息----------------------------------------------------------------------------- | NVIDIA-SMI 510.47.03 Driver Version: 512.95 CUDA Version: 11.6 | |--------------------------------------------------------------------------- | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | || | 0 NVIDIA GeForce ... On | 00000000:01:00.0 On | N/A | | 0% 43C P8 10W / 170W | 316MiB / 12288MiB | 0% Default | | | | N/A | ---------------------------------------------------------------------------2.2 PyTorch与依赖安装OBBDetection对PyTorch版本有特定要求我们需要创建专用的conda环境conda create -n obbdetection python3.7 -y conda activate obbdetection conda install pytorch1.8.0 torchvision0.9.0 torchaudio0.8.0 cudatoolkit11.1 -c pytorch -c conda-forge注意这里使用的PyTorch版本比官方文档建议的略新但经过测试可以完美兼容且性能更好3. OBBDetection的安装与配置3.1 源码获取与准备首先克隆OBBDetection和BboxToolkit的官方仓库git clone https://github.com/jbwang1997/OBBDetection.git git clone https://github.com/jbwang1997/BboxToolkit.git将BboxToolkit复制到OBBDetection目录下替换原有内容cp -r BboxToolkit OBBDetection/3.2 mmcv-full的编译安装这是整个安装过程中最容易出问题的环节。我们需要手动编译mmcv-fullcd OBBDetection pip install -r requirements/build.txt MMCV_WITH_OPS1 pip install -e .编译过程可能需要10-30分钟取决于你的CPU性能。如果遇到编译错误通常是CUDA版本不匹配导致的可以尝试指定更精确的版本pip install mmcv-full1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html3.3 完成安装最后安装剩余依赖pip install -r requirements.txt pip install -v -e .如果一切顺利你应该能看到Successfully installed obbdetection的提示。4. HRSC2016数据集训练实战4.1 数据集准备将HRSC2016数据集放置在OBBDetection/data/HRSC2016目录下结构如下HRSC2016/ ├── Annotations ├── ImageSets │ └── Main │ ├── test.txt │ ├── train.txt │ └── val.txt └── JPEGImages修改配置文件configs/obb/base/datasets/hrsc.py中的路径设置data dict( samples_per_gpu2, workers_per_gpu2, traindict( typeHRSCDataset, ann_filedata/HRSC2016/ImageSets/Main/train.txt, img_prefixdata/HRSC2016/JPEGImages/, pipelinetrain_pipeline), valdict( typeHRSCDataset, ann_filedata/HRSC2016/ImageSets/Main/val.txt, img_prefixdata/HRSC2016/JPEGImages/, pipelinetest_pipeline), testdict( typeHRSCDataset, ann_filedata/HRSC2016/ImageSets/Main/test.txt, img_prefixdata/HRSC2016/JPEGImages/, pipelinetest_pipeline))4.2 训练与验证开始训练模型python tools/train.py configs/obb/oriented_rcnn/faster_rcnn_orpn_r50_fpn_3x_hrsc.py --work-dir work_dirs训练过程中常见问题及解决方案CUDA out of memory减小configs/obb/_base_/datasets/hrsc.py中的samples_per_gpu值Dataloader workers阻塞降低workers_per_gpu数量通常设置为CPU核心数的1/4NaN损失值尝试降低学习率或使用梯度裁剪训练完成后使用以下命令测试模型性能python tools/test.py configs/obb/oriented_rcnn/faster_rcnn_orpn_r50_fpn_3x_hrsc.py work_dirs/latest.pth --eval mAP5. 常见问题与解决方案在Windows WSL2环境下运行OBBDetection我遇到了几个典型问题以下是解决方案5.1 显卡无法识别问题症状nvidia-smi命令可以显示GPU信息但PyTorch无法使用CUDA解决方案# 在WSL2的~/.bashrc中添加 export LD_LIBRARY_PATH/usr/lib/wsl/lib:$LD_LIBRARY_PATH然后执行source ~/.bashrc使更改生效。5.2 mmcv-full编译失败错误信息error: command g failed with exit status 1解决方案sudo apt-get install build-essential sudo apt-get install gcc-8 g-8 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8 sudo update-alternatives --install /usr/bin/g g /usr/bin/g-8 85.3 训练速度慢WSL2的磁盘IO性能可能成为瓶颈两种解决方案将数据集放在WSL2文件系统内如/home/username/下使用--data-dir参数指定Windows文件系统路径但会损失约30%IO性能经过多次测试在RTX3060上训练HRSC2016数据集约1000张图像完整3x schedule36 epochs大约需要4-6小时与纯Linux环境性能相当。

更多文章