OpenCV与AI深度学习 | 基于改进YOLOv8的景区行人检测算法

ops/2024/9/24 10:59:59/

本文来源公众号“OpenCV与AI深度学习,仅用于学术分享,侵权删,干货满满。

原文链接:基于改进YOLOv8的景区行人检测算法

作者:贵向泉,刘世清,李立等

来源:《计算机工程》期刊

编辑:陈萍萍的公主@一点人工一点智能

原文:https://www.ecice06.com/CN/rich_html/10.19678/j.issn.1000-3428.0068125

摘要:针对当前景区行人检测具有检测精度低、算法参数量大和现有公开数据集在小目标检测上存在限制等问题,创建TAPDataset行人检测数据集,弥补现有数据集在小目标检测方面的不足,并基于YOLOv8算法,构建一种检测精度高、硬件要求低的新模型YOLOv8-L。首先引入DepthSepConv轻量化卷积模块,降低模型的参数量和计算量。

其次采用BiFormer注意力机制和上采样算子CARAFE,加强模型对图像的语义理解和信息融合能力,提升模型的检测精度。最后增加一层小目标检测层来提取更多的浅层特征,从而有效地改善模型对小目标的检测性能。

在TAPDataset、VOC 2007及TAP+VOC数据集上的实验结果表明,与YOLOv8相比,在FPS基本不变的情况下,在TAPDataset数据集上,模型的参数量减少了18.06%,mAP@0.5提高了5.51%,mAP@0.5∶0.95提高了6.03%;在VOC 2007数据集上,模型的参数量减少了13.6%,mAP@0.5提高了3.96%,mAP@0.5∶0.95提高了6.39%;在TAP+VOC数据集上,模型的参数量减少了14.02%,mAP@0.5提高了4.49%,mAP@0.5∶0.95提高了5.68%。改进算法具有更强的泛化性能,能够更好地适用于景区行人检测任务。

0 引言

行人检测在智慧文旅建设中扮演着重要角色,该技术已广泛应用于智能视频监控和客流统计等领域[1]。景区行人检测利用计算机视觉技术对景区中的视频或图像进行分析,旨在准确识别和跟踪行人。通过实时监测和分析景区内的人员流动,管理人员能够获得关键的数据信息,以便进行人员调度、安全管理和服务优化等方面的决策[2]。

行人检测主要关注单一目标类别的多尺度和遮挡问题,而目标检测则需要处理多个目标类别的多尺度、遮挡和复杂场景问题[3]。早期的行人检测方法主要基于手工设计的特征和传统的机器学习算法,如Histogram of Oriented Gradients(HOG)和线性支持向量机(SVM)[4]。

然而,这些方法在复杂场景下的鲁棒性和准确性上存在一定的限制。随着深度学习的引入,卷积神经网络(CNN)在行人检测任务中取得了突破性的进展。其中,基于区域提议的方法,如R-CNN、Fast R-CNN和Faster R-CNN等,通过使用CNN进行候选框生成和分类取得了较好的性能[5]。

另外,单阶段检测算法也取得了显著进展,如YOLO、SSD和RetinaNet,它们通过直接在图像中预测边界框和类别,实现了实时性和高准确度之间的平衡。近年来,在行人检测领域还涌现出许多改进和优化的方法,如基于注意力机制的方法、轻量化网络设计、多尺度特征融合等。这些方法不断推动行人检测性能和效果的进一步提升[6]。

YOLO是由REDMON等开发的一种端到端的目标检测方法,依据单个神经网络完成检测任务。其通过多次迭代与不断改进来提高性能,这种持续的改进使得YOLO在目标检测领域取得了显著突破,但其在景区行人检测中存在参数量大、对硬件要求高、检测精度低等问题[7]。

为了解决现有公开数据集(如VOC、COCO、MIT行人数据库和USC行人数据库)在小目标检测任务中数据量不够及小目标较少的限制,本文通过云视频和实地采集等方式,在景区环境中收集了大量的多尺度图片数据,共采集到8 450张形状大小不一的图片,并使用Makesense数据集标注工具进行标注,创建了TAPDataset行人检测数据集。该数据集在形状和大小上具有多样性,适用于工程实践中的目标检测任务。

