1. 环境搭建前的准备工作在开始搭建YOLOv5环境之前我们需要先了解几个关键概念和工具。CUDA是NVIDIA推出的并行计算平台它允许我们利用GPU的强大计算能力来加速深度学习任务。cuDNN则是基于CUDA的深度学习加速库专门优化了常见的神经网络操作。PyTorch是一个流行的深度学习框架它提供了丰富的API和工具来构建和训练神经网络模型。对于硬件要求你需要一块支持CUDA的NVIDIA显卡。RTX 40系列显卡是最新的选择但较旧的RTX 30系列甚至20系列也能胜任。在软件方面我们需要安装合适版本的显卡驱动、CUDA工具包、cuDNN库以及PyTorch框架。我建议在开始之前先检查你的显卡型号和当前安装的驱动版本。在Windows上你可以通过右键点击桌面空白处选择NVIDIA控制面板来查看这些信息。在Linux上可以使用nvidia-smi命令来获取显卡和驱动信息。提示在安装CUDA之前请确保你的显卡驱动是最新版本。不匹配的驱动版本可能会导致CUDA安装失败或性能问题。2. Windows平台CUDA 12.x与cuDNN安装2.1 安装CUDA 12.x首先访问NVIDIA CUDA Toolkit Archive页面找到CUDA 12.x的最新版本下载。我推荐使用12.4版本因为它与PyTorch 2.x有良好的兼容性。下载时选择适合你系统的安装程序Windows用户建议下载exe(local)版本。运行安装程序时有几个关键点需要注意临时解压路径可以保持默认安装完成后这些文件会自动删除在组件选择界面确保勾选了CUDA工具包和配套的Visual Studio集成如果你使用VS安装路径建议保持默认除非你有特殊需求安装完成后我们需要验证CUDA是否安装成功。打开命令提示符输入nvcc --version如果看到类似nvcc: NVIDIA (R) Cuda compiler driver的输出并且版本号与你安装的一致说明CUDA安装成功。2.2 安装cuDNNcuDNN的安装相对简单但需要先注册NVIDIA开发者账号。登录后下载与CUDA 12.x版本匹配的cuDNN库。解压下载的文件后你会看到三个文件夹bin、include和lib。将这些文件夹中的内容复制到CUDA的安装目录下对应的文件夹中。默认情况下CUDA安装在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x。复制完成后cuDNN就安装好了。2.3 配置环境变量为了让系统能够找到CUDA和cuDNN的相关文件我们需要设置一些环境变量。在Windows搜索栏输入环境变量打开系统属性窗口点击环境变量按钮。在系统变量部分确保以下路径已添加根据你的实际安装路径调整CUDA_PATH C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x CUDA_PATH_V12_x C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x然后在Path变量中添加%CUDA_PATH%\bin %CUDA_PATH%\libnvvp %CUDA_PATH%\extras\CUPTI\lib643. Linux平台CUDA 12.x与cuDNN安装3.1 安装CUDA 12.x在Linux上安装CUDA有多种方法我推荐使用官方提供的deb或rpm包进行安装。以Ubuntu为例首先下载对应的deb包然后执行以下命令sudo dpkg -i cuda-repo-ubuntu2204-12-x-local_12.x.x-1_amd64.deb sudo cp /var/cuda-repo-ubuntu2204-12-x-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda安装完成后需要将CUDA添加到环境变量中。编辑~/.bashrc文件在末尾添加export PATH/usr/local/cuda-12.x/bin${PATH::${PATH}} export LD_LIBRARY_PATH/usr/local/cuda-12.x/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}} export CUDA_HOME/usr/local/cuda-12.x然后执行source ~/.bashrc使更改生效。验证安装同样使用nvcc --version命令。3.2 安装cuDNN在Linux上安装cuDNN同样需要先下载对应版本的库文件。下载完成后解压并复制到CUDA安装目录tar -xzvf cudnn-linux-x86_64-8.x.x.x_cuda12.x-archive.tar.xz sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 sudo chmod ar /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*4. 使用Anaconda创建Python环境4.1 安装AnacondaAnaconda是一个强大的Python发行版特别适合科学计算和机器学习。从Anaconda官网下载适合你系统的安装包然后按照向导进行安装。安装完成后建议更新conda到最新版本conda update conda4.2 创建虚拟环境为了避免不同项目间的依赖冲突我们为YOLOv5创建一个独立的虚拟环境conda create -n yolov5 python3.9 conda activate yolov5我选择Python 3.9是因为它在稳定性和兼容性方面表现良好。如果你需要使用其他版本可以相应调整。4.3 配置国内镜像源为了加快包下载速度可以配置清华镜像源conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes5. 安装PyTorch 2.x与相关依赖5.1 安装PyTorchPyTorch的安装现在变得非常简单官方提供了针对不同CUDA版本的预编译包。访问PyTorch官网选择与你的CUDA 12.x版本匹配的安装命令。例如对于CUDA 12.1conda install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia或者使用pip安装pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121安装完成后验证PyTorch是否能正确识别CUDAimport torch print(torch.cuda.is_available()) # 应该返回True print(torch.version.cuda) # 应该显示你的CUDA版本5.2 安装YOLOv5依赖克隆YOLOv5官方仓库git clone https://github.com/ultralytics/yolov5.git cd yolov5然后安装requirements.txt中列出的依赖pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple如果你遇到某些包版本冲突的问题可以尝试单独安装指定版本。我在实际项目中遇到过OpenCV版本冲突解决方法是指定安装opencv-python-headless版本。6. 验证YOLOv5环境6.1 下载预训练权重YOLOv5提供了多种预训练模型从轻量级的yolov5s到大型的yolov5x。我们可以下载yolov5s.pt作为测试wget https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt6.2 运行检测示例使用以下命令测试模型是否能正常运行python detect.py --weights yolov5s.pt --source data/images/bus.jpg如果一切正常你会在runs/detect/exp目录下看到检测结果图像。图像中的物体应该被正确标记了边界框和类别标签。6.3 常见问题排查如果你遇到CUDA相关的错误比如CUDA out of memory可以尝试减小批处理大小python detect.py --weights yolov5s.pt --source data/images/bus.jpg --batch-size 4如果PyTorch无法识别CUDA首先确认你的显卡驱动和CUDA版本是否匹配然后检查PyTorch是否安装了GPU版本。可以通过torch.cuda.is_available()来验证。7. 双平台差异与注意事项7.1 Windows特有问题在Windows上我遇到过PATH环境变量过长导致的问题。如果遇到奇怪的命令找不到错误可以尝试缩短PATH或直接在CUDA安装目录下运行命令。另一个常见问题是Visual Studio版本不兼容。CUDA 12.x需要VS 2022如果你安装了多个VS版本可能需要使用正确的版本进行编译。7.2 Linux特有配置在Linux上特别是使用服务器时可能会遇到权限问题。安装CUDA时可能需要sudo权限但后续使用建议在用户空间操作。如果你使用的是无头服务器没有图形界面可能需要额外安装一些库sudo apt install libgl1-mesa-glx libglib2.0-07.3 多版本CUDA管理有时我们需要在系统上安装多个CUDA版本。在Linux上可以通过修改~/.bashrc中的环境变量来切换版本。在Windows上最简单的方法是使用不同的环境变量配置文件或者直接修改系统PATH变量的顺序。8. 性能优化技巧8.1 cuDNN自动调优cuDNN提供了自动调优功能可以针对你的特定硬件优化卷积运算。启用方法是在代码开始处添加torch.backends.cudnn.benchmark True注意这会在第一次运行时花费一些时间进行基准测试但后续运行会使用缓存的最优配置。8.2 混合精度训练现代GPU支持混合精度计算可以显著提升训练速度并减少显存使用。在YOLOv5中启用方法python train.py --weights yolov5s.pt --data coco.yaml --epochs 100 --batch-size 64 --device 0 --amp8.3 数据加载优化使用更快的存储设备如NVMe SSD和调整数据加载器参数可以提升训练效率。在YOLOv5中可以设置python train.py --workers 8 --pin-memoryworkers数量通常设置为CPU核心数的2-4倍pin-memory可以加速CPU到GPU的数据传输。9. 实际项目中的经验分享在最近的一个工业检测项目中我使用RTX 4090显卡和CUDA 12.2搭配PyTorch 2.1训练YOLOv5模型。一开始遇到了显存不足的问题通过以下方法解决减小批处理大小从32降到16启用混合精度训练(--amp)使用梯度累积模拟更大的批处理另一个坑是关于CUDA和PyTorch版本的兼容性。最初我安装了PyTorch 2.1与CUDA 12.3的组合结果发现官方还没有为这个组合提供预编译包。后来回退到CUDA 12.1才解决问题。对于团队协作项目我建议使用Docker容器来统一开发环境。这样可以避免在我机器上能运行的问题。NVIDIA提供了包含CUDA和cuDNN的基础镜像我们可以基于这些镜像构建开发环境。