从零配置 YOLOv8 GPU 加速环境(RTX 2080 + Windows)完整教程

一、环境准备

1.1 确认显卡和驱动

打开 PowerShell 或 CMD,运行:

powershell

nvidia-smi

正常输出类似:

highlighter-

+-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 591.86 Driver Version: 591.86 CUDA Version: 13.1 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Driver-Model | Bus-Id Disp.A | Volatile Uncorr. ECC | | 0 NVIDIA GeForce RTX 2080 WDDM | 00000000:01:00.0 On | N/A | | | | MIG | +-----------------------------------------+------------------------+----------------------+

关键信息:

  • Driver Version:你的显卡驱动版本,591.86 够新
  • CUDA Version:驱动支持的最高 CUDA 版本(这里是 13.1),你实际安装的 CUDA Toolkit 版本可以低于这个数

如果nvidia-smi报错,说明:

  • 没装 NVIDIA 驱动 → 去 NVIDIA 官网 下载安装
  • 驱动太旧 → 更新到最新版

1.2 确认 Python

确保已安装Python 3.8 ~ 3.11(推荐 3.10):

powershell

python --version

本教程使用路径:C:\ZCY\WK\wkpy\Python310\python.exe

没有 Python?去 python.org 下载,安装时勾选"Add Python to PATH"


二、创建虚拟环境

为什么要用虚拟环境?避免深度学习依赖(PyTorch、CUDA 库)污染你的全局 Python 环境。

powershell

# 创建目录 mkdir C:\ZCY\WK\wkpy\YOLO mkdir C:\ZCY\WK\wkpy\YOLO\env mkdir C:\ZCY\WK\wkpy\YOLO\test # 创建虚拟环境 C:\ZCY\WK\wkpy\Python310\python.exe -m venv C:\ZCY\WK\wkpy\YOLO\env

创建完成后,目录结构:

highlighter- Bash

C:\ZCY\WK\wkpy\YOLO\ ├── env\ ← 虚拟环境 └── test\ ← 测试文件(模型、脚本、视频)

激活虚拟环境(以后每次用 YOLO 都要先激活):

powershell

C:\ZCY\WK\wkpy\YOLO\env\Scripts\activate

激活后,命令行前面会多一个(env)标识:

highlighter-

(env) PS C:\>

退出虚拟环境:输入deactivate


三、安装 CUDA 版 PyTorch

这是最关键的一步。必须安装带 CUDA 支持的 PyTorch,否则只能用 CPU(速度慢几十倍)。

3.1 选择 CUDA 版本

你的显卡推荐 CUDA 版本安装命令后缀
RTX 20 系列CUDA 12.1cu121
RTX 30 系列CUDA 12.1cu121
RTX 40 系列CUDA 12.1 或 12.4cu121/cu124

3.2 执行安装

powershell

# 确保已激活虚拟环境 C:\ZCY\WK\wkpy\YOLO\env\Scripts\activate # 安装 PyTorch + torchvision + torchaudio(CUDA 12.1) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

⏱ 下载约 2~3 GB,取决于网速可能需要 5~15 分钟。

3.3 国内镜像加速(可选)

如果官方源下载太慢,使用清华镜像:

powershell

pip install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple

⚠️ 国内镜像可能不是最新版本,建议先试官方源。


四、安装 Ultralytics (YOLOv8)

powershell

pip install ultralytics

Ultralytics 是 YOLOv8 的官方包,安装后自带yolo命令行工具。


五、验证 GPU 可用

python

import torch print("PyTorch 版本:", torch.__version__) print("CUDA 是否可用:", torch.cuda.is_available()) # 应输出 True print("CUDA 版本:", torch.version.cuda) # 应输出 12.1 print("GPU 名称:", torch.cuda.get_device_name(0)) # 应输出你的显卡型号 print("显存大小:", round(torch.cuda.get_device_properties(0).total_mem / 1024**3), "GB")

预期输出:

highlighter- Python

PyTorch 版本: 2.5.1+cu121 CUDA 是否可用: True CUDA 版本: 12.1 GPU 名称: NVIDIA GeForce RTX 2080 显存大小: 8 GB

如果CUDA 是否可用输出False,说明安装的是 CPU 版 PyTorch,需要回到第三步重新安装cu121版本。


六、视频检测实战

6.1 命令行方式

最简单的用法,一行命令搞定:

powershell

