yolov系列

news2024/9/23 15:25:01

学习一个深度学习网络,就看三点,1. 网络架构 2.输入输出 3.损失函数

yolov1

2015年诞生的YOLOv1创造性地使用端到端结构完成了物体检测任务,把检测问题转换成了回归问题,直接预测物体的类别和位置。

每个grid有30维,这30维中,8维是回归box的坐标,2维是box的confidence。x,y 代表中心点,; w,h代表宽高; c代表置信度,公式:

如果有object落在一个grid cell里,则第一项取1,否则取0。 第二项是预测的bounding box和实际的groundtruth之间的IoU值。

yolov2

yolov3

1. 利用3种scale特征进行目标检测,通常一幅图像包含各种不同的物体,并且有大有小。比较理想的是一次就可以将所有大小的物体同时检测出来。因此,网络必须具备能够“看到”不同大小的物体的能力。因为网络越深,特征图就会越小,所以网络越深小的物体也就越难检测出来。浅层的feature map中主要包含低级的信息(物体边缘,颜色,初级位置信息等),深层的feature map中包含高等信息(例如物体的语义信息:狗,猫,汽车等等)。因此在不同级别的feature map对应不同的scale,所以我们可以在不同级别的特征图中进行目标检测。

(a) 这种方法首先建立图像金字塔,不同尺度的金字塔图像被输入到对应的网络当中,用于不同scale物体的检测。但这样做的结果就是每个级别的金字塔都需要进行一次处理,速度很慢,在SPPNet使用的就是这种方式。

(b) 检测只在最后一层feature map阶段进行,这个结构无法检测不同大小的物体

(c) 对不同深度的feature map分别进行目标检测。SSD中采用的便是这样的结构。这样小的物体会在浅层的feature map中被检测出来,而大的物体会在深层的feature map被检测出来,从而达到对应不同scale的物体的目的,缺点是每一个feature map获得的信息仅来源于之前的层,之后的层的特征信息无法获取并加以利用。

(d) 与(c)很接近,但不同的是,当前层的feature map会对未来层的feature map进行上采样,并加以利用。因为有了这样一个结构,当前的feature map就可以获得“未来”层的信息,这样的话低阶特征与高阶特征就有机融合起来了,提升检测精度。在YOLOv3中,就是采用这种方式来实现目标多尺度的变换的。

2. 采用了Darknet-53的网络结构(含有53个卷积层),它借鉴了残差网络ResNet的做法,在层之间设置了shortcut,来解决深层网络梯度的问题,shortcut如下图所示:包含两个卷积层和一个shortcut connections。

3. 先验框选取

4. 物体检测任务可能一个物体可能有多个标签 ,使用1x1的卷积层+logistic激活函数的结构。

网络结构:

yolov4

把当年很多论文优秀的点吸收,加以组合并进行适当创新的算法,实现了速度和精度的完美平衡,并且有充足的消融实验,是一个值得读的论文。

手段有:

1. 跨阶段部分连接(CSPNet),CSPNet解决了其他大型卷积神经网络框架Backbone中网络优化的梯度信息重复问题,将梯度的变化从头到尾地集成到特征图中,可以有效缓解梯度消失问题,并且减少了模型的参数量和FLOPS数值,既保证了推理速度和准确率,又减小了模型尺寸。

2. v4引入SAM(位置注意力)--->不懂可以看CBAM模块

3. PAN结构(采用了双向传递特征模式利用捷径,如下图), YOLOv4使用PANet(Path Aggregation Network)代替FPN进行参数聚合以适用于不同level的目标检测, PANet论文中融合的时候使用的方法是Addition,YOLOv4算法将融合的方法由加法改为Concatenation。

4. SPP(Spatial Pyramid Pooling Networks)结构------特征金字塔,为了满足于不同输入大小,第一:增大感受野;第二:用最大池化满足最终输入特征一致。

5. 数据增强,传统的图像变换;CutMix方法;Mosaic数据增强

