news 2026/9/6 3:06:06

YOLOv5目标检测学习路径:从入门到部署的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLOv5目标检测学习路径:从入门到部署的完整指南

很多同学做目标检测相关课题时,第一反应就是“先跑通 YOLOv5”,结果一上来就被环境配置、数据集格式、训练参数、模型部署各种概念淹没。网上的资料虽然多,但碎片化严重:今天看到一个讲 backbone 的视频,明天刷到一个调参的博客,学了一两周还在原地打转,时间就这样浪费掉了。

这篇文章我结合自己做目标检测课题和项目的经验,把 YOLOv5 的学习路径重新梳理了一遍,分成“入门 → 拓展 → 进阶 → 部署”四个阶段。每个阶段需要掌握什么、需要做哪些实验、常见的坑在哪里,都会讲清楚。如果你正在做目标检测相关的毕业设计、课程项目或者科研课题,按这个顺序走,可以少走很多弯路。

1. 先搞清楚目标检测和 YOLOv5 到底是什么

1.1 目标检测解决什么问题

在正式开始学 YOLOv5 之前,先把目标检测这个任务本身搞清楚,后面所有操作才有方向。

目标检测的任务是:在一张图片中找出所有感兴趣的目标,并同时给出每个目标的类别和位置。位置通常用一个矩形框(Bounding Box)来表示,比如左上角坐标、宽和高。

目标检测和图像分类的区别很直观:

任务输入输出
图像分类一张图这张图的类别,比如“猫”
目标检测一张图图中每个目标的类别和位置,比如“猫在(x1,y1,x2,y2)”
图像分割一张图图中每个像素的类别,目标边界更精细

所以目标检测比分类更难,它不仅要回答“这是什么”,还要回答“在哪里”。

1.2 YOLO 系列的核心思想

YOLO 的全称是 You Only Look Once,意思是“你只需要看一次”。这个思想在 2016 年由 Joseph Redmon 提出,和当时主流的 Two-Stage 方法(比如 Faster R-CNN)思路完全不同。

Two-Stage 方法是先产生候选区域(Region Proposal),再对候选区域进行分类和回归,精度高但速度慢。YOLO 选择了一条更激进的路:把检测问题直接定义为一个回归问题,一次前向传播同时输出所有目标的类别和位置

YOLO 的推理过程可以概括为三步:

  1. 把输入图片划分成 S×S 的网格。
  2. 每个网格负责预测固定数量的边界框。
  3. 通过网络一次前向计算,直接输出所有框的坐标、置信度和类别概率。

这也是“You Only Look Once”名字的来源。因为只有一次前向计算,YOLO 的速度非常快,实时性很强,非常适合视频流、嵌入式设备这类对推理速度有要求的场景。

1.3 为什么课题选 YOLOv5

YOLOv5 是 Ultralytics 公司在 2020 年发布的 YOLO 系列版本。虽然 YOLOv5 这个名字在学术圈有一定争议(因为作者没有发表正式论文),但在工程落地和课题研究层面,它依然是一个非常合适的选择,原因如下:

  • 代码结构清晰,文档齐全:YOLOv5 官方仓库的代码组织得很规范,数据加载、模型定义、训练流程、推理脚本都比较容易读懂。
  • 生态成熟,资料丰富:网上关于 YOLOv5 的教程、博客、视频、开源项目非常多,遇到问题基本都能搜到解决方案。
  • 训练和部署成本适中:相比更新的一些大模型,YOLOv5 对显存的要求不算高,普通单卡 GPU 就能训练,部署到 CPU、移动端、边缘设备都有成熟的方案。
  • 改进空间大:很多课题都需要在 baseline 上做改进,YOLOv5 的结构简单清晰,改起来相对容易,适合做创新点。

如果你的课题方向是“基于改进 YOLOv5 的××检测”,那 YOLOv5 天然就是你的 baseline,后面的学习路线完全适用。

2. 整体学习路线一览

我把 YOLOv5 的学习分成四个阶段,每个阶段有明确的目标和里程碑。

