MPDIoU: A Loss for Efficient and Accurate Bounding BoxRegression

news2024/11/24 23:45:56

MPDIoU: A Loss for Efficient and Accurate Bounding Box
Regression

MPDIoU:一个有效和准确的边界框损失回归函数

摘要

边界框回归(Bounding box regression, BBR)广泛应用于目标检测和实例分割,是目标定位的重要步骤。然而,当预测框与边界框具有相同的纵横比,但宽度和高度值完全不同时,大多数现有的边界框回归损失函数都无法优化。为了解决上述问题,我们充分挖掘水平矩形的几何特征,提出了一种新的基于最小点距离的边界框相似性比较指标MPDIoU,该指标包含了现有损失函数中考虑的所有相关因素,即重叠或不重叠区域、中心点距离、宽度和高度偏差,同时简化了计算过程。在此基础上,我们提出了基于MPDIoU的边界框回归损失函数,称为LMPDIoU。实验结果表明,MPDIoU损失函数应用于最先进的实例分割(如YOLACT)和基于PASCAL VOC、MS COCO和IIIT5k训练的目标检测(如YOLOv7)模型,其性能优于现有的损失函数。

关键词:目标检测,实例分割,边界框回归,损失函数

 1.介绍

目标检测和实例分割是计算机视觉中的两个重要问题,近年来引起了研究者的广泛关注。大多数最先进的目标检测器(如YOLO系列[1,2,3,4,5,6],Mask R-CNN [7],Dynamic R-CNN[8]和DETR[9])依赖于边界框回归(BBR)模块来确定目标的位置。在此基础上,设计良好的损失函数对BBR的成功至关重要。目前,大多数BBR的损失函数可分为两类:基于n范数的损失函数和基于IoU的损失函数。

然而,现有的边界框回归的损失函数在不同的预测结果下具有相同的值,这降低了边界框回归的收敛速度和精度。因此,考虑到现有边界框回归损失函数的优缺点,受水平矩形几何特征的启发,我们尝试设计一种新的基于最小点距离的边界框回归损失函数LMPDIoU,并将MPDIoU作为边界框回归过程中比较预测边界框与真值边界框相似度的新标准。我们还提供了一个易于实现的解决方案来计算两个轴线对齐的矩形之间的MPDIoU,允许它被用作最先进的对象检测和实例分割算法的评估指标,我们在一些主流的对象检测、场景文本识别和实例分割数据集(如PASCAL VOC[10]、MS COCO[11]、IIIT5k[12]和MTHv2[13])上进行了测试,以验证我们提出的MPDIoU的性能。

本文的贡献可以概括为以下几点:

1.我们考虑了现有基于IoU的损失和n范数损失的优缺点,提出了一种基于最小点距离的IoU损失,称为LMPDIoU,以解决现有损失的问题,并获得更快的收敛速度和更准确的回归结果。

2.在目标检测、字符级场景文本识别和实例分割任务上进行了大量的实验。出色的实验结果验证了所提出的MPDIoU损失函数的优越性。详细的消融研究显示了不同设置的损失函数和参数值的影响。

2.相关工作

2.1.目标检测和实例分割

      在过去的几年里,来自不同国家和地区的研究人员提出了大量基于深度学习的目标检测和实例分割方法。综上所述,在许多具有代表性的目标检测和实例分割框架中,边界框回归已经被作为一个基本组成部分[14]。在目标检测的深度模型中,R-CNN系列[15]、[16]、[17]采用两个或三个边界框回归模块来获得更高的定位精度,而YOLO系列[2、3、6]和SSD系列[18、19、20]采用一个边界框回归模块来实现更快的推理。RepPoints[21]预测几个点来定义一个矩形框。FCOS[22]通过预测采样点到边界框的上、下、左、右的欧氏距离来定位目标。

对于实例分割,PolarMask[23]在n个方向上预测从采样点到物体边缘的n条射线的长度来分割一个实例。还有一些检测器,如RRPN[24]和R2CNN[25],通过旋转角度回归来检测任意方向的物体,用于遥感检测和场景文本检测。Mask R-CNN[7]在Faster R-CNN[15]上增加了一个额外的实例掩码分支,而最近最先进的YOLACT[26]在RetinaNet[27]上做了同样的事情。综上所述,边界框回归是用于目标检测和实例分割的最先进深度模型的关键组成部分。