本文研究旨在解决景区行人检测中YOLOv8检测精度较低且参数量较大等问题。首先创建了TAPDataset数据集,并在YOLOv8的基础上,以DepthSepConv作为基本卷积模块,对整个网络进行轻量化处理,提高模型的计算效率和泛化能力;然后引入BiFormer注意力机制,以实现更灵活的计算分配和内容感知;虽后引入轻量化上采样算子CARAFE,在较大的感受野内聚合上下文信息,提高算法的检测速度和检测精度;最后增加一层小目标检测层,将目标检测层由三层变为四层,提升模型对小目标的检测能力。

1 YOLOV8概述

YOLOv8于2023年1月由开发YOLOv5的Ultralytics公司发布。YOLOv8具备了同时实现分类、检测、分割和姿态估计任务的能力。相比之前的版本,YOLOv8采用了无锚框的结构,这使得它的速度更快、准确率更高。此外,YOLOv8是在以前版本的基础上进行改进和增强的,引入了新的功能和改进,以进一步提升性能和灵活性。

为了满足不同需求,根据网络的深度和宽度,将YOLOv8分为YOLOv8-N、YOLOv8-S、YOLOv8-M、YOLOv8-L和YOLOv8-X等不同版本。这些版本在COCO数据集上的性能均优于其他YOLO版本。本文考虑到模型大小的问题,选择了YOLOv8-N作为研究对象。

YOLOv8由输入端、Backone、Neck、Head 4个部分组成,其结构如图 1所示。其中输入端以大小为640×640像素的图像进行输入,Backbone部分在YOLOv5的基础上,将第一层卷积由原来的6×6卷积改为3×3卷积,参考YOLOv7 ELAN的思想,将C3模块换成了C2f模块;在Neck部分移除了1×1卷积的采样层,使用C2f模块替换C3模块;在Head部分换成解耦头的结构,将分类任务和回归任务解耦。在训练过程中,采用Mosaic数据增强对图像进行预处理,并在最后10个Epochs中关闭了Mosaic数据增强操作,可以有效提升检测精度。

图1 YOLOv8架构

其中,Conv模块是由二维卷积(Conv2d)、批量归一化(BN)和非线性激活函数SiLU等组件构成的复合模块,具体结构如图 2所示[8]。卷积层通过应用一组可学习的滤波器(也称为卷积核或卷积矩阵)对输入数据进行卷积运算,从而提取特征信息。这些滤波器具有不同的特征提取能力,可以有效捕捉输入数据的边缘、形状等特征[9]。为了增强网络的表达能力,输出经过非线性激活函数SiLU进行激活[10]。然而,Conv模块的参数量较大,需要大量的计算资源。此外,由于卷积操作的局部性质,Conv模块在理解全局上下文信息方面仍然存在一定的限制,导致对全局信息的理解不充分[11]。

图2 Conv模块结构

C2f模块融合了C3模块和高效轻量级注意力网络(ELAN)设计思想。该模块在保证模型轻量化的同时,能够获取丰富的梯度流信息。它由Conv、Split和BottleNeck等组件构成,具体结构如图 3所示。

串行并行池化融合(SPPF)是基于空间金字塔池化(SPP)提出的一种方法,旨在扩大感受野[12]。它通过串行多个5×5的最大池化层来实现,从而减少参数数量,并大幅降低计算量。SPPF模块接受特征图作为输入,然后通过ConvBNSiLU模块进行处理,并进行最大池化下采样操作。最后,将不同下采样结果进行拼接形成输出特征图,该模块的结构如图 4所示。通过使用SPPF可以有效地扩大感受野,提取全局的上下文信息,并且具有较少的参数量和较小的计算负载[13]。

图4 SPPF结构

2 本文算法

2.1 网络整体结构

