YOLOv5网络模型的结构原理讲解(全)

news2025/1/11 15:54:35

目录

  • 前言
  • 1. 基本概念
  • 2. 输入端
    • 2.1 Mosaic 图像增强
    • 2.2 自适应锚框计算
    • 2.3 自适应图片缩放
  • 3. Backbone层
    • 3.1 Focus结构
    • 3.2 CSP结构
  • 3. Neck网络
    • 3.1 SPP结构
    • 3.2 PAN结构
  • 4. 输出端
    • 4.1 Bounding box损失函数
    • 4.2 NMS非极大值抑制

前言

YOLOv5有几种不同的架构,各网络模型算法性能分别如下:
在这里插入图片描述

1. 基本概念

YOLOv5是一种目标检测算法,其模型结构主要包括以下组成部分:

  • 输入端:YOLOv5的Head网络由3个不同的输出层组成,分别负责检测大中小尺度的目标。

  • Backbone网络:YOLOv5使用CSPDarknet53作为其主干网络,其具有较强的特征提取能力和计算效率。

  • Neck网络:YOLOv5使用的是FPN(FPN网络能够在不同的特征图层次上进行检测,可以提高目标检测的性能)网络,可以融合来自不同特征图层次的信息。

  • 输出端:损失函数,YOLOv5使用的是Focal Loss损失函数,该函数可以缓解目标检测中类别不平衡的问题,提高模型的性能。非极大值抑制(NMS),YOLOv5在输出结果后,会对重叠的目标框进行NMS处理,以得到最终的检测结果。

  • 激活函数,YOLOv5使用的是Mish激活函数,该函数是一种替代ReLU的激活函数,可以提高模型的性能。

总体来说,YOLOv5的模型结构相对简单,但其使用了多种技术和策略,如CSP结构、FPN网络、Mish激活函数和Focal Loss损失函数等,以提高模型的性能和鲁棒性。

配合代码可看我这篇文章:Yolov5 代码从入门到畅通(v6.2) 附代码注释

2. 输入端

输入端 主要由Mosaic 图像增强、自适应锚框计算 以及 自适应图片缩放 组成

2.1 Mosaic 图像增强

补充:
YOLOv5图像增强支持多种模式,包括以下几种:

- Mosaic模式:将四张不同的图像拼接成一张图像,用于增加数据集的多样性。

- Random模式:包含多种图像增强方式,如随机缩放、随机裁剪、随机旋转、随机亮度调整、随机对比度调整等,可以随机地选择其中一种或多种方式进行图像增强。

- MixUp模式:将两张不同的图像进行混合,用于增加数据集的多样性和防止过拟合。

- CutMix模式:将两张不同的图像进行裁剪混合,用于增加数据集的多样性和防止过拟合。

- GridMask模式:通过在图像中加入遮罩,可以增加数据集的多样性和防止过拟合。

- AutoAugment模式:通过搜索最优的数据增强策略来提高模型的性能。
  • 基本概念:Mosaic图像增强是一种目标检测中常用的数据增强方法,它可以通过组合多个不同的图像来生成新的训练图像。

  • 主要作用:Mosaic图像增强可以增加训练集的多样性和难度,有助于提高目标检测模型的鲁棒性和泛化能力。同时,Mosaic图像增强还可以降低过拟合风险,提高模型的训练效果。

  • 主要步骤:随机选择四张不同的图像,将这四张图像随机拼接成一张大图像,其中每个小图像的位置和大小都是随机的。(对于大图像中的每个目标,重新计算其在大图像中的位置和大小。在大图像中标注每个目标的新位置和大小,并生成新的标注信息。)

实战代码模块的YOLOv5s的项目代码中,设置了两种类型,分别是Mosaic4 load和Mosaic9 load,这是两种不同的数据增强方式,它们的区别在于使用的图像数量不同。

  • Mosaic4 load会随机选择4张不同的图像,并将它们拼接在一起,形成一张包含4个不同图像的大图像。然后,将大图像作为训练集中的一张图像,对其进行数据增强操作,如随机裁剪、大小变换等。这样可以增加训练集的多样性和难度,提高目标检测模型的鲁棒性和泛化能力。

  • Mosaic9 load则会随机选择9张不同的图像,并将它们拼接在一起,形成一张包含9个不同图像的大图像。然后,对大图像进行数据增强操作,如随机裁剪、大小变换等。这样可以进一步增加训练集的多样性和难度,提高模型的鲁棒性和泛化能力。

