3. YOLO环境搭建:版本选择、PyTorch与CUDA安装、推理验证

环境搭建这件事,说难不难,说简单也容易踩坑。我见过不少同事在版本搭配上翻车,一折腾就是半天。今天咱们就把YOLO环境捋清楚,从版本选择到CUDA安装,再到跑通第一个demo,一步到位。

3.1 YOLOv8/v9/v10,到底选哪个?

先回答一个最实际的问题:现在该用哪个版本?

我个人的习惯是:生产项目用v8,研究尝鲜用v10。为什么?

版本 发布时间 核心特点 推荐场景
YOLOv8 2023.01 成熟稳定,生态完善,文档齐全 工业部署、生产环境首选
YOLOv9 2024.02 PGI可编程梯度信息,信息瓶颈优化 追求精度、有调参经验的团队
YOLOv10 2024.05 NMS-free架构,推理速度更快 实时性要求极高的边缘设备

我的建议:如果你是第一次搭建YOLO环境,直接选YOLOv8。它的API最稳定,社区问题库最全,遇到bug基本都能搜到答案。v9和v10虽然新,但有些算子还在迭代,工业项目里求稳更重要。

我曾经在一个质检项目里试过v9的PGI模块,精度确实比v8高了1.2个点,但推理速度慢了将近30%。后来还是换回了v8,配合TTA(测试时增强)把精度补了回来。你想想看,产线上每帧多花5毫秒,一天下来就是几十万张图的差距。

3.2 PyTorch与CUDA安装——避坑指南

环境搭建最头疼的就是版本匹配。我直接给出一套经过验证的组合:

推荐组合(2024年Q3验证):

  • CUDA 11.8 + PyTorch 2.1.0 + torchvision 0.16.0
  • 或 CUDA 12.1 + PyTorch 2.2.0 + torchvision 0.17.0

这两个组合在YOLOv8/v9/v10上都能跑通,且兼容性最好。

安装步骤其实就三步:

  1. 检查显卡驱动——在终端输入 nvidia-smi,确认CUDA版本号。如果驱动版本太低,先升级驱动。
  2. 安装PyTorch——去PyTorch官网选对应CUDA版本的命令,复制粘贴就行。别自己拼命令,官网生成器最靠谱。
  3. 验证安装——跑一小段代码确认GPU可用。
# 验证PyTorch和CUDA是否正常工作
import torch
print("PyTorch版本:", torch.__version__)
print("CUDA是否可用:", torch.cuda.is_available())
print("GPU数量:", torch.cuda.device_count())
print("当前GPU:", torch.cuda.get_device_name(0))

# 跑一个简单的张量运算测试
x = torch.randn(1000, 1000).cuda()
y = torch.randn(1000, 1000).cuda()
z = torch.mm(x, y)
print("GPU矩阵乘法测试通过,结果形状:", z.shape)

我曾经踩过的坑:有一次装完PyTorch,torch.cuda.is_available()一直返回False。查了半天,发现是conda环境里装了CPU-only版本的PyTorch。后来养成习惯:装完后第一件事就是跑上面那段验证代码,确认GPU能用再往下走。

3.3 安装YOLO——两种方式

YOLO的安装有两种主流方式,我分别说一下:

方式一:通过Ultralytics包安装(推荐)

pip install ultralytics

一行命令搞定。它会自动拉取YOLOv8/v9/v10的模型定义和训练代码。我90%的项目都用这种方式,省心。

方式二:从源码安装

git clone https://github.com/ultralytics/ultralytics
cd ultralytics
pip install -e .

如果你需要修改模型结构或自定义算子,用源码安装更方便。但日常使用没必要。

小技巧:建议在虚拟环境里装。我习惯用conda创建独立环境:conda create -n yolov8 python=3.10,这样不同项目之间不会互相干扰。

3.4 验证推理demo——跑通第一个模型

环境搭好了,咱们跑个demo验证一下。我准备了一张工业场景的示例图(你可以用自己的图片替换路径)。

from ultralytics import YOLO

# 加载预训练模型(会自动下载权重文件)
model = YOLO('yolov8n.pt')  # n: nano版本,最快最轻量

# 推理单张图片
results = model('test_image.jpg')

# 查看检测结果
for result in results:
    boxes = result.boxes  # 检测框
    for box in boxes:
        x1, y1, x2, y2 = box.xyxy[0].tolist()
        conf = box.conf[0].item()
        cls = box.cls[0].item()
        print(f"类别: {int(cls)}, 置信度: {conf:.2f}, 坐标: ({x1:.0f},{y1:.0f},{x2:.0f},{y2:.0f})")

# 保存标注后的图片
results[0].save('result.jpg')
print("推理完成,结果已保存到 result.jpg")

如果终端打印出检测框信息,并且生成了result.jpg,恭喜你——环境搭建成功!

验证要点:

  • 第一次运行会自动下载权重文件(约6MB),确保网络畅通
  • 如果报错"CUDA out of memory",换yolov8n.pt(nano版)试试
  • 推理速度:GPU上yolov8n大约2-5ms/张,CPU上约50-100ms/张

3.5 知识体系总览

下面这张图把本章的核心逻辑串起来了,你可以对照着检查自己的搭建进度:

YOLO环境搭建核心流程 版本选择 PyTorch + CUDA 安装YOLO v8: 生产首选 v9: 精度优先 v10: 速度优先 CUDA 11.8/12.1 PyTorch 2.1/2.2 torchvision 0.16/0.17 pip install ultralytics 或源码安装 conda虚拟环境 验证推理demo GPU可用性检查 torch.cuda.is_available() 模型加载推理 YOLO('yolov8n.pt') 结果保存验证 result.jpg 生成

3.6 常见问题速查

最后,我把搭建过程中最常遇到的几个问题列出来,你遇到了可以直接对照解决:

问题现象 可能原因 解决方案
torch.cuda.is_available() 返回 False PyTorch版本与CUDA不匹配,或装了CPU版 卸载PyTorch,用官网命令重装对应CUDA版本
ImportError: No module named 'ultralytics' 未安装或安装到了其他环境 检查当前conda环境,执行 pip install ultralytics
RuntimeError: CUDA out of memory 模型太大或batch size过高 换yolov8n.pt,或减小batch size到1
下载权重文件超时 网络问题或镜像源问题 手动下载.pt文件放到项目目录,或换国内镜像源

最后说一句:环境搭建是每个项目的第一步,也是最能磨性子的环节。别急,一步步来。我当年第一次配YOLOv5环境花了整整一个下午,后来配多了,十分钟搞定。熟练了就好。