0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Yolov5理论学习笔记

新机器视觉 来源:马少爷 2023-09-12 17:08 次阅读

算法创新分为三种方式

第一种:面目一新的创新,比如Yolov1、Faster-RCNN、Centernet等,开创出新的算法领域,不过这种也是最难的。

第二种:守正出奇的创新,比如将图像金字塔改进为特征金字塔。

第三种:各种先进算法集成的创新,比如不同领域发表的最新论文的tricks,集成到自己的算法中,却发现有出乎意料的改进。

对象检测网络的通用架构:

1cee00a0-514a-11ee-a25d-92fbcf53809c.png

1)Backbone -形成图像特征。

2)Neck:对图像特征进行混合和组合,生成特征金字塔

3)Head:对图像特征进行预测,应用锚定框,生成带有类概率、对象得分和边界框的最终输出向量。

【Yolov5网络结构图】

可视化结构图:

1d2c3cda-514a-11ee-a25d-92fbcf53809c.png

不同网络的宽度:

V5x: 367MB,V5l: 192MB,V5m: 84MB,V5s: 27MB,YOLOV4: 245 MB

1d5bd71a-514a-11ee-a25d-92fbcf53809c.png

四种Yolov5结构在不同阶段的卷积核的数量都是不一样的,因此直接影响卷积后特征图的第三维度

Yolov5s第一个Focus结构中:最后卷积操作时,卷积核的数量是32个,特征图的大小变成304×304×32。

而Yolov5m:卷积操作使用了48个卷积核,特征图变成304×304×48。

…后面卷积下采样操作也是同样的原理

不同网络的深度:

1d7897e2-514a-11ee-a25d-92fbcf53809c.png

四种网络结构中每个CSP结构的深度都是不同的

CSP1结构主要应用于Backbone中:

Yolov5s的CSP1:使用了1个残差组件,CSP1_1。

Yolov5m:使用了2个残差组件,CSP1_2。

Yolov5l,使用了3个残差组件,

Yolov5x,使用了4个残差组件。

主要的不同点:

(1)输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放

(2)Backbone:Focus结构,CSP结构

(3)Neck:FPN+PAN结构

(4)Prediction:GIOU_Loss

【输入端】

①数据增强:

Mosaic数据增强

②自适应锚定框Auto Learning Bounding Box Anchors

网络在初始锚框的基础上 基于训练数据 输出预测框,因此初始锚框也是比较重要的一部分。见配置文件*.yaml, yolov5预设了COCO数据集640×640图像大小的锚定框的尺寸:

1da77846-514a-11ee-a25d-92fbcf53809c.png

每次训练时,自适应的计算不同训练集中的最佳锚框值。如果觉得计算的锚框效果不是很好,也可以在代码中将自动计算锚框功能关闭。具体操作为train.py中下面一行代码,设置成False

1dba16c2-514a-11ee-a25d-92fbcf53809c.png

③自适应图片缩放

在常用的目标检测算法中,一般将原始图片统一缩放到一个标准尺寸,再送入检测网络中。Yolo算法中常用416416,608608等尺寸。因为填充的比较多,会存在信息冗余,所以yolov5对原始图像自适应的添加最少的黑边。

【Backbone】

①Focus结构

1dce048e-514a-11ee-a25d-92fbcf53809c.png

以Yolov5s的结构为例,原始608x608x3的图像输入Focus结构,采用切片操作,先变成304x304x12的特征图,再经过一次32个卷积核的卷积操作,最终变成304x304x32的特征图。

②CSP结构

作者认为推理计算过高的问题是由于网络优化中的梯度信息重复致,CSPNet(Cross Stage Paritial Network, 跨阶段局部网络),主要从网络结构设计的角度解决推理中计算量很大的问题。

Yolov5中设计了两种CSP结构,以Yolov5s网络为例,CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中。

1df8516c-514a-11ee-a25d-92fbcf53809c.png

【Neck】

FPN+PAN,网络特征融合的能力更强

1e219fae-514a-11ee-a25d-92fbcf53809c.png

PAN(路径聚合网络)借鉴了图像分割领域PANet的创新点

该作者认为在对象检测中,特征融合层的性能非常重要,根据谷歌大脑的研究,[BiFPN]才是特征融合层的最佳选择。谁能整合这项技术,很有可能取得性能大幅超越。

【输出端】

①Activation Function

在 YOLO V5中,中间/隐藏层使用了 Leaky ReLU 激活函数,最后的检测层使用了 Sigmoid 形激活函数

②nms非极大值抑制

在同样的参数情况下,将nms中IOU修改成DIOU_nms。对于一些遮挡重叠的目标,会有一些改进。

③Optimization Function

YOLO V5的作者为我们提供了两个优化函数Adam和SGD,并都预设了与之匹配的训练超参数。默认为SGD。

④Cost Function

loss = objectness score+class probability score+ bounding box regression score

YOLO V5使用 GIOU Loss作为bounding box的损失。