# 激活环境 C:\ZCY\WK\wkpy\YOLO\env\Scripts\activate # 基础用法 yolo detect predict model=yolov8n.pt source=你的视频.mp4 device=0 # 指定输出目录 yolo detect predict model=yolov8n.pt source=你的视频.mp4 device=0 project=C:\ZCY\WK\wkpy\YOLO\test # 更多参数 yolo detect predict model=yolov8n.pt source=你的视频.mp4 device=0 conf=0.5 imgsz=1280 save=True

结果保存在project/predict/目录下。

6.2 Python 脚本方式

创建run_detect.py,所有参数集中管理,方便复用:

python

""" YOLOv8 视频目标检测脚本 ======================== 用法:C:\ZCY\WK\wkpy\YOLO\env\Scripts\python.exe run_detect.py """ from ultralytics import YOLO # ============ 核心参数配置(只需改这里) ============ # 输入源:视频文件 / 图片 / 文件夹 / 摄像头(0) / RTSP流 source = r"C:\ZCY\WK\wkpy\YOLO\test\DJI_20260129175226_0065_W.MP4" # 模型:yolov8n / yolov8s / yolov8m / yolov8l / yolov8x model_file = "yolov8n.pt" # 设备:0=GPU, "cpu"=CPU device = 0 # 置信度阈值:0~1,越高越严格(建议 0.25~0.5) conf = 0.25 # IoU 阈值:同一物体重叠框合并(建议 0.45) iou = 0.45 # 推理尺寸:640(默认)/ 1280(高精度) imgsz = 640 # 是否保存结果 save = True # 输出目录 project = r"C:\ZCY\WK\wkpy\YOLO\test" # 跳帧:1=每帧都检测,2=隔1帧检测(速度翻倍) vid_stride = 1 # 只检测指定类别:None=全部,[0,2]=只检测人和车 classes = None # ============ 以下不用改 ============ def main(): import torch model = YOLO(model_file) # GPU 状态 if torch.cuda.is_available(): print(f"GPU: {torch.cuda.get_device_name(0)}") else: print("未检测到 GPU,使用 CPU") # 推理 results = model.predict( source=source, device=device, conf=conf, iou=iou, imgsz=imgsz, save=save, project=project, vid_stride=vid_stride, classes=classes, stream=True, verbose=True, ) # 统计 det_classes = {} total = 0 for r in results: for box in r.boxes: cls_id = int(box.cls[0]) name = model.names[cls_id] det_classes[name] = det_classes.get(name, 0) + 1 total += 1 print(f"\n检测完成!共 {total} 个目标") for k, v in sorted(det_classes.items(), key=lambda x: -x[1]): print(f" {k}: {v}") if __name__ == "__main__": main()

运行:

powershell

C:\ZCY\WK\wkpy\YOLO\env\Scripts\python.exe C:\ZCY\WK\wkpy\YOLO\test\run_detect.py

6.3 实测效果

用一段 DJI 无人机视频(393 MB,3181 帧,384×640)测试:

highlighter- Arduino

GPU: NVIDIA GeForce RTX 2080 video 1/1 (frame 1/3181): 384x640 1 broccoli, 44.6ms video 1/1 (frame 2/3181): 384x640 1 broccoli, 9.1ms video 1/1 (frame 3/3181): 384x640 1 broccoli, 9.4ms ... Speed: 2.8ms preprocess, 9.7ms inference, 1.9ms postprocess per image at shape (1, 3, 384, 640)
指标数值
推理速度9.7 ms/帧(~103 FPS)
预处理2.8 ms
后处理1.9 ms
总耗时约 30 秒(3181 帧)

七、核心参数详解

7.1 推理参数

参数类型默认值说明
sourcestr-输入源:文件路径、文件夹、URL、摄像头(0)、RTSP流
modelstryolov8n.pt模型文件路径
deviceint/str00=第一块GPU,"cpu"=CPU
conffloat0.25置信度阈值,低于此值的结果被丢弃
ioufloat0.45NMS IoU 阈值,重叠框合并阈值
imgszint640推理图像尺寸(像素),支持 320/640/1280
vid_strideint1视频跳帧,2=每2帧检测1次
max_detint300每帧最大检测数量
classeslistNone只检测指定类别,如[0,2,7]
saveboolTrue是否保存结果
projectstrruns/detect输出目录
streamboolFalse流式推理(长视频必须开,否则爆内存)

7.2 参数调优建议

highlighter-