阶段核心目标关键动作产出成果
第一阶段:入门跑通 YOLOv5 官方代码,理解基本概念环境搭建、官方推理、训练自己的数据集能用自己的数据训练出一个模型
第二阶段:拓展理解训练细节,掌握调参与评估数据增强、超参数分析、评价指标、训练策略能分析模型好坏,知道怎么调参
第三阶段:进阶理解网络结构,做模型改进源码阅读、模块改进、注意力机制、轻量化能提出并实现自己的改进方案
第四阶段:部署把模型部署到实际场景ONNX 导出、推理优化、嵌入式部署模型在目标平台跑起来

这四阶段不是完全割裂的,而是层层递进。入门阶段解决“能不能跑”,拓展阶段解决“跑得好不好”,进阶阶段解决“怎么改得更好”,部署阶段解决“怎么用起来”。

如果你是初学者,千万别跳过第二阶段直接进入第三阶段。很多人一上来就去看 YOLOv5 的网络结构源码,结果因为对训练流程、损失函数、评价指标不熟,看得云里雾里。先跑通实验、看懂指标,再去看结构,效率会高很多。

3. 第一阶段:入门——先跑通,再理解

3.1 环境搭建

YOLOv5 的环境搭建是整个学习过程中第一个“劝退点”,但其实只要搞清楚依赖关系,并不复杂。

YOLOv5 基于 PyTorch 实现,核心环境包括:

  • Python 3.8 及以上
  • PyTorch 1.8 及以上(建议用稳定版)
  • CUDA 和 cuDNN(如果使用 GPU 训练)
  • OpenCV、Matplotlib、Pillow、tqdm、numpy 等常用库

建议使用 Anaconda 创建独立的虚拟环境,避免和系统 Python 环境互相干扰:

# 创建虚拟环境 conda create -n yolov5 python=3.8 # 激活虚拟环境 conda activate yolov5 # 安装 PyTorch(根据你的 CUDA 版本选择命令,这里以 CUDA 11.3 为例) pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113

不一定要完全照搬这个版本号,但要注意 PyTorch、CUDA、显卡驱动三者之间的对应关系。一个简单的判断方式是:在终端输入nvidia-smi查看驱动支持的 CUDA 版本,然后选择不高于这个版本的 CUDA 对应 PyTorch。

安装完成后,克隆 YOLOv5 仓库并安装依赖:

git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt

这里要注意,requirements.txt里包含了训练和推理所需的所有 Python 包,缺一不可。如果安装过程中网络不稳定,可以分段安装。

3.2 跑官方推理,感受一下效果

环境搭建完成后,先不要急着训练。先用官方训练好的权重跑一下推理,看看 YOLOv5 的效果和输出格式。

python detect.py --weights yolov5s.pt --source data/images/bus.jpg

第一次运行会自动下载yolov5s.pt预训练权重文件,并在runs/detect/目录下生成带检测框的结果图片。看到检测框的那一刻,你对 YOLOv5 的“输入-输出”关系就有了直观感受。

detect.py支持的输入源很丰富,包括单张图片、文件夹、视频文件和摄像头:

# 检测视频 python detect.py --weights yolov5s.pt --source test.mp4 # 检测摄像头(0表示本机第一个摄像头) python detect.py --weights yolov5s.pt --source 0

这一阶段不用深究代码内部逻辑,只需要搞清楚几个问题:

  • 输入图片经过网络后输出了什么?
  • 输出的坐标是什么坐标系下的?
  • 置信度阈值和 NMS 起什么作用?

3.3 准备自己的数据集

课题研究几乎都要用到自己的数据集。YOLOv5 支持两种标注格式,但最常用的是 YOLO 格式。

YOLO 格式的标注文件是.txt文件,每一行代表一个目标,格式如下:

类别id 中心点x 中心点y 宽度w 高度h

注意,这里的 x、y、w、h 都是相对图片宽高的归一化值,取值范围在 0 到 1 之间。比如,一张 640×640 的图片上有一个目标,中心点在 (320, 320),宽高都是 160,那么标注行是:

0 0.5 0.5 0.25 0.25

数据集目录结构需要按 YOLOv5 的要求组织:

datasets/ └── mydataset/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/

标注工具推荐 LabelImg 或 X-AnyLabeling。LabelImg 是老牌工具,X-AnyLabeling 支持更多辅助标注功能。标注完成后,会生成与图片同名的.txt文件。

