Yolov5

2023-10-31

Yolov5

一. Yolov5 现状

Yolov5 gitlab代码已经更新到V6.0,不同版本的模型结构都有所差异。比如Conv 模块各版本差异示例如下

yolov5版本 Conv模块激活函数
1.0 LeakyRelu
2.0 LeakyRelu
3.0 LeakyRelu
3.1 hswish
4.0 SiLU
5.0 SiLU
6.0 SiLU

Yolov5每个版本具有4个开源模型,具体包括:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种,YOLOv5s模型最小,其它的模型都在此基础上对网络进行加深与加宽。

二. Yolov5 模型结构

(一)Yolov5 2.0

输出:255=(nc+5)*3

在这里插入图片描述

在这里插入图片描述

(二)Yolov5 6.0

在这里插入图片描述

在这里插入图片描述

输入端

在模型训练阶段,做了一些改进操作,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放

BackBone基准网络

融合其它检测算法中的一些新思路,主要包括:Focus结构,CSP结构;

Head网络

目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,Yolov5中添加了FPN+PAN结构

输出层的锚框机制与YOLOv3相同,主要改进的是训练时的损失函数GIOU_Loss

三. Yolov5 模型推理流程

在这里插入图片描述

四. Yolov5 输入端

(一)Mosaic数据增强

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

(二)自适应锚框计算

在Yolov3、Yolov4中,训练不同的数据集时,计算初始锚框的值是通过单独的程序运行的。

但Yolov5中将此功能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。

当然,如果觉得计算的锚框效果不是很好,也可以在代码中将自动计算锚框功能关闭

(三)自适应图片缩放

在项目实际使用时,很多图片的长宽比不同,因此缩放填充后,两端的黑边大小都不同,而如果填充的比较多,则存在信息冗余,影响推理速度。

因此在Yolov5的代码中datasets.py的letterbox函数中进行了修改,对原始图像自适应的添加最少的黑边

五. Yolov5 BackBone

(一)Focus结构

2.0版本

比如右图的切片示意图。

以Yolov5s的结构为例,原始608×608×3的图像输入Focus结构,采用切片操作,先变成304×304×12的特征图,再经过一次32个卷积核的卷积操作,最终变成304×304×32的特征图。
在这里插入图片描述
在这里插入图片描述

(二)CSP结构

(三)SPP结构 /SPPF结构

2.0版本SPP,输出尺寸和输出尺寸保持一致

6.0版本SPPF

六. Yolov5 Head

(一) FPN+PAN的结构

(二)损失函数

GIOU

(三)nms非极大值抑制改进

加权nms的方式

NMS算法是略显粗暴,因为NMS直接将删除所有IoU大于阈值的框。soft-NMS吸取了NMS的教训,在算法执行过程中不是简单的对IoU大于阈值的检测框删除,而是降低得分。算法流程同NMS相同,但是对原置信度得分使用函数运算,目标是降低置信度得分。

(四) 激活函数

silu(x)= x * sigmoid(x)

在这里插入图片描述

七 . Yolov5 V2.0模型结构代码

#yolo5s.yaml V2.0
# parameters
nc: 80  # number of classes 从1开始算起
depth_multiple: 0.33  # model depth multiple 模型深度
width_multiple: 0.50  # layer channel multiple  卷积核的个数,Bottleneck层使用

# anchors
anchors:
  - [10,13, 16,30, 33,23]  # P3/8 
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv5 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Focus, [64, 3]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4,128个卷积核个数。根据 [128, 3, 2] 解析得到[32, 64, 3, 2] ,32是输入,64是输出(128*0.5=64),3表示3×3的卷积核,2表示步长为2。
   [-1, 3, BottleneckCSP, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8[128, 3, 2] 这是固定的,
   [-1, 9, BottleneckCSP, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, BottleneckCSP, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 1, SPP, [1024, [5, 9, 13]]],
   [-1, 3, BottleneckCSP, [1024, False]],  # 9
  ]

# YOLOv5 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, BottleneckCSP, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3 
   [-1, 3, BottleneckCSP, [256, False]],  # 17 false表示无残差结构

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, BottleneckCSP, [512, False]],  # 20

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, BottleneckCSP, [1024, False]],  # 23

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yolov5 的相关文章