6. DropBlock正则化(为了克服Dropout随机丢弃特征[并没有增加太大的游戏难度]的主要缺点),DropBlock技术在称为块的相邻相关区域中丢弃特征。这样既可以实现生成更简单模型的目的,又可以在每次训练迭代中引入学习部分网络权值的概念,对权值矩阵进行补偿,从而减少过拟合。

7. 标签平滑

8. 使用CIOU(损失函数)的预测框回归

9. 激活函数(mish激活函数)

网络结构

yolov5

v5不像1234对应的论文,v5相当于对v4做了更好实现,v5更像偏工程的算法,使其速度与精度都得到了极大的性能提升。

主要的改进思路如下所示:

  • 输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放;
  • 基准网络:融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构;
  • Neck网络:目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,Yolov5中添加了FPN+PAN结构;
  • Head输出层:输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。

YOLOv5算法具有4个版本,具体包括:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四种。

源码:https://gitcode.net/mirrors/ultralytics/yolov5

1. 标注数据: Make Sense(也可以使用labelme标注)

2. 训练 train.py

1) 在data建文件:wangzhe.yaml

train: datasets/wangzhe/images/train

val: datasets/wangzhe/images/train

nc: 8

names: ['hero', 'soldier', 'Buff', 'grass', 'wild_monster', 'dragon', 'tower', 'crystal']

2) 下载模型(下载已经训练好的迁移模型,训练速度快) yolov5m.pt

3)标记好的数据集,放在yolov5的datasets目录

4)修改解析参数

5)其它参数,根据情况修改

os.environ["CUDA_VISIBLE_DEVICES"] = "-1" 使用cpu

workers :训练进程数量 设置0

batch-size : 16大小大概需要4g内存 8或者4

hyp: 超参数

epochs:训练次数

resume: 是否继续按照模型训练 default="路径/last.pt"

linear-lr: 学习率

6) 训练完成,生成下面目录, best.pt就是生成的模型

3. 预测 detect.py

weights : 模型

source : 训练目录 //视频 图像路径

img-size: 对图片成比例的放大或者缩小的尺寸

conf-thres: 置信度的阈值

iou-thres: iou置信度 , 一个目标检测出很多区域,取的区域的值 iou= 交集/并集 避免重复

view-img: 命令行指定/true实时看

classes: 指定显示哪个类别

4. 效果

5. 其它介绍

1)datasets.py 数据增强; 数据、标签读取

2)export.py 将pt文件转成ONX文件,可视化展示模型(Netron)

3) 配置文件yolov5s.yaml介绍

网络结构

yolov6

YOLOv6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。在部署方面,YOLOv6 支持 GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、NCNN)等不同平台的部署,极大地简化工程部署时的适配工作。主要在 Backbone、Neck、Head 以及训练策略等方面进行了诸多的改进:

  • 统一设计了更高效的 Backbone 和 Neck :受到硬件感知神经网络设计思想的启发,基于 RepVGG style设计了可重参数化、更高效的骨干网络 EfficientRep Backbone 和 Rep-PAN Neck。

1. RepVGG Style结构(替换YOLOV5的CSP-Backbone):通过融合成的 3x3 卷积结构,可以有效利用计算密集型硬件计算能力(比如 GPU),同时也可获得 GPU/CPU 上已经高度优化的 NVIDIA cuDNN 和 Intel MKL 编译框架的帮助。

2. Rep-PAN 结构(替换YOLOv5 中使用的 CSP-Block):在 Neck 设计方面,为了让其在硬件上推理更加高效,以达到更好的精度与速度的平衡。

  • 优化设计了更简洁有效的 Efficient Decoupled Head,在维持精度的同时,进一步降低了一般解耦头带来的额外延时开销。

Decoupled Head(YOLOv5 的检测头是通过分类和回归分支融合共享的方式来实现的):维持精度的同时降低了延时,缓解了解耦头中带来的额外延时开销。

  • 在训练策略上,我们采用Anchor-free 无锚范式,同时辅以 SimOTA标签分配策略以及 SIoU边界框回归损失(分类损失和边界框回归损失)来进一步提高检测精度。

yolov7

