YOLO系列改进

news2024/10/7 12:21:00

yolo核心思想:把目标检测转变成一个回归问题。将整个图像作为网络的输入,仅仅经过一个神经网络,得到边界框的位置及其所属的类别。

YOLOv1 CVPR2016
请添加图片描述

输出7×7×30的张量表示2个框的5个参数和20个种类。leaky ReLU,leaky并不会让负数直接为0,而是乘以一个很小的系数(恒定),保留负数输出,但衰减负数输出。y=x,x>0;0.1x,otherwise;分而治之;端到端训练,损失函数的传播贯穿整个网络。第一个全连接层,把输入图像的所有卷积特征整合到一起;第二个全连接层,将所有神经元得到的卷积特征进行维度转换,最后得到与目标检测网络输出维度相同的维度。

YOLOv2 CVPR2017

(1)yolov2借鉴了Faster R-CNN的思想,引入Anchor机制,并利用K-means聚类的方法在训练集中聚类计算出更好的Anchor模板,大大提高了算法的召回率;
(2)同时结合图像细粒度特征,将浅层特征与深层特征相连,有助于对小尺寸目标的检测。

特点:折中,可以自己平衡速度和准确率

改进:batch normalize(BN):加速收敛,正则化模型,可以去掉dropout,map提升2%

Convolutional with Anchor Boxs:相比于v1每张图预测98个预测框,anchor boxes可以预测1000个

Dimension Clusters:anchor遇到的第一个问题 需要动手设定模板框prior 使用k-means聚类折中取得k=5

Direct location prediction:第二个问题 box预测(x,y)位置时,模型不稳定。直接预测对于网格单元的相对位置。w和h通过bbox prior调整 。模型提高5%

Fine-Grained Features:添加passthough层,从26×26的分辨率得到特征

multi-scale training:用多种分辨率的输入图片进行训练

darknet-19:backbone使用darknet-19搭配BN加速收敛

YOLOv3结构框图
请添加图片描述

CBL:最小组件Conv+BN+Leaky Relu激活函数组成

Res unit:借鉴Resnet残差结构,网络更深

ResX:CBL+n个Res unit,CBL用来下采样 608–>304–>152–>76–>38–>19 1/32

Concat:张量拼接;

add:张量相加,纬度不变=shortcut

Backbone:每个ResX包含1+2*X个卷积层,Darknet=1+(1+2×2)+(1+2×8)+(1+2×8)+(1+2×4)+FC全连接层(不包含)=53

改进点:predictions across scales:输出三种不同尺度的 feature map。深度255原因:coco80个类别,每个单元需要3个box,每个box还需要五个位置参数,3×(5+80)=255

v3对bbox预测时采用logistic regression可以去掉不必要anchor。

YOLOv4结构框图

请添加图片描述

组件

CBM:最小组件Conv+Bn+Mish激活函数

CBL:Conv+Bn+Leaky_relu

Res_unit:Resnet网络中的残差结构

CSPX:借鉴CSPNet网络,由卷积层和X个Res_unit模块Concate组成

SPP:采用1×1,5×5,9×9,13×13的最大池化方式,多尺度融合。通过最大池化将不同尺寸的输入图像变得尺寸一致,使得输入图像不再限制于固定尺寸,增大感受野。

Backbone:每个CSPX包含5+2*X个卷积层,1+(5+2×1)+(5+2×2)+(5+2×8)+(5+2×8)+(5+2×4)=72

创新点

输入端:Mosaic数据增强、cmBN、SAT自对抗训练

BackBone主干网络:CSPDarknet53、Mish激活函数、Dropblock缓解过拟合

Neck:SPP模块(有效的增加主干特征的接收范围,显著的分离了最重要的上下文特征)、FPN+PAN结构

Prediction:训练时的损失函数CIOU_Loss、预测框筛选的nms变为DIOU_nms

**IOU_Loss:**主要考虑检测框和目标框重叠面积。