数据集准备好后,需要写一个数据集配置文件mydataset.yaml

# 文件路径:yolov5/data/mydataset.yaml path: ../datasets/mydataset # 数据集根目录 train: images/train # 训练集图片路径 val: images/val # 验证集图片路径 nc: 2 # 类别数量 names: ['cat', 'dog'] # 类别名称,顺序要和标注id对应

3.4 训练自己的第一个模型

数据准备好了,开始训练:

python train.py \ --data mydataset.yaml \ --weights yolov5s.pt \ --epochs 100 \ --batch-size 16 \ --img 640

这里解释几个关键参数:

  • --data:数据集配置文件路径。
  • --weights:预训练权重路径。使用yolov5s.pt做迁移学习初始化,比从头训练收敛快得多。
  • --epochs:训练轮数。课题前期可以先跑 100 轮看效果。
  • --batch-size:批大小,受限于 GPU 显存。显存不够就调小。
  • --img:输入图片分辨率。YOLOv5 默认是 640。

训练过程中,终端会打印每个 epoch 的 loss、mAP、速度等信息,同时在runs/train/下生成训练日志和图表。训练结束后,runs/train/exp/weights/目录下会生成best.pt(验证集上效果最好的权重)和last.pt(最后一轮的权重)。

到这里,你已经完成了“用自己的数据训练模型”的完整流程。这一阶段的目标就达成了。

4. 第二阶段:拓展——搞懂训练细节和评价标准

4.1 训练过程中评价标准:mAP 怎么看

很多初学者训练完模型后,只盯着 loss 曲线看,其实更重要的是 mAP 指标。

mAP 的全称是 mean Average Precision,中文是“平均精度均值”。它综合考虑了模型在不同置信度阈值下的精度和召回率,是目标检测领域最常用的评价指标。

要理解 mAP,先要理解几个基础概念:

概念含义
TP (True Positive)预测正确,且 IoU 大于阈值的检测框
FP (False Positive)预测错误,IoU 小于阈值或预测了不存在的目标
FN (False Negative)漏检,真实目标没有被检测出来
Precision 精度TP / (TP + FP),检测出来的框有多少是准确的
Recall 召回率TP / (TP + FN),真实目标有多少被检测出来了

mAP 的常见变体有mAP@0.5mAP@0.5:0.95。前者表示 IoU 阈值为 0.5 时的 mAP,后者表示 IoU 从 0.5 到 0.95(步长 0.05)共 10 个阈值下的平均 mAP。YOLOv5 训练日志中默认会同时输出这两个指标。

看训练结果时有一个常见误区:只看 mAP@0.5,忽略 mAP@0.5:0.95。如果你的课题需要精确定位(比如医学图像、工业质检),mAP@0.5:0.95 更重要。如果你的课题只关心目标大致位置,mAP@0.5 也够用。

4.2 数据增强策略

YOLOv5 内置了丰富的数据增强策略,包括:

  • Mosaic:把 4 张图拼接成一张,增加目标尺度的多样性。
  • MixUp:两张图按比例混合。
  • 随机 HSV 变化、平移、缩放、旋转、翻转。

这些数据增强策略在hyp.scratch-low.yaml中通过超参数控制。比如:

# hyp.scratch-low.yaml 片段 hsv_h: 0.015 # 色调变化范围 hsv_s: 0.7 # 饱和度变化范围 hsv_v: 0.4 # 明度变化范围 degrees: 0.0 # 旋转角度 translate: 0.1 # 平移比例 scale: 0.5 # 缩放比例 fliplr: 0.5 # 水平翻转概率 mosaic: 1.0 # Mosaic 增强概率

在课题中,数据增强策略完全可以作为改进点。比如小目标检测任务中,Mosaic 对小目标效果较好,但如果你的数据集目标尺度本身很单一,过度增强反而可能影响性能。这时候可以针对性地调整增强参数,并通过对比实验证明你的策略更优。

4.3 超参数调优

YOLOv5 训练涉及的超参数很多,但课题阶段不需要全部调整,重点关注的只有几个:

超参数默认值作用调整建议
lr00.01初始学习率学习率过大容易发散,过小收敛慢
batch-size16批大小显存允许时尽量大一些,训练更稳定
img-size640输入分辨率小目标任务可以提高到 1280
epochs100-300训练轮数先跑 100 轮看趋势
patience100早停耐心值验证集不提升时自动停止