总之,Mosaic4 load和Mosaic9 load都是用于数据增强的方法,它们的区别在于使用的图像数量不同,Mosaic9 load使用的图像数量更多,相应地增加了训练集的多样性和难度,但也增加了计算量和训练时间。

2.2 自适应锚框计算

在目标检测算法中,锚框是指在输入图像上定义的一些预先设定好的矩形框,用于检测不同尺度和宽高比的目标。

传统的目标检测算法中,通常需要手动设置锚框的大小和宽高比等参数。然而,这些参数的选择往往需要经验和调试,容易出现不稳定和不准确的情况。

为了解决这个问题,自适应锚框的方法应运而生。自适应锚框的思想是通过学习的方式自动计算出最适合输入图像的锚框参数,而不需要手动设置。这种方法可以提高目标检测的精度和鲁棒性。

自适应锚框计算的方法主要有两种:

  • Anchor-free方法:该方法直接回归目标的位置和尺寸,不需要使用锚框。典型的Anchor-free方法包括CenterNet和CornerNet等。

  • Anchor-based方法:该方法使用锚框来检测目标,但是锚框的大小和宽高比等参数是根据输入图像自适应计算的。典型的Anchor-based方法包括RetinaNet和FSAF等。

总之,自适应锚框的方法可以避免手动设置锚框参数的问题,提高目标检测的精度和鲁棒性。同时,自适应锚框的方法也是目标检测领域的一个研究热点。

而 YOLOv5使用的是一种名为ATSS(Adaptive Training Sample Selection)的自适应锚框计算方法。

  • ATSS是一种基于Anchor-based的目标检测算法,它通过学习的方式自动计算出最适合输入图像的锚框参数,而不需要手动设置。ATSS算法的核心思想是,在训练过程中,根据样本与锚框的匹配度(即交并比IoU),自适应地选择正负样本,从而有效地降低了难样本的影响,并提高了检测精度。ATSS算法在YOLOv5中的应用,使得YOLOv5在目标检测任务中取得了较为出色的性能表现。

2.3 自适应图片缩放

在YOLOv5中,自适应图片缩放(Adaptive Image Scaling)是一种基于目标尺度的图像缩放方式,它可以自适应地缩放输入图像的尺寸,以适应不同尺度目标的检测。

以YOLOv5s为例,详细介绍一下自适应图片缩放的原理和步骤:

阶段过程
预处理阶段首先,输入图像将被缩放到一个基准尺寸,即YOLOv5s中的默认基准尺寸是640x640像素

如果输入图像尺寸小于基准尺寸,则会通过插值算法将其缩放到基准尺寸;如果输入图像尺寸大于基准尺寸,则会将其缩放到一个较小的尺寸,并在后续的缩放过程中进行适当调整。
网络输入阶段在图像输入到网络之前,YOLOv5会根据图像中最大目标的尺度,动态地调整输入图像的尺寸。具体来说,YOLOv5会计算出图像中最大目标的尺寸,然后根据一定的缩放规则将图像缩放到一个适当的尺寸,以确保最大目标的尺寸可以被检测到。

例如,在YOLOv5s中,如果最大目标的尺寸小于80x80像素,则将图像缩放到640x640像素;如果最大目标的尺寸大于80x80像素但小于160x160像素,则将图像缩放到1280x1280像素;如果最大目标的尺寸大于160x160像素,则将图像缩放到1920x1920像素。
网络输出阶段在网络输出时,YOLOv5会根据预测框的位置和尺寸,将检测结果映射回原始图像坐标系。由于输入图像的尺寸可能被缩放过,因此需要进行相应的反缩放操作,以便将检测结果映射回原始图像坐标系中。