2.2.场景文本识别

        为了解决任意形状的场景文本检测和识别问题,ABCNet[28]及其改进版本ABCNet v2[29]使用BezierAlign将任意形状的文本转换为规则文本。这些方法通过纠错模块将检测和识别统一为端到端的可训练系统,取得了很大的进步。[30]提出了RoI Masking来提取任意形状文本识别的特征。与[30,31]类似,尝试使用更快的检测器进行场景文本检测。AE TextSpotter[32]利用识别结果通过语言模型指导检测。受[33]的启发,[34]提出了一种基于transformer的场景文本识别方法,该方法提供了实例级文本分割结果。

2.3.边界框回归的损失函数

      一开始,在边界框回归中广泛使用的是n范数损失函数,它非常简单,但对各种尺度都很敏感。在YOLO v1[35]中,采用平方根wh来缓解这种影响,而YOLO v3[2]使用2−wh。为了更好地计算真实边界框与预测边界框之间的差异,从Unitbox开始使用IoU loss[36]。为了保证训练的稳定性,Bounded-IoU loss[37]引入了IoU的上界。对于训练对象检测和实例分割的深度模型,基于IoU的度量被认为比ℓn范式更一致[38,37,39]。原始IoU表示预测边界框与真实边界框的相交面积和并集面积之比(如图1(a)所示),可表示为:

图1:现有边界盒回归指标的计算因子包括GIoU、DIoU、CIoU和EIoU

式中,Bgt为真实边界框,Bprd为预测边界框。我们可以看到,原来的IoU只计算两个边界框的并集面积,无法区分两个边界框不重叠的情况。如式1所示,如果|BgtBprd|=0,则IoU(Bgt, Bprd)=0。在这种情况下,IoU不能反映两个框是彼此靠近还是彼此很远。于是,提出了GIoU[39]来解决这一问题。GIoU可以表示为:

其中,C为覆盖BgtBprd的最小方框(如图1(a)中黑色虚线框所示),|C|为方框C的面积。由于在GIoU损失中引入了惩罚项,在不重叠的情况下,预测方框会向目标方框移动。GIoU损失已被应用于训练最先进的目标检测器,如YOLO v3和Faster R-CNN,并取得了比MSE损失和IoU损失更好的性能。但是,当预测边界框完全被真实边界框覆盖时,GIoU将失去有效性。为了解决这一问题,提出了DIoU[40],考虑了预测边界框与真实边界框之间的质心点距离。DIoU的公式可以表示为:

其中ρ2(Bgt, Bprd)为预测边界框中心点与真实边界框中心点之间的欧氏距离(如图1(b)中红色虚线所示)。C2表示最小的封闭矩形的对角线长度(如图1(b)中所示的黑色虚线)。我们可以看到,LDIoU的目标直接最小化了预测边界框中心点与真实边界框中心点之间的距离。但是,当预测边界框的中心点与真实边界框的中心点重合时,会退化为原始IoU。为了解决这一问题,提出了同时考虑中心点距离和纵横比的CIoU。CIoU的公式可以写成如下:

但是,从CIoU中定义的纵横比是相对值,而不是绝对值。针对这一问题,在DIoU的基础上提出了EIoU[41],其定义如下:

然而,如图2所示,当预测的边界框和真实边界框具有相同的宽高比,但宽度和高度值不同时,上述用于边界框回归的损失函数将失去有效性,这将限制收敛速度和精度。因此,考虑到LGIoU[39]、LDIoU[40]、LCIoU[42]、LEIoU[41]所具有的优点,我们尝试设计一种新的损失函数LMPDIoU用于边界框回归,同时具有更高的边界框回归效率和精度。

然而,边界框回归的几何性质在现有的损失函数中并没有得到充分的利用。因此,我们提出了MPDIoU损失,通过最小化预测边界框和真实边界框之间的左上和右下点距离,以更好地训练目标检测、字符级场景文本识别和实例分割的深度模型。

图2:具有不同边界框回归结果的两种情况。绿框表示真实边界框,红框表示预测边界框。LGIoULDIoULCIoU这两种情况的LMPDIoU值完全相同,但它们的LMPDIoU

3.点距最小的并集交点

