模型的评估指标——IoU、混淆矩阵、Precision、Recall、P-R曲线、F1-score、mAP、AP、AUC-ROC

文章目录

  • 预测框的预测指标——IoU(交并比)
  • 分类预测指标
    • 混淆矩阵(Confusion Matrix,TP、FP、FN、TN)
    • Precision(精度)
    • Recall(召回率)
    • P-R曲线
    • F1-score
    • TPR、TNR、FPR、FNR
    • ROC曲线下面积(AUC-ROC)
      • TPR(真实阳性率)/召回率/敏感度
      • Specificity
      • FPR
    • 如何推测模型的表现?
    • ROC (Receiver Operating Characteristic) Curve
      • 敏感性和特异性之间的权衡
    • ROC Curve
    • AUC(Area Under the Curve曲线下面积)
  • 有了预测框的预测指标与分类预测的指标,接下来将二者结合即为评价目标检测模型的指标。
    • AP(average precision 平均精度)
      • 方法 1 — 用矩形近似 PR 曲线
      • 方法 2——插值和 11 点平均值
    • mAP(mean of Average Precision)
    • mAP@0.5
    • mAP@[0.5:0.95]

YOLO是最先进的目标检测模型之一。目标检测问题相比分类问题要更加复杂,因为目标检测不仅要把类别预测正确,还要预测出这个类别具体在哪个位置。

我将目标识别的评估指标总结为两部分,一部分为预测框的预测指标,另一部分为分类预测指标

预测框的预测指标——IoU(交并比)

IoU 代表 Intersection over Union,IoU 量化了两个边界框(真实值和预测值)的接近程度。该值介于 0 和 1 之间。如果两个边界框完全重叠,则预测完美,因此 IoU 为 1。另一方面,如果两个边界框不重叠,则 IoU 为 0。IoU 是通过计算两个边界框的交集面积与并集面积之比来计算的,它显示两个边界框彼此重叠的程度。公式如下所示

在这里插入图片描述

Bounding box(边界框)是目标检测(Object Detection)中用来框定图像中目标区域的一种矩形框。它定义了一个矩形区域,该区域包含了图像中的一个或多个目标。

预测框的准确率用IoU来反映。交并比是目标检测问题中的一项重要指标,它在训练阶段反映的是标注框与预测框的重合程度,用于衡量预测框的正确程度。

在我们的示例中,我们将使用 IoU = 50% 作为接受标准。如果 IoU 大于或等于 50%,则我们说位置预测是好的。如果 IoU 小于 50%,则预测与真实边界框相差太远。

如上图所示,IoU指的就是两框的重叠部分的面积,与两框总共部分的面积之比。IoU又称交并比,从字面意思也可以理解,IoU就是两框交集与并集之比。IoU越接近于0,两框重叠越少;IoU越接近于1,两框的重叠程度越高,当IoU等于1时,两框完全重叠。

IoU要搭配IoU阈值一起使用。

IoU阈值一般被定为0.5,当两框的IoU大于阈值时,则判断预测框预测正确。IoU阈值可以修改,IoU阈值越高,则判断预测框预测正确的条件越严格。

分类预测指标

混淆矩阵(Confusion Matrix,TP、FP、FN、TN)

如果预测边界框和真实边界框的类标签相同,并且它们之间的 IoU 大于阈值,则认为预测正确。

  • True Positive(TP): Values that are actually positive and predicted positive.模型预测边界框存在于某个位置(阳性),并且是正确的(真)
  • False Positive(FP): Values that are actually negative but predicted to positive.模型预测某个特定位置存在边界框(阳性),但预测错误(假)
  • False Negative(FN): Values that are actually positive but predicted to negative.模型预测某个位置的边界框(阴性),并且它是错误的(假),即在该位置存在一个阳性边界框。
  • True Negative (TN): Values that are actually negative and predicted to negative.模型预测某个位置的边界框(阴性),并且预测结果正确(真)。这对应于背景,即没有边界框的区域,不用于计算最终指标。

