6、YOLO系列

YOLO系列

链接: 目标检测
yolov1—yolov7差异:参考https://zhuanlan.zhihu.com/p/539932517

名词:convx(convince)卷积层 FC全连接层 cell(单元格)
V1
有全连接层,只能输入固定大小图片,格子最多只预测出一个物体
7x7*30 7x7(多少格,也就是步长) 30(两种大小框,20个类别)
缺点:重叠、长宽比固定、小物体
框数量:2
缺点:
输入尺寸固定:由于输出层为全连接层,因此在检测时,YOLO 训练模型只支持与训练图像相同的输入分辨率。其它分辨率需要缩放成此固定分辨率;
占比小的目标检测效果不好:虽然每个格子可以预测 2 个 bounding box,但是最终只选择只选择 IOU 最高的bbox作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。

SDD
相比Yolo,SSD采用CNN来直接进行检测,而不是像Yolo那样在全连接层之后做检测。其实采用卷积直接做检测只是SSD相比Yolo的其中一个不同点,另外还有两个重要的改变,一是SSD提取了不同尺度的特征图来做检测,大尺度特征图(较靠前的特征图)可以用来检测小物体,而小尺度特征图(较靠后的特征图)用来检测大物体;二是SSD采用了不同尺度和长宽比的先验框。Yolo算法缺点是难以检测小目标,而且定位不准,但是这几点重要改进使得SSD在一定程度上克服这些缺点。

名词:darknet到底是一个类似于TensorFlow、PyTorch的框架,还是一个类似于AlexNet、VGG的模型?yolo是模型;darkent是框架。
v2
提高map:batch normalization(归一化)、舍去dropout、没FC、darkent、k-means聚类提取先验框、passthrough层(感受视野融合前面层特征)、约束预测边框的位置(预测框中心点偏移)
框数量:5
批归一化(BN):有助于解决反向传播过程中的梯度消失和梯度爆炸问题,降低对一些超参数(比如学习率、网络参数的大小范围、激活函数的选择)的敏感性,并且每个batch分别进行归一化的时候,起到了一定的正则化效果(YOLO2不再使用dropout),从而能够获得更好的收敛速度和收敛效果。每个卷积层之后包含一个批量归一化层和一个Leaky ReLU,加入这两个部分的目的是为了防止过拟合。
先验框:YOLO1并没有采用先验框,并且每个grid只预测两个bounding box

真实、先验、预测框
真实框,Ground truth box, 是人工标注的位置,存放在标注文件中
锚框,先设定好锚框的大小和形状,再以图像上某一个点为中心画出矩形框。
先验框,在同一位置生成不同形状和大小的多个锚框
预测框,Prediction box, 是由目标检测模型计算输出的框,微调先验框的长宽比

v3
多scale(不同大小)、 FPN多尺度预测(特征金字塔融合下采样)、resnet残差网络、没有池化和全连接、分类器不在使用Softmax,分类损失采用binary cross-entropy loss
框数量:9
cross-entropy loss:Softmax使得每个框分配一个类别(score最大的一个),而对于Open Images这种数据集,目标可能有重叠的类别标签,因此Softmax不适用于多标签分类。Softmax可被独立的多个logistic分类器替代,且准确率不会下降。
多scale (多尺度)图像预测将图片进行不同尺度的缩放,得到图像金字塔,然后对每层图片提取不同尺度的特征,得到特征图。最后对每个尺度的特征都进行单独的预测。特点:不同尺度的特征都可以包含很丰富的语义信息,精度高 ,但 速度慢。

v4
数据增强(亮度,对比度,色调,缩放,剪切,翻转,旋转,CutMix和Mosaic数据增强)、dropblock与标签平滑(去除一些特征点连接)、ciou(预选框)、nms(去除一些预选框)、sppnet(所有特征层的叠加)、cspnet(改进resnet)、sam(注意力机制,权重矩阵)、FPN+PAN(上下采样)、激活函数(采用mish)

输入端:采用Mosaic数据增强;
Backbone:采用了CSPDarknet53、Mish激活函数、Dropblock等方式;
Neck:采用了SPP(按照DarknetAB的设定)、FPN+PAN结构;
输出端:采用CIOU_Loss、DIOU_Nms操作。