YOLOv5 还提供了自动调参工具,可以通过遗传算法搜索超参数组合:

python train.py --data mydataset.yaml --weights yolov5s.pt --evolve --epochs 50

不过这个功能计算量很大,课题时间有限的情况下不建议在初期使用。建议先手动跑几组对比实验,找到大致合适的范围,再用工具精调。

4.4 训练策略与迁移学习

训练 YOLOv5 时,是否使用预训练权重对最终效果影响很大。从头训练(--weights '')需要更多的数据和更长的训练时间,尤其对小型数据集来说,效果往往不如迁移学习。

使用预训练权重时,有两个细节值得注意:

  1. 冻结权重训练:可以先用--freeze 10冻结前 10 层,让模型先适应新数据集的数据分布,后续再解冻微调。
  2. 不同规模的预训练模型yolov5s.ptyolov5m.ptyolov5l.pt对应不同大小的模型。计算资源有限时用yolov5s起步,课题对精度要求高并且显存足够时再升级到yolov5myolov5l

5. 第三阶段:进阶——读懂源码并做出改进

5.1 YOLOv5 网络结构拆解

YOLOv5 的网络结构主要由三部分组成:

输入图片 ↓ Backbone(骨干网络) ↓ Neck(特征融合网络) ↓ Head(检测头) ↓ 输出检测结果

Backbone负责提取图片特征。YOLOv5 的 Backbone 基于 CSPNet 设计,核心模块是 C3(CSP Bottleneck with 3 convolutions)。C3 模块把特征图分成两条路径,一条经过若干 Bottleneck,另一条直接连接,最后在末端融合。这种结构在减少计算量的同时保持了特征提取能力。

Neck负责多尺度特征融合。YOLOv5 使用 PANet(Path Aggregation Network)结构,它包含自顶向下和自底向上两条路径。自顶向下路径把高层语义信息传递到底层特征,自底向上路径把底层细节信息传递到高层特征。这样,不同尺度的特征图都能同时包含语义信息和空间信息。

Head负责最终预测。YOLOv5 的 Head 在三个不同尺度的特征图上分别预测,形成三组输出。每组输出包含边界框坐标、置信度和类别概率。最后通过 NMS(非极大值抑制)去除重复的检测框。

5.2 注意力机制改进

课题中最常见的改进思路是引入注意力机制。注意力机制可以让模型自动关注图片中更重要的区域,忽略无关信息。

以 SE(Squeeze-and-Excitation)注意力机制为例,它的核心思想是:通过学习每个通道的权重,让模型知道哪些特征通道更重要。

# 伪代码示意:SE 注意力模块 class SEBlock(nn.Module): def __init__(self, channels, reduction=16): super().__init__() self.squeeze = nn.AdaptiveAvgPool2d(1) self.excitation = nn.Sequential( nn.Linear(channels, channels // reduction), nn.ReLU(), nn.Linear(channels // reduction, channels), nn.Sigmoid() ) def forward(self, x): # x shape: [B, C, H, W] b, c, _, _ = x.size() y = self.squeeze(x).view(b, c) y = self.excitation(y).view(b, c, 1, 1) return x * y.expand_as(x)

把 SE 模块嵌入 YOLOv5 的 C3 模块中,或者替换 Neck 部分的模块,就构成了一个简单的改进方案。类似的注意力机制还有 CBAM、ECA、CA 等,都可以作为课题创新点。

需要提醒的是,改进不能只是为了“换一个模块”。一个合格的课题改进需要回答三个问题:

  1. 为什么要改进?现有方法的瓶颈在哪里?
  2. 改进是否针对你的任务特点?
  3. 通过对比实验证明改进有效。

5.3 小目标检测改进

如果课题涉及小目标检测,有一个专门的方向值得关注:增加小目标检测头。

YOLOv5 默认在三个尺度上做预测,分别是下采样 8 倍、16 倍和 32 倍的特征图。对于小目标(比如图片中只有十几个像素的目标),下采样 32 倍后的特征图基本丢失了目标信息。一种常见的改进是再增加一个下采样 4 倍的特征图用于预测,也就是增加 P2 检测头。