**GIOU_Loss:**在IOU的基础上,解决边界框不重合时的问题。

**DIOU_Loss:**在IOU和GIOU的基础上,考虑边界框中心点距离的信息。

**CIOU_Loss:**YOLOv4采用CIOU_Loss,在DIOU的基础上,考虑边界框宽高比的尺度信息。

Mosaic数剧增强:随机缩放、随机裁剪、随机排布的方式进行拼接。均衡小中大三类目标

BackBone:608->304->152->76->38->19 CSPNet将基础层的特征映射划分为两部分,通过跨阶段层次结构将其合并,减少计算量保证准确率。

FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征

深度学习backbone汇总

非轻量化:

LeNet5:(1998)
AlexNet:(2012)
VGG:(2014)
GoogLeNet(InceptionNet)系列:Inception-v1(GoogleNet): (2015)、Inception-v2 (2015,BN-inception)、Inception-v3 (2015)、Inception-v4: (2017)、Inception-resnet-v2: (2017)
Resnet: (2016)
ResNet变种:ResNeXt (2016)、ResNeSt(2020)、Res2Net(2019)、DenseNet (2017)
DPNet:(2017)
NasNet:(2018)
SENet及其变体SKNet:SENet(2017)、SKNet(2019)
EfficientNet 系列:EfficientNet-V1(2019)、EfficientNet-V2(2021)
Darknet系列:Darknet-19 (2016, YOLO v2 的 backbone)、Darknet-53 (2018, YOLOv3的 backbone)
DLA (2018, Deep Layer Aggregation)

轻量化:

SqueezeNet:(2016)
MobileNet-v1:(2017)
XCeption:(2017, 极致的 Inception)
MobileNet V2:(2018)
ShuffleNet-v1:(2018)
ShuffleNet-v2:(2018)
MnasNet:(2019)
MobileNet V3 (2019)
CondenseNet(2017)
ESPNet系列:ESPNet (2018)、ESPNetv2 (2018)
ChannelNets
PeleeNet
IGC系列:IGCV1、IGCV2、IGCV3
FBNet系列:FBNet、FBNetV2、FBNetV3
GhostNet
WeightNet
MicroNet

ViT(Vision Transformer )Backbone结构

ViT-H/14 和 ViT-L/16(2020)(Vision Transformer,ViT)
Swin Transformer(2021)
PVT(2021, Pyramid Vision Transformer)
MPViT (CVPR 2022,Multi-path Vision Transformer, 多路径 Vision Transformer)
EdgeViTs (CVPR 2022,轻量级视觉Transformer)

(CNNs+Transformer / Attention)Backbone结构

CoAtNet(2021)

BoTNet(2021)

YOLOv5结构框图

请添加图片描述

输入端:Mosaic数据增强(随机缩放随机裁剪随机排布的方式进行拼接)、自适应锚框计算(初始设定长宽的锚框)、自适应图片缩放 trick(datasets.py的letterbox函数)对原始图像添加最少的黑边减少冗余 结果显著,训练未采用,预测采用

Backbone:Focus结构:切片操作,将608×608×3–>304×304×12

CSP结构:YOLOv4借鉴CSPNet网络,YOLOv5的CSP2应用在Neck上加强网络特征融合能力

CSP是由n和gd控制的,n = n_ = max(round(n * gd), 1) if n > 1 else n

Neck:FPN+PAN结构

Prediction:GIOU_Loss DIOU_nms对重叠框有所改进

YOLOv7

请添加图片描述

改进点:

RepVGG(2021):RepVGG无论是在精度还是速度上都已经超过了 ResNet、EffcientNet 以及 ResNeXt 等网络。采用结构重参数化,(1)训练时,使用ResNet-style的多分支模型(特点:增加模型的表征能力)(2)测试时,转化成VGG-style的单线路模型(特点:速度更快、更省内存并且更加的灵活)