v5
(1)输入端:Mosaic数据增强、自适应锚框计算
(2)Backbone:Focus结构,CSP结构
(3)Neck:FPN+PAN结构(v4一样)
(4)Prediction:GIOU_Loss

V5四种网络
Yolov5代码中的四种网络都是以yaml的形式来呈现,而且四个文件的内容基本上都是一样的,只有最上方的depth_multiple和width_multiple两个参数不同。既csp和Focus的深度和宽度不同。
参考连接:
https://juejin.cn/post/7072723771156594701
https://blog.csdn.net/nan355655600/article/details/107852353

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

yolovx
① 输入端:Strong augmentation数据增强
② BackBone主干网络:主干网络没有什么变化,还是Darknet53。
③ Neck:没有什么变化,Yolov3 baseline的Neck层还是FPN结构。
④ Prediction:Decoupled Head、End-to-End YOLO(改进为无NMS)、Anchor-free(输出参数量)、Multi positives、SimOTA求解(标签分配)

(1)Decoupled head(解耦头)
YOLO系列自YOLOv3开始就没有大幅度更改过检测头相关的内容,而解耦头的设计已经在目标检测和目标分类的网络中被验证有效。解耦头有着分类任务和定位任务两个分支,而采用不同的分支进行运算,有利于效果的提升。由于多分支的加入,会导致网络的计算复杂度增高,YOLOX所提出的方案是先使用1×1的卷积进行降维,来加快运算速度和减小模型大小。

(2)anchor free[3]
YOLOv3,4,5都是使用anchor base的方法来提取候选框,而YOLOX中将原有的3个anchor候选框缩减至1个,即直接由每个location对box的4个参数进行预测。将每个对象的中心位置所在的location视为正样本,并且将每个对象分配到不同的FPN层中,使得每个对象只有一个location进行预测工作,这样的修改同样是减少了GFLOPs并加快了推理速度。

(3)multi positives[3]
如果每个对象只有一个location进行预测,会导致正负样本不均衡,且会抑制一些高质量的预测,YOLOX借鉴了FCOS的中心采样策略,将对象中心附近的location也纳入正样本的计算之中,此时每个对象就有了多个正样本的分布。

(4)SimOTA[4]
在旷视自己的OTA算法中,他们将标签分配任务看作网络内部的最优传输任务,即多个目标与多个候选框的相互匹配。不同于OTA的是,SimOTA将原本使用的Sinkhorn-Knopp算法替换,使用动态top-k策略去计算最优传输的问题。这样的方法不仅减少了模型的训练时间,而且避免了Sinkhorn-Knopp算法中的额外求解器超参数。

1.Focus层原理
Focus层原理和PassThrough层很类似。它采用切片操作把高分辨率的图片(特征图)拆分成多个低分辨率的图片/特征图,即隔列采样+拼接。原理图如下:
在这里插入图片描述
原始的640 × 640 × 3的图像输入Focus结构,采用切片(slice)操作,先变成320 × 320 × 12的特征图,拼接(Concat)后,再经过一次卷积(CBL(后期改为SiLU,即为CBS))操作,最终变成320 × 320 × 64的特征图。Focus层将w-h平面上的信息转换到通道维度,再通过3*3卷积的方式提取不同特征。采用这种方式可以减少下采样带来的信息损失 。
在这里插入图片描述

作用
Focus层将w-h平面上的信息转换到通道维度,再通过3*3卷积的方式提取不同特征。采用这种方式可以减少下采样带来的信息损失 。Focus的作用无非是使图片在下采样的过程中,不带来信息丢失的情况下,将W、H的信息集中到通道
上,再使用3 × 3的卷积对其进行特征提取,使得特征提取得更加的充分。虽然增加了一点点的计算量,
但是为后续的特征提取保留了更完整的图片下采样信息。

2.CSP结构

