【深度学习】SMILEtrack: SiMIlarity LEarning for Multiple Object Tracking,论文

论文:https://arxiv.org/abs/2211.08824
代码:https://github.com/WWangYuHsiang/SMILEtrack

文章目录

  • Abstract
  • Introduction
  • Related Work
    • Tracking-by-Detection
      • Detection method
      • Data association method
    • Tracking-by-Attention
  • Methodology
    • 架构概述
    • 外观相似性学习模块 (SLM)
      • 图像切片注意力(ISA)块
      • Image Slicing
      • The Q-K-V attention block
    • Similarity Matching Cascade (SMC) for Target Tracking
  • Experimental Results
    • Dataset
    • MOT Evaluation Metrics
    • Implementation Details
    • Evaluation Results
    • Ablation study
  • Conclusion

Abstract

多目标跟踪(MOT)在计算机视觉领域得到广泛研究,具有许多应用。基于检测的跟踪(TBD)是一种流行的多目标跟踪范式。TBD包括第一步的目标检测以及后续的数据关联、轨迹生成和更新。我们提出了一种受Siamese网络启发的相似性学习模块(SLM),用于提取重要的目标外观特征,并采用一种有效地结合目标运动和外观特征的方法。

这种设计加强了用于数据关联的目标运动和外观特征建模。我们为我们的SMILEtrack跟踪器的数据关联设计了一个相似性匹配级联(SMC)。SMILEtrack在MOTChallenge和MOT17测试集上分别达到了81.06 MOTA和80.5 IDF1的指标。

Introduction

多目标跟踪(MOT)是计算机视觉中的热门话题,在视频理解中起着至关重要的作用。MOT的目标是估计每个目标的轨迹,并尝试将它们与视频序列中的每一帧关联起来。随着MOT的成功,它可以在社会中广泛应用,例如车辆计算、计算机交互 [25] [12]、智能视频分析和自动驾驶。近年来,基于Tracking-By-Detection (TBD)范式方法的主导和高效的MOT策略 [1] [27] [26] 取得了显著进展。该方法根据检测结果进行跟踪,将问题分解为两个步骤:检测和关联。在检测步骤中,我们需要在单个视频帧中定位感兴趣的对象,在关联步骤中将每个对象与现有轨迹关联或创建新的轨迹。然而,由于模糊的目标、遮挡和复杂的场景,MOT仍面临挑战。

为了完成跟踪系统,解决方案模型可以分为分离检测和嵌入模型(SDE)和联合检测和嵌入模型(JDE)。我们的方法属于SDE;其架构如图1所示。SDE至少需要两个功能组件:一个检测器和一个重新识别模型。

首先,检测器通过边界框在单个帧中定位所有对象。然后,重新识别模型将从每个边界框中提取对象的特征以生成嵌入。最后,将每个边界框与现有轨迹中的一个关联或创建新的轨迹。然而,SDE方法无法实现实时推理速度,因为使用两个单独的模型来检测对象和提取嵌入时需要多次计算。检测器和重新识别模型之间的特征不能共享,SDE方法需要在推理时将重新识别模型应用于每个边界框以提取嵌入。面对这个问题,一个可行的解决方案是集成检测器和重新识别模型。JDE类别 [26] [32] 将检测器和嵌入模型合并到一个单次深度网络中。它可以通过一次推理同时输出检测结果和检测到的边界框的相应外观嵌入。

尽管JDE的成功使MOT任务取得了很高的准确性结果,但我们认为JDE仍然存在一些问题。例如,不同组件之间的特征冲突。我们认为,用于目标检测任务和目标重新识别任务的特征是完全不同的。目标检测任务需要高级特征来识别对象所属的类别,但目标重新识别任务的特征需要更多低级特征来区分同一类别中的不同实例。因此,JDE中的共享特征模型可能降低每个任务的性能。然而,正如我们上面提到的JDE的缺点,SDE可以克服这些缺点,并在MOT领域具有极高的潜力。

