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

2023-05-16

目录

  • 前言
  • 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可以避免同一个物体被重复检测的问题,提高了检测的精度和效率。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

YOLOv5网络模型的结构原理讲解(全) 的相关文章

  • SaltStack之salt-ssh

    salt ssh介绍 salt ssh可以让我们不需要在受控机上安装salt minion客户端也能够实现管理操作 salt ssh特点 1 远程系统需要Python支持 xff0c 除非使用 r选项发送原始ssh命令 2 salt ssh
  • TDD代码驱动测试基础

    测试驱动开发 TDD 知识调研 文章目录 测试驱动开发 TDD 知识调研TDD的核心目标处理遗留代码问题的核心法则如下 不良测试的死亡漩涡 xff08 亦称为 SCUMmy 周期 xff09 警惕撤回迈入死亡漩涡的步伐测试先行 FIRST原
  • SaltStack进阶

    masterless 应用场景 1 master 与 minion 网络不通或通信有延迟 xff0c 即网络不稳定 2 想在 minion 端直接执行状态 传统的 SaltStack 是需要通过 master 来执行状态控制 minion
  • docker容器技术基础入门

    容器介绍 xff08 container xff09 容器是一种基础工具 xff1b 泛指任何可以用于容纳其他物品的工具 xff0c 可以部分或完全封闭 xff0c 被用于容纳 储存 运输物品 xff1b 物体可以被放置在容器中 xff0c
  • docker基础用法

    什么是docker Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 xff0c 然后发布到任何流行的 Linux或Windows 机器上 xff0c 也可以实现虚拟化 容器是完全
  • docker容器虚拟化

    虚拟化网络 Network Namespace 是 Linux 内核提供的功能 xff0c 是实现网络虚拟化的重要功能 xff0c 它能创建多个隔离的网络空间 xff0c 它们有独自网络栈信息 不管是虚拟机还是容器 xff0c 运行的时候仿
  • docker容器网络

    docker容器网络 Docker在安装后自动提供3种网络 xff0c 可以使用docker network ls命令查看 root 64 localhost docker network ls NETWORK ID NAME DRIVER
  • docker容器网络配置

    Linux内核实现名称空间的创建 ip netns命令 可以借助ip netns命令来完成对 Network Namespace 的各种操作 ip netns命令来自于iproute安装包 xff0c 一般系统会默认安装 xff0c 如果没
  • docker存储卷

    cow机制 cow意思是写时复制 xff0c 在对页表进程读操作时 xff0c 不会产生异常 xff0c 对页表进程写操作时 xff0c 会触发page fault异常 xff0c 通常这种机制的产生是通过对页表设置read only 在l
  • Docker Private Registry(docker私有仓库)

    Docker Registry 网上有很多的Registry服务器都支持第三方用户注册 xff0c 而后基于用户名去做自己的仓库 xff0c 但是使用互联网上的Registry有一个缺陷 xff0c 那就是我们去推送和下载镜像时都不会很快
  • harbor

    harbor简介 无论是使用Docker distribution去自建仓库 xff0c 还是通过官方镜像跑容器的方式去自建仓库 xff0c 通过前面的演示我们可以发现其是非常的简陋的 xff0c 还不如直接使用官方的Docker Hub去
  • Ansible介绍与安装

    1 介绍Ansible 什么是ansible xff1f ansible是新出现的自动化运维工具 xff0c 基于Python开发 xff0c 集合了众多运维工具 xff08 puppet cfengine chef func fabric
  • 定时打印进程信息shell脚本

    定时打印进程信息脚本 span class token shebang important bin sh span span class token comment 输入参数 span span class token assign lef
  • 部署ansible

    部署ansible 1 构建ansible清单1 1定义清单1 2使用静态清单指定受管主机1 3验证清单1 4覆盖清单的位置1 5构建ansible清单1 6自定义清单文件 2 管理Ansible配置文件2 1配置Ansible2 2配置文
  • ansible常用模块

    ansible常用模块 1 ansible常用模块使用详解2 ansible常用模块之ping3 ansible常用模块之command4 ansible常用模块之raw5 ansible常用模块之shell6 ansible常用模块之sc
  • ansible之playbook

    playbook 1 实施playbook1 1Ansible Playbook与临时命令1 2格式化Ansible Playbook1 3运行playbook1 4提高输出的详细程度1 5语法验证1 6执行空运行 2 实施多个play2
  • LAMP-手动架构部署

    1 lamp简介 有了前面学习的知识的铺垫 xff0c 今天可以来学习下第一个常用的web架构了 所谓lamp xff0c 其实就是由Linux 43 Apache 43 Mysql MariaDB 43 Php Perl Python的一
  • 华为云欧拉操作系统(OpenEuler)部署K8S集群

    华为云欧拉操作系统 xff08 OpenEuler xff09 部署K8S集群 需要提前准备好OpenEular操作系统虚拟机3台 xff0c 本文使用模板机创建 一 主机硬件要求 1 1 主机操作系统说明 序号操作系统及版本备注1open
  • 虚拟机centos关闭繁忙导致无法操作(已解决)

    虚拟机关闭提示虚拟机繁忙导致关闭失败的问题 最近复制了一台虚拟机 xff0c 但是在关闭的时候总是遇到关不上的问题 xff0c 虚拟机提示繁忙 xff0c 开关机和重启按钮一直是灰色图标 xff0c 不能点击 解决办法倒是找到了 xff0c
  • ubuntu桌面图标全部消失,快捷键也打不开终端解决办法

    前几天远程todesk连接实验室服务器过程中出现了ubuntu桌面图标全部消失的现象 按照C到的很多方法操作过都不行 奇怪的是快捷键终端也打不开 界面是下面这个样子的 xff1a 整个人束手无策 然后 xff01 解决方法就是 重启实验室的

