MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)

news2024/11/16 2:41:47
目标检测模型性能衡量指标、MS COCO 数据集的评价标准以及不同指标的选择推荐

0. 引言

0.1 COCO 数据集评价指标

目标检测模型通过 pycocotools 在验证集上会得到 COCO 的评价列表,具体参数的含义是什么呢?

0.2 目标检测领域常用的公开数据集

  1. PASCAL VOC
  2. Microsoft COCO(MS COCO)

在 MS COCO 数据集出来之前,目标检测基本上用的是 PASCAL VOC 数据集,现在 MS COCO 非常流行。这两个数据集均有自己的评判标准。

0.3 COCO(Common Objects in Context,上下文中的常见对象)数据集简介

0.3.1 介绍

COCO 数据集是一个可用于图像检测(Image Detection),语义分割(Semantic Segmentation)和图像标题生成(Image Captioning)的大规模数据集。它有超过 330K 张图像(其中 220K 张是有标注的图像),包含

  • 150 万个目标
  • 80 个目标类别(object categories:行人、汽车、大象等)
  • 91 种材料类别(stuff categoris:草、墙、天空等)
  • 每张图像包含五句图像的语句描述
  • 且有 250, 000 个带关键点标注的行人

MS COCO官网:https://cocodataset.org/#home

0.3.2 MS COCO 可以应用的任务

  1. 目标检测(object detection):使用 bounding box 或者 object segmentation (也称为instance segmentation)将不同的目标进行标定。

  2. Densepose(密集姿势估计):DensePose 任务涉及同时检测人、分割他们的身体并将属于人体的所有图像像素映射到身体的3D表面。用于不可控条件下的密集人体姿态 估计。

  3. Key-points detection(关键点检测):在任意姿态下对人物的关键点进行定位,该任务包含检测行人及定位到行人的关键点。

  4. Stuff Segmentation(材料细分):语义分割中针对 stuff class 类的分割(草,墙壁,天空等)

  5. Panoptic Segmentation(全景分割):其目的是生成丰富且完整的连贯场景分割,这是实现自主驾驶或增强现实等真实世界视觉系统的重要一步。

  6. image captioning(图像标题生成):根据图像生成一段文字。

0.3.3 COCO 的 80 个类别

编号英文名称中文名称编号英文名称中文名称编号英文名称中文名称
1person28boat55cup杯子
2bicycle自行车29traffic light交通灯56fork叉子
3car汽车30fire hydrant消防栓57knife
4motorcycle摩托车31stop sign停车标志58spoon勺子
5airplane飞机32parking meter停车计时器59bowl
6bus公共汽车33bench长凳60banana香蕉
7train火车34bird61apple苹果
8truck卡车35cat62sandwich三明治
9boat36dog63orange橙子
10traffic light交通灯37horse64broccoli西兰花
11fire hydrant消防栓38sheep65carrot胡萝卜
12stop sign停车标志39cow66hot dog热狗
13parking meter停车计时器40elephant大象67pizza披萨
14bench长凳41bear68donut甜甜圈
15bird42zebra斑马69cake蛋糕
16cat43giraffe长颈鹿70chair椅子
17dog44backpack背包71couch沙发
18horse45umbrella雨伞72potted plant盆栽
19sheep46handbag手提包73bed
20cow47tie领带74dining table餐桌
21elephant大象48suitcase行李箱75toilet厕所
22bear49frisbee飞盘76tv monitor电视监视器
23zebra斑马50skis滑雪板77laptop笔记本电脑
24giraffe长颈鹿51snowboard单板滑雪78mouse鼠标
25backpack背包52sports ball运动球79remote遥控器
26umbrella雨伞53kite风筝80keyboard键盘
27tie领带54baseball bat棒球棍

1. 目标检测中常见的指标

对于这样一张图片,怎样才能算检测正确呢?其中,绿色为 GT,红色为预测框。

  • IoU 大于指定阈值?
  • 类别是否正确?
  • confidence 大于指定阈值?

以上三点都是我们需要考虑的。

1.1 TP、FP、FN

1.1.1 定义

  • TP(True Positive):预测正确的预测框数量 [IoU > 阈值](同一个 GT 只计算一次)
  • FP(False Positive):检测到是同一个 GT 的多余预测框的数量 [IoU < 阈值](或者是检测到同一个 GT 的多余预测框的数量)
  • FN(False Negative):没有检测到 GT 的预测框数量 [漏检的数量]
  • 阈值根据任务进行调整,一般选择 0.5
  • FP 就是“假阳性”,就是模型误认为是 TP