1. RepVGG Style结构上加速,将1*1的卷积和3*3的卷积合并 , Conv+BN 合并

2. 正样本分配策略:

1)初筛

2)IOU筛选(选了10个候选框,而且需要副筛,即做多10个)

3)计算类别预测损失

3. AUX(辅助头)辅助输出

4. v7版本源码就是把v5拿过来改吧改吧

yolov8

其核心特性和改动可以归结为如下:

  • Backbone:使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻量化,同时YOLOv8依旧使用了YOLOv5等架构中使用的SPPF模块;

  • PAN-FPN:YOLOv8依旧使用了PAN的思想,不过通过对比YOLOv5与YOLOv8的结构图可以看到,YOLOv8将YOLOv5中PAN-FPN上采样阶段中的CBS 1*1的卷积结构删除了,同时也将C3模块替换为了C2f模块;
  • Decoupled-Head:YOLOv8使用了Decoupled-Head;
  • Anchor-Free:YOLOv8抛弃了以往的Anchor-Base,使用了Anchor-Free的思想;
  • 损失函数:YOLOv8使用VFL Loss作为分类损失,使用DFL Loss+CIOU Loss作为分类损失

  • 样本匹配:YOLOv8抛弃了以往的IOU匹配或者单边比例的分配方式,而是使用了Task-Aligned Assigner匹配方式。

网络结构:

总结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1706609.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

选择海外代理IP需要注意什么?

跨境电商近年来的兴起与发展,越来越多的跨境从业者从事该行业,但在从事跨境贸易中则需要海外IP代理来突破地域限制、提升访问速度和稳定性、防止账号关联以及保护隐私和安全。这些功能都有助于跨境电商企业在全球范围内拓展业务,提升竞争力&a…

基于RT-Thread的自控停车场

1.系统板原理图设计 2.系统板PCB设计 3. 屏幕和QT设计 (1)QT设计 (2)屏幕显示 4. 实物图 基于RT-Thread实时操作系统的停车场系统。 5. 车牌识别演示 识别车牌 6. 结果演示 基于RT-Thread的停车场系统

【一小时学会Charles抓包详细教程】免费安装Charles (2)

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 Charles安装 …

曼城四连冠,剑南春与万千球迷共同见证“荣耀时刻”

执笔 | 洪大大 编辑 | 扬 灵 5月19日,英超2023-2024赛季第38轮比赛全面开打,凭借队员的出色发挥,曼城最终以3-1战胜西汉姆联,成功捧起了英超联赛的奖杯,成为英格兰足球顶级联赛100多年历史上第一支成就四连冠的豪门…

本特利330180-51-00前置器在工业自动化中的应用与优势

本特利330180-51-00前置器在工业自动化中的应用与优势 作为PLC技术员,在工业自动化领域中,我们经常接触到各种传感器和前置器。其中,本特利330180-51-00前置器以其卓越的性能和广泛的应用领域,受到了业界的广泛关注。本文将详细介…

Diffusion Model, Stable Diffusion, Stable Diffusion XL 详解

文章目录 Diffusion Model生成模型DDPM概述向前扩散过程前向扩散的逐步过程前向扩散的整体过程 反向去噪过程网络结构训练和推理过程训练过程推理过程优化目标 详细数学推导数学基础向前扩散过程反向去噪过程 Stable Diffusion组成结构运行流程网络结构变分自编码器 (VAE)文本编…

【JavaEE初阶】HTTP协议|HTTP请求方法|GET|POST|GET和POST的区别|问题辨析

目录 认识"⽅法"(method) 1.GET⽅法 GET请求的特点 2.POST⽅法 POST请求的特点 💡经典⾯试题:谈谈GET和POST的区别 💡问题辨析: 3.其他⽅法 💡推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂…

范罗士、希喂、安德迈爆款宠物空气净化器哪款好?深度对比测评

作为一名深受养猫过敏困扰的铲屎官,我经常提醒新手铲屎官重视家里的空气环境。宠物的浮毛和皮屑不仅会引发过敏,还可能传播细菌和病毒。很多人以为普通空气净化器能解决问题,但这些产品并未针对宠物家庭的特殊需求。经过多次研究和测试&#…