本文在YOLOv8的基础上进行改进,提出一个适用于景区行人检测的网络模型YOLOv8-L。首先,通过引入注意力机制BiFormer和上采样算子CARAFE来提高网络的回归精度和收敛速度;其次,通过引入DepthSepConv卷积模块降低模型复杂度,减少参数量;最后,通过增加一层小目标检测层改善对小目标的检测性能。该模型的网络结构如表 1、图 5所示。其中,在表 1中,from表示该层的输入层,-1表示上一层,参数量决定了模型的容量和表示能力,并且直接影响模型的性能。

表1 YOLOv8-L网络结构

图5 YOLOv8-L架构

2.2 DepthSepConv

传统的卷积操作在处理高维输入数据时会引入大量的参数和计算开销。具体而言,对于具有n个通道的上一层特征图,传统卷积操作需要n个卷积核与之对应。每个卷积核分别与上一层对应通道的特征图进行卷积操作,然后将这些卷积结果相加,生成下一层的一个通道特征图。如果需要在下一层生成多个通道的特征图(假设为m个通道),则需要m个卷积核[14]。这种操作方式导致了大量的参数和计算开销。

深度可分离卷积(DepthSepConv)是一种卷积神经网络中常用的卷积操作,采用分离的卷积方式来代替传统卷积,分为深度卷积和逐点卷积两个步骤[15]。

深度卷积是在输入的每个通道上应用一个卷积核,生成与输入通道数量相等的中间特征图。每个通道的卷积核只负责处理该通道上的特征,通过在空间维度上进行滑动窗口计算来提取局部特征。这样,深度卷积输入特征图的深度(通道数)与输出特征图的深度相等,如图6所示。逐点卷积是在深度卷积的输出特征图上应用1×1的卷积核,用于将通道之间的特征进行组合和线性变换。逐点卷积通过在每个位置上独立地对各个通道进行计算,将深度卷积得到的中间特征图映射到最终的输出特征图,如图 7所示。

图6 深度卷积

图7 逐点卷积

深度可分离卷积模块的主要优势在于减少计算开销,特别是在逐点卷积阶段,1×1的卷积核计算成本相对较低。此外,由于深度卷积和逐点卷积的分离降低了内存需求,使得模型更适合于资源受限的环境。这使得DepthSepConv可以在保持模型表征能力的同时,具有较小的模型尺寸和计算开销。因此,本文引入DepthSepConv模块,降低模型的参数量和计算量,提升检测速度。

2.3 注意力机制

注意力机制用于增强模型对输入数据的关注和权重分配。通过自动学习数据中的相关性和重要性,使模型能够更有针对性地处理不同的输入。它通过动态计算元素之间的权重,使模型能够聚焦于输入中最相关的部分。然而,注意力机制的引入会增加计算和内存负担[16]。

为了解决计算量和内存负担大的问题,本文引入2023年由文献[17]提出的基于双层路由注意力(BRA)作为核心构建模块的BiFormer注意力机制。

BRA是在粗粒度的区域过滤掉最不相关的键值对,然后通过构建区域级亲和图对其进行修剪,仅保留每个节点的前k个连接。因此,每个区域只需要关注前k个路由区域。之所以称为双层路由,是因为它包含路由步骤和令牌级注意步骤。BRA通过在前k个相关网格收集键值对,利用稀疏性跳过最不相关的区域计算,如图 8所示。

图8 BRA结构

本文引入将BRA作为基本构建模块的BiFormer注意力机制,并采用四级金字塔结构。具体而言,在第1阶段使用重叠的补丁嵌入,在第2~4阶段使用补丁合并模块来降低输入空间分辨率,同时增加通道数量,然后使用N个连续的BiFormer模块来变换特征。在每个BiFormer模块中使用3×3深度卷积来隐式编码相对位置信息。然后,依次应用扩展比为e的BRA模块和2层MLP模块,分别用于跨位置关系建模和逐位置嵌入。BiFormer采用参数共享的策略,即多个位置或通道共享相同的权重,参数共享降低了模型的参数量,使其变得更加轻量化。BiFormer的结构如图 9所示。