总之,YOLOv5中的自适应图片缩放是一种基于目标尺度的图像缩放方式,它可以自适应地缩放输入图像的尺寸,以适应不同尺度目标的检测。这种方法可以有效地解决目标检测中存在的尺度不一致问题,提高检测精度和鲁棒性。

3. Backbone层

Backbone层主要由Focus结构 以及 CSP结构 组成

3.1 Focus结构

YOLOv5中的Focus结构是一种用于特征提取的卷积神经网络层,用于将输入特征图中的信息进行压缩和组合,从而提取出更高层次的特征表示。

Focus结构是YOLOv5中的一种特殊卷积操作,它被用作网络中的第一个卷积层,用于对输入特征图进行下采样,以减少计算量和参数量。
在这里插入图片描述

具体来说,Focus结构可以将输入特征图划分成四个子图,并将这四个子图进行通道拼接,从而得到一个更小的特征图。假设输入特征图的大小为N×N×C,其中N为特征图的尺寸,C为通道数,则Focus结构的计算过程可以分为以下几个步骤:

  1. 将输入特征图进行通道分离,得到两个大小为N×N×C/4的特征图,记为x和y。

  2. 对x和y分别进行横向和纵向的步长为2的卷积操作,得到两个大小为N/2×N/2×C/4的特征图,记为x’和y’。

  3. 将x’和y’进行通道拼接,得到一个大小为N/2×N/2×C/2的特征图,记为z。

  4. 对z进行横向和纵向的步长为2的卷积操作,得到一个大小为N/4×N/4×C/2的特征图,即为Focus结构的输出。

由于Focus结构对输入特征图进行了下采样,因此可以有效地减少计算量和参数量,同时保留了输入特征图中的重要信息,有助于提高模型的特征提取能力。在YOLOv5中,Focus结构被广泛用于各个卷积块的第一个卷积层,以实现对输入特征图的下采样和特征压缩。

特别注意的是:
YOLOv5的代码中有时会将Focus结构替换为卷积层。

这是因为Focus结构在实现上比较复杂,需要进行通道分离、卷积、通道拼接等操作,导致计算量较大,不利于模型的训练和推理。

为了简化网络结构并提高运行效率,YOLOv5的作者采用了一种策略,即将Focus结构替换为标准的卷积层,从而减少计算量和参数量。

具体来说,YOLOv5中的卷积层是以步长为2的方式进行下采样的,与Focus结构类似,它可以实现对输入特征图的压缩和下采样。因此,将Focus结构替换为卷积层可以在一定程度上提高模型的训练和推理效率,同时减少代码的复杂度和开发难度。

需要注意的是,由于卷积层只能进行简单的特征压缩和下采样操作,可能会损失一些输入特征图中的细节信息。因此,在某些需要较高特征提取能力的任务中,采用Focus结构可能会更加合适。

3.2 CSP结构

CSP(Cross Stage Partial)结构是YOLOv5中的一个重要组成部分,用于构建骨干网络(backbone)。CSP结构最初在CVPR 2020中提出,可以有效地减少网络参数和计算量,同时提高特征提取的效率。

CSP结构的核心思想是将输入特征图分成两部分,一部分经过一个小的卷积网络(称为子网络)进行处理,另一部分则直接进行下一层的处理。然后将两部分特征图拼接起来,作为下一层的输入。

具体来说,CSP结构包括以下几个步骤:

  1. 将输入特征图分成两部分,一部分进行子网络的处理,另一部分直接进行下一层的处理。

  2. 在子网络中,先使用一个卷积层将输入特征图进行压缩,然后进行一系列卷积操作,最后再使用一个卷积层进行扩张。这样可以提取出相对较少的高层次特征。

  3. 在下一层中,将经过子网络处理的特征图与直接处理的特征图进行拼接,然后再进行一系列卷积操作。这样可以将低层次的细节特征和高层次的抽象特征结合起来,提高特征提取的效率。

CSP结构在YOLOv5中被广泛应用,包括骨干网络中的多个阶段以及头部网络(head)中的一些模块。它可以显著地减少网络的参数和计算量,同时提高特征提取的效率,从而加快模型的训练和推理速度。

补充:

在CSP结构中,有两种不同的实现方式:CSPDarknet53和CSPResNet50。总的来说,CSPDarknet53和CSPResNet50都采用了CSP结构进行特征提取,但具体的实现方式略有不同。它们在YOLO系列目标检测模型中都取得了很好的效果。

  • CSPDarknet53是YOLOv4中提出的一种骨干网络,CSPDarknet53的结构类似于Darknet53
  • CSPResNet50是YOLOv5中提出的一种骨干网络,CSPResNet50的结构类似于ResNet50

两者 主要是 加入了CSP模块,用于提高特征提取的效率和减少模型的参数量。包括多个CSP模块,每个模块将输入特征图分成两部分,一部分进行子网络的处理,另一部分直接进行下一层的处理。然后将两部分特征图拼接起来,作为下一层的输入。这样可以将低层次的细节特征和高层次的抽象特征结合起来,提高特征提取的效率。

3. Neck网络

YOLOv5中的Neck网络是指在骨干网络的基础上加入的中间特征提取网络,主要用于增强模型的特征表达能力和感受野,进一步提升模型的检测性能。

YOLOv5中采用了两种不同的Neck网络结构:SPP和PAN。

Neck网络结构具体说明
SPP(Spatial Pyramid Pooling)结构一种金字塔池化结构,可以对不同大小的特征图进行池化,从而增强模型对不同尺度目标的感知能力。具体地,SPP结构将输入特征图分别进行1x1、2x2和3x3的池化操作,并将不同尺度的池化结果拼接起来,作为SPP结构的输出。
PAN(Path Aggregation Network)结构一种多尺度特征融合结构,它可以将不同层次的特征进行有效融合,并且避免信息丢失。具体地,PAN结构首先通过上采样将较高层次的特征图尺度与较低层次的特征图尺度对齐,然后通过特征融合模块将它们进行融合,并最终输出融合后的特征图。

在YOLOv5中,SPP和PAN结构可以相互配合使用,以提高模型的检测性能。SPP结构可以增强模型的感知能力和尺度不变性,而PAN结构可以增强多尺度特征的融合能力。

3.1 SPP结构

  • SPP(Spatial Pyramid Pooling)结构是一种金字塔池化结构,可以对不同大小的特征图进行池化,从而增强模型对不同尺度目标的感知能力。
    SPP结构的主要思想是通过对输入特征图进行不同大小的池化操作,将不同尺度的信息进行融合。
    常见的SPP结构有SPP1x1、SPP3x3和SPP5x5等,其中SPP1x1相当于全局平均池化,SPP3x3和SPP5x5则分别对特征图进行3x3和5x5的池化操作。

  • SPPF(Spatial Pyramid Pooling Fusion)结构则是在SPP结构的基础上进一步引入了特征融合模块,以进一步提升模型的感知能力和检测性能。具体地,SPPF结构首先对输入特征图进行不同大小的池化操作,然后通过卷积操作将不同尺度的池化结果进行融合,并最终输出融合后的特征图。SPPF结构的特点是可以自适应地融合不同尺度的特征信息,从而增强模型的特征表达能力和感知能力。

3.2 PAN结构

PAN(Path Aggregation Network)是一种用于目标检测的特征金字塔网络结构,旨在通过多层级的特征融合,提升模型对不同尺度目标的感知能力。

PAN结构主要由两个模块组成:特征金字塔模块和特征融合模块。

  • 特征金字塔模块通常由多个不同大小的卷积层和池化层组成,用于生成不同尺度的特征图。不同尺度的特征图可以提供不同粒度的目标信息,同时也可以克服特征图上的位置偏差。

  • 特征融合模块用于将不同尺度的特征图进行融合,以提升模型的特征表达能力和感知能力。
    常见的特征融合方法有横向特征融合和纵向特征融合。
    1.横向特征融合主要是将不同尺度的特征图进行级联,形成多尺度特征图。
    2.纵向特征融合主要是将不同尺度的特征图进行聚合,通过加权平均等方式进行融合。
    PAN结构中的特征融合模块使用了自上而下的特征聚合方式,即从上往下通过特征融合模块逐层融合特征,从而形成更为强大的特征表示。

总之,PAN结构通过特征金字塔和特征融合两个模块的组合,能够有效地提升目标检测的性能。