技巧:两个字母,第一个字母表示结果是否预测正确,第二个字母表示预测

在这里插入图片描述

在这里插入图片描述

我在学习这块知识的时候,一直有一个疑问。在多分类的任务中,如何界定某个类别是正例或负例?后来才理解,这里的正例和负例其实只是针对某一类别而言的。例如,coco数据集有80个类别,针对person类而言,person类别就是正例,其他79个类别就是负例;针对car类而言,car类别就是正例,其他79个类别就是负例。

Precision(精度)

在这里插入图片描述

从上图可以看出,分类器预测的非常准确。当它说这是一只猫(狗)时,80% 的时间是正确的。但是,如果图像中有一只猫(狗),分类器只能在 40%(80%)的时间内检测到它。因此,该模型很难记住猫。

准确率衡量的是模型所有正向预测中,真阳性预测所占的比例。计算方法是将真阳性的数量除以真阳性和假阳性的总和。

在这里插入图片描述

准确率 = 真实阳性/(真实阳性+假阳性)

例如,考虑一个垃圾邮件检测系统,其中模型将电子邮件归类为垃圾邮件。如果电子邮件确实是垃圾邮件,则将其视为真阳性。但是,如果电子邮件不是垃圾邮件,但被模型归类为垃圾邮件,则将其视为假阳性。在这种情况下,模型的精度将是:

准确率 = 真实阳性/(真实阳性+假阳性)

分析式子可知,Precision关心的是预测的正例,以及真实的正例和负例。当Precision越大时,FP越小,此时将其他类别预测为本类别的个数也就越少,可以理解为预测出的正例纯度越高。Precision越高,误检越少。

Precision 衡量的是模型预测为正类的样本中有多少实际是正类,强调的是预测结果的准确性。

Recall(召回率)

召回率,也称为敏感度,衡量的是数据集中所有实际阳性样本中真正阳性预测的比例。它的计算方法是将真正阳性的数量除以真正阳性和假阴性的总和。

在这里插入图片描述

在这里插入图片描述

根据定义,Recall的分母时TP与FN之和,TP是预测为正例,真实值也为正例的个数;FN是预测为负例,实际是正例的个数。

分析式子可知,Recall关心的是预测的正例和负例,以及真实的正例。当Recall越大时,FN越小,此时将正例预测为负例的个数越少,可以理解为把全部的正例挑出来的越多。Recall越高,漏检越少。

Recall 衡量的是模型识别出所有正类样本的能力,强调的是识别正类的全面性。如果你不希望漏掉正类样本,Recall 很重要。

假设你正在开发一个疾病筛查的模型:

Precision 关注的是被检测为阳性的人中,实际上有多少是得了病的,减少误诊。
Recall 关注的是所有得了病的人中,有多少被模型正确诊断出来,减少漏诊。

P-R曲线

理想情况下,我们希望准确率和召回率都很高,即检测到的任何东西都是正确的,并且模型可以检测到某个类别的所有出现。准确率和召回率的值取决于模型检测到了多少个真阳性。分配边界框 TP、FP 和 FN 取决于以下两个因素

  • 预测标签与真实标签的比较
  • 两个框之间的 IoU

对于多类分类问题,模型输出边界框属于某个类的条件概率。某个类的概率越大,边界框包含该类的可能性就越大。概率分布以及用户定义的阈值(介于 0 到 1 之间)用于对边界框进行分类。

这个概率置信度阈值越小,模型检测的次数就越多,错过真实标签的几率就越低,因此召回率就越高(通常如此,但并非总是如此)。另一方面,置信度阈值越高,模型对其预测的结果就越有信心,因此准确率就越高(通常如此,但并非总是如此)。我们希望准确率和召回率都尽可能高,因此,根据置信度阈值的值,在准确率和召回率之间存在权衡。

精确度-召回率曲线绘制了不同置信度阈值的精确度与召回率的值。

在这里插入图片描述