第三方软件检测机构要具备哪些资质要求?专业测试报告如何申请?

第三方软件检测机构是独立于软件开发商和用户之外的公正机构,负责对软件进行全面的检测和评估。其独立性保证了评测结果的客观性和公正性,有效避免了软件开发商对自身产品的主观偏见和误导。 要成为一家合格的第三方软件检测机构,需要具备一…

使用WebStorm如何调试Vue代码

大家好,我是咕噜铁蛋。今天,我想和大家分享一下如何使用WebStorm这款强大的IDE(集成开发环境)来调试Vue代码。Vue.js作为现代前端开发的利器,其强大的组件化开发能力和简洁的API深受开发者喜爱。然而,随着项…

外卖系统源码解读:校园外卖APP开发全攻略

外卖系统源码解读:校园外卖APP开发全攻略 今天,小编将深入解读外卖系统的源码,详细介绍如何开发一款功能齐全的校园外卖APP,帮助开发者快速上手,打造出高质量的外卖应用。 一、需求分析 应具备以下基本功能&#xff…

LVM、磁盘配额

LVM与磁盘配额 一、LVM LVM(逻辑卷管理):是Linux系统下对硬盘分区的管理机制。 LVM机制适合于管理管理大存储设备。可以动态对硬盘进行扩容。 逻辑上的磁盘,概念上的磁盘,文件系统创建之后不考虑底层的物理磁盘。 若干个磁盘分区或者物理…

定积分的应用

目录 前提知识 考题类型:平面图形面积、旋转体体积、旋转体侧面积、平面曲线弧长 两种坐标:极坐标和直角坐标系 求解思路: 注意: 1:平面图形的面积: 常见模型: 面积元素的两种表达:积分区…

Git-01

Git是一个免费且开源的分布式版本控制系统,它可以跟踪文件的修改、记录变更的历史,并且在多人协作开发中提供了强大的工具和功能。 Git最初是由Linus Torvalds开发的,用于Linux内核的开发,现在已经成为了广泛使用的版本控制系统&a…

Spring Boot 中使用 Spring Retry 重试:再也不怕代码“掉链子”了

引言:生活需要重试,代码也一样! 想象一下,你正在网上支付,结果网络突然卡顿,支付失败。这时候你会怎么做?当然是再试一次!生活中我们经常会遇到各种“失败”,但我们会选…

现在AI发展迅猛的情况下,应届生选择Java还是C++?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「Java的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!AI迅猛发展的情况下&#xf…

机器学习-6-对随机梯度下降算法SGD的理解

参考一文带您了解随机梯度下降(Stochastic Gradient Descent):python代码示例 参考sklearn-SGDClassifier 1 梯度下降 在机器学习领域,梯度下降扮演着至关重要的角色。梯度下降是一种优化算法,通过迭代沿着由梯度定义的最陡下降方向,以最小化函数。类似于图中的场景,可以…

mysql数据导入navicat中,报错提示1067

MySQL导入问题: 报错1067 - Invalid default value for 字段名 由于数据库版本升级,老数据库的数据文件导出以后,在新版本的数据库上执行会报错 这种问题多是由于默认值不兼容引起的,我们可以通过修改sql_mode来解决这个问题 由…

Mesa Gallium框架入门初探

Mesa Gallium框架入门初探 MESA Gallium框架 MESA源码里面有2套架构,现在驱动主要基于Gallium架构。 这里我们重点来看看Gallium架构: 经典架构 Gallium架构 Gallium展开 Gallium中主要包含下面几块: Auxiliary模块:一些公共函数或者辅助…

重庆耶非凡科技有限公司的选品师项目靠谱吗?

在跨境电商和零售市场日益繁荣的今天,选品师的角色愈发凸显出其重要性。重庆耶非凡科技有限公司作为一家致力于多元化服务的科技公司,其选品师项目备受关注。那么,重庆耶非凡科技有限公司的选品师项目靠谱吗?接下来,我们将从多个…