图9 BiFormer结构

在图 9中,DWConv为3×3的深度可分离卷积。

为了验证本文引入注意力机制的有效性,在YOLOv8的基础上分别添加SE、ECA、CBAM、BiFormer注意力机制,使用TAPDataset数据集做了5组对比实验,实验结果如表 2所示。从表2可以看出,加入注意力机制后算法的检测精度普遍提高。相比于原始算法,加入SE、ECA、CBAM注意力机制后,mAP@0.5分别提升了0.128%、0.512%、0.256%,mAP@0.5∶0.9分别提升了3.22%、4.63%、6.04%;加入BiFormer注意力机制后,mAP@0.5提升了1.14%,mAP@0.5∶0.9提升了6.45%;相比于加入CBAM,在mAP@0.5∶0.9基本不变的情况下,mAP@0.5提升了1.15%,证明加入BiFormer后算法性能显著提升。且在加入BiFormer注意力机制后,算法性能均高于加入其他注意力机制,这表明BiForrmer注意力机制可以显著提高算法的检测精度。

表2 各种注意力机制在YOLOv8下的对比

2.4 上采样算子CARAFE

上采样是一种在计算机视觉和图像处理中常用的操作,用于增加图像或特征图的尺寸或分辨率。使用最广泛的特征上采样是最近邻插值和双线性插值。但是最近邻插值和双线性插值仅通过像素点的空间位置来决定上采样,并没有利用特征图的语义信息,感受野通常都很小,无法捕获密集预测任务所需的丰富语义信息。另外一种上采样方法是反卷积,又称转置卷积,通过卷积核与输入特征图进行卷积操作,使用补零和步长调整来增加输出特征图的尺寸。但是,转置卷积在整个图像上应用相同的内核,限制了响应局部变化的能力,同时具有较大的参数量,影响计算效率[18]。

CARAFE(ContentAware ReAssembly of Features)是由文献[19]提出的一种轻量级且具有高效运算的上采样方法,其利用内容感知的特征重组来对特征图进行上采样。在每个位置上,利用底层内容信息来预测重组内核并在预定义的附近区域内重组特征,并且可以在不同位置使用自适应和优化的重组内核。

CARAFE特征上采样第1步是根据每个目标位置的内容预测一个重组内核,第2步是利用预测的内核重组特征。

内核预测模块负责以内容感知的方式生成重组内核。输入大小为C×H×W的特征图X上的每个源位置对应于输出特征图X1上的σ2个目标位置,其中,σ为上采样率。每个位置都需要K×K个重组内核,其中K是重组内核的大小。所以模块的输出大小为C'×H×W,C'为σ2×k2。内核预测模块由通道压缩器、内容编码器和内核归一化器3个子模块组成。通道压缩器减少输入特征图的通道,内容编码器将压缩的特征图作为输入并对内容进行编码以生成重组内核,内核标准化器将Softmax函数应用于每个重组内核。因此,本文加入CARAFE上采样算子后,可以提取更丰富的特征信息。

2.5 小目标检测层

深层的特征图可以提供更多的语义信息,而浅层的特征图可以提供更多的位置信息。本文将YOLOv8-N中的检测层由原来的P3、P4、P5 3层增加到P2、P3、P4、P5 4层。P2、P3、P4、P5是通过在卷积神经网络(CNN)中不同的阶段提取特征而得到的[20]。通常,P2位于网络的较早阶段,具有较高的分辨率,而P5则位于较深的阶段,具有较低的分辨率和更大的感受野。由于P2具有较高的分辨率,可以更细致地捕捉图像中的细节信息。对于小目标,更高的分辨率可以更容易地区分目标和背景,提高检测精度;相反,P5等具有较大的感受野,适合检测较大的目标。较大的感受野可以涵盖更广泛的区域,捕获更多的上下文信息[21]。