不同颜色的线代表不同类别的PR曲线,蓝色的粗线条表示所有类别平均的PR曲线

通过精确度-召回率曲线,我们可以直观地看到哪个置信度阈值最适合我们(对于我们给定的应用程序)。下面是 PR 曲线的一个过于简化的示例

在这里插入图片描述

P-R曲线与坐标轴围成的面积,可作为衡量一个模型预测结果的参考。若一个模型的P-R曲线完全将另一模型的P-R曲线包裹,那么这个模型预测结果一定优于另一模型。

在 PR 曲线中,y 轴表示精确度,x 轴表示召回率。曲线上的每个点代表不同的阈值。随着阈值的变化,精确度和召回率之间的平衡也会发生变化:

  • 高精度和低召回率:这表明该模型在正面预测方面非常准确,但未能捕捉到大量实际正面案例。
  • 低准确率和高召回率:这表明该模型捕获了大多数阳性情况,但是却以更多的假阳性错误为代价。

理想的情况是曲线尽可能接近右上角,同时表示高精度和高召回率。

在这里插入图片描述

精确度-召回率曲线适用于不平衡的数据集。精确度和召回率都集中在正类(少数类)上,与真负类(多数类)无关。当数据集中每个类中的观察值不平衡时,PR 曲线是确定我们模型性能的良好指标。

精确度 x 召回率曲线是评估物体检测器性能的好方法,因为置信度会通过为每个物体类别绘制曲线来改变。如果某个特定类别的物体检测器的精确度在召回率增加时保持较高水平,则该检测器被认为是好的,这意味着如果您改变置信度阈值,精确度和召回率仍然会很高。识别良好物体检测器的另一种方法是寻找一个只能识别相关物体(0 误报 = 高精度)的检测器,找到所有地面真实物体(0 误报 = 高召回率)。

较差的物体检测器需要增加检测到的物体数量(增加误报 = 降低精度)才能检索所有地面真实物体(高召回率)。这就是为什么精度 x 召回率曲线通常以高精度值开始,随着召回率的增加而降低。您可以在下一个主题(平均精度)中看到精度 x 召回率曲线的示例。这种曲线由 PASCAL VOC 2012 挑战赛使用,并且在我们的实现中可用。这就是为什么准确率 x 召回率曲线通常从高精度值开始,并随着召回率的增加而降低。

F1-score

F-1 分数是准确率和召回率的加权平均值,其中权重相等。它用于平衡准确率和召回率之间的权衡。

如果有不同的几个模型,他们有着不同的Precision与Recall,那么我们应该如何挑最优的模型?

最直接的办法就是取Precision与Recall的平均值,但取平均值并不可取。因为有时二者有一个极高,一个极低时,这样平均值是高的,但实际的效果并不会好。这时就要用F1-score来权衡Precision与Recall的平均值。

在这里插入图片描述

根据F1-score的定义式可知,F1-score也是取平均值,只不过强调的是二者之间的较小值。通过F1-score的方式来权衡Precision与Recall,可以有效的避免短板效应,这在数学上被称为调和平均数。

F 1 score = 1 1 2 ( 1 Precision + 1 Recall ) F_{1 \, \text{score}} = \frac{1}{\frac{1}{2} \left( \frac{1}{\text{Precision}} + \frac{1}{\text{Recall}} \right)} F1score=21(Precision1+Recall1)1

例如,如果一个模型的准确率高但召回率低,这意味着它产生的假阳性较少,但会漏掉很多真阳性。相反,一个具有高召回率但准确率低的模型会产生更多的假阳性,但会捕获更多的真阳性。在这种情况下,F-1 分数可以帮助我们确定哪个模型更好。

高 Precision,低 Recall:当模型的 Precision 很高但 Recall 很低时,意味着它很少产生误报(假阳性少),但是它的识别范围有限,漏掉了很多正样本(假阴性多)。这种情况在一些要求极高的准确性的场景中可能适用,比如在疾病诊断中不希望轻易误诊健康人,但也有可能导致漏诊。

