恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
YOLOv5目标检测学习路径:从入门到部署的完整指南
首页
资讯中心
/
YOLOv5目标检测学习路径:从入门到部署的完整指南
YOLOv5目标检测学习路径:从入门到部署的完整指南
发布时间:2026/9/6 3:06:48
很多同学做目标检测相关课题时第一反应就是“先跑通 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 的推理过程可以概括为三步把输入图片划分成 S×S 的网格。每个网格负责预测固定数量的边界框。通过网络一次前向计算直接输出所有框的坐标、置信度和类别概率。这也是“You Only Look Once”名字的来源。因为只有一次前向计算YOLO 的速度非常快实时性很强非常适合视频流、嵌入式设备这类对推理速度有要求的场景。1.3 为什么课题选 YOLOv5YOLOv5 是 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 python3.8 # 激活虚拟环境 conda activate yolov5 # 安装 PyTorch根据你的 CUDA 版本选择命令这里以 CUDA 11.3 为例 pip install torch1.12.1cu113 torchvision0.13.1cu113 --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 的常见变体有mAP0.5和mAP0.5:0.95。前者表示 IoU 阈值为 0.5 时的 mAP后者表示 IoU 从 0.5 到 0.95步长 0.05共 10 个阈值下的平均 mAP。YOLOv5 训练日志中默认会同时输出这两个指标。看训练结果时有一个常见误区只看 mAP0.5忽略 mAP0.5:0.95。如果你的课题需要精确定位比如医学图像、工业质检mAP0.5:0.95 更重要。如果你的课题只关心目标大致位置mAP0.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输入分辨率小目标任务可以提高到 1280epochs100-300训练轮数先跑 100 轮看趋势patience100早停耐心值验证集不提升时自动停止YOLOv5 还提供了自动调参工具可以通过遗传算法搜索超参数组合python train.py --data mydataset.yaml --weights yolov5s.pt --evolve --epochs 50不过这个功能计算量很大课题时间有限的情况下不建议在初期使用。建议先手动跑几组对比实验找到大致合适的范围再用工具精调。4.4 训练策略与迁移学习训练 YOLOv5 时是否使用预训练权重对最终效果影响很大。从头训练--weights 需要更多的数据和更长的训练时间尤其对小型数据集来说效果往往不如迁移学习。使用预训练权重时有两个细节值得注意冻结权重训练可以先用--freeze 10冻结前 10 层让模型先适应新数据集的数据分布后续再解冻微调。不同规模的预训练模型yolov5s.pt、yolov5m.pt、yolov5l.pt对应不同大小的模型。计算资源有限时用yolov5s起步课题对精度要求高并且显存足够时再升级到yolov5m或yolov5l。5. 第三阶段进阶——读懂源码并做出改进5.1 YOLOv5 网络结构拆解YOLOv5 的网络结构主要由三部分组成输入图片 ↓ Backbone骨干网络 ↓ Neck特征融合网络 ↓ Head检测头 ↓ 输出检测结果Backbone负责提取图片特征。YOLOv5 的 Backbone 基于 CSPNet 设计核心模块是 C3CSP Bottleneck with 3 convolutions。C3 模块把特征图分成两条路径一条经过若干 Bottleneck另一条直接连接最后在末端融合。这种结构在减少计算量的同时保持了特征提取能力。Neck负责多尺度特征融合。YOLOv5 使用 PANetPath Aggregation Network结构它包含自顶向下和自底向上两条路径。自顶向下路径把高层语义信息传递到底层特征自底向上路径把底层细节信息传递到高层特征。这样不同尺度的特征图都能同时包含语义信息和空间信息。Head负责最终预测。YOLOv5 的 Head 在三个不同尺度的特征图上分别预测形成三组输出。每组输出包含边界框坐标、置信度和类别概率。最后通过 NMS非极大值抑制去除重复的检测框。5.2 注意力机制改进课题中最常见的改进思路是引入注意力机制。注意力机制可以让模型自动关注图片中更重要的区域忽略无关信息。以 SESqueeze-and-Excitation注意力机制为例它的核心思想是通过学习每个通道的权重让模型知道哪些特征通道更重要。# 伪代码示意SE 注意力模块 class SEBlock(nn.Module): def __init__(self, channels, reduction16): 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 等都可以作为课题创新点。需要提醒的是改进不能只是为了“换一个模块”。一个合格的课题改进需要回答三个问题为什么要改进现有方法的瓶颈在哪里改进是否针对你的任务特点通过对比实验证明改进有效。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 onnx6.2 ONNX 导出与推理ONNXOpen Neural Network Exchange是一种跨框架的模型表示格式。导出 ONNX 的最大意义是解耦训练框架和推理框架。ONNX 导出时常见的问题是算子兼容性。有些 PyTorch 算子可能无法直接映射到 ONNX 算子或者不同版本之间行为有差异。遇到这类问题可以尝试升级 ONNX 和 onnxruntime 版本。检查 PyTorch 中是否有自定义算子。设置--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 GPUTensorRT 是性能最优的方案。TensorRT 会对模型做层融合、精度校准、内存优化等操作推理速度可以比原始 PyTorch 模型快几倍。YOLOv5 导出 TensorRT 引擎的流程大致如下python export.py --weights best.pt --include engine --device 0TensorRT 支持 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, host0.0.0.0, port8000)嵌入式部署部署到 Jetson Nano、树莓派等边缘设备上。树莓派上跑 YOLOv5 可以先用官方导出为 TorchScript 或 ONNX再配合 OpenCV 做视频流推理需要注意设备散热和功耗限制。移动端部署导出为 TFLite 或 CoreML 后集成到 App 中。移动端部署需要关注模型大小和内存占用通常还需要做模型压缩和量化。6.5 部署时的前后处理部署后处理是整个推理链路中最容易出错的地方。YOLOv5 的原始输出是一个很大的张量需要通过后处理得到最终的检测框。关键步骤包括解码把网络输出的偏移量还原为真实的边界框坐标。过滤根据置信度阈值过滤低质量检测框。NMS去除重复的检测框。坐标变换把归一化坐标映射回原图尺寸。其中 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.txt7.2 数据集与训练问题问题现象常见原因解决思路loss 一直不降学习率过大或数据标注有误降低学习率检查标注文件mAP 为 0数据集配置类别数或类别名称错误检查yaml文件和标注 id 是否对应训练结果都是背景正负样本不均衡增加数据增强调整置信度阈值验证集指标很低但训练集很高过拟合增加数据量使用更强数据增强增大正则化7.3 部署问题问题现象常见原因解决思路ONNX 导出失败算子不兼容或版本过低升级 onnx、设置更高的 opset推理结果和 PyTorch 不一样预处理和后处理不一致严格对齐输入尺寸、归一化方式TensorRT 引擎构建慢模型较大使用 FP16 构建或分批次构建嵌入式设备推理帧率低模型过大、算力不够使用轻量化模型、量化、裁剪输入分辨率8. 目标检测课题的工程建议8.1 建立实验记录习惯做课题研究最忌讳“训练完就忘”。每次实验都要记录以下信息数据集版本和划分方式。训练超参数配置。使用的预训练权重。关键指标mAP0.5、mAP0.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 训练和部署中遇到的问题。