4. 输出端

YOLOv5的输出端主要是预测框,每个预测框由以下信息组成:

  • 置信度(confidence score):表示该框内是否存在目标的概率,取值范围为0到1。

  • 类别概率(class probabilities):表示该框内目标属于各个类别的概率,一般是预先定义好的类别数量。

  • 边界框位置(bounding box coordinates):表示目标的位置和大小,一般用矩形框来表示。

YOLOv5中的输出层一般包括三个不同尺度的特征图,每个特征图对应不同尺度的预测框,每个预测框包含的信息如上述所述。具体地,YOLOv5在输出层通过使用anchor box来预测目标的边界框位置和大小,同时对每个anchor box对应的预测结果使用softmax函数来计算类别概率。

总之,YOLOv5的输出端可以输出图像中目标的位置、大小和类别等信息,以便后续的目标识别和跟踪等任务进行处理。

4.1 Bounding box损失函数

YOLOv5中的Bounding box损失函数采用IoU loss函数,主要用于衡量预测的边界框与真实边界框之间的差异。

IoU loss是Intersection over Union(IoU)的一种变形,它是一种用于测量预测边界框与真实边界框之间重叠程度的指标。在目标检测中,IoU通常被用来评估预测框和真实框的重叠情况,以确定预测框是否正确。

具体而言,对于每个预测边界框,我们计算其与所有真实边界框的IoU值,然后选择IoU最大的那个真实边界框作为其对应的匹配目标,从而计算出其IoU loss。

其具体使用DIOU损失函数,公式如下:
在这里插入图片描述
在这里插入图片描述

补充如下:

DIOU、GIOU和CIOU都是目标检测中用于计算边界框距离的指标,它们都是对传统的IoU(Intersection over Union)指标的改进和扩展。

  • DIOU(Distance IoU)是在IoU的基础上引入了中心点距离,它可以有效地缓解定位误差对目标检测性能的影响。具体而言,DIOU的计算公式如下:
    在这里插入图片描述
    其中, I o U ( A , B ) IoU(A,B) IoU(A,B)表示边界框 A A A B B B之间的IoU值, d c ( A , B ) d_c(A,B) dc(A,B)表示边界框 A A A B B B之间的中心点距离, ω \omega ω表示图像对角线长度。

  • GIOU(Generalized IoU)在DIOU的基础上进一步引入了边界框面积的比率,可以有效地缓解尺度变化对目标检测性能的影响。具体而言,GIOU的计算公式如下:
    在这里插入图片描述
    其中, c ( A , B ) c(A,B) c(A,B)表示边界框 A A A B B B之间的最小包含框的面积, α \alpha α是一个可调的参数,用于平衡中心点距离和尺度比率对目标检测性能的影响。

  • CIOU(Complete IoU)在GIOU的基础上进一步引入了角点距离的概念,可以有效地缓解旋转和倾斜对目标检测性能的影响。具体而言,CIOU的计算公式如下:
    在这里插入图片描述
    其中, s ( A , B ) s(A,B) s(A,B)表示边界框 A A A B B B之间的角点距离, α \alpha α是一个可调的参数,用于平衡中心点距离、尺度比率和角点距离对目标检测性能的影响。

总体来说,DIOU、GIOU和CIOU都是一种更加综合、更加准确的边界框距离度量方式,可以有效地提升目标检测性能。

4.2 NMS非极大值抑制

在目标检测任务中,一个物体可能被多个预测框检测出来,为了避免对同一个物体进行多次检测,需要对重复的预测框进行过滤,这个过程就是非极大值抑制(Non-maximum suppression,简称NMS)。

在YOLOv5中,NMS主要是通过以下几个步骤实现的:

  1. 首先,对所有预测框按照置信度从高到低进行排序。

  2. 然后,从置信度最高的预测框开始,依次遍历每个预测框,判断该预测框与后面所有预测框之间的IOU值是否大于一定的阈值(一般为0.5或0.6)。

  3. 如果IOU值大于阈值,则将该预测框从候选框列表中剔除,否则保留该预测框。

  4. 继续遍历下一个预测框,重复上述步骤,直到所有预测框都被遍历一遍。

  5. 最终,保留下来的预测框就是经过NMS处理后的结果,即每个物体只对应一个预测框。