高 Recall,低 Precision:当模型的 Recall 很高但 Precision 很低时,意味着它识别了大部分正样本(假阴性少),但是产生了很多误报(假阳性多)。这种情况适用于需要全面覆盖正样本的场景,比如安全监控中宁可多误报,也不希望漏掉潜在的威胁。

TPR、TNR、FPR、FNR

在这里插入图片描述

=> TPR(真阳性率)或召回率是真阳性与真阳性和假阴性之和的比率。它衡量模型正确识别的实际阳性病例的比例。高 TPR 意味着该模型擅长识别阳性病例。
T P R = T P ( T P + F N ) TPR = \frac{TP}{(TP + FN)} TPR=(TP+FN)TP

=> TNR(真阴性率)或特异性是真阴性与真阴性和假阳性之和的比率。它衡量模型正确识别的实际阴性病例的比例。高 TNR 意味着该模型擅长识别阴性病例。

=> FPR(假阳性率)是假阳性与假阳性和真阴性之和的比率。它衡量模型错误地将实际阴性情况归类为阳性的比例。高 FPR 意味着该模型犯了很多假阳性错误。
F P R = F P ( F P + T N ) FPR = \frac{FP}{(FP + TN)} FPR=(FP+TN)FP

=> FNR(假阴性率)是假阴性与假阴性和真阳性之和的比率。它衡量模型错误地将实际阳性病例归类为阴性的比例。高 FNR 意味着该模型犯了很多假阴性错误。

ROC曲线下面积(AUC-ROC)

ROC 曲线建立在从混淆矩阵得出的两个指标之上:真实阳性率 ( TPR ) 和假阳性率 ( FPR )。TPR与召回率相同。它是正确预测的正样本除以数据集中所有实际可用的正样本的比率。 TPR 关注实际的正类

反过来,FPR 是假阳性预测与实际阴性样本总数的比率

AUC - ROC 曲线是针对不同阈值设置下的分类问题的性能测量。ROC 是概率曲线,AUC 表示可分离性的程度或度量。它表示模型区分类别的能力。AUC 越高,模型将 0 类预测为 0 和将 1 类预测为 1 的能力就越强。类似地,AUC 越高,模型区分患病患者和无患病患者的能力就越强。

ROC 曲线以 TPR 与 FPR 的关系绘制,其中 TPR 在 y 轴上,FPR 在 x 轴上。

在这里插入图片描述

TPR(真实阳性率)/召回率/敏感度

TPR / Recall / Sensitivity = TP TP + FN \text{TPR / Recall / Sensitivity} = \frac{\text{TP}}{\text{TP} + \text{FN}} TPR / Recall / Sensitivity=TP+FNTP

Specificity

Specificity = TN TN + FP \text{Specificity} = \frac{\text{TN}}{\text{TN} + \text{FP}} Specificity=TN+FPTN

在这里插入图片描述

FPR

FPR = 1 − Specificity = FP TN + FP \text{FPR} = 1 - \text{Specificity} \\ = \frac{\text{FP}}{\text{TN} + \text{FP}} FPR=1Specificity=TN+FPFP

如何推测模型的表现?

优秀模型的 AUC 接近 1,这意味着它具有良好的可分离性度量。较差模型的 AUC 接近 0,这意味着它具有最差的可分离性度量。事实上,这意味着它正在倒推结果。它将 0 预测为 1,将 1 预测为 0。当 AUC 为 0.5 时,这意味着该模型根本没有类别分离能力。

让我们来解读一下上述说法。

我们知道,ROC 是一条概率曲线。因此,让我们绘制这些概率的分布:

注:红色分布曲线为阳性类(有病患者),绿色分布曲线为阴性类(无病患者)。

在这里插入图片描述

这是理想情况。当两条曲线完全不重叠时,意味着模型具有理想的可分离性度量。它能够完美区分正类和负类。

在这里插入图片描述