1.1.2 例子说明 TP、FP、FN

举个例子理解 TP、FP、FN:

对于张图片来说,绿色 为 GT,红色 为模型预测框,IoU 阈值设置为 0.5。

  • 对于中间这只猫来说,在 绿色框(GT) 中的 预测框(红色)绿色框 的 IoU 肯定是 >0.5 的,所以它应该是一个 TP(预测对了目标且 IoU > 阈值);而对于 偏左的预测框 来说,它和 GT 的 IoU 肯定是不足 0.5 的,加之因为有 TP 的存在,所以它是 FP。
  • 对于右下角的那只猫,GT 是有的,但模型并没有给出对应的预测框,因此模型对于这只猫来说,漏检了,故 FN 的数量为 1。

1.2 AP(Average Precision,平均精度)

1.2.1 Precision

P r e c i s i o n = T P T P + F P \mathrm{Precision = \frac{TP}{TP + FP}} Precision=TP+FPTP

解释:模型预测的所有目标(Object)中,预测正确的比例 -> 查准率

模型认为正确的目标 中 确实预测对了多少


那么仅仅通过 Precision 这个指标能不能全面衡量模型的检测能力呢?举个例子进行说明:

同样的,绿色的为 Ground Truth,红色的为 预测框。

上面这张图片有 5 个目标,但是网络只针对猫 ① 给出了预测框(红色的),剩下的猫都没有检测出来。这里的 TP=1,FP=0。所以此时的 Precision 为:

P r e c i s i o n = T P T P + F P = 1 1 + 0 = 1 = 100 % \begin{aligned} \mathrm{Precision} & = \mathrm{\frac{TP}{TP+FP}} \\ & = \frac{1}{1 + 0} \\ & = 1\\ & = 100\% \end{aligned} Precision=TP+FPTP=1+01=1=100%

很明显对于这张图片网络漏检了 4 个目标,但 Precision 又显示结果是非常好的。因此我们就可以知道了,仅仅通过 Precision 无法评判检测网络的性能。为了解决这个问题,我们引入了另外一个指标 —— Recall。

1.2.2 Recall

R e c a l l = T P T P + F N \mathrm{Recall = \frac{TP}{TP + FN}} Recall=TP+FNTP

解释:所有真实目标中,模型预测正确的比例 -> 查全率

本应该检测对的,模型检测对了多少

那么我们只使用 Recall 这个指标来判定模型的好坏吗?举个例子说明:

这张图片和上一张图片类似,网络总共预测出了 50 个预测框(即 50 个目标)。这 50 个预测框中包括了所有要检测的目标,那么该网络针对这张图片的 Recall 为:

R e c a l l = T P T P + F N = 1 1 + 0 = 1 = 100 % \begin{aligned} \mathrm{Recall} & = \mathrm{\frac{TP}{TP+FN}} \\ & = \frac{1}{1 + 0} \\ & = 1\\ & = 100\% \end{aligned} Recall=TP+FNTP=1+01=1=100%

很明显,单单使用 Recall 无法评判模型的好坏。所以我们需要同时使用 Precision 和 Recall 这两个指标来进行网络性能的评判,即引入 —— AP。

1.2.3 AP —— P-R 曲线下面积

AP 就是P-R曲线下方的面积,而 P-R 分别为 Precision 和 Recall。

假设模型已经训练完毕,验证集为下面 3 张图片:

1.2.3.1 第一张图片

首先判断该图片中有几个目标(GT)?很明显绿色的框有两个,所以有两个 GT,即

n u m o b j = 0 + 2 = 2 。 \mathrm{num_{obj}} = 0 + 2 = 2。 numobj=0+2=2

接下来同一个列表统计网络所检测到的目标信息:

GT idConfidenceOB (IoU=0.5)
10.98True
10.61False

Note:

  • GT id 为 预测框匹配的 GT 的 id;Confidence 为预测框的置信度(是此类别的概率);OB 为判断该预测框是否是 TP。
  • 该表从上到下的顺序是根据 Confidence 降序排列的
  • 对于 GT id = 2,网络并没有给出预测框,所以表中没有相关信息