NMS算法的核心是通过比较重复预测框之间的IOU值,去除冗余的预测框,保留最优的结果。在YOLOv5中,NMS可以避免同一个物体被重复检测的问题,提高了检测的精度和效率。

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

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

相关文章

ChatGPT评微博热文“留给普通人的最后一扇门,快要关闭了”

目录 留给普通人的最后一扇门,快要关闭了 这篇文章你看过吗 普通人通过接受高等教育提升阶级的路还走得通吗,为什么大家都开始考公务员了 高等教育仍然是提升阶级的一条途径,但并不是唯一的途径。那还有哪些路径? 继续&#x…

【谷歌插件开发】获取当前网站COOKIE并上报HTTP-API

一 背景 由于本人每天需要登录网站查看数据并分析统计汇总,而每次机械式地搜索和简单计算,十分繁琐。我们可以写个定时任务,每天根据cookie获取网站数据并遍历统计。 脚本得以成功执行的关键是需要获取到COOKIE 故,写了个谷歌插件…

UE4架构初识(七)

目录 UE4仿真引擎学习 一、架构基础总结 1. 游戏世界 2. 数据和逻辑 3. 整体类图 UE4仿真引擎学习 一、架构基础总结 1. 游戏世界 在UE的眼里,游戏世界的万物皆Actor,Actor再通过Component组装功能。Actor又通过UChildActorComponent实现Actor之间的…

代码随想录之贪心合集