在分析了上述基于IoU的损失函数的优缺点后,我们开始思考如何提高边界框回归的精度和效率。一般来说,我们使用左上角和右下角点的坐标来定义一个唯一的矩形。受边界框几何特性的启发,我们设计了一种新的基于IoU的度量,称为MPDIoU,直接最小化预测边界框与真实边界框之间的左上和右下点距离。算法1总结了MPDIoU的计算。

综上所述,我们提出的MPDIoU简化了两个边界框之间的相似性比较,可以适应重叠或非重叠的边界框回归。因此,在2D/3D计算机视觉任务中使用的所有性能测量中,MPDIoU可以作为IoU的适当替代品。在本文中,我们只关注二维目标检测和实例分割,我们可以很容易地将MPDIoU作为度量和损失。扩展到非轴对齐的3D情况是留给未来的工作。

3.1 MPDIoU边界框回损失函数

在训练阶段,模型预测的每个边界框Bprd=[xprd, yprd, wprd,hprd]TBprd=[xprd, yprd, wprd,hprd]T,通过最小化损失函数,迫使其逼近其真实边界框Bgt=[xgt, ygt, wgt,hgt]T

其中Bgt为真实边界框的集合,Θ为深度回归模型的参数。L的典型形式是n-范数,如均方误差(MSE)损失和Smooth-l1损失[43],在目标检测中被广泛采用[44];行人检测[45,46];场景文本识别[34,47];三维目标检测[48,49];姿态估计[50,51];以及实例分割[52,26]。然而,最近的研究表明,基于n-范数的损失函数与评价度量即IoU(interaction over union)不一致,而是提出了基于IoU的损失函数[53,37,39]。根据上一节MPDIoU的定义,我们定义基于MPDIoU的损失函数如下:

因此,现有的边界框回归损失函数的所有因子都可以由四个点坐标确定。换算公式如下:

其中|C|表示覆盖BgtBprd的最小封闭矩形面积,(xcgt, ycgt)(xcprd, ycprd)分别表示真实边界框和预测边界框中心点的坐标。wgthgt表示真实边界框的宽度和高度,wprdhprd表示预测边界框的宽度和高度。

由式(10)-式(12)可知,现有损失函数中考虑的所有因素,如不重叠面积、中心点距离、宽度和高度偏差等,均可由左上点和右下点的坐标确定,说明我们提出的LMPDIoU不仅考虑周到,而且简化了计算过程。

根据定理3.1,如果预测边界框和真实边界框的宽高比相同,则在真实边界框内的预测边界框的LMPDIoU值低于在真实边界框外的预测框。这一特性保证了边界框回归的准确性,使得预测的边界框具有较少的冗余性。

图3:我们提出的LMPDIoU的参数

图4:具有相同长宽比但不同宽度和高度的预测边界框和真实边界框示例,其中k>1, k∈R,其中绿色框为真实边界框,红色框为预测框

