YOLOv5详细教程
目录
1. YOLOv5简介
1.1 什么是YOLOv5?
YOLOv5(You Only Look Once v5)是由Ultralytics公司开发的目标检测算法,基于PyTorch实现。它是YOLO系列的第五代,具有以下特点:
- 实时性强:可以达到实时检测的效果
- 精度高:在保持速度的同时维持较高的检测精度
- 易于使用:提供了完整的训练和推理流程
- 模型多样:提供不同大小的模型适应不同需求
1.2 YOLOv5的优势
- 🚀 快速训练:相比其他算法训练时间更短
- 📱 移动端友好:支持导出为多种格式(ONNX、TensorRT等)
- 🎯 高精度:在COCO数据集上表现优秀
- 🛠️ 易于定制:支持自定义数据集训练
2. 环境安装
2.1 系统要求
- Python 3.7+
- PyTorch 1.7+
- CUDA 10.2+(GPU加速)
2.2 安装步骤
方式一:从GitHub克隆
# 克隆YOLOv5仓库
git clone https://github.com/ultralytics/yolov5
cd yolov5
# 安装依赖
pip install -r requirements.txt
方式二:使用conda创建环境
# 创建虚拟环境
conda create -n yolov5 python=3.8
conda activate yolov5
# 安装PyTorch(根据你的CUDA版本选择)
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
# 安装其他依赖
pip install ultralytics
2.3 验证安装
import torch
import ultralytics
print(f"PyTorch版本: {
torch.__version__}")
print(f"CUDA可用: {
torch.cuda.is_available()}")
print(f"Ultralytics版本: {
ultralytics.__version__}")
3. YOLOv5架构详解
3.1 整体架构
YOLOv5由三个主要部分组成:
- Backbone(骨干网络):CSPDarknet53
- Neck(颈部网络):PANet
- Head(检测头):YOLOv5 Head
输入图像 -> Backbone -> Neck -> Head -> 输出
↓
特征提取
3.2 模型变体
YOLOv5提供了5个不同大小的模型:
模型 | 参数量 | FLOPs | 速度 | 精度 |
---|---|---|---|---|
YOLOv5n | 1.9M | 4.5G | ⭐⭐⭐⭐⭐ | ⭐⭐ |
YOLOv5s | 7.2M | 16.5G | ⭐⭐⭐⭐ | ⭐⭐⭐ |
YOLOv5m | 21.2M | 49.0G | ⭐⭐⭐ | ⭐⭐⭐⭐ |
YOLOv5l | 46.5M | 109.1G | ⭐⭐ | ⭐⭐⭐⭐⭐ |
YOLOv5x | 86.7M | 205.7G | ⭐ | ⭐⭐⭐⭐⭐ |
3.3 关键技术
- CSP结构:减少计算量同时保持精度
- Focus模块:提高特征提取效率
- PANet:增强特征金字塔网络
- Mosaic数据增强:提高模型泛化能力
4. 数据准备
4.1 数据集格式
YOLOv5使用YOLO格式的标注文件:
数据集结构:
dataset/
├── images/
│ ├── train/
│ └── val/
└── labels/
├── train/
└── val/
4.2 标注格式
每个图像对应一个.txt文件,格式为:
class_id center_x center_y width height
其中坐标都是相对值(0-1)。
4.3 创建数据集配置文件