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上都能跑通,且兼容性最好。
安装步骤其实就三步:
- 检查显卡驱动——在终端输入
nvidia-smi,确认CUDA版本号。如果驱动版本太低,先升级驱动。 - 安装PyTorch——去PyTorch官网选对应CUDA版本的命令,复制粘贴就行。别自己拼命令,官网生成器最靠谱。
- 验证安装——跑一小段代码确认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 知识体系总览
下面这张图把本章的核心逻辑串起来了,你可以对照着检查自己的搭建进度:
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环境花了整整一个下午,后来配多了,十分钟搞定。熟练了就好。