# 修改 YOLOv5 模型配置文件中的检测头部分 # detect: [nc, anchors, [P2, P3, P4, P5]] # 由3个尺度改为4个尺度

这种改动会带来一定的计算量增加,但对小目标检测精度的提升往往非常明显。类似的思路还有在 Neck 中加入更浅层的特征,或者使用更精细的上采样方式。

5.4 损失函数与训练细节优化

YOLOv5 默认使用 CIoU 作为边界框回归损失,它综合考虑了重叠面积、中心点距离和长宽比。除了 CIoU,常见的还有 GIoU、DIoU、SIoU 等。

如果你发现模型收敛慢或者边界框定位不准,可以尝试替换损失函数。YOLOv5 的损失函数在utils/loss.py中定义,改动相对简单。

在训练细节上,有几个容易被忽略的点:

  • 学习率调度:YOLOv5 默认使用余弦退火调度,可以在训练后期有效微调模型。
  • Warmup:训练开始阶段先使用较小的学习率热身,避免模型初期震荡。
  • EMA(指数移动平均):对模型参数做指数移动平均,相当于取多轮训练参数的加权平均,可以提升模型的泛化能力。

6. 第四阶段:部署——让模型真正跑起来

6.1 部署的基本思路

训练和部署是两个不同的问题。训练阶段关注精度,部署阶段关注速度、内存占用和运行环境。

YOLOv5 官方提供了完善的导出工具,可以把 PyTorch 模型转换成多种部署格式:

导出格式后缀适用场景
PyTorch.pt继续训练、推理验证
ONNX.onnx跨平台通用,适合服务端部署
TensorRT.engineNVIDIA GPU 上推理速度最快
TorchScript.torchscriptC++ 调用、移动端部署
CoreML.mlmodelApple 设备
TFLite.tflite移动端、嵌入式设备

导出命令示例:

python export.py --weights runs/train/exp/weights/best.pt --include onnx

6.2 ONNX 导出与推理

ONNX(Open Neural Network Exchange)是一种跨框架的模型表示格式。导出 ONNX 的最大意义是解耦训练框架和推理框架。

ONNX 导出时常见的问题是算子兼容性。有些 PyTorch 算子可能无法直接映射到 ONNX 算子,或者不同版本之间行为有差异。遇到这类问题,可以尝试:

  1. 升级 ONNX 和 onnxruntime 版本。
  2. 检查 PyTorch 中是否有自定义算子。
  3. 设置--opset 12或更高版本。

ONNX 模型可以使用 onnxruntime 进行推理:

import onnxruntime as ort import numpy as np from PIL import Image # 加载 ONNX 模型 session = ort.InferenceSession('best.onnx', providers=['CUDAExecutionProvider', 'CPUExecutionProvider']) # 输入预处理(以 640x640 输入为例) image = Image.open('test.jpg').resize((640, 640)) input_data = np.array(image).astype(np.float32) / 255.0 input_data = np.transpose(input_data, (2, 0, 1))[None, ...] # 模型推理 outputs = session.run(None, {session.get_inputs()[0].name: input_data})

6.3 TensorRT 部署与加速

如果部署环境是 NVIDIA GPU,TensorRT 是性能最优的方案。TensorRT 会对模型做层融合、精度校准、内存优化等操作,推理速度可以比原始 PyTorch 模型快几倍。

YOLOv5 导出 TensorRT 引擎的流程大致如下:

python export.py --weights best.pt --include engine --device 0

TensorRT 支持 FP16 和 INT8 量化。FP16 量化通常能带来近一倍的加速,而精度损失很小。INT8 量化加速效果更明显,但需要校准数据,且精度损失可能比较大。课题部署阶段建议先尝试 FP16。

6.4 常见部署场景

YOLOv5 的部署场景主要有三种:

服务端部署:模型部署在服务器上,通过 HTTP 接口(比如 FastAPI)对外提供服务。这种方案的优点是通用性好,客户端无需安装深度学习环境。核心流程是加载模型、接收图片、前处理、推理、后处理、返回结果。

