2. YOLOv8环境搭建与基础推理
环境搭建这事,说难不难,说简单也容易踩坑。我这些年带过不少新人,十有八九第一周都在跟环境搏斗。其实只要理清几个关键步骤,半小时就能跑起来。
咱们这一章的目标很明确:把YOLOv8跑起来,看到检测结果。别急着研究原理,先让模型动起来,你才有继续学下去的动力。
2.1 Conda环境配置
我个人习惯用Conda管理Python环境。为什么?因为项目多了你就知道,依赖冲突能让人崩溃。Conda至少能帮你隔离出一片净土。
先确认你装了Conda:
conda --version
然后创建新环境:
conda create -n yolov8 python=3.9 -y
conda activate yolov8
嗯,这里要注意。激活后看看终端前面是不是多了个 (yolov8)。没有的话说明没激活成功,后面装啥都装错地方了。
接下来装PyTorch。这一步很多人翻车——直接 pip install torch 装了个CPU版本,跑起来慢得想哭。
去PyTorch官网选你的配置:
| 你的显卡 | CUDA版本 | 安装命令 |
|---|---|---|
| NVIDIA 30系/40系 | CUDA 11.8 | pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 |
| NVIDIA 20系及更早 | CUDA 11.7 | pip install torch torchvision --index-url https://download.pytorch.org/whl/cu117 |
| 没有NVIDIA显卡 | CPU | pip install torch torchvision |
python -c "import torch; print(torch.cuda.is_available())"。输出 True 才说明GPU能用。输出 False 的话,检查CUDA版本和驱动。
2.2 YOLOv8源码安装
环境准备好了,接下来装YOLOv8。有两种方式,我建议你选第一种。
方式一:通过pip安装(推荐)
pip install ultralytics
就这么一行。Ultralytics官方把YOLOv8打包成了Python包,装完就能用。简单粗暴。
方式二:从源码安装
如果你想看源码、改代码,那就用这个:
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
pip install -e .
-e 参数的意思是「可编辑模式」。你改了源码,下次import就是新代码,不用重新装。
验证安装:
python -c "from ultralytics import YOLO; print('YOLOv8 installed successfully')"
没报错就说明装好了。
2.3 使用官方权重进行图片推理
装好了,跑起来看看效果。YOLOv8官方提供了预训练权重,直接下载就能用。
先下载一张测试图片:
wget https://ultralytics.com/images/bus.jpg
然后写个Python脚本:
from ultralytics import YOLO
# 加载模型。第一次运行会自动下载权重
model = YOLO('yolov8n.pt') # n: nano版本,最快最轻
# 推理
results = model('bus.jpg')
# 保存结果
results[0].save('result.jpg')
print('检测完成,结果已保存到 result.jpg')
跑完看看 result.jpg。如果看到公交车、行人、红绿灯都被框出来了,恭喜你,环境搭建成功了。
YOLOv8有5个版本,按体积从小到大:
| 模型 | 参数量 | 速度(GPU) | 精度(mAP) | 适用场景 |
|---|---|---|---|---|
| yolov8n.pt | 3.2M | 最快 | 37.3 | 移动端、实时检测 |
| yolov8s.pt | 11.2M | 较快 | 44.9 | 边缘设备 |
| yolov8m.pt | 25.9M | 中等 | 50.2 | 通用场景 |
| yolov8l.pt | 43.7M | 较慢 | 52.9 | 高精度需求 |
| yolov8x.pt | 68.2M | 最慢 | 53.9 | 极致精度 |
yolov8n.pt 就够了。跑得快,验证方便。等后面做剪枝量化,也是从nano版本开始练手。别一上来就搞x版本,等半天不出结果,容易劝退。
2.4 视频推理
图片能跑了,视频也不难。说白了就是把视频一帧一帧读进来,每帧都做一次检测。
from ultralytics import YOLO
model = YOLO('yolov8n.pt')
# 视频推理
results = model('input_video.mp4', save=True)
# 或者用摄像头实时检测
# results = model(0, show=True) # 0 表示第一个摄像头
就这么简单。加个 save=True 会自动保存检测后的视频。加个 show=True 会弹窗实时显示。
yolov8x.pt 跑1080p视频,8G显存可能撑不住。我建议先用nano版本试水,确认流程没问题再换大模型。
2.5 本章知识结构
下面这张图帮你理清整个环境搭建的流程:
这张图把整个流程分成了三步。每一步都有对应的操作和验证方法。你跟着走一遍,基本不会出大问题。
2.6 常见问题排查
环境搭建总会遇到各种幺蛾子。我列几个最常见的:
- CUDA out of memory —— 显存不够。换小模型,或者降低输入图片尺寸。
- ModuleNotFoundError: No module named 'ultralytics' —— 没装成功。检查是不是在正确的conda环境里。
- RuntimeError: CUDA error: no kernel image is available —— PyTorch版本和CUDA版本不匹配。重装对应版本的PyTorch。
- 视频推理卡顿 —— 帧率太高或者模型太大。可以跳帧处理,或者换nano模型。
核心要点回顾:
- Conda环境隔离是第一步,别偷懒
- PyTorch一定要装GPU版本,装完验证
- YOLOv8用pip安装最省事
- 先用nano模型跑通流程
- 视频推理和图片推理API完全一致
环境搭好了,模型跑起来了。接下来咱们就可以开始研究怎么剪枝、怎么量化了。不过那是后面的事,今天先到这,你先把环境跑通再说。