最近,基于注意力机制的Transformer [24]被引入到计算机视觉领域,并取得了出色的结果。在多目标跟踪(MOT)问题中,大多数基于Transformer的方法采用CNN + Transformer的框架。这意味着模型首先通过CNN架构提取输入图像特征,然后将这些特征图作为输入传递给Transformer。与基于检测的跟踪方法不同,基于Transformer的方法通过将检测和数据关联部分合并在一起来实现跟踪结果。它可以直接通过单个模型输出轨迹的身份和位置,而无需使用任何额外的轨迹匹配技巧。尽管基于Transformer的方法在特征关注方面具有出色的结果,但在将整个图像输入到Transformer架构时,推理速度仍然存在一定限制。

为了生成高质量的检测和物体外观,我们选择了SDE作为TBD模型,以解决JDE中的特征冲突问题。然而,我们认为大多数特征描述符无法清楚地区分不同对象之间的外观特征。

为了解决这个问题,我们提出了SMILEtrack,它结合了一个检测器和一个类似孪生网络的相似性学习模块(SLM)。受到视觉Transformer [6]的启发,我们创建了一个图像切片注意力块(ISA),它在SLM中使用了注意力机制和图像切片机制。此外,我们创建了一个相似性匹配级联(SMC),用于匹配视频中每帧之间的对象。我们跟踪系统的大致流程如下:首先,我们通过一个称为PRB的检测器预测目标边界框的位置。在获得物体边界框之后,我们通过SMC将边界框与轨迹关联起来。

我们的工作的贡献总结如下:

我们引入了一个名为SMILEtrack的分离检测和嵌入模型,并使用了类似孪生网络的相似性学习模块(SLM),用于学习每个对象之间的相似性。

对于SLM中的特征提取部分,我们构建了一个图像切片注意力块(ISA),它使用了切片方法和Transformer的注意力机制来学习物体的特征。

为了完成轨迹匹配部分,我们构建了一个相似性匹配级联(SMC),用于关联每个帧中的边界框。

在这里插入图片描述

Related Work

Tracking-by-Detection

基于TBD的算法在MOT问题中取得了相当大的成功,并成为MOT框架中最受欢迎的方法。TBD方法的主要任务是关联视频中每个帧之间的检测结果,以完成MOT系统。整个工作可以大致分为两部分。

Detection method

Faster R-CNN [18]是一种两阶段检测器,它使用VGG-16作为主干网络,通过区域建议网络(RPN)来检测边界框。SSD [11]使用了锚点机制来替代RPN,在每个特征图上设置不同大小的锚点以提高检测质量。YOLO系列[15] [16] [17] [2]是一种一阶段方法,它使用特征金字塔网络(FPN)来解决目标检测中的多尺度问题,并在速度和准确性方面表现出色。虽然基于锚点的检测器可以达到出色的性能,但仍然存在一些由锚点引起的问题。例如,基于锚点的检测器很难根据具体情况调整一些锚点的超参数,并且在训练过程中计算锚点的交并比(IOU)需要很多时间和内存。为了克服这些问题,无锚点检测器是另一种选择。CornerNet [9]是一种无锚点方法,它利用热图和角点池化来预测目标的左上角和右下角,然后匹配这两个点来生成物体的边界框。与CornerNet相比,CenterNet [34]通过中心池化和级联角点池化直接预测物体的中心点。YOLOX将YOLO系列从基于锚点的检测器转变为无锚点的检测器,并使用解耦头部来提高检测的准确性。

Data association method

在多目标跟踪(MOT)系统中,需要克服许多挑战,如物体遮挡、拥挤场景和动态模糊。

因此,数据关联方法需要仔细处理。SORT [1]首先使用卡尔曼滤波器根据当前帧的物体位置预测物体的未来位置,然后通过计算检测结果和已有目标的预测边界框之间的IOU距离生成分配成本矩阵。最后,使用匈牙利算法匹配分配成本矩阵。虽然SORT实现了高速推理时间,但由于它不考虑物体外观信息,无法处理长时间遮挡问题或快速移动的物体。

为了解决遮挡问题,Deep SORT [27]应用预训练的CNN模型提取边界框外观特征,然后使用外观特征计算轨迹和检测结果之间的相似度。最后使用匈牙利算法完成分配。