为了验证其有效性,设计两组对比实验,如表 3所示。其中,YOLOv8+P2表示模型有4个不同尺度的检测层,YOLOv8+P1P2表示模型有5个不同尺度的检测层。从表 3的实验结果可以看出,在增加P2检测层后,mAP@0.5提升了2.307%。由此可以看出,特征图的浅层位置信息对于小目标的检测很重要,增加P2检测层能够进一步提升网络的检测精度。但是,将检测层加至五层后,在mAP@0.5及mAP@0.5∶0.9基本保持不变的情况下,参数量大幅提升。因此,本文在YOLOv8的基础上,增加一个P2小目标检测层来提升模型对小目标的检测能力。

表3 增加小目标检测层后与原模型的实验对比

3 实验结果与分析

3.1 数据集及预处理

本文分别使用自制数据集TAPDataset、公开数据集VOC 2007及VOC 2007的测试集作为训练集,TAPDataset的验证集和测试集组成TAP+VOC数据集。数据集信息如表 4所示。

表4 数据集划分结果

另外,在训练过程中,本文使用Mosaic方法进行增强,即随机选取9张图片进行随机编排和拼接。使用Mosaic数据增强可以增强数据的多样性,提供更丰富的上下文信息,变相地增大了Batchsize,提高了模型的鲁棒性和泛化能力。

3.2 实验环境与参数配置

具体实验环境如表 5所示。初始学习率为0.01,最终学习率为0.02,Batchsize为16,输入图片尺寸为640×640像素,warm_epochs为3.0,最后10个Epochs关闭Mosaic数据增强。

表5 实验环境

3.3 评价指标

本文使用mAP@0.5、mAP@0.5∶0.95和参数量、FPS作为目标检测模型的评估指标[22]。AP为PR曲线与坐标轴所围成的面积,其基于精度和召回率指标处理多个对象类别,并使用IoU定义正预测,精度(P)衡量模型正预测的准确性,而召回率(R)衡量模型正确识别的正例与实际正例的比例。AP指标提供准确率和召回率的平衡评估[23]。

AP的计算方法如式(1)所示:

取数据集中所有对象类别的平均AP作为mAP。

3.4 定量评价

为了验证本文所提出算法YOLOv8-L的有效性,将其与目前主流的单阶段、两阶段和轻量化检测模型进行比较,并比较YOLOv8和YOLOv8-L在不同数据集上的性能,实验结果如表 6、表 7、表 8所示。

表6 YOLOv8-L在TAPDataset上的对比实验

表7 YOLOv8与YOLOv8-L在不同数据集上的对比实验

表8 YOLOv8-L在VOC 2007数据集上的对比实验

从表 6可以看出,在FPS基本保持不变的情况下,YOLOv8-L相比于YOLOv8-N参数量降低了11.3%,mAP@0.5提高了5.6%,mAP@0.5∶0.95提高了6.03%,证明了本文算法改进的有效性。同时,由于引入BiFormer注意力机制、CARAFE上采样算子及轻量化DepthSepConv卷积模块,参数量比实验中的其他算法小,精度比其他算法高,使模型在训练和检测时对计算机硬件的要求更低,这可以被应用于低成本的检测中。在对比实验中,YOLOv8-L的mAP@0.5指标在降序排列中位于第1,与位于第2的YOLOv5-ghostNet相比,提高了2.61%;参数量在升序排列中位于第2。结合模型的复杂度、检测精度与应用场景,YOLOv8-L在众多模型中表现出色,更适合应用于景区行人检测。

从表 7可以看出,YOLOv8在3个数据集中,TAPDataset的参数量在升序排列中位于第1,比位于第2的数据集低6.4%,同时mAP@0.5和mAP@0.5∶0.95在降序排列中均位于第1,证明TAPDataset数据集在工程实践中具有更好的应用性能;在FPS基本不变的情况下,相较于YOLOv8,YOLOv8-L在3个数据集上的参数量均较低,mAP@0.5和mAP@0.5∶0.95均较高。在VOC 2007数据集中,FPS基本不变,YOLOv8-L的参数量比YOLOv8低13.6%,mAP@0.5比YOLOv8高4.12%,mAP@0.5∶0.95比YOLOv8高6.3%,这证明了对网络改进的有效性。在TAP+VOC数据集上,使用VOC的测试集训练模型,使用TAPDataset数据集进行模型的测试和验证,YOLOv8-L的参数量比YOLOv8低14.01%,mAP@0.5和mAP@0.5∶0.95分别比YOLOv8高4.49%和5.68%。