当两个分布重叠时,我们会引入 1 类和 2 类错误。根据阈值,我们可以最小化或最大化它们。当 AUC 为 0.7 时,意味着模型有 70% 的机会能够区分正类和负类。

在这里插入图片描述

在这里插入图片描述

这是最糟糕的情况,当AUC约为0.5时,模型已经没有区分正类和负类的判别能力。

在这里插入图片描述

当 AUC 接近 0 时,模型实际上正在对类别进行交换。这意味着模型将负类预测为正类,反之亦然。

ROC (Receiver Operating Characteristic) Curve

ROC(接收者操作特性)曲线告诉我们模型区分两件事的能力有多好(例如 ,患者是否有疾病)。更好的模型可以准确地区分两者。而较差的模型将很难区分两者。

假设我们有一个模型可以预测患者是否患有某种疾病。该模型预测每个患者的概率(在 Python 中我们使用“ predict_proba ”函数)。使用这些概率,我们绘制分布,如下所示:

在这里插入图片描述

这里,红色分布代表所有没有患病的患者,绿色分布代表所有患有该疾病的患者。

现在我们要选择一个值,我们需要设置截止值,即阈值,高于该值我们将预测每个人都为阳性(他们患有疾病),低于该值我们将预测为阴性(他们没有疾病)。我们将阈值设置为“ 0.5 ”,如下所示:

在这里插入图片描述

所有高于阈值的正值都将是“真阳性”,而高于阈值的负值将成为“假阳性”,因为它们被错误地预测为阳性。

所有低于阈值的负值都将是“真负值”,而低于阈值的正值将是“假负值”,因为它们被错误地预测为负值。

在这里插入图片描述

敏感性和特异性之间的权衡

当我们降低阈值时,我们会得到更多的正值,从而增加敏感度。同时,这会降低特异性。

同样,当我们增加阈值时,我们会得到更多的负值,从而增加特异性并降低敏感性。

敏感性⬇️特异性⬆️​

特异性⬇️敏感性⬆️

在这里插入图片描述

但是,这不是我们绘制 ROC 曲线的方式。要绘制 ROC 曲线,我们使用 (1 - 特异性) 而不是特异性,图形将如下所示:

在这里插入图片描述

ROC Curve

因此,现在,当敏感度增加时,(1 - 特异性)也会增加。这条曲线称为 ROC 曲线。

在这里插入图片描述

AUC(Area Under the Curve曲线下面积)

AUC 是 ROC 曲线下的面积。这个分数可以让我们很好地了解模型的表现。

在这里插入图片描述

在这里插入图片描述

如我们所见,第一个模型在区分正值和负值方面做得相当好。因此,由于 ROC 曲线下的面积很大,AUC 分数为 0.9。

然而,如果我们看到最后一个模型,预测完全重叠,我们得到的 AUC 分数为 0.5。这意味着该模型表现不佳,其预测几乎是随机的。

有了预测框的预测指标与分类预测的指标,接下来将二者结合即为评价目标检测模型的指标。

AP(average precision 平均精度)

对象检测和定位算法的性能通过称为平均精度(AP)的指标来评估。

为您的应用程序选择置信度值可能很困难且主观。平均精度是一个关键性能指标,它试图消除选择一个置信度阈值的依赖性,其定义为

平均精度是 PR 曲线下的面积。

AP 将 PR 曲线总结为一个标量值。在一系列置信度阈值范围内,当准确率和召回率都较高时,平均精度较高;当准确率和召回率其中之一较低时,平均精度较低。AP 的范围在 0 到 1 之间。

在这里插入图片描述

方法 1 — 用矩形近似 PR 曲线

  • 对于每个精确度-召回率对 (j=0, …, n-1), 可以通过使用矩形近似曲线来找到 PR 曲线下的面积。
  • 此类矩形的宽度可以通过取两个连续召回率值 (r(k), r(k-1)) 的差值来找到,高度可以通过取所选召回率值的精度的最大值来找到,即 w = r(k)-r(k-1) ,max(p(k), p(k-1))
  • AP 可以通过这些矩形面积的总和来计算,如下所示