这种方式可以有效减少ID切换次数,但是Deep SORT中的检测模型和特征提取模型是分开的,导致推理速度远非实时。针对这个问题,JDE [26]将检测器和嵌入模型结合在一个一次性网络中,它可以实时运行,与两阶段方法相比准确度也较高。FairMOT [32]展示了锚点引起的不公平问题,它采用了在CenterNet基础上构建的无锚点方法,并在多个数据集(如MOT17 [14])中显著提高了性能。然而,我们认为JDE模型存在一些问题,例如不同组件之间的特征冲突。

与此同时,一些MOT跟踪方法 [21] [22]丢弃了物体外观特征,仅通过应用高性能检测器和运动信息完成跟踪系统。尽管这些方法在MOTChallenge基准测试中可以达到最先进的性能和高推理速度,但我们认为这部分是由于MOTChallenge基准数据集中运动模式的简单性所导致。

此外,不考虑物体外观特征可能导致物体跟踪的准确性在更拥挤的场景中缺乏鲁棒性。

Tracking-by-Attention

借助Transformer在物体检测方面的成功,Trackformer [13]将MOT视为一个集合预测问题,它基于DETR,并添加了对象查询和自回归跟踪查询来进行物体跟踪。

TransTrack [23]基于可变形DETR构建,有两个解码器,一个用于当前帧的检测,另一个用于先前帧的检测。它通过匹配两个解码器之间的检测框来解决跟踪问题。TransCenter [29]是一种基于点的跟踪方法,提出了一个密集的查询特征图,利用变换器对输入图像进行多尺度的MOT跟踪。

Methodology

在本节中,我们介绍了SMILEtrack模型的详细信息,包括相似性学习模块(SLM)和用于每帧框关联的相似性匹配级联(SMC)。

架构概述

SMILEtrack的整体架构如图2所示。我们的框架可以分为以下几个步骤:(1) 目标位置检测:为了定位目标对象的位置,我们采用PRB作为检测器。(2) 数据关联:通过关联相邻帧中的每个对象来解决MOT问题。在由PRB生成的检测结果之后,我们计算每个帧之间的运动亲和矩阵和外观亲和矩阵,然后使用这两个矩阵组合成的成本矩阵,通过匈牙利算法解决线性分配问题。

在这里插入图片描述

外观相似性学习模块 (SLM)

为了实现稳健的跟踪质量,目标的外观信息是不可或缺的。一些跟踪方法已经考虑了目标的外观信息。例如,DeepSORT应用一个简单的CNN构建的深度外观描述符来提取目标的外观特征。虽然外观描述符可以提取有用的外观特征,但我们发现它无法清楚地区分不同对象之间的外观特征。为了提取更具辨别性的外观特征,我们提出了一个类似孪生网络架构的相似性学习模块SLM。SLM的详细信息如图3所示。

在这里插入图片描述

对于SLM的输入,我们同时将两个不同的图像输入到SLM中。它们都将通过§ 3.2.1中的ISA特征提取器,该提取器在两个图像之间共享参数。ISA的架构稍后将进行更详细的介绍。在提取输入图像的特征之后,我们使用一个全连接层来整合这些特征。为了学习一个能够区分各种对象的稳健外观特征,我们应用余弦相似度距离来计算两个图像之间的相似度。

相同对象之间的相似度得分应尽可能高;否则,不同对象之间的相似度得分应接近零。

图像切片注意力(ISA)块

为了生成可靠的外观特征,优秀的特征提取器是必不可少的。虽然Transformer在特征增强方面表现出色,但我们认为将完整的编码器-解码器架构添加到跟踪系统中对模型计算和参数大小来说过于繁重。受到VIT的启发,我们构建了ISA,它应用图像切片技术和注意机制进行特征提取。ISA的详细架构如图4所示。

在这里插入图片描述

Image Slicing

在这里插入图片描述

The Q-K-V attention block

