第一课:课程导学与环境搭建
各位同学,欢迎来到《YOLO与OpenCV结合实现视频流实时追踪》的第一课。
我是这门课的主讲。做计算机视觉这行快十年了,从最早的OpenCV 2.x时代一路摸爬滚打过来。说实话,当年我刚开始接触目标检测时,哪有什么YOLO啊,都是手动写特征、调参数,一个模型跑一天是常事。现在想想,真是感慨。
好,闲话不多说。这一章我们主要做三件事:搞清楚YOLO是什么、OpenCV能干什么、以及把开发环境搭好。环境搭建是后面所有实验的基础,我建议你跟着一步步来,别跳步。
1.1 YOLO发展史:从v1到v8,我们经历了什么
YOLO,全称You Only Look Once。名字很直白——只看一次。什么意思呢?传统的目标检测算法,比如R-CNN系列,得先提候选区域,再逐个分类,速度慢得像蜗牛。YOLO直接把整张图扔进网络,一次前向传播就输出所有目标的位置和类别。
我第一次用YOLOv1的时候,说实话,被它的速度震惊了。那时候在GTX 1080上跑,实时处理视频流完全没问题。但精度嘛...嗯,小目标检测确实拉胯。
后来YOLOv2、v3不断改进。我个人觉得YOLOv3是个里程碑,它引入了多尺度预测,小目标检测能力大幅提升。我在一个工业质检项目里就用过v3,效果还不错。
再往后,v4、v5、v6、v7、v8...版本号越来越快,但核心思想没变:端到端、单阶段、实时性。我们这门课会以YOLOv8为主,因为它目前生态最好,官方支持也最完善。
核心要点:YOLO系列的核心优势就是「快」。它把检测问题转化为回归问题,一步到位。后面的课程我们会深入源码,你就能理解为什么它这么快了。
1.2 OpenCV简介:计算机视觉的瑞士军刀
OpenCV,全称Open Source Computer Vision Library。说白了,就是一套开源的计算机视觉工具库。从图像读取、滤波、边缘检测,到特征匹配、相机标定、视频处理,它几乎什么都能干。
我最早接触OpenCV是在大学做智能车比赛的时候。那时候用OpenCV做车道线检测,代码写得稀烂,但跑起来的那一刻,真的觉得这东西太神奇了。
在我们这门课里,OpenCV主要承担三个角色:
- 视频流的读取与处理:用cv2.VideoCapture读取摄像头或视频文件
- 图像预处理:缩放、归一化、颜色空间转换等
- 结果可视化:在图像上绘制检测框、标签、置信度等
你想想看,如果没有OpenCV,我们得自己写视频解码、图像绘制,那工作量可就大了去了。
小提示:OpenCV的BGR格式和PyTorch常用的RGB格式不一样。我在项目中踩过这个坑——训练好的模型,推理结果全错了,查了半天才发现是颜色通道顺序搞反了。后面我们会专门讲这个。
1.3 Anaconda与PyTorch安装
环境搭建这块,我强烈建议用Anaconda。为什么?因为它能创建独立的Python环境,不同项目之间互不干扰。我曾经因为环境冲突重装了三次系统,从那以后就老老实实用conda了。
安装步骤很简单,我列一下:
- 去Anaconda官网下载对应系统的安装包,一路默认安装就行
- 打开终端(Windows用Anaconda Prompt),创建新环境:
conda create -n yolo_course python=3.9
conda activate yolo_course
然后安装PyTorch。这里要注意,PyTorch的安装命令取决于你的CUDA版本。如果你有NVIDIA显卡,建议装CUDA版;如果没有,装CPU版也能跑,就是慢点。
# 有CUDA的(以CUDA 11.8为例)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
# 没有CUDA的
pip install torch torchvision torchaudio
安装完成后,验证一下:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
如果输出True,恭喜你,CUDA可用。如果输出False,也别灰心,CPU模式也能学完这门课的所有内容。
注意:PyTorch版本和CUDA版本要匹配。我曾经帮一个学员排查问题,他装了PyTorch 2.0但CUDA是10.2,结果torch死活检测不到GPU。后来升级CUDA到11.8就解决了。
1.4 CUDA与cuDNN配置
CUDA是NVIDIA的并行计算平台,cuDNN是深度神经网络的加速库。说白了,它们能让你的GPU跑深度学习模型更快。
配置步骤:
- 去NVIDIA官网下载对应系统的CUDA Toolkit(建议11.8或12.1)
- 安装时选择自定义安装,只勾选CUDA组件
- 下载cuDNN,解压后把bin、include、lib文件夹复制到CUDA安装目录
- 配置环境变量(一般安装程序会自动配好)
验证CUDA是否安装成功:
nvcc --version
验证cuDNN:
# 找到cuDNN的sample目录,编译运行
cd /path/to/cudnn/samples
make
./mnistCUDNN
如果输出Test passed!,说明配置成功。
避坑指南:我曾经在Windows上配CUDA,环境变量配了三次才生效。建议配完后重启终端,或者直接重启电脑。另外,CUDA版本不是越新越好,要看PyTorch支持哪个版本。
1.5 项目结构说明
我们这门课的项目结构是这样的:
yolo_tracking_course/
├── data/ # 存放数据集和视频文件
│ ├── videos/ # 测试视频
│ └── images/ # 测试图片
├── models/ # 存放预训练模型权重
├── utils/ # 工具函数
│ ├── __init__.py
│ ├── video_utils.py # 视频处理相关
│ └── vis_utils.py # 可视化相关
├── configs/ # 配置文件
│ └── config.yaml
├── notebooks/ # Jupyter Notebook教程
├── scripts/ # 可执行脚本
│ ├── detect_video.py # 视频检测
│ └── track_video.py # 视频追踪
├── requirements.txt # 依赖列表
└── README.md # 项目说明
这个结构是我多年项目经验总结出来的。你看,数据、模型、工具、配置、脚本,各归各类,找东西特别方便。后面每节课的代码都会放在对应的目录下。
好,第一课的内容就到这里。环境搭好后,建议你跑一下PyTorch的官方示例,确认GPU能正常工作。下一课我们就要开始写真正的检测代码了。
对了,有任何问题,欢迎在课程群里交流。我一般晚上会看消息,白天在写代码或者开会,回复可能慢点,但看到了一定回。
我们下节课见。