随机推荐

  • Linux 读文件 - readahead预读算法

    顺序读场景 intmain charc 4096 intin 1 in open news txt O RDONLY intindex 0 while read in c 4096 4096 printf index d len ld n
  • linux 内核 - ioctl 函数详解

    linux 内核 ioctl 函数详解 1 概念 ioctl 是设备驱动程序中设备控制接口函数 一个字符设备驱动通常会实现设备打开 关闭 读 写等功能 在一些需要细分的情境下 如果需要扩展新的功能 通常以增设 ioctl 命令的方式实现 在
  • leetcode 907. 子数组的最小值之和

    给定一个整数数组 arr 找到 min b 的总和 其中 b 的范围为 arr 的每个 连续 子数组 由于答案可能很大 因此 返回答案模 10 9 7 leetcode题目链接 示例 1 输入 arr 3 1 2 4 输出 17 解释 子数
  • 根据数据库名生成数据库结构说明

    根据数据库名生成数据库结构说明 package com cjm common import java io File import java io FileOutputStream import java sql Connection im
  • 文件上传优化

    文件上传优化 文件的名称需要优化 服务端 保存的文件名称如果固定 那么最终会导致服务器硬盘 只会保留一个文件 对上传的文件名称优化 System currentTimeMillis new Random nextInt 1000000 jp
  • CMake - 报错:Missing variable is: CMAKE_FIND_LIBRARY_PREFIXES

    问题描述 今天学习ZeroMQ 写了一个HelloWorld的测试程序 cmake的时候 报错Missing variable is CMAKE FIND LIBRARY PREFIXES 具体CMakeLists txt内容为 cmake
  • 【第29篇】MAE:屏蔽自编码器是可扩展的视觉学习器

    文章目录 摘要 1 简介 2 相关工作 3 方法 4 ImageNet 实验 4 1 主要属性 4 2 与之前结果的比较 4 3 局部微调 5 迁移学习实验 6 讨论与结论 摘要 论文链接 https arxiv org abs 2111
  • js将后台返回的数据转化为树形结构(扁平数组转树状结构)

    前言 做项目使常遇到需要将后台返回的数据 转换为树状结构给用户展现 例如 这也是前端面试常考的算法题 一起来检测一下吧 步骤 准备一个空的树对象 遍历列表中的每个元素 对于每个元素 根据该元素的父级ID找到其对应的父节点 如果找到了父节点
  • 如何开始使用 Python 3 编程:入门

    Python 是世界上发展最快的编程语言 这种流行的编程语言已帮助无数设计师 科学家和工程师努力解决当今消费者和企业面临的重大问题 使用 Python 更智能地工作 什么是 Python 编程 Python 编程是编写代码以执行任务或解决问
  • 小象课堂在线授课教育系统

    此项目包含后端全部代码 前端包括后台和web界面的源码 数据库用的mysql 可当作课设或者毕设 还可写入自己的简历中 web界面展示 前端后台界面展示 用户管理 课程管理 内容配置 订单管理 系统管理 系统监控
  • 概述-数据服务是什么?

    数据服务是什么 我以前认为 数据服务 就是通过数据接口提供数据的方式的统称 就是你调用一个接口 我传给你一些数据 数据处理逻辑接口内已经封装了 用这些数据你可以处理某些问题 而直接查询数据的不是数据服务 后来看了 大数据之路 阿里巴巴大数据
  • FreeRTOS记录(七、FreeRTOS信号量、事件标志组、邮箱和消息队列、任务通知的关系)

    我们在前面单独介绍过FreeRTOS的任务通知和消息队列 但是在FreeRTOS中任务间的通讯还有信号量 邮箱 事件组标志等可以使用 这篇文章就这些成员与消息队列和任务通知的关系进行说明分析 增加邮箱部分 任务通知发送消息 Demo 202
  • mysql数据库表升级方案_一个基于mysql数据库的项目的升级解决方案小结(节选)

    1引言 数据库使用MYSQL4 0版本 随用用户数的逐步增多 因为数据库版本过低而引起的抱怨也越来越多 不足也越来越明显 首先 对产品化部署产生了制约 由于MYSQL4 0数据库的配置文件my ini是存放在Windows的系统目录下的 同
  • window域名 映射 如何将域名映射到本地IP

    域名 映射 如何将域名映射到本地IP 万网域名映射 本地电脑映射 若果是自己注册的域名 直接解析到本地 IP 127 0 0 1 就可以使用此域名来访问自己的计算机 若果是想随便制定一个域名映射到本机下面讲解 C Windows Syste
  • CTF - Base64换表

    Base64换表 CTF汇总 原题 复制保存为16进制即可得文件 IDA显示 题目解读 提示 base64程序逆向 题目特点 Base64算法特征 Base64表格 位移 等号补位 结论 Base64变体 换表 Base64变体 题外话 解
  • 字符串变换最小字符串

    题目 给定一个字符串s 最多只能进行一次变换 返回变换后能得到的最小字符串 按照字典序进行比较 变换规则 交换字符串中任意两个不同位置的字符 解题思路 1 对字符串按照字典序进行排序 找到字典序最小的字符串 2 找到这个字符串中字典序最小的
  • 区块链重要基础知识3——签名算法考量以及实现并实验

    签名以及身份的管理 1 签名 1 1 特性 仅自己可以自己特定的签名 但是别人一看就知道就可以进行验证 与特定文件关联 不能拿着我这个签名去与其他文件关联 1 2 签名算法过程 1 2 1 总的流程
  • CANOpen DS402伺服电机控制项目总结

    公司的电机控制要统一到CANOpen上面来 协议栈用的CanFestival 配合RTThread进行控制 要控制伺服电机 最先搞明白的就是控制字6040和状态字6041 一共使用过三个厂家的伺服电机 控制字都是一样的 但是状态字各家有自己
  • DevOps到底是什么意思?看完这篇不要再问我了

    提到DevOps这个词 我相信很多人一定不会陌生 作为一个热门的概念 DevOps近年来频频出现在各大技术社区和媒体的文章中 备受行业大咖的追捧 也吸引了很多吃瓜群众的围观 那么 DevOps是什么呢 有人说它是一种方法 也有人说它是一种工
  • Yolov5

    Yolov5 文章目录 Yolov5 一 Yolov5 现状 二 Yolov5 模型结构 一 Yolov5 2 0 二 Yolov5 6 0 输入端 BackBone基准网络 Head网络 三 Yolov5 模型推理流程 四 Yolov5