目的
解决以往工作中需要大量推理计算的问题。
做法 CSPNet和PRN都是一个思想,将feature map拆成两个部分,一部分进行卷积操作,另一部分和上
一部分卷积操作的结果进行concate。
要点
① 分类问题中,使用CSPNet可以降低计算量,但是准确率提升很小
② 在目标检测问题中,使用CSPNet作为Backbone带来的提升比较大,可以有效增强CNN的学习能
力,同时也降低了计算量。增强CNN的学习能力,能够在轻量化的同时保持准确性。降低计算瓶颈,降低内存成本。

3.SPP结构(金字塔池化)
SPP是空间金字塔池化的简称,其先通过一个标准卷积模块将输入通道减半,然后分别做kernel-size为5,9,13的maxpooling(对于不同的核大小,padding是自适应的)对三次最大池化的结果与未进行池化操作的数据进行concat,最终合并后channel数是原来的2倍。

作用:SPP是由微软研究院的何凯明大神提出,主要为了解决两个问题:

  • 有效避免了对图像区域剪裁、缩放操作导致的图像失真等问题;
  • 解决了卷积神经网络对图像重复特征提取的问题,大大提高了产生候选框的速度,且节省了计算成本。
    (1)对于不同尺寸的CNN_Pre输出能够输出固定大小的向量。
    (2)可以提取不同尺寸的空间特征信息,可以提升模型对于空间布局和物体变性的鲁棒性。
    (3)可以避免将图片resize、crop成固定大小输入模型的弊端。

4、FPN+PAN结构(多尺度特征融合的方式)
通过 FPN 和 PAN 对图像进行多尺度特征融合,其中上层特征图因为网络层数更深,包含的橙子语义信息也就更强,而下层特征因为经过的卷积层数较少,橙子的位置信息损失就更少,FPN 结构通过自顶向下进行上采样,使得底层特征图包含更强的图像强语义信息;PAN 结构自底向上进行下采样,使顶层特征包含图像位置信息,两个特征最后进行融合,使不同尺寸的特征图都包含图像语义信息和图像特征信息,保证了对不同尺寸的图片的准确预测。
在这里插入图片描述
FPN主要解决的是物体检测中的多尺度问题,通过简单的网络连接改变,在基本不增加原有模型计算量的情况下,大幅度提升了小物体检测的性能。通过高层特征进行上采样和低层特征进行自顶向下的连接,而且每一层都会进行预测。FPN(Feature Pyramid Network)算法同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行的,效果甚佳。

V6
YOLOv6是由美团推出的,所做的主要工作是为了更加适应GPU设备,将2021年的RepVGG结构引入到了YOLO。YOLOv6检测算法的思路类似YOLOv5(backbone+neck)+YOLOX(head)。

主要改动:
1.骨干网络由CSPDarknet换为了EfficientRep
2.Neck是基于Rep和PAN构建了Rep-PAN
3.检测头部分模仿YOLOX,进行了解耦操作,并进行了少许优化。
网络结构:
骨干网络: EfficientRep
Neck: FPN+RepPAN
检测头:类似YOLOX
tricks1:引入RepVGG

YOLOv6对YOLO系列的backbone和neck进行了全新的设计,参考RepVGG[5]网络设计了RepBlock来替代CSPDarknet53模块。YOLOv6中所有的激活函数都为ReLU,从而提升网络训练的速度,且使用transpose反卷积进行上采样,并将neck中的CSP模块也使用RepBlock进行替代(Rep-PAN),但仍然保留FPN-PAN的结构,这样的修改使得其训练的收敛速度更快,推理的速度也更快。
在head中仍然沿用了YOLOX的解耦头设计,不过并未对各个检测头进行降维的操作,而是选择减少网络的深度来减少各个部分的内存占用。此外,在anchor free的锚框分配策略中也沿用了SimOTA等方法来提升训练速度。参考了SloU边界框回归损失函数来监督网络的学习,通过引入了所需回归之间的向量角度,重新定义了距离损失,有效降低了回归的自由度,加快网络收敛,进一步提升了回归精度。
参考连接:https://blog.csdn.net/Pariya_Official/article/details/125794741

V7
概述:ELAN设计思想、MP降维组件、Rep结构的思考、正负样本匹配策略、辅助训练头

