1. 课程导学与计算机视觉概述

大家好,欢迎来到这门课。我是你们这趟旅程的向导。

先聊聊这门课到底要干嘛。说白了,就是让你从零开始,亲手跑通一个基于 OpenCV 和 YOLO 的图像检测程序。不是光讲理论,是真正能上手干活的那种。

我个人习惯是,学任何新技术之前,先搞清楚它是什么、能干什么、怎么来的。所以这一章,我们先搭个全景框架。

课程目标:学完你能做什么?

  • 理解核心概念:计算机视觉是什么,YOLO 为什么快,OpenCV 怎么用。
  • 搭建开发环境:装好 OpenCV、YOLO 权重文件,让代码跑起来。
  • 完成第一个检测:用摄像头或图片,实时检测出物体并画框。
  • 调优与部署:知道怎么调参数,怎么把模型放到实际项目里。

一句话总结:30 章之后,你手里会有一套能用的检测工具,而不是一堆零散的知识点。

学习路径:怎么走最省力?

我建议你按这个节奏来:

  1. 前 5 章:打基础。装环境、读代码、跑通第一个 demo。别跳,这一步卡住了后面全白搭。
  2. 第 6-15 章:深入原理。YOLO 的网络结构、损失函数、训练自己的数据集。这里会有点烧脑,但值得。
  3. 第 16-25 章:实战项目。人脸检测、车辆计数、缺陷检测……每个项目我都会给完整代码。
  4. 第 26-30 章:优化与部署。模型压缩、TensorRT 加速、嵌入式部署。嗯,这部分是进阶,但很有用。

我的建议:每章看完,立刻动手敲代码。光看是学不会的,你想想看,游泳教练在岸上比划再多,你不下水永远学不会。

计算机视觉发展简史:从像素到理解

计算机视觉,说白了就是让机器看懂图像。这事比想象中难得多。

我记得 2012 年之前,大家还在用手工设计的特征(比如 HOG、SIFT)做检测。效果嘛……只能说勉强能用。直到 AlexNet 在 ImageNet 上大杀四方,深度学习才真正进入这个领域。

几个关键节点:

时间 事件 意义
1966 年 MIT 夏季视觉项目 计算机视觉作为学科诞生
2001 年 Viola-Jones 人脸检测 第一个实时人脸检测算法
2012 年 AlexNet 赢得 ImageNet 深度学习时代开启
2015 年 YOLO 首次提出 实时目标检测的里程碑
2020 年 YOLOv5 发布 工程化易用性大幅提升

这里有个坑,我踩过。早期做检测,我总想着自己设计特征提取器,结果折腾几个月效果还不如一个预训练的 YOLO 模型。后来我学乖了:站在巨人的肩膀上,别自己造轮子。

OpenCV 简介:视觉开发的瑞士军刀

OpenCV 是什么?一个开源的计算机视觉库。从图像读取、滤波、特征提取,到摄像头调用、视频处理,它几乎什么都能干。

我刚开始用 OpenCV 时,最惊艳的是它读取一张图片只需要一行代码:

import cv2
img = cv2.imread('photo.jpg')
cv2.imshow('窗口标题', img)
cv2.waitKey(0)

就这么简单。但别小看它,背后是几十年的算法积累。

OpenCV 的几个核心模块:

  • core:基础数据结构(Mat、Point、Rect)
  • imgproc:图像处理(滤波、边缘检测、形态学操作)
  • highgui:GUI 和视频 I/O
  • dnn:深度学习推理模块(加载 YOLO 模型就用它)
  • objdetect:目标检测(传统方法如 Haar Cascade)

注意:OpenCV 的 dnn 模块只支持推理,不支持训练。训练 YOLO 模型需要用 Darknet 或 PyTorch 版本。

YOLO 简介:看一眼就够了

YOLO,全称 You Only Look Once。名字很直白:只看一次。

传统检测方法(比如 R-CNN)需要先生成候选区域,再逐个分类。YOLO 不一样,它把整张图分成网格,每个网格直接预测边界框和类别。一次前向传播,结果全出来。

为什么快?因为它是端到端的回归问题,不是分类问题。你想想看,从提出候选框到分类,中间省了多少步骤。

YOLO 的几个版本对比:

版本 特点 适用场景
YOLOv3 多尺度检测,稳定 通用检测,兼容性好
YOLOv5 工程化好,易用 快速原型开发
YOLOv8 最新,支持实例分割 需要分割的场景
YOLO-NAS 神经架构搜索优化 追求极致精度

这门课我们主要用 YOLOv5 和 YOLOv8。为什么?因为文档全、社区活跃、踩坑的人多,你遇到问题搜一下就有答案。

本章知识体系

下面这张图,把这一章的核心脉络串起来了:

第一章知识体系结构图 第一章:课程导学与计算机视觉概述 课程目标 学完能做什么 学习路径 4个阶段规划 发展简史 关键里程碑 技术栈 OpenCV + YOLO OpenCV 核心模块与用法 YOLO 版本对比与选择 核心逻辑 先明确目标 → 规划路径 → 了解历史背景 → 掌握 OpenCV 基础 → 理解 YOLO 原理

避坑指南:我踩过的几个坑

最后,分享几个我早期犯过的错误,你注意避开:

  • 版本不匹配:OpenCV 4.5 以下不支持 YOLOv5 的某些算子。我曾经折腾两天,最后发现是版本问题。建议直接用 OpenCV 4.8+。
  • 路径问题:模型权重文件路径别用中文,也别有空格。OpenCV 的 dnn 模块对路径很敏感。
  • GPU vs CPU:YOLO 在 CPU 上也能跑,但速度慢很多。如果你没有 GPU,建议先用轻量版(YOLOv5n 或 YOLOv8n)。
  • 不要迷信参数:很多人一上来就调 confidence threshold,其实先跑通默认参数更重要。

一个小技巧:刚开始学,把代码和模型文件放在同一个目录下,路径用相对路径。这样换电脑也能直接跑,省去改路径的麻烦。