1.2.3.2 第二张图片

这张图片中目标的个数(绿色的框)有 1 个,所以累积目标个数:

n u m o b j = 2 + 1 = 3 。 \mathrm{num_{obj}} = 2 + 1 = 3。 numobj=2+1=3

表也需更新:

GT idConfidenceOB (IoU=0.5)
10.98True
30.89True
30.66False
10.61False
1.2.3.3 第三张图片

累积目标个数:

n u m o b j = 3 + 4 = 7 。 \mathrm{num_{obj}} = 3 + 4 = 7。 numobj=3+4=7

更新表:

GT idConfidenceOB(IoU=0.5)
10.98True
30.89True
60.88True
70.78True
30.66False
10.61False
40.52True
1.2.3.4 计算 AP

得到表以后,我们计算针对不同 Confidence(即取不同 Confidence 阈值)得到的 Precision 和 Recall 的信息)。

GT idConfidenceOB (IoU=0.5)
10.98True
30.89True
60.88True
70.78True
30.66False
10.61False
40.52True
  1. 首先将 Confidence 的阈值设置为 0.98(Confidence ≥ 0.98 的目标才算匹配正确),只有一个预测框符合条件(表中的第一行)。

    • TP = 1; FP = 0; FN = 6

    在 Confidence≥0.98 的条件下,TP=1 没什么问题;FP=0 是因为阈值的存在;FN=6 是因为累积目标个数 num_ob=7,所以 F N = n u m _ o b − T P = 7 − 1 = 6 \mathrm{FN=num\_ob - TP} = 7 - 1 = 6 FN=num_obTP=71=6。因此我们可以得到 P r e c i s i o n = T P T P + F P = 1 1 + 0 = 1 \mathrm{Precision = \frac{TP}{TP + FP} = \frac{1}{1+0}=1} Precision=TP+FPTP=1+01=1 R e c a l l = T P T P + F N = 1 1 + 6 = 0.14 \mathrm{Recall = \frac{TP}{TP + FN} = \frac{1}{1+6}=0.14} Recall=TP+FNTP=1+61=0.14
    Note:这个TP; FP; FN是看那个表,就不区分什么第几张图片了,看表就可以。

  2. 将 Confidence 阈值设置为 0.89

    • 此条件下,TP = 2; FP = 0; FN = num_ob - TP = 7 - 2 = 5,我们可以得到 Precision 和 Recall
  3. 将 Confidence 阈值设置为 0.66

    • 此条件下,TP=4; FP=1; FN=num_ob-TP=7-4=3,我们可以得到 P r e c i s i o n = T P T P + F P = 4 4 + 1 = 0.80 \mathrm{Precision = \frac{TP}{TP + FP} = \frac{4}{4+1}=0.80} Precision=TP+FPTP=4+14=0.80 R e c a l l = T P T P + F N = 4 4 + 3 = 0.57 \mathrm{Recall = \frac{TP}{TP + FN} = \frac{4}{4+3}=0.57} Recall=TP+FNTP=4+34=0.57

全部计算完毕后,结果如下表所示。

RankPrecisionRecall
11.00.14
21.00.28
31.00.42
41.00.57
50.800.57
60.660.57
70.710.71

我们可以根据求得的一系列的 Precision 和 Recall 绘制 P-R 曲线。以 Recall 为横坐标,Precision 为纵坐标得到 P-R 曲线,如下图所示。

在绘制 P-R 曲线时需注意:对于 Recall(横坐标)需要滤除一些重复数据(图中用框框住的即为参与计算的点,有两个点没有被框,它俩不参与 AP 的计算)。根据表中的数据可知,Recall=0.57 有 3 个值,此时需保留 Precision 最大的值,即:

RankPrecisionRecall
11.00.14
21.00.28
31.00.42
41.00.57
50.800.57
60.660.57
70.710.71

图中阴影部分的面积就是 AP,计算如下(重复的 Recall 已经滤除):

RankPrecisionRecall
11.00.14
21.00.28
31.00.42
41.00.57
60.710.71

