1. 项目概述
YOLOv5作为当前最流行的目标检测框架之一,凭借其出色的速度和精度平衡,已经成为计算机视觉领域的标配工具。这个教程将带新手从零开始,用最简单的方式实现YOLOv5的完整工作流程。不同于官方文档的复杂说明,我会用最直白的语言和最小化的代码示例,让你在30分钟内跑通第一个检测demo。
我选择YOLOv5作为入门框架有三个原因:首先它的预训练模型开箱即用,其次Python接口对新手友好,最重要的是社区资源丰富遇到问题容易解决。下面我会从环境配置到模型推理,手把手演示如何避开新手常踩的坑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境配置
2.1 Python环境准备
推荐使用Python 3.8-3.10版本,这是经过验证与YOLOv5兼容性最好的版本范围。安装时务必勾选"Add Python to PATH"选项,这是后续能正常使用pip的关键。验证安装是否成功:
bash复制python --version
pip --version
如果遇到网络问题导致包下载失败,可以使用清华镜像源加速:
bash复制pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
2.2 关键依赖安装
YOLOv5的核心依赖是PyTorch和Ultralytics库。建议先单独安装PyTorch再安装YOLOv5:
bash复制# 安装PyTorch(根据CUDA版本选择对应命令)
pip install torch torchvision torchaudio
# 安装YOLOv5
pip install ultralytics
注意:如果遇到"could not fetch url https://pypi.org/simple/ultralytics"报错,说明网络连接有问题,可以尝试切换镜像源或使用代理工具。
3. 快速上手
3.1 加载预训练模型
用5行代码就能加载COCO预训练模型并执行检测:
python复制from ultralytics import YOLO
# 加载模型(自动下载yolov5s.pt)
model = YOLO('yolov5s.pt')
# 图片检测
results = model('bus.jpg')
results[0].show()
首次运行时会自动下载约14MB的yolov5s模型文件。如果想使用其他规格的模型,只需替换为'yolov5n.pt'(最小)、'yolov5m.pt'(中等)或'yolov5l.pt'(大模型)。
3.2 实时摄像头检测
实现摄像头实时检测同样简单:
python复制import cv2
from ultralytics import YOLO
model = YOLO('yolov5s.pt')
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
results = model(frame)
annotated_frame = results[0].plot()
cv2.imshow('YOLOv5 Detection', annotated_frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
4. 进阶使用
4.1 训练自定义数据集
准备数据集需要遵循YOLO格式:
- 图片和标注文件同名(如image1.jpg和image1.txt)
- 标注文件每行格式:class x_center y_center width height(归一化坐标)
目录结构示例:
code复制dataset/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
训练命令:
bash复制yolo train data=custom.yaml model=yolov5s.pt epochs=100 imgsz=640
4.2 模型导出与部署
YOLOv5支持导出多种格式:
python复制model.export(format='onnx') # 导出ONNX
model.export(format='tflite') # 导出TFLite
在Jetson Nano等边缘设备部署时,建议使用TensorRT加速:
bash复制yolo export model=yolov5s.pt format=engine device=0
5. 常见问题解决
5.1 安装问题排查
-
报错"cv2.imdecode报错":通常是因为OpenCV版本冲突,尝试:
bash复制
pip uninstall opencv-python opencv-python-headless -y pip install opencv-python-headless -
CUDA不可用:先验证PyTorch是否能识别GPU:
python复制import torch print(torch.cuda.is_available())
5.2 检测效果优化
-
小目标检测不准:尝试:
- 减小imgsz参数(如从640改为320)
- 使用更大模型(如yolov5m)
- 数据增强中添加小目标专用策略
-
检测框偏移:通常是训练数据标注不准确导致,建议:
- 检查标注工具是否设置正确
- 验证标注文件中的坐标值是否规范
6. 性能调优技巧
6.1 模型选择策略
根据设备性能选择合适模型:
| 模型 | 参数量 | 速度(FPS) | 适用场景 |
|---|---|---|---|
| yolov5n | 1.9M | 120+ | 移动端/嵌入式 |
| yolov5s | 7.2M | 80-100 | 通用场景 |
| yolov5m | 21.2M | 40-60 | 精度优先 |
| yolov5l | 46.5M | 20-30 | 服务器部署 |
6.2 推理加速技巧
-
使用半精度推理:
python复制model = YOLO('yolov5s.pt').half() -
启用TensorRT加速(需要NVIDIA GPU):
python复制model = YOLO('yolov5s.pt').cuda() -
对于树莓派等ARM设备,建议使用NCNN或TFLite部署
我在实际项目中发现,合理调整conf(置信度阈值)和iou(重叠阈值)能显著提升实用效果。一般建议:
- 高密度场景:conf=0.4, iou=0.5
- 精准检测需求:conf=0.6, iou=0.3