将BN和3x3卷积进行融合,转换成3x3卷积:将BN公式拆解为 一元二次方程(y1 = k1* x1 + b1);然后与损失函数(y2 = k2* x2 + b2)进行合并得到新的方程(y3 = k3* x3 + b3)。

多分支融合:将1x1卷积 + BN全部转换为3x3卷积,然后与3x3卷积进行合并,得到一个3x3卷积。

YOLOv8
请添加图片描述

Backbone:轻量化C2f替换了C3

PAN-FPN:删除YOLOv5上采样阶段中的卷积结构,C2f替换了C3

Decoupled—Head

Anchor-Free

损失函数:VFL Loss作为分类损失,DFL Loss+CIOU Loss

样本匹配:Task-Aligned Assigner

Backbone:轻量化C2f替换了C3

PAN-FPN:删除YOLOv5上采样阶段中的卷积结构,C2f替换了C3

Decoupled—Head

Anchor-Free

损失函数:VFL Loss作为分类损失,DFL Loss+CIOU Loss

样本匹配:Task-Aligned Assigner

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

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

相关文章

深度学习入门2—— 神经网络的组成和3层神经网络的实现

由上一章结尾,我们知道神经网络的一个重要性质是它可以自动地从数据中学习到合适的权重参数。接下来会介绍神经网络的概要,然后再结合手写数字识别案例进行介绍。 1.神经网络概要 1.1从感知机到神经网 我们可以用图来表示神经网络,我们把最…

【Docker】容器

目录 1. 容器启动 2. 容器启动/重启/停止 3. 进入容器 4. 容器查询 5. docker 镜像的构建 方式一:docker 容器 commit 方式二:Dockerfile 定制镜像 1. 容器启动 docker run –it/-d –p/P –name imageID/name 2. 容器启动/重启/停止 docker sta…

MySQL索引优化解决方案--索引失效(3)

索引失效情况 最佳左前缀法则:如果索引了多列,要遵循最左前缀法则,指的是查询从索引的最左前列开始并且不跳过索引中的列。不在索引列上做任何计算、函数操作,会导致索引失效而转向全表扫描存储引擎不能使用索引中范围条件右边的…

文华6幅图指标公式大全-多空精准买卖点提示指标源码