R e c a l l = ∑ i = 1 R a n k ( R e c a l l i − R e c a l l i − 1 ) × max ⁡ ( P r e c i s i o n i , . . . , R a n k ) R e c a l l = ∑ i = 本行 R a n k ( R e c a l l 本行 − R e c a l l 上一行 ) × 本行及以下最大的 P r e c i s i o n \begin{aligned} \mathrm{Recall} & = \sum_{i=1}^{\mathrm{Rank}} (\mathrm{Recall}_i -\mathrm{Recall}_{i-1}) \times \max(\mathrm{Precision}_{ i, ..., \mathrm{Rank}}) \\ \mathrm{Recall} & = \sum_{i=本行}^{\mathrm{Rank}} (\mathrm{Recall}_{本行} -\mathrm{Recall}_{上一行}) \times 本行及以下最大的\mathrm{Precision} \end{aligned} RecallRecall=i=1Rank(RecalliRecalli1)×max(Precisioni,...,Rank)=i=本行Rank(Recall本行Recall上一行)×本行及以下最大的Precision

根据公式可以求得阴影的面积,即 AP 为:

R e c a l l = ( 0.14 − 0 ) × 1.0 + ( 0.28 − 0.14 ) × 1.0 + ( 0.42 − 0.28 ) × 1.0 + ( 0.57 − 0.42 ) × 1.0 + ( 0.71 − 0.57 ) × 0.71 = 0.6694 \begin{aligned} \mathrm{Recall} & = (0.14 - 0) \times 1.0 + (0.28 - 0.14) \times 1.0 + (0.42 - 0.28) \times 1.0 + (0.57 - 0.42) \times 1.0 + (0.71 - 0.57) \times 0.71 \\ & = 0.6694 \end{aligned} Recall=(0.140)×1.0+(0.280.14)×1.0+(0.420.28)×1.0+(0.570.42)×1.0+(0.710.57)×0.71=0.6694

了解完 AP 后我们就可以进一步得到一个新的指标 —— mAP。

1.3 mAP(mean Average Precision,即各类别 AP 的平均值)

mAP 就是各类别 AP 的平均值,计算公式如下:

m A P = 1 n c ∑ i = 1 n c A P i \mathrm{mAP = \frac{1}{nc}\sum^{nc}_{i=1}AP_i} mAP=nc1i=1ncAPi

其中 nc 为类别数。

1.4 注意事项

以上的 TP、FP、FN 都是经过 NMS 处理后得到的预测框。

2. MS COCO 评价指标中每条数据的含义

MS COCO 官网说明:https://cocodataset.org/#detection-eval

Note:图片中虽然写的是 AP,但实际上表示的是 mAP。

2.1 Average Precision (AP)

  1. A P \mathrm{AP} AP:MS COCO 的主要评价指标,设置的 IoU 阈值为 IoU = range(0.5, 1.00, 0.05) 共 10 个 IoU 的 mAP 的均值,计算公式如下:
    A P = 1 10 ( m A P I o U = 0.5 + m A P I o U = 0.55 + m A P I o U = 0.60 + m A P I o U = 0.65 + m A P I o U = 0.70 + m A P I o U = 0.75 + m A P I o U = 0.80 + m A P I o U = 0.85 + m A P I o U = 0.9 + m A P I o U = 0.95 ) \mathrm{AP = \frac{1}{10}(mAP^{IoU=0.5} + mAP^{IoU=0.55} + mAP^{IoU=0.60} + mAP^{IoU=0.65} + mAP^{IoU=0.70} + mAP^{IoU=0.75} + mAP^{IoU=0.80} + mAP^{IoU=0.85} + mAP^{IoU=0.9} + mAP^{IoU=0.95})} AP=101(mAPIoU=0.5+mAPIoU=0.55+mAPIoU=0.60+mAPIoU=0.65+mAPIoU=0.70+mAPIoU=0.75+mAPIoU=0.80+mAPIoU=0.85+mAPIoU=0.9+mAPIoU=0.95)
  2. A P I o U = 0.50 \mathrm{AP^{IoU}=0.50} APIoU=0.50:将 IoU 阈值设置为 0.5 得到的 mAP 值(就是上面我们举的例子),这个取值也是 PASCAL VOC 的评价指标。
  3. A P I o U = 0.75 \mathrm{AP^{IoU}=0.75} APIoU=0.75:是更加严格的标准(因为 IoU 的阈值越大,说明网络预测框与 GT 重合度越来越高 -> 目标的定位越来越准,这对网络来说是很难的)。