标准的Transformer擅长处理序列之间的长期复杂依赖关系,例如自然语言处理。其中最重要的部分是Transformer中的注意力块。Transformer通过将查询(query)打包成矩阵Q,键(keys)和值(values)打包成矩阵K和V来计算注意力函数。注意力块的计算可以表示为:

Attention(Q, K, V) = softmax(QK^T / sqrt(d_k))V

其中,(d_k) 是每个查询和键的维度,通过对该计算进行缩放可以确保梯度更稳定。

在这里插入图片描述
在这里插入图片描述

Similarity Matching Cascade (SMC) for Target Tracking

物体关联部分对于基于检测的跟踪范式方法非常重要。选择不同的匹配策略将导致完全不同的结果。ByteTrack是一种简单而有效的关联方法。

它保留了每个检测框并将其分为高置信度和低置信度两部分,然后通过IOU距离进行关联。虽然ByteTrack在MOT中达到了最先进的性能,但我们认为这部分是因为MOTChallenge基准数据集中运动模式的简单性。如果只使用关联部分的IOU距离信息,它仍然存在一些问题,例如当目标靠近时会出现id切换问题。为了解决这个问题,我们设计了一种变体关联方法,将ByteTrack和我们的SLM优势相结合。我们方法的匹配流程如图5所示,关联方法的伪代码如补充材料所示。

首先,我们确定当前帧中的所有检测框deti,并按照阈值thres将它们分为Dhigh集合和Dlow集合。对于thres值的设置,我们根据deti中检测d的得分从低到高重新排列,然后计算deti中前一半d的平均得分,并将平均得分设置为thres。在我们得到阈值thres之后,我们将得分高于thres的检测框放入Dhigh,将得分在thres和0.1之间的检测框放入Dlow。我们将得分低于0.1的检测框视为背景或噪声。在分离了检测框之后,我们将丢失的物体列表LL与跟踪列表TL合并,并使用卡尔曼滤波器预测TL中每个物体在当前帧的位置。关联部分主要分为两个阶段。

在这里插入图片描述

(第一阶段)在第一个关联阶段,我们首先关注Dhigh集合。我们计算Dhigh和TL的运动矩阵Mm和外观相似性矩阵Ma。对于运动矩阵Mm,我们计算TL和Dhigh之间的IOU距离。外观相似性矩阵Ma通过SLM计算。然后我们通过我们提出的Gate函数将矩阵Mm和Ma融合成代价矩阵Chigh:

在这里插入图片描述

(第二阶段)在第二个匹配阶段,我们匹配Dlow和TLRemain。Dlow和TLRemain的运动矩阵Mm的计算方式与第一个匹配阶段相同。

对于外观相似性矩阵Ma,我们建立了一个多模板SLM来学习低得分检测和轨迹之间的相似性。在处理低得分检测时,直接使用上一帧中的轨迹特征来计算相似性可能会得到不可靠的得分,因为低得分检测对象的特征与由一些遮挡引起的轨迹不同。

为了解决这个问题,我们应用了一个特征库机制,用于保存不同帧中轨迹的各种特征。第i个轨迹的特征库Fi与低得分第j个检测之间的相似度得分计算如下:

在这里插入图片描述

在得到矩阵Mm和Ma之后,我们将它们融合成代价矩阵Clow,方法与第一个匹配阶段相同,并使用匈牙利算法完成线性分配。Dlow中未匹配的检测和T LRRemain中未匹配的轨迹被放入DRRemain和T LRRemain。

完成物体关联阶段后,我们设置阈值H来初始化新的轨迹。DRemain中得分高于H的未匹配检测可以初始化一个新的轨迹,并将T LRRemain中的未匹配轨迹移动到丢失物体列表LL中。我们将DRRemain中的未匹配检测视为背景。请注意,只有当LL中的轨迹存在超过30帧时,我们才删除LL中的轨迹。

Experimental Results

Dataset

我们在MOTChallenge[14]基准测试集上进行实验。具体而言,我们按照“私有检测”协议对MOT17[14]的测试集进行评估。MOT17是MOTChallenge中最受欢迎的数据集。