文华6幅图指标公式大全-多空精准买卖点提示指标源码: HH: HHV ( HIGH ,1)/5 HHV ( HIGH ,2)/5 HHV ( HIGH ,2)/5 HHV ( HIGH ,5)/5 HHV ( HIGH ,8)/5; LL: LLV ( LOW ,1)/5 LLV ( LOW ,2)/5 LLV ( LOW ,2)/5 LLV ( LOW ,5)/5 LLV ( LOW ,8)/5; H1: IFELSE ( H &l…

西门子840dsl机床仿真软件配置opcua说明

需要的安装包如下,可在百度网盘中下载 主软件包:sinutrain-v4.7-ed4(也可在官网中下载最新版本) 用户文件:UserDataBase 授权sinutrain:Sim_EKB_Install_2021_06_22 链接:https://pan.baidu.c…

【传拓研学】传承文化瑰宝,领略千年韵味

非遗薪火,传承中华文明 文化繁荣,共筑美好未来 在这风云变幻的时代,我们始终怀揣着对历史与文化的敬仰之情。今日,我们隆重向您推荐一项极具意义的活动——传拓研学活动。 传拓是我国一项古老的传统技艺,非遗物质文…

REST API 中的 HTTP 请求参数

当我们在谈论现代 Web 开发时,REST API (Representational State Transfer Application Programming Interface) 扮演着至关重要的角色。它允许不同的系统以一种简洁且高效的方式进行通信。HTTP 请求参数是控制此通信流程中数据如何被发送和接收的重要组成部分。 H…

【Apache Doris】周FAQ集锦:第 8 期

【Apache Doris】周FAQ集锦:第 8 期 SQL问题数据操作问题运维常见问题其它问题关于社区 欢迎查阅本周的 Apache Doris 社区 FAQ 栏目! 在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和…

杂记 | 搭建反向代理防止OpenAI API被封禁(对于此次收到邮件提示7月9日后将被屏蔽的解决参考)

文章目录 重要声明(免责)01 OpenAI封禁API的情况02 解决方案及原理2.1 原因分析2.2 解决方案2.3 步骤概述 03 操作步骤3.1 购买一个海外服务器3.2 申请一个域名3.3 将域名指向代理服务器3.4 在代理服务器上安装nginx3.5 配置反向代理 重要声明&#xff0…

IDEA启动报错:Abnormal build process termination...

一、问题描述 因为项目需要,同时打开了两个idea,突然发现一个启动的时候报错,有点莫名其妙,刚还好好的,为啥就不能用了,一顿百度找方法,试了各种方法,像重新安装jdk、重启系统发现都…

Linux源码阅读笔记04-实时调度类及SMP和NUMA

Linux进程分类 实时进程普通进程 如果系统中有一个实时进程并且可执行,调度器总是会选择他,除非有另外一个优先级高的实时进程。SCHED_FIFO:没有时间片,被调度器选择之后,可以运行任意长的时间。SCHED_RR:有…

轻松学AI绘画:PS AI插件,小白的入门秘籍

各位AIGC创意爱好者们,你们是否对AI绘画充满好奇,却又对那些复杂的国外软件感到望而却步?别急,今天我要为大家介绍一款适合新手的国产PS AI插件——StartAI,它将为你的创作之路带来无限可能! StartAI&…

SSLyze:一款快速高效的SSLTLS扫描工具

关于SSLyze SSLyze是一款快速高效且功能强大的SSL/TLS扫描工具,同时它也是一个Python库。 SSLyze在与目标服务器连接成功之后,可以对目标目标服务器的SSL/TLS配置进行扫描和分析,并确保其使用健壮的加密设置,包括证书、密码套件和…

会议等级地址

1.https://www.cnblogs.com/bnuvincent/p/6809353.html 2. 会议之眼地址 https://www.conferenceeye.cn/home/submission/1 3. 学术之家https://www.xueshu.com/sci/41975/

cpp入门(命名空间,输入输出与缺省参数)

目录 cpp关键字 命名空间 命名空间的使用 1.加名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.展开命名空间 注意 输入输出 缺省参数 cpp关键字 命名空间 定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字&#xff0c…

IIC学习笔记(立创STMF4开发板)

目录 #I2C涉及相关知识 #I2C相关介绍 欢迎指正,希望对你,有所帮助!!! 个人学习笔记,参考文献,链接最后!!! #I2C涉及相关知识 SDA串行数据线: Ser…

【Docker】rancher 管理平台搭建

目录 1. 所有节点安装docker 2. 所有节点配置/etc/sysconfig/docker 文件修改如下配置 3. 配置证书 4. 镜像仓库导入镜像 5. 创建镜像仓库 5.1 查询上传的 image id 5.2 镜像打标签 5.3 镜像上推 6. server 节点 7. client 节点 8. 在 server 节点启动 9. 查看运行…

OpenCV的学习大纲

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,广泛用于各种计算机视觉应用中。以下是一个基本的OpenCV学习大纲,帮助初学者系统地学习OpenCV。 基础知识 计算机视觉简介:了解计算机…

Baidu Comate专业版90天使用福利免费送,AI编码解放程序员双手

具体的能力介绍和示例不赘述,可直接参考:Comate官网:Baidu Comate Coding mate, Pair you create 基于文心大模型,结合百度编程大数据,为你生成优质编程代码 你的AI编程助手,你的编码效率提升好帮手 Baidu…

C语言| 冒泡排序-从大到小-

【冒泡排序】最基本的排序方法,一定要掌握。 【冒泡排序的原理】 从左往右,相邻元素进行比较。 每次比较一轮,就会找到序列中最大的一个元素或者最小的元素。 这个数就会从序列的最右边冒出来,所以叫冒泡排序。 以从小到大排序为…