在这里插入图片描述

方法 2——插值和 11 点平均值

  • 计算从 0.0 到 1.0 的 11 个召回率值的精度值,增量为 0.1
  • 这 11 个点可以在右图中看作橙色样本
  • 可以通过取这 11 个精度值的平均值来计算 AP,如下所示

在这里插入图片描述

AP(average precision 平均精度):虽然名为平均精度,但AP的计算方法并不是计算Precision的平均值,而是计算每个类别的PR曲线与坐标轴围成的面积,可以用积分的方法进行计算。如果一个模型的AP越大,也就是说PR曲线与坐标轴围成的面积越大,Precision与Recall在整体上也相对较高。

在这里插入图片描述

AP 是借助其他几个指标来计算的,例如 IoU、混淆矩阵(TP、FP、FN)、精度和召回率等,如下图所示

在这里插入图片描述

mAP(mean of Average Precision)

mAP(mean of Average Precision) : 对所有类别的AP值求平均值。AP可以反映每个类别预测的准确率,mAP就是对所有类的AP求平均值,用于反映整个模型的准确率。mAP越大,PR曲线与坐标轴围城的面积越大。平时我们说的,某一目标检测算法的准确率达到了多少,这个准确率就泛指mAP。

在这里插入图片描述

mAP@0.5

在YOLO模型中,你会见到mAP@0.5这样的表现形式,这种形式表示在IOU阈值为0.5的情况下,mAP的值为多少。当预测框与标注框的IOU大于0.5时,就认为这个对象预测正确,在这个前提下再去计算mAP。一般来说,mAP@0.5即为评价YOLO模型的指标之一。

mAP@[0.5:0.95]

YOLO模型中还存在mAP@[0.5:0.95]这样一种表现形式,这形式是多个IOU阈值下的mAP,会在区间[0.5,0.95]内,以0.05为步长,取10个IOU阈值,分别计算这10个IOU阈值下的mAP,再取平均值。mAP@[0.5:0.95]越大,表示预测框越精准,因为它去取到了更多IOU阈值大的情况。

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本草智控:中药实验管理的智能时代

3系统分析 3.1可行性分析 通过对本中药实验管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本中药实验管理系统采用SSM框架,JAVA作为开发语…

父组件提交时让各自的子组件验证表格是否填写完整

项目场景: 提示:这里简述项目相关背景: 父组件中有三个表格,表格中时输入框,有些输入框是必填的,在父组件提交时需要验证这三个表格的必填输入框中是否有没填写的。 原因分析: 提示&#xff1a…

嘴尚绝卤味独特的口感

在餐饮行业里,嘴尚绝卤味无疑是一颗璀璨的明星。自2021年8月7日创立以来,这个品牌就以其独特的口感和制作工艺赢得了众多食客的青睐。嘴尚绝卤味,作为四川优优熊猫餐饮管理有限公司旗下的主打品牌,专注于提供高品质的休闲佐食&…

JDK17 安装使用

一、Java JDK(Java Development Kit) 它是开发、运行Java应用程序所需的各种工具和库的集合。 二、JDK 1.8(也称为Java 8)和JDK 17是两个重要的版本 这两个版本在语言特性、性能优化和安全性方面都有所不同。 1、语言特性 …

解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题

解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题 Chapter1 解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题 Chapter1 解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题 目前使用的是三星4K显示屏,屏幕分辨率太高了,导致VMWare Workst…

uniapp 微信小程序地图标记点、聚合点/根据缩放重合点,根据缩放登记显示气泡marik标点

如图,如果要实现上方的效果: 上方两个效果根据经纬度标记点缩放后有重复点会添加数量 用到的文档地址https://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.addMarkers.htmlMapContext.addMarkers(Object object) 添加标记点Ma…

第6章详细设计 -6.7 PCB工程需求表单

