1. 课程导学与环境准备

各位同学好,我是你们这门课的主讲。在计算机视觉这行摸爬滚打了十几年,从最早的 Haar Cascade 到如今的 YOLOv8,我算是亲眼看着目标检测技术一步步走到今天的。说实话,YOLO 的出现确实改变了整个行业的玩法——它让实时检测从实验室走进了工厂车间、自动驾驶汽车,甚至你的手机里。

这一章咱们不急着写代码。先把地基打牢,搞清楚 YOLO 是什么、能干什么、我们用什么工具来玩转它。嗯,磨刀不误砍柴工嘛。

1.1 YOLO 发展史:从 v1 到 v8 的进化之路

YOLO 的全称是 You Only Look Once。说白了,就是让神经网络只看一眼图片,就能同时告诉你“图片里有什么”和“这些东西在哪儿”。

我刚开始做目标检测那会儿,主流还是 R-CNN 系列——先提候选区域,再逐个分类,速度慢得让人抓狂。2016 年 Joseph Redmon 提出 YOLOv1 时,我第一反应是:这玩意儿靠谱吗?结果一测,45 FPS 的实时速度直接把我震住了。

版本 发布时间 核心创新 我的评价
YOLOv1 2016 端到端检测,网格划分 + 边界框回归 开山之作,但小目标检测很弱
YOLOv2 2017 Batch Normalization、Anchor Box、Darknet-19 精度大幅提升,我开始在项目里用它
YOLOv3 2018 多尺度预测、Darknet-53、Logistic 分类器 工业界最经典的版本,至今仍有人用
YOLOv4 2020 CSPDarknet、PANet、Mish 激活函数 速度和精度的黄金平衡点
YOLOv5 2020 PyTorch 实现、Focus 结构、自适应锚框 Ultralytics 出品,生态最好
YOLOv6 2022 美团出品,RepVGG 骨干、Anchor-Free 工业部署优化强
YOLOv7 2022 E-ELAN、重参数化、辅助训练头 当时精度最高的实时检测器
YOLOv8 2023 Anchor-Free、C2f 模块、解耦头 目前最推荐入门的版本

我的建议:初学者直接从 YOLOv8 入手。v3 虽然经典,但很多 API 已经过时了。v8 的代码结构清晰,文档完善,遇到问题社区里一搜就有答案。

1.2 应用场景:YOLO 到底能干什么?

你可能会问:学了 YOLO 能用在哪儿?我挑两个最典型的场景说说。

工业质检

我之前帮一家电子厂做过 PCB 缺陷检测项目。产线上每分钟要检测 60 块电路板,传统的人工目检根本跟不上。用 YOLOv5 部署后,检测速度达到了 80 FPS,漏检率从 3% 降到了 0.2%。

  • 常见缺陷:焊点虚焊、线路短路、元件缺失、划痕
  • 优势:实时性高、可部署在边缘设备(Jetson、RK3588)
  • 挑战:小缺陷检测需要调优,数据标注成本高

自动驾驶

这是 YOLO 最“出圈”的应用。车辆、行人、交通标志、车道线——所有障碍物都需要在毫秒级内识别出来。我记得有一次在高速测试,YOLOv4 在 1080p 视频上跑到了 65 FPS,但到了夜间场景,精度直接掉了 15 个点。后来加了数据增强和多尺度训练才稳住。

  • 检测目标:车辆、行人、自行车、红绿灯、锥桶
  • 关键指标:mAP 要 > 85%,推理延迟 < 30ms
  • 注意:安全第一,误检比漏检更危险

避坑指南:我曾经在一个项目中直接用 COCO 预训练权重做工业检测,结果 mAP 只有 40%。后来老老实实标注了 5000 张产线图片做微调,精度直接飙到 92%。记住:预训练模型只是起点,场景数据才是王道。

1.3 OpenCV 与 YOLO 的关系

很多人问我:OpenCV 和 YOLO 到底是什么关系?

简单来说,YOLO 是“大脑”——负责推理和检测;OpenCV 是“眼睛和手”——负责图像预处理、后处理、显示结果。两者配合才能完成一个完整的目标检测系统。

模块 YOLO 负责 OpenCV 负责
图像读取 — cv2.imread() / VideoCapture
预处理 — resize、归一化、颜色空间转换
模型推理 前向传播、特征提取 dnn.blobFromImage() + forward()
后处理 — NMS、坐标映射、置信度过滤
结果展示 — cv2.rectangle()、putText()

说白了,OpenCV 的 dnn 模块可以直接加载 YOLO 的 ONNX 或 Darknet 模型。你不需要装 PyTorch 也能跑 YOLO——这在嵌入式设备上特别实用。

注意:OpenCV 的 dnn 模块只支持推理,不支持训练。训练还得用 PyTorch 或 Darknet。别想着用 OpenCV 训练 YOLO,那会走弯路。

1.4 开发环境搭建

这部分我踩过不少坑。直接给你们一套经过验证的配置方案。

硬件要求

  • CPU:Intel i5 或 AMD Ryzen 5 以上(训练用)
  • GPU:NVIDIA GTX 1060 6GB 起步(推荐 RTX 3060 12GB)
  • 内存:16GB 以上
  • 硬盘:SSD 256GB + 数据盘 1TB

软件安装步骤

  1. 安装 Python 3.8-3.11(推荐 3.10,兼容性最好)
  2. 安装 CUDA 和 cuDNN
    • CUDA 11.8 + cuDNN 8.9(PyTorch 2.x 标配)
    • 验证命令:nvcc --version
  3. 创建虚拟环境
    python -m venv yolo_env
    source yolo_env/bin/activate  # Linux/Mac
    yolo_env\Scripts\activate     # Windows
  4. 安装 PyTorch
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
  5. 安装 OpenCV
    pip install opencv-python opencv-contrib-python
  6. 安装 Ultralytics(YOLOv8)
    pip install ultralytics

验证安装:运行以下代码,如果能看到摄像头画面并检测到物体,说明环境配置成功。

import cv2
from ultralytics import YOLO

model = YOLO('yolov8n.pt')
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read()
    results = model(frame)
    annotated = results[0].plot()
    cv2.imshow('YOLOv8 Detection', annotated)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

我的经验:如果 GPU 显存不够(比如只有 4GB),训练时把 batch size 调到 4,用 --device cpu 也能跑,就是慢点。另外,Windows 用户装 CUDA 时记得选“自定义安装”,只勾选 CUDA 组件,别装 GeForce Experience,否则容易冲突。

1.5 本章知识体系

下面这张图帮你理清本章的核心脉络。我习惯在学新东西前先看整体结构,这样后面学细节时不会迷路。

第1章 知识体系结构图 课程导学与环境准备 YOLO发展史 v1-v8 应用场景 OpenCV与YOLO关系 开发环境搭建 v1端到端 v3多尺度 v5 PyTorch v8 Anchor-Free 工业质检 自动驾驶 dnn推理 后处理 Python CUDA 💡 学习路径建议 先了解发展史 → 明确应用场景 → 理解OpenCV与YOLO的分工 → 搭建环境跑通第一个Demo

好了,环境搭好、概念理清,咱们就可以正式开始动手了。记住:这一章的所有内容都是后面 29 章的基础。别急着跳,把环境配稳了,后面才能跑得顺。