2.2 Across Scales

  1. APsmallmAP 针对小目标 若检测目标(GT)的像素面积小于 3 2 2 32^2 322,则将其归为小目标 ——衡量网络对于小目标的平均查准率
  2. APmediummAP 针对中目标 若检测目标(GT)的像素面积在 [ 3 2 2 , 9 6 2 ] [32^2, 96^2] [322,962] 之间,则将其归为中目标 ——衡量网络对于中等目标的平均查准率
  3. APlargemAP 针对大目标 若检测目标(GT)的像素面积大于 9 6 2 96^2 962,则将其归为大目标 ——衡量网络对于大目标的平均查准率

通过这三个指标可以看出该目标检测网络对于不同尺度目标的检测效果。如果我们的任务需要检测的目标都是较小的,我们应该更加关注与 A P s m a l l \mathrm{AP^{small}} APsmall 参数而不是 A P l a r g e \mathrm{AP^{large}} APlarge

2.3 Average Recall (AR)

对于目标检测网络,在代码部分会限制每张图片最终预测框的数量,这里的 max 就是这个数量。如 max=100,即每张图片最终预测 100 个预测框。而这里的 A R m a x = 100 \mathrm{AR^{max}=100} ARmax=100 就表示在每张图片预测框阈值为 100 的情况下,平均的查全率(Recall)是多少。

  1. A R m a x = 1 \mathrm{AR^{max}=1} ARmax=1:在每张图片预测框数量阈值为 1 的情况下,平均的查全率(Recall)是多少
  2. A R m a x = 10 \mathrm{AR^{max}=10} ARmax=10:在每张图片预测框数量阈值为 10 的情况下,平均的查全率(Recall)是多少
  3. A R m a x = 100 \mathrm{AR^{max}=100} ARmax=100:在每张图片预测框数量阈值为 100 的情况下,平均的查全率(Recall)是多少

从上图可以看到, A R m a x = 100 = 64 % \mathrm{AR^{max}=100}=64\% ARmax=100=64% A R m a x = 10 = 63.3 % \mathrm{AR^{max}=10}=63.3\% ARmax=10=63.3% A R m a x = 1 = 45.2 % \mathrm{AR^{max}=1}=45.2\% ARmax=1=45.2%。这说明 max 取 100 和取 10 相差不大,进一步说明了,模型训练时使用的数据集每张图片中目标(GT)的数目并不是很多,基本上在 10 左右;而当预测框数量限制在 1 时,它的 AR 仅为 45.2%,说明每张图片的目标个数一般是 >1 的。

2.4 AR Across Scales

与 AP、AP across scales 类似,AR across scales 表示对应不同目标尺度的 AR

  1. A R s m a l l \mathrm{AR^{small}} ARsmallAR 针对小目标 若检测目标(GT)的像素面积小于 3 2 2 32^2 322,则将其归为小目标 ——衡量网络对于小目标的平均查全率(Recall)
  2. A R m e d i u m \mathrm{AR^{medium}} ARmediumAR 针对中目标 若检测目标(GT)的像素面积在 [ 3 2 2 , 9 6 2 ] [32^2, 96^2] [322,962] 之间,则将其归为中目标 ——衡量网络对于中等目标的平均查全率(Recall)
  3. A R l a r g e \mathrm{AR^{large}} ARlargeAR 针对大目标 若检测目标(GT)的像素面积大于 9 6 2 96^2 962,则将其归为大目标 ——衡量网络对于大目标的平均查全率(Recall)

3. 各种指标的选择 —— 基于不同的任务

不同的任务需要使用不同的指标。

3.1 mAP

  • 于 PASCAL VOC 的 mAP 来说, A P I o U = 0.50 \mathrm{AP^{IoU}=0.50} APIoU=0.50 是要看的,因为它是 PASCAL VOC 的主要评价指标。
  • 对于 MS COCO 数据集来说, A P \mathrm{AP} AP(第一行,10 个 mAP 的平均)是要看的,因为它是 MS COCO 的主要评价指标。
  • 如果我们对 目标框定位精度要求较高 的话,我们可以关注 A P I o U = 0.75 \mathrm{AP^{IoU}=0.75} APIoU=0.75
  • 如果我们对 小目标检测要求比较高 的话,我们可以关注 A P s m a l l \mathrm{AP^{small}} APsmall,通过这个值可以了解网络对于小目标检测的平均查准率(整体情况)
  • 如果我们对 中目标检测要求比较高 的话,我们可以关注 A P m e d i u m \mathrm{AP^{medium}} APmedium
  • 如果我们对 大目标检测要求比较高 的话,我们可以关注 A P l a r g e \mathrm{AP^{large}} APlarge