6.7 PCB工程需求表单 PCB工程需求表是PCB设计的入口条件,以一块单板为例,表6.2所示的PCB工程需求表单明确了Signal Integrity(SI,信号完整性)和Power Integrity(PI,电源完整性)的要…

Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系

一.什么是Spring?它解决了什么问题? 1.1什么是Spring? Spring,一般指代的是Spring Framework 它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代码…

重构Action-cli前端脚手架

一、概述 最近一年,为了满足公司业务开发,解决重复搭建项目繁琐过程,自己开发了一个前端脚手架,并发布到npm。随着时间的推移,发现之前的版本存在很多问题,有些功能做不到位,而且代码也不是很规…

Kotlin return与return@forEachIndexed

Kotlin return与returnforEachIndexed fun main() {val data arrayOf(0, 1, 2, 3, 4)println("a")data.forEachIndexed { index, v ->if (v 2) {//类似while循环中的continue//跳过,继续下一个forEachIndexed迭代returnforEachIndexed}println("…

Springboot基于GIS的旅游信息管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

《Django 5 By Example》阅读笔记:p645-p650

《Django 5 By Example》学习第8天,p645-p650总结,总计6页。 一、技术总结 1.django-rest-framework (1)serializer p648, Serializer: Provides serialization for normal Python class instances。Serializer又细分为Serializer, ModelSerializer,…

5个有效的华为(HUAWEI)手机数据恢复方法

5个有效的手机数据恢复方法 华为智能手机中的数据丢失比许多人认为的更为普遍。发生这种类型的丢失有多种不同的原因,因此数据恢复软件的重要性。您永远不知道您的智能手机何时会在这方面垮台;因此,预防总比哀叹好,这就是为什么众…

【微软:多模态基础模型】(4)统一视觉模型

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品 【微软:多模态基础模型】(1)从专家到通用助手 【微软:多模态基础模型】(2)视觉理解 【微…

鸿蒙网络编程系列48-仓颉版UDP回声服务器示例

1. UDP回声服务器简介 回声服务器指的是这样一种服务器,它接受客户端的连接,并且把收到的数据原样返回给客户端,本系列的第2篇文章《鸿蒙网络编程系列2-UDP回声服务器的实现》中基于ArkTS语言在API 9的环境下实现了UDP回声服务器&#xff0c…

微博短链接平台-项目测试用例设计(Xmind)

技术栈:Spring BootMyBatis-PlusRedisShardingSphereSentinel 项目描述:微博短链接平台,提供了一个高效、安全和可靠的短链接管理平台。完成较长链接转换为短链接场景。比 如,受微博发送博文长度限制,仅能发表150字&am…

前端基础(四十一):实时获取麦克风音量

效果 源码 <button id"open">打开麦克风</button> <button id"close">关闭麦克风</button><input id"range" type"range" min"0" max"100" value"0" />let _mediaStrea…

jmeter常用配置元件介绍总结之配置元件

系列文章目录 1.windows、linux安装jmeter及设置中文显示 2.jmeter常用配置元件介绍总结之安装插件 3.jmeter常用配置元件介绍总结之线程组 4.jmeter常用配置元件介绍总结之函数助手 5.jmeter常用配置元件介绍总结之取样器 6.jmeter常用配置元件介绍总结之jsr223执行pytho…

H.265流媒体播放器EasyPlayer.js视频流媒体播放器关于直播流播放完毕是否能监听到

EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;无须安装任何插件&#xff0c;起播快、延迟低、兼容性强&#xff0c;使用非常便捷。 EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式&#xff0c;也能支持WebS…

《基于 PySpark 的电影推荐系统分析及问题解决》

以下是一篇关于上述代码的博客文章&#xff1a; 基于PySpark的电影推荐系统实现与分析 在当今数字化时代&#xff0c;个性化推荐系统在各个领域中都发挥着至关重要的作用&#xff0c;尤其是在娱乐行业&#xff0c;如电影推荐。本文将详细介绍如何使用PySpark构建一个简单的电…