随机推荐

  • Ubuntu系统进去之后黑屏是什么问题,及解决办法【最全】

    出现黑屏可能有多种原因 xff0c 以下是一些常见的解决方法 xff1a 1 检查电源线和视频连接线是否牢固 有时候连接线松动或者断开都可能导致黑屏 2 检查显卡驱动是否正确安装 如果显卡驱动没有正确安装 xff0c 可能会导致黑屏 你可以
  • 【在Ubuntu中安装Pycharm(Ubuntu22.04,Pycharm2022.3.3)】详细如何解压文件

    本文讲述了在Ubuntu中安装pycharm的具体步骤 准备环境 xff1a Ubuntu22 04 xff0c Pycharm2022 3 3 具体步骤 xff1a 1 首先下载pycharm xff1a Pycharm官方下载地址 我在
  • 算法—求x的平方根,只保留整数部分(Java)

    需求 给你一个非负整数 x xff0c 计算并返回 x 的 算术平方根 由于返回类型是整数 xff0c 结果只保留 整数部分 xff0c 小数部分将被 舍去 注意 xff1a 不允许使用任何内置指数函数和算符 xff0c 例如 pow x
  • Finding memory bugs with AddressSanitizer

    AddressSanitizer ASan is an instrumentation tool created by Google security researchers to identify memory access proble
  • Android编译出现Warning: Mapping new ns to old ns的解决方案

    出现场景 更新了Android Studio版本后 xff0c 运行项目就出现以下警告 Warning Mapping new ns http schemas android com repository android common 02
  • Maven详细配置(全)

    目录 前言 maven下载配置 配置文件的修改 前言 maven是一个jar包管理工具 可以管理多个jar包 Maven是一个项目管理工具 它包含了一个项目对象模型 Project Object Model 一组标准集合 一个项目生命周期
  • Tomcat:HTTP状态 404 - 未找到解决方法

    出现如下问题 HTTP状态 404 未找到 类型 状态报告 消息 请求的资源 ajax war exploded 不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示 Apache Tomcat 8 5 69 H
  • jdk动态代理(AOP)从入门到精通(全)

    目录 前言1 了解代理模式2 静态代理案例3 动态代理3 1 入门案例3 2 原理实现3 3 深层案例3 4 步骤流程 4 模板总结 前言 整篇文章的代码源码如下 代码源码 理解什么是动态代理以及动态代理能干什么 使用jdk的反射机制 xf
  • SpringBoot从入门到精通(全)

    目录 前言1 入门案例1 1 新建项目1 2 代码模板 2 配置详解2 1 核心配置文件properties2 2 核心配置文件yml yaml2 3 多环境核心配置文件properties2 4 多环境核心配置文件yml2 5 自定义配置
  • jdbc之问号占位符的详细分析

    目录 前言实战 前言 先写sql语句框架 一个问号代表一个占位符 xff0c 之后占位符接收一个值占位符不可使用双引号或者单引号获取占位符 xff0c 给占位符传值 xff0c 通过setString等方法 之所以要用问号占位符 xff0c
  • docker出现Error response from daemon: driver failed programming external connectivity on endpoint解决方法

    目录 1 问题所示 2 分析原理 3 问题解决 1 问题所示 出现了如下问题 即简单测试run命令 运行一个简易命令不加端口的tomcat docker run d P name tomcat01 tomcat docker span cl
  • java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)

    目录 前言1 学习路线2 学习方法 前言 这篇文章主要总结我之前所学过的框架以及学习路线 从实打实的零基础到框架再到项目 之后实习工作 也在这篇博客中记录我的学习笔记 以及在笔记中遇到的配置安装 代码bug等错误 都从零开始摸索并且记录了下
  • Bootstrap从入门到精通(全)

    目录 前言1 下载安装2 布局容器和栅格网格系统2 1 布局容器2 2 栅格网格系统 3 常用样式4 表单4 1 控件4 2 布局 5 插件5 1 导航框5 2 下拉菜单 前言 在了解这篇文章的时候 需要提前知道这些知识点 可看我之前的文章
  • RestTemplate的超全讲解(全)

    目录 前言1 简介2 http状态码3 get请求4 post请求5 Exchange 前言 主要介绍RestTemplate的原理以及使用等 1 简介 常见的http客户端请求工具 xff1a jdk HttpURLConnectionA
  • 出现蓝屏代码为DPC_WATCHDOG_VIOLATION的解决方法

    最近过年 电脑一直时不时出现这个问题 已经严重影响我的工作 你的设备遇到问题 需要重启 我们只收集某些错误信息 然后你可以重新启动 有关此问题的详细信息和可能的解决方法 请访问 https www windows com stopcode
  • Diagnosing Memory Heap Corruption in glibc with MALLOC_CHECK_

    原文链接 https support microfocus com kb doc php id 61 3113982 Environment Novell eDirectory 8 7 3 for Linux Novell eDirecto
  • Java集合的常见面试题(全)

    这里写目录标题 前言常用的集合类有哪些集合底层数据结构ArrayList 和 LinkedList 的区别HashSet 如何检查重复HashSet与HashMap的区别HashMap 和 Hashtable 的区别HashMap 的底层实
  • batchsize大小对网络模型的理解

    目录 前言1 batchsize定义2 batchsize大小3 batchsize平衡 前言 每一次的epoch都是将其数据集经过神经网络 xff0c 进行正向传播以及反向传播 由于epoch训练的数据集可能过大 xff0c 需要将其分块
  • 【密码学】ElGamal加密算法原理 以及 例题讲解

    目录 前言1 原理2 例题2 1 例题一2 2 例题二 前言 具体的性质 xff1a 非对称加密算法应用于一些技术标准中 xff0c 如数字签名标准 xff08 DSS xff09 S MIME 电子邮件标准算法定义在任何循环群 G 上 x
  • YOLOv5网络模型的结构原理讲解(全)

    目录 前言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