3.2 AR

主要关注下面两个指标:

  1. A R m a x = 10 \mathrm{AR^{max}=10} ARmax=10
  2. A R m a x = 100 \mathrm{AR^{max}=100} ARmax=100

如果它俩 AR(平均查全率)相差很小的话, 可以减少网络预测框的个数,从而提高目标检测的效率。

参考

  1. 目标检测mAP计算以及coco评价标准
  2. COCO数据集介绍

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

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

相关文章

【23真题】招600+,太火爆!题目略难!快来挑战!

今天分享的是23年重庆邮电大学801的信号与系统试题及解析。 本套试难度分析&#xff1a;22年重庆邮电大学801考研真题我也发布过&#xff0c;如有需要戳这里自取&#xff01;本套试题内容难度中等偏上&#xff0c;没有选择计算题&#xff0c;涉及的知识点较多&#xff0c;题量…

干洗店软件,洗鞋店软件小程序,洗衣收银系统,洗衣工厂系统;

洗衣洗鞋店软件功能介绍: 预约上门收衣智能提醒&#xff0b;员工手机抢单&#xff0b;地图导航&#xff0b;拍照同步上传 智能通知会员&#xff0c;消费通知&#xff0b;取衣通知&#xff0b;衣物到期提醒&#xff0b;消费提醒&#xff0b;取衣提醒 快速完成订单&#xff0c…

esp32-S3 + visual studio code 开发环境搭建

一、首先在下面链接网页中下载esp-idf v5.1.1离线安装包 &#xff0c;并安装到指定位置。dl.espressif.cn/dl/esp-idf/https://dl.espressif.cn/dl/esp-idf/ 安装过程中会提示需要长路径支持&#xff0c;所以windows系统需要开启长路径使能 Step 1&#xff1a; 打开运行&…

Jenkins部署失败:no space left on device

Jenkins部署到最后一步时报错&#xff1a;no space left on device&#xff0c;没有可用的空间使用了。 查看磁盘空间使用情况&#xff1a; df -h发现/home/data路径空间已经使用100%。 排查此路径下存在哪些大文件。 //查看系统中文件的使用情况 df -h -T //查看当前目录下各…

众和策略可靠吗?中国资产,一夜狂飙!

可靠 当地时间10月24日&#xff0c;美股三大股指收高&#xff0c;其间道指涨0.62%&#xff0c;接连四个生意日下跌之后反弹&#xff0c;标普指数涨0.73%&#xff0c;纳斯达克指数涨0.93%。 10年期美国国债收益率小幅下滑。可口可乐等公司的财报表现弱小。美10月企业活动加速&…

Dynamics 365 重写自带按钮

必备工具&#xff1a;Ribbon Workbench 步骤&#xff1a; 1、查看默认按钮使用的方法名称 右键按钮选择自定义命令(Customise Command)&#xff0c;然后查看command使用的命令 2、在前台chrome浏览器中搜索对应的命令&#xff0c;查看命令细节 3、基于命令细节新建command&am…

c语言进制的转换16进制转换2进制

c语言进制的转换16进制转换2进制 c语言的进制的转换 c语言进制的转换16进制转换2进制一、16进制的介绍二、八四二一法则三、16进制转换2进制 一、16进制的介绍 十六进制&#xff1a; 十六进制逢十六进一&#xff0c;所有的数组是0到9和A到F组成&#xff0c;其中A代表10&#x…

当我们说“架构”的时候,我们在说什么?---解读《ISO/IEC/IEEE 42010》国际标准

当我们说“架构”的时候&#xff0c;你想到的是什么&#xff1f; 程序员听到“架构”的时候&#xff0c;想到的是SSH、SSM三层架构&#xff0c;或者是SOA架构&#xff0c;或者是微服务架构等。 人力资源专业人员听到架构的时候想到可能是企业组织架构。 几乎每个行业专业都会…

[Unity]给场景中的3D字体TextMesh增加描边方案二