它包含了14个视频序列(7个用于训练,另外7个用于测试),其中既有移动摄像头,也有静态摄像头。

其他常见的MOT数据集包括ETH[19]、CalTech[5]、MOT16[14]、CityPerson[31]、CrowdHuman[20]、ETHZ[7]、CUHK-SYSU[28]和PRW[33]。

ETH、MOT16和CityPerson数据集仅提供用于训练检测模型的边界框注释;因此,在训练re-ID和MOT模型的情况下,还需要额外的数据集。CalTech、PRW和CUHKSYSU数据集提供了用于训练re-ID模型的边界框位置和身份注释。

我们将SMILEtrack训练在MOT17训练集、CrowdHuman、ETHZ和Cityperson的组合上。针对消融研究,我们使用训练集的前半部分进行模型训练,使用后半部分进行验证。从MOT17视频序列中裁剪行人图像用于训练我们的SLM re-ID模型。

MOT Evaluation Metrics

标准的MOT评估指标包括多目标跟踪准确度(MOTA)、多目标跟踪精度(MOTP)、身份F1得分(IDF1)、主要跟踪(MT)、主要丢失(ML)、假阳性率(FP)、假阴性率(FN)、ID准确率(IDP)和ID切换次数(IDs)。其中,MOTA和IDF1是最常用的两个指标。MOTA和IDF1的公式如下所示:

在这里插入图片描述

MOTA是由FP、FN和IDs的组合来反映检测性能。相比之下,IDF1更注重身份匹配能力和数据关联性能。

MOTA综合考虑了假阳性(FP)、假阴性(FN)和ID切换次数(IDs),以反映出检测的整体表现。

而IDF1则更加关注身份匹配能力和数据关联的性能,它通过计算ID准确率(IDP)并与ID切换次数(IDs)和真阳性数(FPs)进行综合来评估。

Implementation Details

我们使用 COCO 数据集 [10] 对 PRB [4] 进行训练以进行权重初始化;然后在 MOT16 和 MOT17 数据集上对模型进行微调,以提高人体检测性能。在训练过程中,我们采用了多种数据增强方法,包括 Mosaic [2] 和 Mixup [30]。

在 MOT17 数据集的评估中,我们将 PRB 在 MOT17 训练集、CrowdHuman、ETHZ 和 Cityperson 的组合上进行了 100 个 epoch 的训练。输入图像的尺寸为1440 × 800。我们选择了 SGD 优化器,并将初始学习率设为 10^-3,使用余弦退火调度。

在训练 SLM 时,我们使用了从 MOT17 训练集中裁剪的自有数据集进行训练。由于从 MOT17 中裁剪出的每个行人大小不同,我们将其调整为固定尺寸 224 × 80。我们选择了 SGD 优化器,学习率初始设为 6.5 × 10^-3,使用余弦退火调度。我们使用 MSE [3] 损失函数进行 150 个 epoch 的训练。

对于 SMC 中我们提出的 Gate 函数,我们将阈值 ε 设置为 0.7 以筛选成本矩阵。在线性分配阶段,我们会拒绝那些检测和轨迹之间成本矩阵高于 0.2 的匹配。

对于初始的新对象,我们将阈值 H 设置为 0.7 以筛选检测结果。在用于每个对象的多模板 SLM 中,我们设置了能够存储 50 帧外观的特征库。此外,我们将特征库分为两个类别,即高分模板和低分模板。对于那些具有高置信度分数的检测结果,我们将其外观特征存储在高分模板中;否则,我们将低置信度分数检测结果的外观特征放入低分模板中。

Evaluation Results

表1显示了使用MOTChallenge的“private detector”协议,在MOT17测试集上,SMILEtrack与最先进的跟踪器进行的评估结果。所有结果均使用官方MOTChallenge评估网站生成。SMILEtrack取得了出色的结果,MOTA为80.3,IDF1为77.3。具体而言,我们使用消融研究中的最佳结果作为MOT17评估的模型设置。我们将SLM相似性特征维度设置为256以追踪目标。我们使用IOU和外观信息计算两个SMC匹配阶段的相似性矩阵。Gate函数用于融合IOU和外观信息,多模板SLM用于解决低检测分数的问题。

