YOLOv5简介

这篇具有很好参考价值的文章主要介绍了YOLOv5简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

YOLOv5

一、输入端

1. Mosaic数据增强:

YOLOv5简介

CutMix 数据增强:随机生成一个裁剪框Box,裁剪掉A图中的相应位置,然后用B图相应位置的ROI放到A中被裁剪的区域中形成新的样本。采用加权求和的方式计算损失,将A区域中被cut掉的位置随机填充训练集中其他数据的区域像素值,分类结果按一定比例分配。
Mosaic数据增强:对四张图片进行拼接,每一张图片都有其对应的框框,将四张图片拼接之后就获得一张新的图片,同时也获得这张图片对应的锚框,之后将这张新的图片传入到神经网络当中学习,相当于一次传入四张图片进行学习。

论文中说这极大丰富了检测物体的背景!且在标准化BN计算的时候一次会计算四张图片的数据!主要用于小目标检测

2. 自适应锚框计算:

在输入图像中采样大量的区域,判断这些区域中是否包含感兴趣的目标,并调整区域边界从而更准确地预测目标的真实边界框(ground-truth bounding box)。 不同的模型使用的区域采样方法可能不同。 锚框:以每个像素为中心,生成多个缩放比和宽高比(aspect ratio)不同的边界框。

3. 自适应图片缩放:

YOLOv5简介

1、原理:输入网络的尺寸统一缩放到同一个尺寸时,检测效果会更好(train中放入的图并不经过letterbox,而是检测的时候使用letterbox)。如果是简单的使用resize,很有可能就造成了图片信息的丢失,所以提出了letterbox自适应图片缩放技术。
letterbox的主要思想是尽可能的利用网络感受野的信息特征。比如在YOLOV5中最后一层的Stride=5,即最后一层的特征图中每个点,可以对应原图中32X32的区域信息
2、思想:图片变换比例一致指的是,长宽的收缩比例应该采用相同的比例。有效利用感受野信息则是指,对于收缩后不满足条件的一边,用灰白条填充至可以被感受野整除。

二、backbone

YOLOv5简介

1、Focus层(现已弃用):

在获得输入后首先利用focus层将图像的宽高信息转换为通道信息。具体做法是在一张图片中,每隔一个像素获得一个像素,这时获得四个独立的特征层,之后进行特征层的堆叠。目的是减少参数量,增加运行速度。

在YOLOv5最新版本下,Focus层已经改为普通的 64 × 64 64 \times 64 64×64卷积层。如图:

YOLOv5简介

2、Conv2D_BN_SiLU卷积块:

其中,SiLU激活函数是sigmoid和ReLU的改进版,其具有无上界有下界、平滑和单调的特性。

f ( x ) = x × s i g m o i d ( X ) f(x)=x \times sigmoid(X) f(x)=x×sigmoid(X)
YOLOv5简介

部分版本也采用LeakyReLU激活函数。

3、bottleneck

YOLOv5简介
building block(图左)和bottleneck(图右)都是在Resnet提出的。其中,building block是Resnet34提出的,bottleneck是Resnet50提出的。在bottleneck中,1×1的卷积层的作用是减少参数量。经过实验证明,bottleneck即减少了参数量优化了计算,又保持了原有的精度。如果网络层数少的话,选用building block。而如果网络层数很深,为了减少计算量选用bottleneck。

shortcut处选择的是add而不是concat。作用是使特征图相加,维持通道数不变。

4、 CSPLayer:

YOLOv5简介
YOLOv5的CSPNet结构将原输入分成两支(图b),两支分别进行卷积操作使得通道数减半。之后一个分支进行Bottleneck × N操作,然后concat两个分支进行通道数的堆叠。可以抽象的理解为CSPlayer有一个大的“残差边”。 这样的操作使得输入CSPLayer的特征与输出的通道数一致,目的是使模型习得更多的特征。

其中Backbone的CSPLayer结构为:

(CBL为Conv+BN+leakyReLU,CBS为Conv+BN+SiLU)
YOLOv5简介
如图,其将输入先分成两支,一支先经过CBL块(后期改为CBS),再经过多个残差结构(Bottleneck × N),再经过一个卷积调整通道数。另一个分支直接进行卷积调整通道数。之后对这两个分支按通道进行堆叠,最后在经过一个CBL(后期改为CBS)。

Neck的CSPLayer结构为: YOLOv5简介
Neck层的CSPLayer将中间的残差结构换成了2 × X个CBL(后期为CBS)。主要原因是Neck层比较浅。

5、SPPBottleneck:

传统的SPP又称金字塔池化可以将任意大小的特征图转换成固定大小的特征向量。但是在YOLOv5中,SPPBottleneck主要作用是通过不同池化核大小的最大池化进行特征提取,提高网络的感受野。其中,shotcut处为concat,因此应保证每次池化后map大小不变。
YOLOv5简介
SPPF,在YOLOv5后期提出了SPPF结构,其将并行的最大层化改为了串行的最大池化层,虽然对结构进行了修改但是目的完全一样。
YOLOv5简介
其中,串行的2个5×5和1个9×9是等价的,串行的3个5×5和1个13×13是等价的。并行和串行的效果一样,但串行的效率更高。

三 、Neck层

YOLOv5简介
如图,YOLOv5提取三个特征层进行目标检测,分别位于中间层、中下层和底层。三个特征层的尺寸分别为 ( 80 , 80 , 256 ) (80, 80, 256) (80,80,256) ( 40 , 40 , 512 ) (40, 40, 512) (40,40,512) ( 20 , 20 , 1024 ) (20, 20 ,1024) (20,20,1024)

特征金字塔可以将不同shape的特征层进行特征融合,有利于提取更好的特征,具体融合方式如图。其中,上采样采用插值,下采样采用卷积。

FPN(语义信息)+PAN(定位信息)

通常认为,深层的特征层携带有较强的语义特征信息和较弱的定位信息;浅层的特征层有较强的位置信息和较弱的语义信息。FPN就是把深层的语义特征传到浅层,从而增强多个尺度上的语义表达。而PAN则把浅层的定位信息传导到深层,增强多个尺度上的定位能力。

如图,FPN是自底向上,将高层的语义特征传递上去,对整个金字塔进行增强,但是只增强了语义信息而没有增强位置信息;通过在FPN后加上一个自顶向下的PAN对位置信息进行补充,将顶层的位置信息传递下去。

四、 YOLO Head

通过特征金字塔,获得了三个加强特征,分别为 ( 20 , 20 , 1024 ) (20, 20, 1024) (20,20,1024) ( 40 , 40 , 512 ) (40, 40, 512) (40,40,512) ( 80 , 80 , 256 ) (80, 80, 256) (80,80,256),之后将这三个加强特征传入YOLO Head获得预测结果。

对于每一个特征层,首先使用一个卷积调整通道数,最终的通道数与数据集的类别数相关。其中,每一个特征层的每一个特征点存在3个锚框。

假设使用的是voc数据集,类别是20种,最后的维度为75=3×(4+1+20)

其中:3代表三个锚框;4代表每一个锚框的回归参数;1代表该特征点是否包含物体(该特征点是否为背景);20用于判断该特征点的种类。

假设使用的是coco数据集(类别为80),则最后的通道数为255=3×(4+1+80)。

五、 预测

1、 解码

假设数据集为coco数据集,获得的特征层预测结果为: ( N , 20 , 20 , 255 ) (N, 20, 20, 255) (N,20,20,255) ( N , 40 , 40 , 255 ) (N, 40, 40, 255) (N,40,40,255) ( N , 80 , 80 , 255 ) (N, 80, 80, 255) (N,80,80,255),之后将255拆分成3个85,对应3个锚框的85个参数。

( N , 20 , 20 , 255 ) (N, 20, 20, 255) (N,20,20,255)特征层reshape成 ( N , 20 , 20 , 3 , 85 ) (N, 20, 20, 3, 85) (N,20,20,3,85),之后对每个特征点对应的三个锚框进行解码操作:

其中: p w p_w pw p h p_h ph为锚框的长宽, c x c_x cx c y c_y cy为预测锚框对应的单元格离图片左上角的距离。 ( t x , t y , t w , t h ) (t_x, t_y, t_w, t_h) (tx,ty,tw,th)是预测偏移量。 σ \sigma σ为sigmoid激活函数。

YOLOv5简介
YOLOv5简介

图一为YOLOv2/3/4的锚框回归计算公式,图二为YOLOv5的锚框回归计算公式。

  1. 宽高计算:作者认为原始的yolo /darknet框方程式存在严重缺陷,宽度和高度虽然永远>0,但不受限制,因为它们只是 o u t = e i n out=e^{in} out=ein。这种指数的运算很危险,易导致梯度不稳定,训练难度加大,使用 ( 2 σ ( t w ) ) 2 \left(2\sigma\left( t_w \right) \right)^2 (2σ(tw))2既能够保证宽高>0,也能对宽高限制,最大值为anchor框宽高的4倍。
  2. 偏移计算:因为YOLOv5的正样本定义与YOLO之前系列的不同,故在此公式的计算也不相同。关于正负样本在”训练“处进行介绍。