如图所示仅支持图片内的/*数字 下面是资源

8.(vue3.x+vite)组件间通信方式之window挂实例

前端技术社区总目录(订阅之前请先查看该博客) 效果预览 父组件代码 <template><div><div>{{message }}</div><Child

66 跳跃游戏

跳跃游戏 题解1 贪心题解2 DP&#xff08;超时, 但思路应该对&#xff09; 给你一个非负整数数组 nums&#xff0c;你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 …

打出「智驾之王」,小鹏1024科技日为什么这么敢?

作者 | 张祥威 编辑 | 德新 今年小鹏1024科技日&#xff0c;硬核的点很多&#xff0c;比如&#xff1a; 新一代XNet 2.0感知架构、下一代智能座舱系统天玑、分体式飞行汽车等等。 最硬核的&#xff0c;是小鹏的下一代智能驾驶整体能力。以及何小鹏再次明确&#xff0c;要兑…

导致爬虫无法使用的原因有哪些?

随着互联网的普及和发展&#xff0c;爬虫技术也越来越多地被应用到各个领域。然而&#xff0c;在实际使用中&#xff0c;爬虫可能会遇到各种问题导致无法正常工作。本文将探讨导致爬虫无法使用的原因&#xff0c;并给出相应的解决方法。 一、目标网站反爬虫机制 许多网站为了…

ASP.NET Core3.1 API 创建(Swagger配置、数据库连接Sql Server)、开发、部署

文章目录 创建项目点击Nuget安装包删除原有controllers编辑新建controll、添加注释Startup 注册Swagger服务使用swagger中间件配置XML注释更改启动端口 launchsettings.json在startup.cs跨域处理运行 数据库设计与连接安装库新建类继承框架根据数据库表设计对应设计类在DataCon…

AIGC时代 浪潮信息积极推动存储产品创新

近几年&#xff0c;AIGC的兴起&#xff0c;进一步驱动了全闪、混闪等存储产品的创新&#xff0c;也为市场带来了新的机遇&#xff0c;对于厂家而言&#xff0c;也需要升级存储产品的容量、性能及功能&#xff0c;方能满足场景诉求。对此&#xff0c;浪潮信息面向AIGC应用场景打…

8.2 矢量图层点要素单一符号使用一

文章目录 前言单一符号&#xff08;Single symbol&#xff09;渲染简单标记(Simple Marker)QGis代码实现 SVG标记&#xff08;SVG marker&#xff09;QGis代码实现 总结 前言 上一篇教程对矢量图层符号化做了一个整体介绍&#xff0c;并以点图层为例介绍了可以使用的渲染器&am…

解决org.quartz.SchedulerException: Job threw an unhandled exception.

文章目录 1. 复现错误2. 分析错误3. 解决问题3.1 解决方法一3.2 解决方法二 4. 分析spring中的jdk和cglib的动态代理4.1 动态代理对比4.2 原理区别4.3 性能区别4.4 各自局限4.5 静态代理和动态的本质区别 1. 复现错误 今天在执行quartz定时任务时&#xff0c;报出如下错误&…

使用element-UI Cascader组件,实现第一级单选选,第二级,第三级,子级可以多选

最近开发过程中&#xff0c;遇到需求测一个需求&#xff0c;就是级联选择器&#xff0c;需要多选&#xff1b;但是第一级是单选&#xff1b; 既要单选又要复选。参照网上内容&#xff0c;自己整理了一下功能实现&#xff1b; 如下图&#xff1a; 思路&#xff1a;1.把第一层的…

让酒酿得更明白,国台智能酿造标准体系重磅发布

执笔 | 洪大大 编辑 | 扬 灵 重阳下沙&#xff0c;是酱酒开启新一轮酿造周期的标志&#xff0c;是茅台镇千百年来恪守的传统文化&#xff0c;也是国台一年一度的重要时刻。 10月23日&#xff0c;智能酿造高质量发展论坛暨国台2024年度质量誓师大会隆重举办&#xff0c;此次…

orb-slam3编译手册(Ubuntu20.04)

orb-slam3编译手册&#xff08;Ubuntu20.04&#xff09; 一、环境要求1.安装git2.安装g3.安装CMake4.安装vi编辑器 二、源代码下载三、依赖库下载1.Eigen安装2.Pangolin安装3.opencv安装4.安装Python & libssl-dev5.安装boost库 三、安装orb-slam3四、数据集下载及测试 写在…