1. 课程导论与环境搭建
大家好,欢迎来到《YOLO边界框绘制与多目标跟踪实战》的第一章。
说实话,每次开始一个新课程,我最怕的就是环境搭建环节。我自己带团队的时候,经常有同学卡在第一步——装个环境装了两天,心态直接崩了。所以这一章,我会把每个步骤拆得细一点,让你少走弯路。
1.1 YOLO发展史:从v1到v8
YOLO,全称You Only Look Once。什么意思呢?就是只看一眼,就能把目标检测出来。
2015年,Joseph Redmon提出了YOLOv1。那时候的目标检测主流还是Faster R-CNN,速度慢得像蜗牛。YOLOv1直接把检测当成回归问题来做,一张图跑一次前向,框和类别全出来了。速度是快,但精度嘛……嗯,小目标基本漏光。
后来v2、v3陆续出来,v3算是经典之作。我当年做工业质检项目,用的就是YOLOv3。那时候在工厂的破机器上跑,还能保持30 FPS,真的很能打。
再往后,v4、v5、v6、v7……版本号跟打怪升级似的。直到2023年,Ultralytics推出了YOLOv8。它把检测、分割、分类、姿态估计全整合到一个框架里。说白了,一个库搞定所有视觉任务。
核心变化:YOLOv8抛弃了Anchor-Based,改用Anchor-Free。模型更轻,部署更方便。
1.2 多目标跟踪(MOT)概述
检测是一帧一帧做的,但跟踪不一样。跟踪要解决的是:这一帧里的这个人,跟上一帧里的那个人,是不是同一个人?
多目标跟踪(MOT)的核心逻辑,我总结成三步:
- 检测:用YOLO把每一帧里的目标框出来
- 特征提取:给每个框算一个特征向量(ReID)
- 数据关联:把当前帧的框跟历史轨迹匹配上
匹配算法里,最常用的是匈牙利算法和卡尔曼滤波。匈牙利算法解决「谁跟谁配对」的问题,卡尔曼滤波解决「目标下一帧会出现在哪」的问题。
我曾经在一个行人跟踪项目里踩过坑——摄像头有遮挡,人走过去就被柱子挡住。卡尔曼滤波参数没调好,跟踪ID疯狂跳变。后来我把运动模型从匀速改成匀加速,才稳住。
我的建议:刚开始学MOT,别一上来就搞DeepSORT。先跑通最简单的IOU匹配,理解数据关联的逻辑,再上特征提取。
1.3 知识体系总览
下面这张图,是我自己梳理的本章知识结构。你看一眼,心里就有谱了。
1.4 Anaconda与PyTorch环境配置
环境配置这块,我吃过不少亏。以前在公司,有个同事用系统自带的Python,装包装到一半把系统搞崩了。从那以后,我坚持用Anaconda做环境隔离。
1.4.1 安装Anaconda
去官网下载Anaconda,选Python 3.10以上的版本。安装时注意:
- Windows用户:勾选「Add Anaconda to my PATH」
- Linux/Mac用户:安装完记得
source ~/.bashrc
验证安装:
conda --version
# 输出类似 conda 23.7.4 就对了
1.4.2 创建虚拟环境
我个人习惯给每个项目建独立环境,避免包冲突。
conda create -n yolo_env python=3.10 -y
conda activate yolo_env
注意:不要用base环境做项目。我曾经图省事,直接在base里装PyTorch,结果另一个项目需要旧版,两个版本打架,折腾了一下午。
1.4.3 安装PyTorch
去PyTorch官网(pytorch.org)选对应配置。我一般用CUDA 11.8版本:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
验证GPU是否可用:
python -c "import torch; print(torch.cuda.is_available())"
# 输出 True 表示GPU可用
如果输出False,别慌。先检查驱动:nvidia-smi。如果驱动正常,可能是PyTorch版本跟CUDA版本不匹配。
1.5 YOLOv8源码下载与安装
YOLOv8是Ultralytics团队维护的。安装方式有两种,我推荐第二种。
| 方式 | 命令 | 适用场景 |
|---|---|---|
| pip安装 | pip install ultralytics |
快速使用,不修改源码 |
| 源码安装 | git clone + pip install -e . |
需要改源码、加自定义模块 |
我们做课程,肯定要源码安装:
git clone https://github.com/ultralytics/ultralytics.git
cd ultralytics
pip install -e .
-e 参数的意思是「可编辑模式」。你改了源码,不用重新安装,直接生效。
小技巧:装完跑一下官方demo,验证环境:
yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'
如果能正常输出检测结果,恭喜你,环境搭好了。
1.6 本章小结
这一章我们走完了三件事:
- 了解了YOLO从v1到v8的演进,知道它为什么快、为什么强
- 理清了多目标跟踪的流程:检测 → 特征提取 → 数据关联
- 搭好了Anaconda、PyTorch、YOLOv8的开发环境