2、得分筛选与非极大抑制:

得分筛选与非极大抑制的过程可以概括如下:

  1. 找出该图片中得分大于门限函数的框。在进行重合框筛选前就进行得分的筛选可以大幅度减少框的数量。
  2. 对种类进行循环,非极大抑制的作用是筛选出一定区域内属于同一种类得分最大的框,对种类进行循环可以帮助我们对每一个类分别进行非极大抑制。
  3. 根据得分对该种类进行从大到小排序。
  4. 每次取出得分最大的框,计算其与其它所有预测框的重合程度,重合程度过大的则剔除。

六、训练

1、 LOSS组成

网络的损失与网络的预测组成相同,分为:Reg部分(特征点的回归参数)、Obj部分(该特征点是否包含物体)、Cls部分(特征点物体的种类)。

2、 正样本匹配:

从IOU匹配变成shape匹配,先计算gt与9个锚框的长宽比,如果长宽比小于设定阈值,说明该gt和对应的锚框匹配,一个gt可能与几个锚框均能匹配上,因为同之前YOLO一样,YOLOv5有三层网络,9个锚框, 从小到大,每3个锚框对应一层网络,所以一个gt可能在不同的网络层上做预测训练,大大增加了正样本的数量,当然也会出现gt与所有锚框都匹配不上的情况,这样gt就会被当成背景,不参与训练。

3、 筛选框匹配:

gt框与锚框匹配后,得到锚框对应的网络层的grid,看gt中心点落在哪个grid上,不仅取该grid中和gt匹配的锚框作为正样本,还取相邻的的两个grid中的anchor为正样本。同时gt不仅与一个锚框匹配,如果跟几个锚框都匹配上,而且锚框不在同一个网络层上,所以可能有3-9个正样本,增大正样本数量。

4、 LOSS计算:

1、DIOU Loss: 好的目标框函数应该考虑三个重要几何因素:重叠面积、中心点距离和长宽比如何最小化预测框和目标框之间的归一化距离:DIOU_Loss
YOLOv5简介
DIOU_Loss考虑了重叠面积和中心点距离,当目标框包裹预测框的时候,直接度量2个框的距离,因此DIOU Loss收敛的更快。
YOLOv5简介

问题:没有考虑长宽比:如1、2、3,目标框包裹预测框,本来DIOU_Loss可以起作用,但是预测框的中心点的位置都是一样的,因此按照DIOU Loss的计算公式,三者的值都是相同的。

2、CIOU Loss:CIOU Loss在DIOU Loss的基础上增加了一个影响因子,将预测框和目标框的长宽比都考虑进去了。
C I O U _ L o s s = 1 − C I O U = 1 − ( I O U − D i s t a n c e _ 2 2 D i s t a n c e _ C 2 − v 2 ( 1 − I O U ) + v ) CIOU\_Loss = 1-CIOU=1-(IOU -\frac{Distance\_2^2}{Distance\_C^2}- \frac{v^2}{(1-IOU)+v}) CIOU_Loss=1CIOU=1(IOUDistance_C2Distance_22(1IOU)+vv2)
其中, v v v是衡量长宽比一致性的参数,也可以定义为:
v = 4 π 2 ( a r c t a n w g t h g t − a r c t a n w P h P ) 2 v=\frac{4}{\pi^2}(arctan\frac{w^{gt}}{h^{gt}}-arctan\frac{w^P}{h^P})^2 v=π24(arctanhgtwgtarctanhPwP)2
这样,CIOU Loss就将目标框回归函数应该考虑三个重要集合因素:重叠面积、中心点距离、长宽比全都考虑进去了。

3、Obj部分,由第正样本匹配部分可知道每个真实框对应的先验框,所有真实框对应的先验框都是正样本,剩余的先验框均为负样本,根据正负样本和特征点的是否包含物体的预测结果计算交叉熵损失,作为Obj部分的Loss组成。

4、 Cls部分,由第三部分可知道每个真实框对应的先验框,获取到每个框对应的先验框后,取出该先验框的种类预测结果,根据真实框的种类和先验框的种类预测结果计算交叉熵损失,作为Cls部分的Loss组成。文章来源地址https://www.toymoban.com/news/detail-438894.html

