【目标检测】目标检测界的扛把子YOLOv5(原理详解+修炼指南)

简介: Yolov5官方代码中,给出的目标检测网络中一共有4个版本,分别是Yolov5s、Yolov5m、Yolov5l、Yolov5x四个模型。学习一个新的算法,最好在脑海中对算法网络的整体架构有一个清晰的理解。但比较尴尬的是,Yolov5代码中给出的网络文件是yaml格式,和原本Yolov3、Yolov4中的cfg不同。因此无法用netron工具直接可视化的查看网络结构,造成有的同学不知道如何去学习这样的网络。

1.YOLO输入端



1.1 Mosaic数据增强


Yolov5的输入端采用了和Yolov4一样的Mosaic数据增强的方式。


Mosaic数据增强提出的作者也是来自Yolov5团队的成员,不过,随机缩放、随机裁剪、随机排布的方式进行拼接,对于小目标的检测效果还是很不错的。


  • 4张图片拼接
  • 随机缩放
  • 随机裁剪
  • 随机排布


算法优点:


  • 丰富数据集
  • 减少GPU计算


1.2 自适应锚框计算


在Yolo算法中,针对不同的数据集,都会有初始设定长宽的锚框。


在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框groundtruth进行比对,计算两者差距,再反向更新,迭代网络参数。


  • Step1:读取训练集中所有图片的w、h以及检测框的w、h
  • Step2:将读取的坐标修正为绝对坐标
  • Step3:使用Kmeans算法对训练集中所有的检测框进行聚类,得到k个anchors
  • Step4:通过遗传算法对得到的anchors进行变异,如果变异后效果好将其保留,否则跳过
  • Step5:将最终得到的最优anchors按照面积返回


1.3 自适应图片缩放


在常用的目标检测算法中,不同的图片长宽都不相同,因此常用的方式是将原始图片统一缩放到一个标准尺寸,再送入检测网络中。


letterbox自适应图片缩放技术尽量保持高宽比,缺的用灰边补齐达到固定的尺寸。


2.YOLO总体架构图



2.1 BackBone


主要进行特征提取,将图像中的物体信息通过卷积网络进行提取,用于后面目标检测。


2.1.1 Focus模块


Focus层原理和PassThrough层很类似。它采用切片操作把高分辨率的图片拆分成多个低分辨率的图片/特征图,即隔列采样+拼接。


2.1.2 SPP模块


空间金字塔池化,能将任意大小的特征图转换成固定大小的特征向量。


2.1.3 CSP_X模块


backbone是较深的网络,增加残差结构可以增加层与层之间反向传播的梯度值,避免因为加深而带来的梯度消失,从而可以提取到更细粒度的特征并且不用担心网络退化。


2.2 Neck


对特征进行混合与组合,增强网络的鲁棒性,加强物体检测能力,并且将这些特征传递给Head层进行预测。


2.2.1 FPN



2.2.2 PAN



2.3 YOLO输出端


主要进行最终的预测输出。


2.3.1 Bounding Box损失函数


真实检测框和模型预测输出框的吻合程度,用于反向传播优化模型。


2.3.2 NMS非极大值抑制


判断相邻网格识别的是否是同一物体,消除掉多余检测框。

目录
相关文章
|
7月前
|
机器学习/深度学习 自然语言处理 算法
【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战
【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战
158 0
|
计算机视觉
迟到的 HRViT | Facebook提出多尺度高分辨率ViT,这才是原汁原味的HRNet思想(二)
迟到的 HRViT | Facebook提出多尺度高分辨率ViT,这才是原汁原味的HRNet思想(二)
272 0
|
2月前
|
机器学习/深度学习 数据可视化 测试技术
YOLO11实战:新颖的多尺度卷积注意力(MSCA)加在网络不同位置的涨点情况 | 创新点如何在自己数据集上高效涨点,解决不涨点掉点等问题
本文探讨了创新点在自定义数据集上表现不稳定的问题,分析了不同数据集和网络位置对创新效果的影响。通过在YOLO11的不同位置引入MSCAAttention模块,展示了三种不同的改进方案及其效果。实验结果显示,改进方案在mAP50指标上分别提升了至0.788、0.792和0.775。建议多尝试不同配置,找到最适合特定数据集的解决方案。
613 0
|
17天前
|
机器学习/深度学习 自然语言处理 数据可视化
【由浅到深】从神经网络原理、Transformer模型演进、到代码工程实现
阅读这个文章可能的收获:理解AI、看懂模型和代码、能够自己搭建模型用于实际任务。
|
7月前
|
机器学习/深度学习 自然语言处理 运维
深度探索变分自编码器:理论与应用代码之韵:探索编程艺术的无限可能
【5月更文挑战第31天】 在深度学习的众多架构中,变分自编码器(Variational Autoencoder, VAE)以其对数据生成和潜在空间建模的强大能力而脱颖而出。本文将深入探讨VAE的核心原理,包括其概率生成模型、变分推断以及重参数化技巧,并剖析其在多个领域的实际应用案例。通过细致的技术解析与实例演示,我们旨在为读者提供一个关于VAE的全面视角,同时探讨当前的研究动态及未来发展趋势。
|
6月前
|
机器学习/深度学习
【保姆级教程|YOLOv8改进】【7】多尺度空洞注意力(MSDA),DilateFormer实现暴力涨点
【保姆级教程|YOLOv8改进】【7】多尺度空洞注意力(MSDA),DilateFormer实现暴力涨点
|
7月前
|
机器学习/深度学习 算法 关系型数据库
PyTorch深度强化学习中蒙特卡洛策略梯度法在短走廊环境(CartPole-v0)中的实战(超详细 附源码)
PyTorch深度强化学习中蒙特卡洛策略梯度法在短走廊环境(CartPole-v0)中的实战(超详细 附源码)
81 0
|
机器学习/深度学习 数据采集 人工智能
头疼!卷积神经网络是什么?CNN结构、训练与优化一文全解
头疼!卷积神经网络是什么?CNN结构、训练与优化一文全解
104 0
|
机器学习/深度学习
神经网络核心原理关键点纪要
神经网络核心原理关键点纪要
82 0
|
机器学习/深度学习 计算机视觉
清华大学提出LiVT,用视觉Transformer学习长尾数据,解决不平衡标注数据不在话下
清华大学提出LiVT,用视觉Transformer学习长尾数据,解决不平衡标注数据不在话下
159 0