1. OpenCV与YOLO初识:计算机视觉概述、OpenCV简介与安装、YOLO发展史(v1到v8)、课程项目全景预览
1.1 计算机视觉到底在做什么?
先聊聊计算机视觉。说白了,就是让机器看懂世界。
你想想看,人类看一张照片,能认出里面是猫、是狗、还是汽车。但计算机看到的,只是一堆数字——每个像素的RGB值。计算机视觉要做的,就是从这些数字里提取出有意义的信息。
我刚开始接触这个领域时,觉得特别神奇。一张图片几百万个像素,怎么就能让机器认出里面有个戴口罩的人?后来才明白,这背后是几十年的数学、统计学和深度学习积累。
计算机视觉的几个核心任务:
- 图像分类——这张图里有什么?
- 目标检测——物体在哪?是什么?
- 目标跟踪——物体动起来后,怎么持续锁定它?
- 语义分割——每个像素属于哪个类别?
咱们这门课,重点落在目标检测+目标跟踪上。这两个任务在实际项目中经常绑在一起用。
核心认知:检测是"找出来",跟踪是"跟住它"。两者结合,才能做真正的视频智能分析。
1.2 OpenCV——计算机视觉的瑞士军刀
OpenCV全称Open Source Computer Vision Library。2000年由Intel发起,现在已经是计算机视觉领域最流行的开源库。
我个人习惯把OpenCV比作瑞士军刀——功能多、体积小、上手快。你不需要从零写图像处理算法,OpenCV都帮你封装好了。
OpenCV能做什么?
| 功能模块 | 典型操作 | 应用场景 |
|---|---|---|
| 图像读写 | imread、imwrite、imshow | 加载图片、保存结果 |
| 图像预处理 | 高斯模糊、直方图均衡、形态学操作 | 去噪、增强对比度 |
| 特征提取 | SIFT、ORB、HOG | 关键点匹配、行人检测 |
| 视频处理 | VideoCapture、VideoWriter | 读取摄像头、保存视频 |
| 深度学习推理 | dnn模块、blobFromImage | 加载YOLO模型做检测 |
安装OpenCV
嗯,这里要注意。安装方式取决于你的开发环境。
方式一:pip安装(推荐)
pip install opencv-python
pip install opencv-contrib-python # 包含额外模块
方式二:源码编译
如果你需要CUDA加速、或者要定制某些模块,就得自己编译。我在项目中遇到过,默认的pip包不支持GPU推理,跑YOLO时帧率只有个位数。后来编译了带CUDA的OpenCV,直接飙到30帧以上。
我的建议:刚开始学,直接用pip安装。等做到项目优化阶段,再考虑源码编译。
1.3 YOLO发展史——从v1到v8
YOLO,全称You Only Look Once。这个名字起得真好——只看一眼,就能知道画面里有什么、在哪。
2016年,Joseph Redmon提出了YOLOv1。当时的目标检测主流还是两阶段方法(先提候选框,再分类),速度慢得像蜗牛。YOLO直接把检测当成回归问题,一次推理搞定所有。
为什么会这么快?因为YOLO把图像分成网格,每个网格负责预测中心点落在它里面的物体。这个思路,现在看来很简单,但在当时是革命性的。
YOLO各版本演进
| 版本 | 年份 | 核心改进 | 我的评价 |
|---|---|---|---|
| v1 | 2016 | 开创性的单阶段检测 | 粗糙但惊艳 |
| v2 | 2017 | Anchor Box、Batch Normalization | 更稳定了 |
| v3 | 2018 | 多尺度预测、Darknet-53 | 经典之作,至今很多人用 |
| v4 | 2020 | CSPDarknet、Mish激活、CIoU Loss | 速度和精度平衡最好 |
| v5 | 2020 | PyTorch实现、模型轻量化 | 工程落地首选 |
| v6 | 2022 | RepVGG骨干、更高效的训练 | 工业部署友好 |
| v7 | 2022 | E-ELAN、辅助头训练 | 精度再提升 |
| v8 | 2023 | Anchor-Free、全新训练范式 | 当前最新,功能最全 |
我曾经在一个智慧安防项目里,从YOLOv3一路试到v8。v3在边缘设备上跑得动,但小目标检测差;v8精度高,但模型大了不少。选哪个版本,得看你的硬件和场景。
避坑指南:不要盲目追新。YOLOv8虽然强,但如果你用的是树莓派或者老款Jetson Nano,v5s可能是更好的选择。我曾经在客户现场吃过这个亏——模型跑不起来,临时换版本,折腾了两天。
1.4 课程项目全景预览
咱们这门课不是纯理论,是实战。30章内容,最终要完成一个完整的多目标跟踪与检测系统。
来看看整个课程的知识体系:
整个课程分成四个阶段:
- 基础篇(第1-8章)——OpenCV操作、YOLO原理、跟踪算法入门
- 进阶篇(第9-18章)——模型训练、数据集制作、跟踪优化
- 项目篇(第19-26章)——综合系统搭建、多目标跟踪实战
- 部署篇(第27-30章)——模型压缩、边缘部署、性能调优
最终交付物:一个能实时检测并跟踪多个目标的系统。支持行人、车辆、自定义物体。代码全部开源,你可以直接用在真实项目中。
我记得有个学员跟我说,他学完前几章就把YOLO用在了工厂的零件检测上。虽然只是跑通了demo,但那种"我能用AI解决实际问题"的感觉,真的很爽。
好了,第一章就到这里。把OpenCV装好,把YOLO的发展脉络理清楚,咱们后面每一章都会动手写代码。