到了这里,关于YOLOv5简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 为YOLOv5、YOLOv8带来全新的数据增强方式-合成雾增强算法

    BestYOLO:https://github.com/WangRongsheng/BestYOLO BestYOLO 是一个以科研和竞赛为导向的最好的 YOLO 实践框架! 目前 BestYOLO 是一个完全基于 YOLOv5 v7.0 进行改进的开源库,该库将始终秉持以落地应用为导向,以轻便化使用为宗旨,简化各种模块的改进。目前已经集成了基于 torchvision.model

    2024年02月03日
    浏览(23)
  • YOLOv5的Tricks | 【Trick12】YOLOv5使用的数据增强方法汇总

    如有错误,恳请指出。 时隔两个多月重新看yolov5的代码显然开始力不从心,当时应该一鼓作气的整理完的。在专栏前面的内容一直介绍的是yolov5训练时候使用的一些技巧, 这里用这篇博客最后归纳一下yolov5在数据增强上所使用的技巧。 在yolov3-spp专栏的时候,我介绍过yolov

    2024年01月17日
    浏览(30)
  • YOLOV5超参数设置与数据增强解析

    YOLOv5有大约30个超参数用于各种训练设置。它们在*xml中定义。/data目录下的Yaml文件。更好的初始猜测将产生更好的最终结果,因此在进化之前正确地初始化这些值是很重要的。如果有疑问,只需使用缺省值,这些缺省值是为YOLOv5 COCO训练从头优化的。 YOLOv5的超参文件见data/h

    2023年04月08日
    浏览(70)
  • 高阶数据增强:Cutmix 原理讲解&零基础程序实现

    在上一篇文章一只猫引出的数据增强[Data Augmentation]中,介绍了十四种常用的深度学习数据增强方法,这些方法能满足日常大部分使用需求。但是在处理一些特殊问题时普通的数据增强方法难以显著的提高学习效果,因此本篇博客将介绍一种高级的数据增强方法: CutMix ,并

    2024年02月09日
    浏览(31)
  • 计算机视觉 - 了解Mosaic数据增强

            数据增强包含各种扩展和增强机器学习和深度学习模型数据集的技术。这些方法跨越不同的类别,每种方法都会改变数据以引入多样性并提高模型的稳健性。几何变换(例如旋转、平移、缩放和翻转)会修改图像方向和结构。颜色和对比度调整会改变图像外观,包

    2024年01月17日
    浏览(33)
  • 目标检测: 一文读懂 Mosaic 数据增强

    在 Yolo-V4 、 Yolo-V5 中,都有一个很重要的技巧,就是 Mosaic 数据增强,这种数据增强方式简单来说就是把4张图片,通过随机缩放、随机裁减、随机排布的方式进行拼接。 Mosaic 有如下优点: (1)丰富数据集:随机使用4张图片,随机缩放,再随机分布进行拼接,大大丰富了检

    2024年02月08日
    浏览(29)
  • 【YOLOV5-6.x讲解】数据增强方式介绍+代码实现

    【YOLOV5-6.x 版本讲解】整体项目代码注释导航 现在YOLOV5已经更新到6.X版本,现在网上很多还停留在5.X的源码注释上,因此特开一贴传承开源精神!5.X版本的可以看其他大佬的帖子本文章主要从6.X版本出发,主要解决6.X版本的项目注释与代码分析!...... https://blog.csdn.net/qq_3923

    2023年04月09日
    浏览(26)
  • paddle 52 在paddleseg中实现cutmix数据增强方式

    CutMix是一种极其有效的数据增强方式,尤其是在遥感影像语义分割中。这主要是因为遥感影像标注成本较大,在实际业务中通常都是采用局部标注的方式进行标注,如下图所示仅对标注成本较小的区域进行标注,而对标注成本较大的地方进行忽略。这使得标签数据中各种类别

    2024年02月01日
    浏览(30)
  • 目标检测笔记(七):Mosaic数据增强完整代码和结果展示

    mosaic数据增强则利用了四张图片,对四张图片进行拼接,每一张图片都有其对应的框框,将四张图片拼接之后就获得一张新的图片,同时也获得这张图片对应的框框,然后我们将这样一张新的图片传入到神经网络当中去学习,相当于一下子传入四张图片进行学习了。论文中说

    2024年02月03日
    浏览(34)
  • YOLOv5简介

    一、输入端 1. Mosaic数据增强: CutMix 数据增强 :随机生成一个裁剪框Box,裁剪掉A图中的相应位置,然后用B图相应位置的ROI放到A中被裁剪的区域中形成新的样本。采用加权求和的方式计算损失,将A区域中被cut掉的位置随机填充训练集中其他数据的区域像素值,分类结果按一

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包