模型的评估指标——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.mzph.cn/diannao/61065.shtml

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

相关文章

轻量云服务器:入门级云计算的最佳选择

在云计算领域,轻量云服务器逐渐成为小型企业、个人开发者和初创公司关注的热点。它凭借高性价比、简单易用和稳定性能,正在改变传统的服务器部署方式。本文将详细解析轻量云服务器的定义、优势、适用场景及如何选择最佳方案,帮助您全面了解这…

【初阶数据结构篇】归并排序、计数排序

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…

移远通信5G RedCap模组RG255C-CN通过中国电信5G Inside终端生态认证

近日,移远通信5G RedCap模组RG255C-CN荣获中国电信颁发的5G Inside终端生态认证证书。这表明,该产品在5G基本性能、网络兼容性、安全特性等方面已经过严格评测且表现优异,将进一步加速推动5G行业终端规模化应用。 中国电信5G Inside终端生态认…

Towards Reasoning in Large Language Models: A Survey

文章目录 题目摘要引言什么是推理?走向大型语言模型中的推理测量大型语言模型中的推理发现与启示反思、讨论和未来方向 为什么要推理?结论题目 大型语言模型中的推理:一项调查 论文地址:https://arxiv.org/abs/2212.10403 项目地址: https://github.com/jeffhj/LM-reason…

Android Studio | 修改镜像地址为阿里云镜像地址,启动App

在项目文件的目录下的 settings.gradle.kts 中修改配置,配置中包含插件和依赖项 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https://maven.aliyun.com/repository/releases")}maven { urlu…

Python | Leetcode Python题解之第564题数组嵌套

题目&#xff1a; 题解&#xff1a; class Solution:def arrayNesting(self, nums: List[int]) -> int:ans, n 0, len(nums)for i in range(n):cnt 0while nums[i] < n:num nums[i]nums[i] ni numcnt 1ans max(ans, cnt)return ans

2024-11-17 -MATLAB三维绘图简单实例

1. x -1:0.05:1; y x; [X, Y] meshgrid(x, y); f (X, Y) (sin(pi * X) .* sin(pi * Y)) .^ 2.*sin(2.*X2.*Y); mesh(X, Y, f(X, Y)); % 调用函数f并传递X和Y xlabel(X-axis); ylabel(Y-axis); zlabel(Z-axis); title(Surface Plot of (sin(pi * X) .* sin(pi * Y)) .^ 2.*…

网络层9——虚拟专用网VPN和网络地址转换NAT

目录 一、为什么有虚拟专用网&#xff1f; 二、如何理解“虚拟专用网”&#xff1f; 三、IP隧道技术实现虚拟专用网 四、网络地址变换 一、为什么有虚拟专用网&#xff1f; 第一&#xff0c;IPv4只有32位&#xff0c;最多有40亿个全球唯一的IP地址数量不够&#xff0c;无法…

小程序如何完成订阅

小程序如何完成订阅 参考相关文档实践问题处理授权弹窗不再触发引导用户重新授权 参考相关文档 微信小程序实现订阅消息推送的实现步骤 发送订阅消息 小程序订阅消息&#xff08;用户通过弹窗订阅&#xff09;开发指南 实践 我们需要先选这一个模板&#xff0c;具体流程参考…

Oracle OCP认证考试考点详解082系列19

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 91. 第91题&#xff1a; 题目 解析及答案&#xff1a; 关于 Oracle 数据库中的索引及其管理&#xff0c;以下哪三个陈述是正确的&#x…

HuggingFace:基于YOLOv8的人脸检测模型

个人操作经验总结 1、YOLO的环境配置 github 不论base环境版本如何&#xff0c;建议在conda的虚拟环境中安装 1.1、创建虚拟环境 conda create -n yolov8-face python3.9conda create &#xff1a;创建conda虚拟环境&#xff0c; -n &#xff1a;给虚拟环境命名的…

2024-11-15 Element-ui的tab切换中table自适应宽度无法立即100%的问题

前言 今天在写一个统计图表的时候&#xff0c;将所有的table表格和echarts图表放到一个页面中&#xff0c;这样会在纵向上出现滚动条&#xff0c;上下滑动对用户体验不好&#xff0c;于是改成tab切换的形式 遇到的问题 正如标题所述&#xff0c;elementui在tab中使用table时&…

【汇编】c++游戏开发

由一起学编程创作的‘C/C项目实战&#xff1a;2D射击游戏开发&#xff08;简易版&#xff09;&#xff0c; 440 行源码分享来啦~’&#xff1a; C/C项目实战&#xff1a;2D射击游戏开发&#xff08;简易版&#xff09;&#xff0c; 440 行源码分享来啦~_射击c-CSDN博客文章浏览…

由播客转向个人定制的音频频道(1)平台搭建

项目的背景 最近开始听喜马拉雅播客的内容&#xff0c;但是发现许多不方便的地方。 休息的时候收听喜马拉雅&#xff0c;但是还需要不断地选择喜马拉雅的内容&#xff0c;比较麻烦&#xff0c;而且黑灯操作反而伤眼睛。 喜马拉雅为代表的播客平台都是VOD 形式的&#xff0…

k-近邻算法(K-Nearest Neighbors, KNN)详解:机器学习中的经典算法

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

pycharm分支提交操作

一、Pycharm拉取Git远程仓库代码 1、点击VCS > Get from Version Control 2、输入git的url&#xff0c;选择自己的项目路径 3、点击Clone&#xff0c;就拉取成功了 默认签出分支为main 选择develop签出即可进行开发工作 二、创建分支&#xff08;非必要可以不使用&#xf…

PySpark——Python与大数据

一、Spark 与 PySpark Apache Spark 是用于大规模数据&#xff08; large-scala data &#xff09;处理的统一&#xff08; unified &#xff09;分析引擎。简单来说&#xff0c; Spark 是一款分布式的计算框架&#xff0c;用于调度成百上千的服务器集群&#xff0c;计算 TB 、…

算法日记 26-27day 贪心算法

接下来的题目有些地方比较相似。需要注意多个条件。 题目&#xff1a;分发糖果 135. 分发糖果 - 力扣&#xff08;LeetCode&#xff09; n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&#xff0c;给这些孩子分发糖果&#xff1a; 每…

Python绘制雪花

文章目录 系列目录写在前面技术需求完整代码代码分析1. 代码初始化部分分析2. 雪花绘制核心逻辑分析3. 窗口保持部分分析4. 美学与几何特点总结 写在后面 系列目录 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4…

【一键整合包及教程】AI照片数字人工具EchoMimic技术解析

在数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度改变着我们的生活。EchoMimic&#xff0c;作为蚂蚁集团旗下支付宝推出的开源项目&#xff0c;不仅为数字人技术的发展掀开了新的一页&#xff0c;更为娱乐、教育、虚拟现实、在线会议等多个领域带…