在这里插入图片描述
在这里插入图片描述

Ablation study

Conclusion

本文提出了SMILEtrack,一种类似孪生网络结构的架构,能够有效地学习用于单摄像头多目标跟踪的物体外观。我们开发了一种相似性匹配级联(SMC)来进行每帧边界框的关联。实验证明,我们的SMILEtrack在MOT17上取得了较高的MOTA、IDF1和IDs性能得分。

未来的工作。由于SMILEtrack是一种分离检测和嵌入(SDE)方法,其运行速度较慢,比不上联合检测和嵌入(JDE)方法。因此,我们将在未来研究中探索能够改善MOT时间与准确性之间平衡的方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8.4 作业

1.思维导图 2.判断家目录下,普通文件的个数和目录文件的个数 #!/bin/bash count10 count20 cd ~ for i in $(ls) doif [ -f "$i" ]thencount1$((count11))elif [ -d "$i" ]then count2$((count21))fi done echo $count1 echo $count2 3.输入一…

WEB集群——tomcat

1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8,配置服务启动脚本,部署jpress应用。 一、简述静态网页和动态网页的区别 (1)静态网页 1.什么是静态网页 请求响应信息,发…

高级IO:五种IO模型

五种IO模型 阻塞IO 阻塞IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方式. 非阻塞IO 如果内核还未将数据准备好, 系统调用仍然会直接返回, 并且返回EAGAIN/EWOULDBLOCK错误码. 非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符, 这…

学习gRPC (三)

测试gRPC例子 编写proto文件实现服务端代码实现客户端代码 通过gRPC 已经编译并且安装好之后,就可以在源码目录下找到example 文件夹下来试用gRPC 提供的例子。 在这里我使用VS2022来打开仓库目录下example/cpp/helloworld目录 编写proto文件 下面是我改写的exa…

【前端实习生备战秋招】—HTML 和 CSS面试题总结(二)

【前端实习生备战秋招】—HTML 和 CSS面试题总结&#xff08;二&#xff09; 1.有哪些方式可以对一个 DOM 设置它的 CSS 样式&#xff1f; 外部样式表&#xff0c;引入一个外部 css 文件内部样式表&#xff0c;将 css 代码放在 <head> 标签内部内联样式&#xff0c;将 c…

PROFINET转TCP/IP网关profinet网线接头接法

大家好&#xff0c;今天要和大家分享一款自主研发的通讯网关&#xff0c;捷米JM-PN-TCPIP。这款网关可是集多种功能于一身&#xff0c;PROFINET从站功能&#xff0c;让它在通讯领域独领风骚。想知道这款网关如何实现PROFINET和TCP/IP网络的连接吗&#xff1f;一起来看看吧&…

【移动机器人运动规划】02 —— 基于采样的规划算法

文章目录 前言相关代码整理:相关文章&#xff1a; 基本概念概率路线图&#xff08;Probabilistic Road Map&#xff09;基本流程预处理阶段查询阶段 优缺点&#xff08;pros&cons&#xff09;一些改进算法Lazy collision-checking Rapidly-exploring Random Tree算法伪代码…

构建稳健的PostgreSQL数据库:备份、恢复与灾难恢复策略

在当今数字化时代&#xff0c;数据成为企业最宝贵的资产之一。而数据库是存储、管理和保护这些数据的核心。PostgreSQL&#xff0c;作为一个强大的开源关系型数据库管理系统&#xff0c;被广泛用于各种企业和应用场景。然而&#xff0c;即使使用了最强大的数据库系统&#xff0…

Unity Shader:常用的C#与shader交互的方法

俗话说久病成医&#xff0c;虽然不是专业技术美术&#xff0c;但代码写久了自然会积累一些常用的shader交互方法。零零散散的&#xff0c;总结如下&#xff1a; 1&#xff0c;改变UGUI的材质球属性 有时候我们需要改变ui的一些属性&#xff0c;从而实现想要的效果。通常UGUI上…