# FastAPI 部署示例(核心片段) from fastapi import FastAPI, UploadFile import uvicorn app = FastAPI() @app.post("/detect") async def detect(file: UploadFile): image_bytes = await file.read() # 这里写图片解码、模型推理、结果封装逻辑 return {"result": "检测结果"} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)

嵌入式部署:部署到 Jetson Nano、树莓派等边缘设备上。树莓派上跑 YOLOv5 可以先用官方导出为 TorchScript 或 ONNX,再配合 OpenCV 做视频流推理,需要注意设备散热和功耗限制。

移动端部署:导出为 TFLite 或 CoreML 后集成到 App 中。移动端部署需要关注模型大小和内存占用,通常还需要做模型压缩和量化。

6.5 部署时的前后处理

部署后处理是整个推理链路中最容易出错的地方。YOLOv5 的原始输出是一个很大的张量,需要通过后处理得到最终的检测框。

关键步骤包括:

  1. 解码:把网络输出的偏移量还原为真实的边界框坐标。
  2. 过滤:根据置信度阈值过滤低质量检测框。
  3. NMS:去除重复的检测框。
  4. 坐标变换:把归一化坐标映射回原图尺寸。

其中 NMS 在后处理中计算量最大,当检测目标数量很多时可能成为瓶颈。可以使用 Fast NMS 或者降低输入分辨率来优化。

7. 目标检测课题高频问题排查

7.1 环境相关问题

问题现象常见原因解决思路
训练时不使用 GPUPyTorch 版本和 CUDA 不匹配检查torch.cuda.is_available(),重装匹配版本的 PyTorch
显存不足 OOMbatch-size 过大或输入分辨率过高调小 batch-size,或使用梯度累积
训练时 CPU 占用过高数据加载线程数设置过大调小--workers参数
程序启动时报缺包requirements.txt 未完整安装重新执行pip install -r requirements.txt

7.2 数据集与训练问题

问题现象常见原因解决思路
loss 一直不降学习率过大或数据标注有误降低学习率,检查标注文件
mAP 为 0数据集配置类别数或类别名称错误检查yaml文件和标注 id 是否对应
训练结果都是背景正负样本不均衡增加数据增强,调整置信度阈值
验证集指标很低但训练集很高过拟合增加数据量,使用更强数据增强,增大正则化

7.3 部署问题

问题现象常见原因解决思路
ONNX 导出失败算子不兼容或版本过低升级 onnx、设置更高的 opset
推理结果和 PyTorch 不一样预处理和后处理不一致严格对齐输入尺寸、归一化方式
TensorRT 引擎构建慢模型较大使用 FP16 构建,或分批次构建
嵌入式设备推理帧率低模型过大、算力不够使用轻量化模型、量化、裁剪输入分辨率

8. 目标检测课题的工程建议

8.1 建立实验记录习惯

做课题研究,最忌讳“训练完就忘”。每次实验都要记录以下信息:

  • 数据集版本和划分方式。
  • 训练超参数配置。
  • 使用的预训练权重。
  • 关键指标(mAP@0.5、mAP@0.5:0.95、参数量、推理耗时)。
  • 修改的代码或配置。

推荐使用表格记录,也可以直接用 Markdown 写实验日志。很多同学到写论文时才想起来补数据,结果发现当时没记录,非常被动。

8.2 关注数据质量而不是只调参数

当训练效果不理想时,优先检查数据,而不是盲目调参。以下几个数据问题比超参数更容易影响模型效果:

  • 标注框是否准确:标注不准确会直接限制模型的上限。
  • 类别是否平衡:某些类别样本过少,模型容易欠拟合这些类。
  • 训练集和验证集划分是否合理:如果划分不当,验证集指标会失真。
  • 图片清晰度:模糊、过暗的图片会让模型学习到错误特征。

8.3 对比实验的设计

课题中需要做对比实验来证明改进方法的有效性。建议保持以下变量一致:

  • 相同的数据集和训练/验证划分。
  • 相同的训练超参数和训练轮数。
  • 相同的输入分辨率和测试方式。

一次只改变一个变量。如果你同时改了网络结构和损失函数,实验结果无法归因于任何一个改进点。

8.4 不要盲目追求高指标

很多同学陷入一个误区:mAP 越高越好,于是疯狂调参、堆模块,最后模型复杂度太高,完全无法部署。实际上,课题和工程都应该在“精度-速度-复杂度”之间找到平衡点。