YOLO V5使用二进制交叉熵和 Logits 损失函数计算类概率和目标得分的损失。同时我们也可以使用fl _ gamma参数来激活Focal loss计算损失函数。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4455

    浏览量

    90756
  • 图像分割
    +关注

    关注

    4

    文章

    173

    浏览量

    17861
  • 函数
    +关注

    关注

    3

    文章

    3868

    浏览量

    61309

原文标题:Yolov5理论学习笔记

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)含源码

    前面我们给大家介绍了基于LabVIEW+YOLOv3/YOLOv4的物体识别(对象检测),今天接着上次的内容再来看看YOLOv5。本次主要是和大家分享使用LabVIEW快速实现yolov5
    的头像 发表于 03-13 16:01 1658次阅读

    Yolov5算法解读

    yolov5于2020年由glenn-jocher首次提出,直至今日yolov5仍然在不断进行升级迭代。 Yolov5YOLOv5s、YOLOv
    的头像 发表于 05-17 16:38 4296次阅读
    <b class='flag-5'>Yolov5</b>算法解读

    YOLOv5】LabVIEW+TensorRT的yolov5部署实战(含源码)

    今天主要和大家分享在LabVIEW中使用纯TensoRT工具包快速部署并实现yolov5的物体识别
    的头像 发表于 08-21 22:20 831次阅读
    【<b class='flag-5'>YOLOv5</b>】LabVIEW+TensorRT的<b class='flag-5'>yolov5</b>部署实战(含源码)

    决策树在机器学习理论学习与实践

    决策树在机器学习理论学习与实践
    发表于 09-20 12:48

    龙哥手把手教你学视觉-深度学习YOLOV5

    可以实现理想的检测效果。在本套视频,有别于常见的深度学习教程以理论为主进行全面讲解,以没有任何深度学习理论基础的学员学习角度,以实际应用为目标,讲解如何设计一个完整的
    发表于 09-03 09:39

    怎样使用PyTorch Hub去加载YOLOv5模型

    在Python>=3.7.0环境中安装requirements.txt,包括PyTorch>=1.7。模型和数据集从最新的 YOLOv5版本自动下载。简单示例此示例从
    发表于 07-22 16:02

    YOLOv5网络结构解析

    1、YOLOv5 网络结构解析  YOLOv5针对不同大小(n, s, m, l, x)的网络整体架构都是一样的,只不过会在每个子模块中采用不同的深度和宽度,  分别应对yaml文件中
    发表于 10-31 16:30

    使用Yolov5 - i.MX8MP进行NPU错误检测是什么原因?

    的时机(yolov5s 模型,输入为 448x448 ~ 70ms)。 现在我正在尝试使用 Yolov5(uint8 量化),但我尝试使用不同的预训练模型获得相同的行为,在 CPU 上进行良好检测,在
    发表于 03-31 07:38

    如何YOLOv5测试代码?

    使用文档“使用 YOLOv5 进行对象检测”我试图从文档第 10 页访问以下链接(在 i.MX8MP 上部署 yolov5s 的步骤 - NXP 社区) ...但是这样做时会被拒绝访问。该文档没有说明需要特殊许可才能下载 test.zip 文件。NXP 的人可以提供有关如
    发表于 05-18 06:08

    yolov5模型onnx转bmodel无法识别出结果如何解决?

    问题描述: 1. yolov5模型pt转bmodel可以识别出结果。(转化成功,结果正确) 2. yolov5模型pt转onnx转bmodel可以无法识别出结果。(转化成功,结果没有) 配置: 1.
    发表于 09-15 07:30

    基于YOLOv5的目标检测文档进行的时候出错如何解决?

    你好: 按Milk-V Duo开发板实战——基于YOLOv5的目标检测 安装好yolov5环境,在执行main.py的时候会出错,能否帮忙看下 main.py: import torch
    发表于 09-18 07:47

    现代控制理论学习心得

    现代控制理论学习心得
    发表于 12-20 22:18 0次下载

    yolov5训练部署全链路教程

    本教程针对目标检测算法yolov5的训练和部署到EASY-EAI-Nano(RV1126)进行说明。
    的头像 发表于 01-05 18:00 2324次阅读
    <b class='flag-5'>yolov5</b>训练部署全链路教程

    使用旭日X3派的BPU部署Yolov5

    本次主要介绍在旭日x3的BPU中部署yolov5。首先在ubuntu20.04安装yolov5,并运行yolov5并使用pytoch的pt模型文件转ONNX。
    的头像 发表于 04-26 14:20 540次阅读
    使用旭日X3派的BPU部署<b class='flag-5'>Yolov5</b>

    【教程】yolov5训练部署全链路教程

    本教程针对目标检测算法yolov5的训练和部署到EASY-EAI-Nano(RV1126)进行说明,而数据标注方法可以参考我们往期的文章《Labelimg的安装与使用》。
    的头像 发表于 01-29 15:25 2836次阅读
    【教程】<b class='flag-5'>yolov5</b>训练部署全链路教程