Kafka的配置和使用

目录 1.服务器用docker安装kafka 2.springboot集成kafka实现生产者和消费者 1.服务器用docker安装kafka ①、安装docker&#xff08;docker类似于linux的软件商店&#xff0c;下载所有应用都能从docker去下载&#xff09; a、自动安装 curl -fsSL https://get.docker.com | b…

有哪些好用的AI绘画网站?

随着人工智能技术的发展&#xff0c;人工智能绘画工具逐渐成为数字艺术领域的热门话题。人工智能绘画工具是利用深度学习和其他技术来模拟绘画过程和效果的工具&#xff0c;可以帮助用户快速创作高质量的艺术作品。除了Midjourney、除了openai等流行的AI绘画工具外&#xff0c;…

使用WiFi测量仪进行机器人定位的粒子过滤器研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

K3s vs K8s:轻量级对决 - 探索替代方案

在当今云原生应用的领域中&#xff0c;Kubernetes&#xff08;简称K8s&#xff09;已经成为了无可争议的领导者。然而&#xff0c;随着应用规模的不断增长&#xff0c;一些开发者和运维人员开始感受到了K8s的重量级特性所带来的挑战。为了解决这一问题&#xff0c;一个名为K3s的…

python 常见数据类型和方法

不可变数据类型 不支持直接增删改 只能查 str 字符串 int 整型 bool 布尔值 None None型特殊常量 tuple 元组(,,,)回到顶部 可变数据类型&#xff0c;支持增删改查 list 列表[,,,] dic 字典{"":"","": ,} set 集合("",""…

「Qt」常用事件介绍

&#x1f514; 在开始本文的学习之前&#xff0c;笔者希望读者已经阅读过《「Qt」事件概念》这篇文章了。本文会在上篇文章的基础上&#xff0c;进一步介绍 Qt 中一些比较常用的事件。 0、引言 当我们想要让控件收到某个事件时做一些操作&#xff0c;通常都需要重写相应的事件处…

Python---Numpy

文章目录 1.Numpy是什么&#xff1f;2.ndarray2.1 什么是ndarray?2.2 ndarray的属性2.3 ndarray的类型 3.Numpy基本操作3.1 生成0或1的数组3.2 从现有数组生成数组拓展&#xff1a;浅拷贝和深拷贝 3.3 生成固定范围的数组3.4 生成随机数组3.4.1 正态分布3.4.2 均匀分布 3.5 形…

5款无广告的超实用软件,建议收藏!

​ 大家好,我又来了,今天向大家推荐几款软件,它们有个共同的特点,就是无广告、超级实用,大家看完之后,可以自己去搜索下载试用。 1.重复文件清理——Duplicate Cleaner ​ Duplicate Cleaner是一款用于找出硬盘中重复文件并删除的工具。它可以通过内容或文件名查找重复文档、…

多语言gRPC开发入门与避坑指南

目录 gRPC相关介绍 什么是gPRC gPRC的优点 gPRC的缺点 gPRC定位 协议缓冲区&#xff08;Protocol Buffers&#xff09; 四种调用方式 gRPC开发三大步骤 第一步&#xff1a;定义和编写proto服务文件 第二步&#xff1a;proto文件转化为gRPC代码 第三步&#xff1a;调…

IDEA中maven项目失效,pom.xml文件橙色/橘色

IDEA中maven项目失效&#xff0c;pom.xml文件橙色/橘色 IDEA中Maven项目失效 IDEA中创建的maven项目中的文件夹都变成普通格式&#xff0c;pom.xml变成橙色 右键点击橙色的pom.xml文件&#xff0c;选择add as maven project maven项目开始重新导入相应依赖&#xff0c;恢复…

QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 - 终篇

QT图形视图系统 - 终篇 接上一篇&#xff0c;我们需要继续完成以下的效果&#xff1b; 先上个效果图&#xff1a; 修改背景&#xff0c;使之整体适配 上一篇我们绘制了标尺&#xff0c;并且我们修改了放大缩小和对应的背景&#xff0c;整体看来&#xff0c;我们的滚动条会和…