一个实用的做法是:除了 mAP,同时记录模型的参数量、计算量(FLOPs)、单帧推理时间。这样的对比才有说服力,也符合工程实践的习惯。

9. 学习资源与下一步方向

9.1 核心学习资源

  • YOLOv5 官方仓库:源码、模型配置、训练教程都在这里。
  • Ultralytics 官方文档:参数解释比较全,适合查阅。
  • YOLOv5 源码解析类博客:可以帮助理解模型细节,但要自己动手验证。

看源码时有一个建议:不要从头到尾一行行读,而是带着问题看。比如“C3 模块的 forward 做了什么”“损失函数是怎么计算的”“NMS 在哪一步执行”。带着问题看代码,效率更高。

9.2 下一步可以深入的方向

掌握 YOLOv5 之后,可以按兴趣往以下几个方向深入:

  • YOLOv8 或更新版本:了解 YOLO 系列的发展趋势和各自的改进点。
  • 轻量化模型:MobileNet、ShuffleNet 等骨干网络替换。
  • Transformer 检测器:DETR、Deformable DETR 等基于注意力机制的检测模型。
  • 多模态目标检测:结合红外、深度图等其他模态的信息。
  • 模型量化与剪枝:进一步的模型压缩和加速技术。

如果课题时间充足,建议至少了解 YOLOv8 和 DETR 的基本思想。做目标检测只会一个 YOLOv5 是不够的,但在入门阶段,YOLOv5 依然是最好的起点。

10. 总结

这篇文章把 YOLOv5 的学习过程拆成了四个阶段:入门阶段跑通环境并训练自己的模型,拓展阶段搞懂数据增强、超参数和评价指标,进阶阶段阅读源码并做出改进,部署阶段把模型转换到目标平台。按照这个顺序走,目标检测课题从零到出成果的时间可以大大缩短。

最后想说的是,学 YOLOv5 最忌讳的是“只看不练”。环境配好了就立刻跑一次推理,数据集准备好了就马上启动训练,遇到报错先去查日志而不是直接百度答案。只有亲手跑通一次完整的“数据-训练-评估-部署”流程,你才算真正迈进了目标检测的大门。

如果这篇文章对你有帮助,可以收藏备用,也欢迎在评论区交流你在 YOLOv5 训练和部署中遇到的问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 3:02:07

广东十大井盖品牌之重投井盖:品质赋能城市基建

是城市地下管网系统的核心配套,直接关联道路通行安全与基建稳定性。重投井盖作为广东十大井盖品牌之一,隶属于广东重投钢铁有限公司,总部坐落于佛山顺德乐从,依托当地钢铁产业集群优势,形成研发、生产、销售、服务一体…

作者头像 李华
网站建设 2026/9/6 3:01:16

10行代码替代3天标注,发版当天智能体却把差评判成好评

10行代码替代3天标注,发版当天智能体却把差评判成好评 我盯着后台飙升的投诉曲线,手有点抖。发版才过了一个工作日,客服主管已经在钉钉群里连发了三条消息:“你们的智能体是不是疯了?用户明明在骂产品,它居然回复‘感谢您的支持,我们会继续努力’。” 事情要从一周前说起。我…

作者头像 李华
网站建设 2026/9/6 2:55:11

OpenAI更新解析:GPT-5.6、ChatGPT Work与Codex CLI实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 2:53:45

AI巨头冲刺2万亿美元:泡沫还是终极解法

《两万亿上市,卖的不是算法》——超级IPO真正接受审视的,是权力如何被约束“当一家AI公司估值冲向2万亿美元,最稀缺的已不是算力,而是信任。”据披露,这家人工智能巨头拟任命两家华尔街顶级投行担任上市核心角色&#…

作者头像 李华
网站建设 2026/9/6 2:48:56

瑞德克斯平台:平台市场观察表达为什么容易留下印象

从公开信息与服务细节来看,瑞德克斯平台比较突出的地方,在于能把零散信息整理成连续的服务印象。无论是页面提示还是使用过程中的衔接感,都能让整体感受显得更具体。在外汇相关服务中,用户最在意的通常是信息是否清楚、提示是否到…

作者头像 李华