定理3.1.我们定义一个真实边界框为Bgt,两个预测边界框为Bprd1和Bprd2。输入图像的宽度和高度分别为wh。假设Bgt, Bprd1和Bprd2的左上和右下坐标分别为(x1gt,y1gt,x2gt, y2gt),(x1prd1,y1prd1, x2prd1, y2prd1)和(x1prd2,y1prd2, x2prd2, y2prd2),则Bgt, Bprd1和Bprd2的宽度和高度可以表示为(wgt=y2gt-y1gt,wgt=x2gt-x1gt)和(wprd1=y2prd1-y1prd1,wprd=y2prd1-y1prd1和(wprd2=y2prd2-y1prd2,wprd=y2prd2-y1prd2)。若wprd1=k*wgt,hprd1=k*hgt,则wprd2=1k*wgt,hprd2=1k*wgt,其中k>1kN*

Bgt,Bprd1和Bprd2的中心点都是重叠的。则GIoU(Bgt, Bprd1)=GIoU(Bgt, Bprd2)DIoU(Bgt, Bprd1)=DIoU(Bgt, Bprd2)CIoU(Bgt, Bprd1)=CIoU(Bgt, Bprd2)EIoU(Bgt, Bprd1)=EIoU(Bgt, Bprd2),但MPDIoUBgt,Bprd1>MPDIoUBgt, Bprd2

考虑真实边界框,Bgt是一个面积大于零的矩形,即Agt>0. Alg. 2(1)和Alg. 2(6) 中的条件分别保证了预测区域Aprd和交集区域I是非负值,即Aprd≥0I≥0BprdR4。因此联合区域μ>0;对于任何预测边界框Bprd=x1prd,y1prd,x2prd,y2prdR4。这确保了IoU中的分母对于任何预测值的输出都不会为零。此外,对于Bprd=x1prd,y1prd,x2prd,y2prdR4的任意值,其并集面积总是大于交集面积,即μI。因此,LMPDIoU总是有界的,即0≤LMPDIoU≤3,BprdR4

IoU=0LMPDIoU的情况:对于MPDIoU损失,我们有LMPDIoU=1-MPDIoU=1+d12d2+d22d2-IoU。当BgtBprd不重叠,即IoU=0时,MPDIoU损失可简化为LMPDIoU=1-MPDIoU=1+d12d2+d22d2。在这种情况下,通过最小化LMPDIoU,我们实际上最小化了d12d2+d22d2。这一项是0到1之间的归一化测度,即0≤d12d2+d22d2≤2

4.实验结果

我们通过将新的边界框回归损失LMPDIoU入最流行的2D目标检测器和实例分割模型(如YOLO v7[6]和YOLACT[26])来评估我们的边界框回归损失LMPDIoU。为此,我们用LMPDIoU替换它们的默认回归损失,即我们替换了YOLACT[26]中的l1-smooth和YOLO v7[6]中的LCIoU。我们还将基准损失与LGIoU进行了比较。
 

4.1 实验设置

实验环境可以概括为:内存为32GB,操作系统为windows 11, CPU为Intel i9-12900k,显卡为NVIDIA Geforce RTX 3090,内存为24GB。为了进行公平的比较,所有的实验都是用PyTorch实现的[54]。

 4.2 数据集

我们训练了所有目标检测和实例分割基线,并报告了两个标准基准测试的所有结果,即PASCAL VOC[10]和Microsoft Common Objects in Context (MS COCO 2017)[11]挑战。他们的培训方案和评估的细节将在各自的章节中解释。
PASCAL VOC 2007&2012: PASCAL Visual Object Classes (VOC)[10]基准是用于分类、目标检测和语义分割的最广泛的数据集之一,它包含了大约9963张图像。训练数据集和测试数据集各占50%,其中来自20个预定义类别的目标用水平边界框进行标注。由于用于实例分割的图像规模较小,导致性能较弱,我们只使用MS COCO 2017进行实例分割结果训练。
MS COCO: MS COCO[11]是一个广泛使用的图像字幕、目标检测和实例分割的基准,它包含了来自80个类别的超过50万个带标注目标实例的训练、验证和测试集的20多万张图像。
IIIT5k: IIIT5k[12]是一种流行的带有字符级注释的场景文本识别基准,它包含了从互联网上收集的5000个裁剪过的单词图像。字符类别包括英文字母和数字。有2000张图像用于训练,3000张图像用于测试。
MTHv2: MTHv2[13]是一种流行的带有字符级标注的OCR基准。汉字种类包括简体字和繁体字。它包含了3000多幅中国历史文献图像和100多万汉字。

 4.3评价指标

在本文中,我们使用了与MS COCO 2018 Challenge[11]相同的性能指标来衡量我们的所有结果,包括针对特定IoU阈值的不同类别标签的平均平均精度(mAP),以确定真阳性和假阳性。我们实验中使用的目标检测的主要性能指标是精度和mAP@0.5:0.95。我们报告IoU阈值的mAP值为0.75,如表中AP75所示。对于实例分割,我们实验中使用的主要性能度量是AP和AR,它是在不同的IoU阈值上平均mAP和mAR,即IoU ={.5,.55,…, .95}

所有的目标检测和实例分割基线也使用MS COCO 2017和PASCAL VOC 2007&2012的测试集进行了评估。结果将在下一节中显示。

4.4 目标检测实验结果

训练策略。我们使用了由[6]发布的YOLO v7的原始Darknet实现。对基准结果(使用GIoU loss进行训练),我们在所有实验中选择DarkNet-608作为主干,并使用报告的默认参数和每个基准的迭代次数严格遵循其训练策略。为了使用GIoU, DIoU, CIoU, EIoU和MPDIoU损失来训练YOLO v7,我们只需将边界框回归IoU损失替换为2中解释的LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失。

图5:MS COCO 2017[11]和PASCAL VOC 2007[10]测试集的目标检测结果,使用(从左至右)LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失训练的YOLO v7[6]

表1:使用自身损失LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失训练的YOLO v7[6]的性能比较。结果报告在PASCAL VOC 2007&2012的测试集上

图6:使用LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失在PASCAL VOC 2007和2012[10]上训练YOLO v7[6]时的bbox损失和AP值。

按照原始代码的训练方法,我们在数据集的训练集和验证集上使用每个损失训练YOLOv7[6],最多可达150 epoch。我们将早停机制的patience设置为5,以减少训练时间,保存性能最好的模型。在PASCAL VOC 2007&2012的测试集上对每个损失使用最佳检查点的性能进行了评估。结果见表1。

4.5 字符级场景文本识别的实验结果

训练方法。我们在目标检测实验中使用了类似的训练方案。按照原始代码的训练协议,我们在数据集的训练集和验证集上使用每个损失训练YOLOv7[6],最多30个epoch。

使用IIIT5K[12]和MTHv2[55]的测试集对每次损失使用最佳检查点的性能进行了评估。结果见表2和表3。

图7:使用(从左至右) LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失训练的YOLOv7[6]对IIIT5K[12]测试集的字符级场景文本识别结果。

表2:使用自身损失LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失训练的YOLO v7[6]的性能比较。结果报告在IIIT5K测试集上。

表3:使用自身损失LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失训练的YOLO v7[6]的性能比较。在MTHv2测试集上报告了结果从表2和表3的结果可以看出,与现有的LGIoU, LDIoU, LCIoU, LEIoU等回归损失相比,使用LMPDIoU作为回归损失训练YOLO v7可以显著提高其性能。我们提出的LMPDIoU在字符级场景文本识别方面表现出色。

4.6 实例分割的实验结果

训练方法。我们使用了最新的PyTorch实现的YOLACT[26],由加州大学发布。对于基准结果(使用LGIoU训练),我们在所有实验中选择ResNet-50作为两个YOLACT的骨干网络架构,并使用报告的默认参数和每个基准的迭代次数遵循其训练协议。为了使用GIoU, DIoU, CIoU, EIoU和MPDIoU损失来训练YOLACT,我们用2中解释的LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失替换了它们在最后边界框细化阶段的ℓ1-smooth。与YOLO v7实验类似,我们用我们提出的LMPDIoU替换了边界框回归的原始损失函数。

如图8(c)所示,将LGIoU, LDIoU, LCIoU, LEIoU作为回归损失,可以略微提高YOLACT在MS COCO 2017上的性能。然而,与使用LMPDIoU进行训练的情况相比,改进是明显的,在LMPDIoU中,我们针对不同的IoU阈值可视化了不同的掩膜AP值,即0.5≤IoU≤0.95。

与上述实验类似,使用LMPDIoU作为对现有损失函数的回归损失,可以提高检测精度。如表4所示,我们提出的LMPDIoU在大多数指标上比现有的损失函数表现得更好。然而,不同损失之间的改进量比以前的实验要少。这可能是由几个因素造成的。首先,YOLACT[26]上的检测锚框比YOLO v7[6]更密集,导致LMPDIoU优于LIoU的场景更少,例如不重叠的边界框。其次,现有的边界框回归的损失函数在过去的几年里得到了改进,这意味着精度的提高是非常有限的,但效率的提高还有很大的空间。

图8:在MS COCO 2017[11]上使用LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失以及不同IoU阈值下的掩模AP值对YOLACT[26]进行训练迭代时的bbox loss和box AP值

图9:MS COCO 2017[11]和PASCAL VOC 2007[10]测试集的实例分割结果,使用(从左至右) LGIoU, LDIoU, LCIoU, LEIoULMPDIoU损失训练的YOLACT[26]。

我们还比较了不同回归损失函数下YOLACT训练期间边界框损失和AP值的变化趋势。如图8(a)、(b)所示,使用LMPDIoU进行训练的效果优于大多数现有的损失函数LGIoULDIoU,准确率更高,收敛速度更快。虽然边界框loss和AP值波动较大,但我们提出的LMPDIoU在训练结束时表现更好。为了更好地揭示不同损失函数在实例分割边界框回归中的性能,我们提供了一些可视化结果,如图5和图9所示。我们可以看到,与LGIoU, LDIoU, LCIoU, LEIoU相比,我们基于LMPDIoU提供了更少冗余和更高精度的实例分割结果。

表4:YOLACT的实例分割结果[26]。我们使用LGIoU, LDIoU, LCIoU, LEIoU对模型进行再训练,并将结果报告在MS COCO 2017的测试集上[11]。记录训练期间的FPS和时间

5.结论

本文引入了一种基于最小点距的MPDIoU度量,用于比较任意两个边界框。我们证明了这个新指标具有现有基于IoU的指标所具有的所有吸引人的属性,同时简化了其计算。在2D/3D视觉任务的所有性能测量中,这将是一个更好的选择。

我们还提出了一个称为LMPDIoU的损失函数用于边界框回归。我们使用常用的性能度量和我们提出的MPDIoU将其应用于最先进的目标检测和实例分割算法,从而提高了它们在流行的目标检测、场景文本识别和实例分割基准(如PASCAL VOC、MS COCO、MTHv2和IIIT5K)上的性能。由于度量的最优损失是度量本身,我们的MPDIoU损失可以用作所有需要2D边界框回归的应用程序的最优边界框回归损失。

对于未来的工作,我们希望在一些基于目标检测和实例分割的下游任务上进行进一步的实验,包括场景文本识别、人物再识别等。通过以上实验,我们可以进一步验证我们提出的损失函数的泛化能力。

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

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

相关文章

vue3 + elementplus Cannot read properties of null (reading ‘isCE‘)

使用命令行直接下载的element-plus,使用时会报错。 卸载掉,然后在项目根目录下,使用vue ui安装依赖, 即可使用

逆向大漠插件/用VB6.0实现后台鼠标移动和后台鼠标左键点击

自动化设计软件,在一款做门的设计软件CypCut6.3 上实现了自动化勾选了 复选框。一切都是基于后台的。 Private Const GW_CHILD 5 Private Const GW_HWNDFIRST 0 Private Const GW_HWNDNEXT 2 Public Declare Function FindWindow Lib "user32" Alias &…

数据结构笔记:MX四叉树 VS PR 四叉树

个人理解,不一定对,还望批评指教! 比如我们分别建一个数 MX四叉树PR四叉树插入(1.5,5.5)插入(6.5,15.5)插入(9.5,5.5)插入(11.5,3.5&#xff09…

华为云云服务器评测|云耀云服务器实例基础使用实践

🦖我是Sam9029,一个前端 Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-JS学习,CSS学习,Vue-2领域博主 **🐱‍🐉🐱‍🐉恭喜你,若此文你认为写的不错,不要吝啬你的赞扬,求…

Java复习-20-接口(1)

接口的定义及使用 如果相对外部隐藏全部的实现细节,就要通过接口来实现。 接口的定义 使用interface关键字来定义。由于接口描述的是一个公共的定义标准,所以在接口之中所有的抽象方法的访问权限都为public interface IMessage{ // 为了区分接口&…

一步一步分析将数据响应式实现出来

写在前面 vue2 的数据响应式已经非常成熟且过时了,但是相信很多人还是对原理的东西一知半解,甚至还是不知道他究竟是怎么实现的,今天我们就试着一步一步分析看看响应式需要解决哪些问题,具体的问题难点是什么? 数据响应…

【计算机组成 课程笔记】5.1 处理器的设计步骤

课程链接: 计算机组成_北京大学_中国大学MOOC(慕课) 5 - 1 - 501-处理器的设计步骤(14-49--)_哔哩哔哩_bilibili 处理器,或者说是CPU,是现代计算机中最为复杂的一个部件。不过先不要劝退,要设计一个简单但是…

1343. 大小为 K 且平均值大于等于阈值的子数组数目

1343. 大小为 K 且平均值大于等于阈值的子数组数目 C代码&#xff1a;滑动窗口 // 窗口长度固定、返回窗口平均值>threshold的窗口个数int numOfSubarrays(int* arr, int arrSize, int k, int threshold){int cnt 0;int l 0;int sum 0;for (int r 0; r < arrSize; r…

轻松制作玩具小程序商城

随着移动互联网的快速发展&#xff0c;小程序成为了各行各业的新宠儿。想要快速搭建一个属于自己的小程序商城吗&#xff1f;乔拓云平台将为你提供最简单的解决方案。下面就跟随我的步骤&#xff0c;一起来学习如何搭建一个玩具小程序商城吧&#xff01; 首先&#xff0c;我们需…

微机原理与技术(2)8086微处理器

8086微处理器 考点介绍功能和介绍后续会继续更新&#xff0c;点赞follow me继续学习 考点介绍 考点一: 掌握8086/8088CPU的功能构成及流水线技术&#xff0c;理解流水线管理规则。2.1 8086/8088 CPU的功能构成2.2 8086/8088CPU的流水线技术考点二:掌握8086/8088CPU寄存器的组成…

论文阅读_大模型_ToolLLM

英文名称: ToolLLM: Facilitating Large Language Models to Master 16000 Real-world APIs 中文名称: TOOLLLM&#xff1a;帮助大语言模型掌握16000多个真实世界的API 文章: http://arxiv.org/abs/2307.16789 代码: https://github.com/OpenBMB/ToolBench 作者: Yujia Qin 日期…

第66步 时间序列建模实战:ARIMA建模(SPSS)

基于WIN10的64位系统演示 一、写在前面 从这一期&#xff0c;我们使用SPSS进行SARIMA模型的构建。 同样&#xff0c;使用某省2005年1月至2016年12月AIDS死亡率的时间序列数据。 二、SPSS建立SARIMA实战 &#xff08;1&#xff09;录入数据和格式调整 双击打开IBM SPSS Sta…

Android 在TextView前面添加多个任意View且不影响换行

实现效果如下&#xff1a; 如上&#xff0c;将头像后面的东西看作一个整体&#xff0c;因为不能影响后面内容的换行&#xff0c;且前面控件的长度是可变的&#xff0c;所以采用自定义View的方法来实现&#xff1a; /*** CSDN深海呐 https://blog.csdn.net/qq_40945489/articl…

通俗易懂讲解大模型:Tokenizer

Tokenizer Tokenizer 是 NLP pipeline 的核心组件之一。Tokenizer 的目标是&#xff1a;将文本转换为模型可以处理的数据。模型只能处理数字&#xff0c;因此 Tokenizer 需要将文本输入转换为数字输入。 通常而言有三种类型的 Tokenizer &#xff1a;Word-based Tokenizer、Cha…

【漏洞复现】广联达办公OAsql+文件上传+弱口令

漏洞描述 广联达办公OA是一款综合办公自动化解决方案,旨在提高组织内部的工作效率和协作能力。它提供了一系列功能和工具,帮助企业管理和处理日常办公任务、流程和文档。默认弱口令admin password,后面就不提了。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当…

Unity 引擎中国版 “团结引擎” 发布

导读Unity 官方宣布&#xff0c;Unity 中国正式推出 Unity 中国版引擎 —— 团结引擎&#xff0c;同时也开启了 Unity 中国本土化进程的全新篇章。作为推动团结引擎落地的核心人物&#xff0c;Unity 中国 CEO 张俊波称致力于将其打造为一款更懂中国开发者的引擎。 团结引擎以 U…

JavaScript基础06——let和var两个关键字有啥不同

哈喽&#xff0c;小伙伴们大家好&#xff0c;我是雷工&#xff01; 每日学习一点点&#xff0c;今天继续学习JavaScript基础知识&#xff0c;下面是学习笔记。 1、变量的本质 内存&#xff1a;计算机中存储数据的地方&#xff0c;相当于一空间。 变量的本质&#xff1a;是程序…

论文阅读:SERE: Exploring Feature Self-relation for Self-supervised Transformer

Related Work Self-supervised 学习目的是在无人工标注的情况下通过自定制的任务&#xff08;hand-crafted pretext tasks&#xff09;学习丰富的表示。 Abstract 使用自监督学习为卷积网络&#xff08;CNN&#xff09;学习表示已经被验证对视觉任务有效。作为CNN的一种替代…

poll epoll初学习

正是select这些缺点&#xff0c;才有了poll 1.I/O多路转接之poll 2.I/O多路转接之epoll 其中的struct epoll_event:

[计算机入门] 项目的压缩与解压缩

3.6 项目的压缩与解压缩 有几个原因使得我们要将文件压缩打包&#xff1a; 节省存储空间&#xff1a;压缩文件能够减小文件的体积&#xff0c;从而节省存储空间。尤其是对于多个大型文件或文件夹进行打包压缩时&#xff0c;可以显著降低所需的存储容量。方便传输&#xff1a;…