场景 conf imgsz model vid_stride ──────────────────────────────────────────────────────────── 快速预览(看大概) 0.1 320 n 3 日常使用(平衡) 0.25 640 n/s 1 精细检测(要准) 0.5 1280 m/l 1 小目标检测 0.25 1280 m 1 实时摄像头 0.3 640 n 1

八、模型选择指南

YOLOv8 提供 5 个尺寸的模型,命名规则yolo+v8+尺寸+.pt

模型参数量mAP速度 (RTX 2080)适用场景
yolov8n3.2M37.3~100 FPS实时检测、快速预览
yolov8s11.2M44.9~80 FPS平衡速度与精度
yolov8m25.9M50.2~50 FPS通用场景推荐
yolov8l43.7M52.9~30 FPS高精度需求
yolov8x68.2M53.9~20 FPS最高精度

怎么选?

  • 不确定 → 先用yolov8n试效果,不够再换sm
  • 显存不够 8GB → 用ns,配合imgsz=640
  • 追求精度 → 用ml,配合imgsz=1280

九、COCO 80 类别对照表

预训练模型基于 COCO 数据集训练,支持以下 80 类目标检测:

编号英文中文编号英文中文
0person40wine glass酒杯
1bicycle自行车41cup杯子
2car汽车42fork叉子
3motorcycle摩托车43knife
4airplane飞机44spoon勺子
5bus公交车45bowl
6train火车46banana香蕉
7truck卡车47apple苹果
8boat48sandwich三明治
9traffic light红绿灯49orange橙子
10fire hydrant消防栓50broccoli西兰花
11stop sign停止标志51carrot胡萝卜
12parking meter停车计费器52hot dog热狗
13bench长椅53pizza披萨
14bird54donut甜甜圈
15cat55cake蛋糕
16dog56chair椅子
17horse57couch沙发
18sheep58potted plant盆栽
19cow59bed
20elephant大象60dining table餐桌
21bear61toilet马桶
22zebra斑马62tv电视
23giraffe长颈鹿63laptop笔记本
24backpack背包64mouse鼠标
25umbrella雨伞65remote遥控器
26handbag手提包66keyboard键盘
27tie领带67cell phone手机
28suitcase行李箱68microwave微波炉
29frisbee飞盘69oven烤箱
30skis双板滑雪70toaster烤面包机
31snowboard单板滑雪71sink水槽
32sports ball72refrigerator冰箱
33kite风筝73book
34baseball bat棒球棒74clock时钟
35baseball glove棒球手套75vase花瓶
36skateboard滑板76scissors剪刀
37surfboard冲浪板77teddy bear泰迪熊
38tennis racket网球拍78hair drier吹风机
39bottle瓶子79toothbrush牙刷

十、常见问题

Q1:torch.cuda.is_available()返回 False

原因:安装了 CPU 版 PyTorch。

解决:卸载后重新安装 CUDA 版:

powershell

pip uninstall torch torchvision torchaudio pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

Q2: 显存不足(CUDA Out of Memory)

解决:

python

# 1. 减小推理尺寸 imgsz = 320 # 从 640 降到 320 # 2. 用更小的模型 model = YOLO("yolov8n.pt") # n < s < m < l < x # 3. 减小 batch size(如果做批量推理) # 4. 限制每帧检测数量 max_det = 100

Q3: 长视频处理时内存爆满

解决:开启流式推理stream=True

python

results = model.predict(source="long_video.mp4", stream=True) for r in results: # 逐帧处理,不会把所有结果存内存 boxes = r.boxes

⚠️stream=False(默认)会把每一帧的结果都存在内存里,视频越长内存占用越大。

Q4: 预训练模型检测效果不好

原因:COCO 预训练模型是通用模型,不针对特定场景。

解决:用自己的数据集微调(Fine-tune):

powershell

# 1. 准备数据集(YOLO 格式) # 2. 训练 yolo detect train data=你的数据集.yaml model=yolov8n.pt device=0 epochs=100 imgsz=640 # 3. 用训练好的模型推理 yolo detect predict model=runs/detect/train/weights/best.pt source=视频.mp4 device=0

Q5: 检测结果中有很多误检

解决:

python

# 提高置信度阈值 conf = 0.5 # 从 0.25 提高到 0.5 # 降低 IoU 阈值(减少重复框) iou = 0.3 # 从 0.45 降到 0.3 # 只检测你关心的类别 classes = [0] # 只检测人

总结

步骤命令耗时
创建虚拟环境python -m venv env几秒
安装 PyTorch (CUDA)pip install torch --index-url ...cu1215~15 分钟
安装 Ultralyticspip install ultralytics