455 分发饼干 先排序之后按顺序比较 class Solution {public int findContentChildren(int[] g, int[] s) {//57Arrays.sort(g);Arrays.sort(s);int k0;int i0;int count0;while(k<s.length&&i<g.length){if(g[i]<s[k]){count;i;k;}else k;}return count;} }…

视频大文件传输的演变:从“卷轴男孩”到自动化

200年前&#xff0c;从纽约市到英国伦敦的单程旅行需要乘坐一艘跨大西洋轮船将近三周——如果你能负担得起的话&#xff0c;那就是。那些不能在满是汗水、狭窄的帆船上安顿大约一个半月的人。 今天&#xff0c;视频专业人士能够在几小时甚至几分钟内跨越相同的物理距离传输大量…

烟雾弹?突然转变?如何看待微软发声:中国是主要的对手

是的&#xff0c;我又回来了&#xff0c;今天要跟各位唠的还是ChatGPT的嗑。今天的新闻是啥呢&#xff1f; 《微软总裁&#xff1a;中国将是 ChatGPT 的主要对手&#xff0c;我们的优势不大》 说实话&#xff0c;我看到这个新闻的时候&#xff0c;大感震撼&#xff0c;在相关报…

YOLOv5快速入门demo

文章目录 1. 官网下载 yolo_master2. 下载得到yolov5-maser.zip 对其进行解压3. 安装所需要的包4. 官网下载一个与训练模型5. 测试一个小demo 使用detect.py6. 训练一个模型 1. 官网下载 yolo_master https://gitcode.net/mirrors/ultralytics/yolov5 下载克隆 2. 下载得到…

HART协议数据格式避坑(C语言压缩字符串Packed-ASCII和ASCII转换)

HART协议数据格式避坑&#xff08;C语言压缩字符串Packed-ASCII和ASCII转换&#xff09; 首先HART数据格式如下&#xff1a; 重点就是浮点数和字符串类型 Latin-1就不说了 基本用不到 浮点数 浮点数里面 如 0x40 80 00 00表示4.0f 在HART协议里面 浮点数是按大端格式发送的…

oracle 18c dataguard 从库scn 不更新BUG

Bug 29056767 - STANDBY: Datafiles Checkpoint not Updated at Standby Database when Media Recover is running (Doc ID 29056767.8)正在上传…重新上传取消To Bottom Bug 29056767 STANDBY: Datafiles Checkpoint not Updated at Standby Database when Media Recover i…

IPEmotion控制模块-PID循环应用

IPEmotion专业版、开发版支持控制模块&#xff0c;并且该模块支持函数发生器、PID控制器、路由器、序列控制和序列控制块以及参考曲线生成器。本文主要针对PID&#xff08;P&#xff1a;Proportional control 比例控制&#xff1b;I&#xff1a;Integral control 积分控制&…

Linux tail 命令

前言 Linux 实时查看日志文件&#xff0c;最主要使用的就是tail命令。 linux tail命令用于显示文件尾部的内容&#xff0c;默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个&#xff0c;则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”…

同步辐射全散射PDF分析:探究材料结构的新方法

同步辐射全散射PDF&#xff08;Pair Distribution Function&#xff09;分析是一种非常强大的物质结构研究方法。它通过同步辐射技术&#xff0c;将X射线或中子散射的数据进行处理&#xff0c;得到物质的原子间距分布函数&#xff0c;从而揭示物质的微观结构信息。该方法已经在…

Vue3上传(Upload)

可自定义设置以下属性&#xff1a; 接受上传的文件类型&#xff08;accept&#xff09;&#xff0c;类型&#xff1a;string&#xff0c;默认 *&#xff0c;&#xff0c;与<input type"file">的accept属性一致&#xff0c;详见 https://developer.mozilla.org/…

数据结构与算法(五):算法专项 Hash、BitMap、Set、布隆过滤器、中文分词、Lucene 倒排索引

算法专项 Hash、BitMap、Set、布隆过滤器、中文分词、Lucene 倒排索引 Hash 思考&#xff1a; 给你N&#xff08;1<N<10&#xff09;个自然数,每个数的范围为&#xff08;1~100&#xff09;。现在让你以最快的速度判断某一个数是否在这N个数内&#xff0c;不得使用已经…

Ubuntu20.04+安装MySQL8+ 并设置忽略表名大小写

更新apt apt -y update安装mysql-server apt -y install mysql-server查看服务是否启动 ps -ef | grep mysql如下图启动成功 或者 systemctl status mysql设置root登录密码 执行命令&#xff1a; mysql -uroot选择数据库&#xff1a; use mysql;修改密码&#xff1a; a…

0602基础使用(一)-react路由-react

文章目录 1 基本使用1.1 安装js库1.2 使用示例1.3 总结 2 路由组件与一般组件2.1 路由组件2.2 路由组件与普通组件示例2.3 总结 3 NavLink组件3.1 NavLink 简介3.2 NavLink实现高亮与自定义样式 结语 1 基本使用 1.1 安装js库 react-router-dom&#xff0c;react的一个插件库…

flink on k8s提交任务

目录 相关文档前置准备构建镜像提交任务 相关文档 https://nightlies.apache.org/flink/flink-docs-release-1.13/docs/deployment/resource-providers/native_kubernetes/ 前置准备 flink的lib目录下放入两个依赖 bcpkix-jdk15on-1.68.jar bcprov-jdk15on-1.69.jar 创建用户…

Vue过滤器的基本使用

过滤器 功能&#xff1a;对要显示的数据进行特定格式化后再显示 注意&#xff1a;并没有改变原本的数据&#xff0c;是产生新的对应的数据 声明&#xff1a;过滤器不是必须要用到的东西&#xff0c;而是vue提供处理数据的方式而已&#xff0c;想用就用&#xff0c;不想用可以…

Elasticsearch 实战篇 | 黑马旅游

一、酒店搜索和分页 需求&#xff1a;实现黑马旅游的酒店搜索功能&#xff0c;完成关键字搜索和分页 1、定义实体类&#xff0c;接收前端的参数 如果当搜索条件为空的时候&#xff0c;就返回全部数据&#xff0c;不为空才按照key来搜索 二、条件过滤 修改实体类&#xff0c;…

边缘计算开源项目解读-kubeedge metamanager实现

0 背景 笔者在前面的几篇文章从设备管理和运维的角度解读了kubeedge的相关代码流程和架构。本文将切入kubeedge edgecore的另一个核心业务&#xff0c;即边云协同处理设备元数据相关代码的解读。如果说前面的设备管理和运维并不能体现kubeedge作为边缘计算数据处理平台的特点&a…