从表 8可以看出,在FPS基本不变的情况下,YOLOv8-L的参数量比YOLOv8降低了9.375%,mAP@0.5和mAP@0.5∶0.95在降序排列中均位于第1,证明YOLOv8-L具有很强的泛化性能,并能更好地应用于景区行人检测任务。

3.5 定性评价

本文使用三组场景的图片对YOVOv5、YOLOv8和YOLOv8-L的检测效果进行定性评价。实验时输入的图片大小为640×640像素,置信度阈值为0.25,实验结果如图 10所示。在第1列图片中行人较少,可以看出,YOLOv5和YOLOv8出现了漏检和误检的情况,但是YOLOv8-L检测出了更多的正确目标,证明YOLOv8-L能够从输入图片中提取出更丰富的特征。在第2列图片中,行人较为密集,YOLOv5出现漏检的情况,YOLOv8的漏检数量增多,但YOLOv8-L并未出现漏检的情况。在第3列图片中,有大量的远距离小目标,YOLOv8-L比YOLOv5和YOLOv8的检测效果出色,检测到了大量YOLOv8未检测到的小目标。总体来说,YOLOv8-L对目标的检测效果普遍优于YOLOv8,证明网络能够提取更丰富的语义信息,性能更好。

图10 YOLOv5、YOLOv8和YOLOv8-L效果对比

3.6 消融实验

为了综合探究本文提出的YOLOv8-L算法的检测性能与各个方法的有效性,在YOLOv8的基础上设计12组消融实验,所有的实验使用同样的实验环境配置和相同的超参数,实验结果如表 9所示。其中,DepthSepConv代表DepthSepConv卷积模块,BiFormer代表BiFormer注意力机制,CARAFE代表上采样算子,P2代表添加的小目标检测层,√代表在该组实验中引了入该模块。

从表9可以看出,相比于原始算法,在第2组实验中引入了DepthSepConv卷积模块,参数量减少了约27.4%,mAP@0.5提升了约0.6%,mAP@0.5∶0.95基本保持不变,证明其是有效的轻量化手段;在第3组实验中引入了BiFormer注意力机制,参数量略有上涨,但mAP@0.5提升了1.4%,证明加入BiFormer注意力机制是提升检测效果的有效手段;在第4组和第5组实验中,分别引入上采样算子和小目标检测层P2,在参数量保持基本不变的情况下,mAP@0.5和mAP@0.5∶0.95都有不同程度的提升,证明其在不改变模型复杂度的情况下,均可有效提升模型的检测精度。

对比第6组、第7组、第8组实验,在DepthSepConv卷积模块的基础上分别加入BiFormer注意力机制、小目标检测层P2和上采样算子CARAFE,相比原始算法,mAP@0.5和FPS均有不同程度的提升;在这3组实验中,mAP@0.5在降序排列中第8组实验位于第1,相比于第2组实验,提升了3.71%。在第9组、第10组和第11组实验中,相比原始算法,虽然mAP@0.5和mAP@0.5∶0.95均大幅提升,mAP@0.5最高提升了4.61%,mAP@0.5∶0.95最高提升了5.47%,但参数量最高提升了4.51%,FPS最高降低了7.54%。

第12组实验同时加入了DepthSepConv卷积模块、BiFormer注意力机制、CARAFE上采样算子和P2小目标检测层,FPS基本保持不变,参数量减少了约18.06%,mAP@0.5提升了5.51%,mAP@0.5∶0.95提升了6.03%,均衡了检测精度、参数量、FPS之间的关系,证明本文实验方法可以在参数量减少的情况下,显著提升算法的检测性能,更适用于景区的行人检测任务。

