【深度学习】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时间与准确性之间平衡的方法。

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

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

相关文章

TensorFlow项目练手(三)——基于GRU股票走势预测任务

项目介绍 项目基于GRU算法通过20天的股票序列来预测第21天的数据,有些项目也可以用LSTM算法,两者主要差别如下: LSTM算法:目前使用最多的时间序列算法,是一种特殊的RNN(循环神经网络)&#xf…

Python小白学习:超级详细的字典介绍(字典的定义、存储、修改、遍历元素和嵌套)

目录 一、字典简介1.1 创建字典1.2 访问字典中的值1.3 添加键值对1.4 修改字典中的值实例 1.5 删除键值对1.6 由多个类似对象组成的字典1.7 使用get()访问值1.8 练习题 二、遍历字典2.1 遍历所有键值对实例 2.2 遍历字典中的所有键2.3 按照特定顺序遍历字典中的所有键2.4 遍历字…

04 Ubuntu中的中文输入法的安装

在Ubuntu22.04这种版本相对较高的系统中安装中文输入法,一般推荐使用fctix5,相比于其他的输入法,这款输入法的推荐词要好得多,而且不会像ibus一样莫名其妙地失灵。 首先感谢文章《滑动验证页面》,我是根据这篇文章的教…

通用指令(汇编)

一、数据处理指令1)数学运算数据运算指令的格式数据搬移指令立即数伪指令加法指令带进位的加法指令减法指令带借位的减法指令逆向减法指令乘法指令数据运算指令的扩展 2)逻辑运算按位与指令按位或指令按位异或指令左移指令右移指令位清零指令 3&#xff…

前端实现打印1 - 使用 iframe 实现 并 分页打印

目录 打印代码对话框预览打印预览 打印代码 <!-- 打印 --> <template><el-dialogtitle"打印":visible.sync"dialogVisible"width"50%"top"7vh"append-to-bodyclose"handleClose"><div ref"print…

STM32 DHT11

DHT11 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。 使用单总线通信 该传感器包括一个电容式感湿元件和一个NTC测温元件&#xff0c;并于一个高性能8位单片机相连&#xff08;模数转换&#xff09;。 DHT11引脚说明 开漏模式下没有输出高电平的能…

Embedding入门介绍以及为什么Embedding在大语言模型中很重要

Embeddings技术简介及其历史概要 在机器学习和自然语言处理中&#xff0c;embedding是指将高维度的数据&#xff08;例如文字、图片、音频&#xff09;映射到低维度空间的过程。embedding向量通常是一个由实数构成的向量&#xff0c;它将输入的数据表示成一个连续的数值空间中…

Java版本spring cloud + spring boot企业电子招投标系统源代码 tbms

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为…

Kubernetes概述

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…

企业新片场排名如何优化

企业新片场排名如何优化 要如何去做关键SEO&#xff1f;第一个我们要做的就是做好 SEO 关键词的选词&#xff0c;一般就是会有第一个常用的选词方法&#xff0c;第一是以常用的提问词去做&#xff0c;不实像是情人节买什么礼物&#xff0c;母亲节买什么礼物&#xff0c; 618 有…

推荐前端开发者提升效率的工具

是否掌握新的技术很大程度决定着你是否被淘汰。 虽然应用程序试图将网站替代&#xff0c;但前端 Web 开发业务仍在快速变化和增长&#xff0c;前端开发人员的功能并没有消失。以下介绍一款前端开发者提升效率的工具。 目录 一、低代码工具前景 二、如何理解低代码工具 三、前端…

【怎么提高性能和解决高并发】

怎么解决高并发 解决高并发的整体流程大概是&#xff1a; 先进行性能评估、再进行性能测试、然后找到程序可以承受的临界点、最后针对出问题的地方&#xff0c;进行优化。当然硬件设置对高并发的影响也很重要&#xff0c;如果达到硬件天花板&#xff0c;那么再怎么优化程序都…

java gc分析

使用工具转换&#xff1a;https://ctbots.com/#/ 通用GC分析 jstat -gc -t pid堆内存分析 jstat -gccapacity -t pid年轻代GC分析 jstat -gcnew -t pid年轻代内存分析 jstat -gcnewcapacity -t pid老年代GC分析 jstat -gcold -t pid老年代内存分析 jstat -gcoldcapacity…

Ubuntu18.04 安装opencv 4.8.0教程(亲测可用)

1. 安装准备 安装前需要下载一些必须的依赖项。 不同版本opencv依赖会有不同&#xff0c;具体见官网opencv安装 sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-…

AI大模型之花,绽放在鸿蒙沃土

随着生成式AI日益火爆&#xff0c;大语言模型能力引发了越来越多对于智慧语音助手的期待。 我们相信&#xff0c;AI大模型能力加持下的智慧语音助手一定会很快落地&#xff0c;这个预判不仅来自对AI大模型的观察&#xff0c;更来自对鸿蒙的了解。鸿蒙一定会很快升级大模型能力&…

拥抱创新:用Kotlin开发高效Android应用

拥抱创新&#xff1a;用Kotlin开发高效Android应用 引言 在当今数字时代&#xff0c;移动应用已经成为人们生活中不可或缺的一部分。无论是社交媒体、电子商务还是健康管理&#xff0c;移动应用已经深刻地影响了我们的生活方式。随着移动设备的普及和功能的增强&#xff0c;A…

Android getDrawable()和getColor()

Android getDrawable() 1.过时代码 虽然过时&#xff0c;但是不妨碍使用 context.getResources().getDrawable(R.drawable.xxx) 2.建议代码 context.getDrawable(R.drawable.xxx) 有API限制 3.最新代码 ContextCompat.getDrawable(getContext(), R.drawable.xxx); 有A…

安达发|模具制造业对APS软件需求大幅增长

近年来&#xff0c;中国模具工业以每年15%左右的增速速度快速发展。然而&#xff0c;对于大型、精密、复杂及长寿命模具的需求增长将远超过每年15%的增幅。为应对这一挑战&#xff0c;模具制造业对APS软件的需求大幅度增长&#xff0c;助力行业提速发展。 据统计&#xff0c;中…

linuxARM裸机学习笔记(3)----主频和时钟配置实验

引言&#xff1a;本文主要学习当前linux该如何去配置时钟频率&#xff0c;这也是重中之重。 系统时钟来源&#xff1a; 32.768KHz 晶振是 I.MX6U 的 RTC 时钟源&#xff0c; 24MHz 晶振是 I.MX6U 内核 和其它外设的时钟源 1. 7路PLL时钟源【都是从24MHZ的晶振PLL而来…

一个3年Android的找工作记录

作者&#xff1a;Petterp 这是我最近 1个月 的找工作记录&#xff0c;希望这些经历对你会有所帮助。 有时机会就像一阵风&#xff0c;如果没有握住&#xff0c;那下一阵风什么时候吹来&#xff0c;往往是个运气问题。 写在开始 先说背景: 自考本&#xff0c;3年经验&#xff0…