1、高效的聚合网络:E-ELAN采用expand、shuffle、merge cardinality结构,实现在不破坏原始梯度路径的情况下,提高网络的学习能力。
2、模型缩放:类似于YOLOv5、Scale YOLOv4、YOLOX,一般是对depth、width或者module scale进行缩放,实现扩大或缩小baseline的目的。
3、模型结构重参化:RepConv。用不同的训练数据训练多个相同的模型,然后对多个训练模型的权重进行平均。一种是对不同迭代次数下模型权重进行加权平均。
4、引导标签分配策略:coarse-to-fine。将负责最终输出的Head为lead Head,将用于辅助训练的Head称为auxiliary Head

V8

  • Backbone:
    骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数。属于对模型结构精心微调,不再是无脑一套参数应用所有模型,大幅提升了模型性能。不过这个 C2f 模块中存在 Split 等操作对特定硬件部署没有之前那么友好了
  • Head:
    Head部分较yolov5而言有两大改进:1)换成了目前主流的解耦头结构(Decoupled-Head),将分类和检测头分离 2)同时也从 Anchor-Based 换成了 Anchor-Free
  • Loss :
    1.YOLOv8抛弃了以往的IOU匹配或者单边比例的分配方式,而是使用了Task-Aligned Assigner正负样本匹配方式。2)并引入了 Distribution Focal Loss(DFL)
  • Train:训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,可以有效地提升精度

参考连接:
https://blog.csdn.net/qq_40716944/article/details/128609569
https://blog.csdn.net/zyw2002/article/details/128732494

C2f模块
我们不着急,先看一下C3模块的结构图,然后再对比与C2f的具体的区别。针对C3模块,其主要是借助CSPNet提取分流的思想,同时结合残差结构的思想,设计了所谓的C3 Block,这里的CSP主分支梯度模块为BottleNeck模块,也就是所谓的残差模块。同时堆叠的个数由参数n来进行控制,也就是说不同规模的模型,n的值是有变化的。C3模块结构图
其实这里的梯度流主分支,可以是任何之前你学习过的模块,比如,美团提出的YOLOv6中就是用来重参模块RepVGGBlock来替换BottleNeck Block来作为主要的梯度流分支,而百度提出的PP-YOLOE则是使用了RepResNet-Block来替换BottleNeck Block来作为主要的梯度流分支。而YOLOv7则是使用了ELAN Block来替换BottleNeck Block来作为主要的梯度流分支。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
yolo系列算法的性能对比是一个广泛讨论的话题。根据引用中提到的一些资源,可以了解到以下信息: 1. YOLOv1是yolo系列的首个版本,它使用GoogleLeNet作为backbone,并且相对于VGG-16来说速度更快,但精度稍低。 2. YOLOv2是对YOLOv1的改进,采用了Darknet-19作为backbone,并引入了anchor boxes的概念以提高检测精度。 3. YOLOv3进一步改进了YOLOv2的性能,使用了更深的Darknet-53作为backbone,并引入了多尺度预测和Feature Pyramid Network (FPN)等技术,以提高检测的准确性和泛化能力。 4. YOLOv4是在YOLOv3的基础上进行了改进,引入了一系列新的优化技术和模块,如CIOU损失函数、Mish激活函数、SAM模块等,大幅提升了检测性能。 5. YOLOv5是在YOLOv4的基础上进行的改进和优化,进一步提升了检测性能。虽然没有与YOLOv4进行直接的性能比较和分析,但在COCO数据集上的测试效果还是相当不错的。 总体来说,yolo系列算法在目标检测任务中取得了显著的进展。每个版本都有其独特的创新和改进,以提高检测速度和精度。而且,yolo系列算法中的改进思路往往相对简单,但却能有效地提升性能。在工业界,更喜欢使用这些方法而不是过于复杂的算法来获得较高的检测精度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [三万字硬核详解:yolov1、yolov2、yolov3、yolov4、yolov5、yolov7](https://blog.csdn.net/shinuone/article/details/127945805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [YOLO系列详解:YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5、YOLOv6](https://blog.csdn.net/qq_40716944/article/details/114822515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值