表9 消融实验结果

4 结束语

针对YOLOv8在景区行人检测方面精度不高、参数量较大等问题,本文创建了TAPDataset行人检测数据集,并提出一种改进的行人检测算法YOLOv8-L。

采用DepthSepConv卷积模块对网络进行轻量化处理以减少参数量,并引入BiFormer注意力机制和CARAFE上采样算子,提升网络的检测精度,最后通过加入一层小目标检测层,改善算法对小目标的检测效果。

实验结果表明,与YOLOv8-N相比,YOLOv8-L算法参数量减少了18.06%,mAP@0.5提高了5.51%,mAP@0.5∶0.95提高了6.03%。

为了进一步提升模型的检测性能并降低复杂度,下一步将继续对模型进行轻量化处理,同时对Head部分的注意力机制和上采样方式进行改进,以在景区行人检测中展现出更好的性能。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。


http://www.ppmy.cn/ops/99020.html

相关文章

华为数通方向HCIP-DataCom H12-821题库(更新单选真题:21-30)

第21题 以下关于0SPF中ABR的描述,错误的是哪一项? A、ABR将连接的非骨干区域内的1类和2类1SA转换成3类LSA,发布到骨干区域中 B、ABR不能够产生4类和5类LSA C、ABR上有多个LSDB,ABR为每一个区域维护一个LSDB D、ABR将骨干区域内的1类、2类LSA和3类LSA转换成三类LSA,发布到…

kubernetes k8s Secret 概述与配置讲解

目录 1 Secret概述 1.1 Secret是什么? 1.2 使用Secret 1 Secret概述 1.1 Secret是什么? 上面我们学习的Configmap一般是用来存放明文数据的,如配置文件,对于一些敏感数据,如密码、私钥等数据时,要用sec…

期末九天从入门到精通操作数据库(mysql)

对应资源包名称: 期末九天从入门到精通操作数据库(mysql) 学习目标: 掌握数据库的基本操作,熟练使用navicat工具. 九天极限掌握数据库 学习内容: 数据查询实验视图管理实验索引管理实验用户安全性管理实验MySQL备份和还原实…

Nginx知识详解(理论+实战更易懂)

目录 一、Nginx架构和安装 1.1 Nginx 概述 1.1.1 nginx介绍 1.1.2 Nginx 功能介绍 1.1.3 基础特性 1.1.4 Web 服务相关的功能 1.2 Nginx 架构和进程 1.2.1 Nginx 进程结构 1.2.2 Nginx 进程间通信 1.2.3 Nginx 启动和 HTTP 连接建立 1.2.4 HTTP 处理过程 1.3 Nginx …

NLP位置编码

位置编码 一、基本概念 在自然语言处理和深度学习中,位置编码(Position Encoding)是一种为了向模型中引入序列中元素位置信息的技术。 当处理序列数据时,如文本句子或时间序列数据,模型通常需要考虑元素的顺序和位置…

C++20特性-------std::span

概述 std::span 是一个轻量级的视图类型,用于表示一段连续的内存区域。它不拥有数据,而是提供对现有数组、容器或内存区域的非拥有(non-owning)视图。允许你在不复制数据的情况下处理这些数据。 关键特性 非拥有:st…

前端Array.reduce()函数延申用法

1.求和 // 求和const sum (arr) > arr.reduce((acc,cur) > acc cur,0)let arr [1,2,3,4,5]console.log(参数为:,arr);console.log(总和:,sum(arr)); 2.求积 //求积const sum1 (arr) > arr.reduce((acc,cur) > acc * cur,1)let arr1 …

VIT论文阅读: A Image is Worth 16x16 Words

简介 在2024年,大家都知道了transformer的故事,但是在4年前, CNN和Transformer谁才是CV的未来,还没有那么确定。 在简介部分,作者提到了一个令人失望的事实,在基于imagenet的实验中发现,transformer的表现…