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

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

环境信息: Windows 10/11 · NVIDIA RTX 2080 (8GB) · Python 3.10 · CUDA 12.1

最终效果: YOLOv8n 推理速度 ~100 FPS(9.7ms/帧),3181 帧视频 30 秒跑完。


目录


一、环境准备

1.1 确认显卡和驱动

打开 PowerShell 或 CMD,运行:

nvidia-smi

正常输出类似:

+-----------------------------------------------------------------------------------------+
| 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):

python --version

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

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


二、创建虚拟环境

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

# 创建目录
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

创建完成后,目录结构:

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

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

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

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

(env) PS C:\>

退出虚拟环境: 输入 deactivate


三、安装 CUDA 版 PyTorch

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

3.1 选择 CUDA 版本

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

3.2 执行安装

# 确保已激活虚拟环境
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 国内镜像加速(可选)

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

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

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


四、安装 Ultralytics (YOLOv8)

pip install ultralytics

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


五、验证 GPU 可用

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")

预期输出:

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

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


六、视频检测实战

6.1 命令行方式

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

# 激活环境
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,所有参数集中管理,方便复用:

"""
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()

运行:

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)测试:

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 推理参数

参数 类型 默认值 说明
source str - 输入源:文件路径、文件夹、URL、摄像头(0)、RTSP流
model str yolov8n.pt 模型文件路径
device int/str 0 0=第一块GPU,"cpu"=CPU
conf float 0.25 置信度阈值,低于此值的结果被丢弃
iou float 0.45 NMS IoU 阈值,重叠框合并阈值
imgsz int 640 推理图像尺寸(像素),支持 320/640/1280
vid_stride int 1 视频跳帧,2=每2帧检测1次
max_det int 300 每帧最大检测数量
classes list None 只检测指定类别,如 [0,2,7]
save bool True 是否保存结果
project str runs/detect 输出目录
stream bool False 流式推理(长视频必须开,否则爆内存)

7.2 参数调优建议

场景                    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) 适用场景
yolov8n 3.2M 37.3 ~100 FPS 实时检测、快速预览
yolov8s 11.2M 44.9 ~80 FPS 平衡速度与精度
yolov8m 25.9M 50.2 ~50 FPS 通用场景推荐
yolov8l 43.7M 52.9 ~30 FPS 高精度需求
yolov8x 68.2M 53.9 ~20 FPS 最高精度

怎么选?

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

九、COCO 80 类别对照表

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

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

十、常见问题

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

原因: 安装了 CPU 版 PyTorch。

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

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

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

解决:

# 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

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

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

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

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

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

# 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: 检测结果中有很多误检

解决:

# 提高置信度阈值
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 ...cu121 5~15 分钟
安装 Ultralytics pip install ultralytics 1 分钟
下载模型 首次运行自动下载 几秒
推理视频 yolo detect predict ... 取决于视频长度

核心就三步:装 PyTorch → 装 Ultralytics → 跑推理。


最后更新:2026-04-24

posted @ 2026-04-24 10:22  Dapenson  阅读(35)  评论(0)    收藏  举报