StrongSORT——基于DeepSORT,提高多目标跟踪的准确性和鲁棒性

1、概述

1.1 DeepSORT

DeepSORT算法是在SORT基础上发展起来的一种多目标跟踪算法。SORT算法结合了目标检测器和跟踪器,其中跟踪器的核心是卡尔曼滤波和匈牙利算法

  • 卡尔曼滤波用于预测目标在下一帧的位置和状态
  • 而匈牙利算法则用于将预测状态与实际检测结果进行最佳匹配

这种方法在目标没有被遮挡或丢失时表现良好,但如果目标因为某些原因(如遮挡)在一帧中未被检测到,卡尔曼滤波的预测可能会失败,导致跟踪失败。

DeepSORT算法为了解决这个问题,引入了深度学习中的重识别技术。它不仅关注目标的运动信息,还利用目标的外观特征来增强跟踪的准确性。DeepSORT通过深度学习模型提取目标的外观特征,并将这些特征表示为低维向量。在每帧的检测和跟踪过程中,DeepSORT都会提取当前帧中目标的外观特征,并与之前存储的特征进行比较,以此来判断目标是否为同一物体。

这种方法的优势在于,即使在目标暂时从视野中消失或被遮挡的情况下,DeepSORT也能够通过外观特征的匹配来维持跟踪的连续性。外观特征的引入使得DeepSORT在处理遮挡、相似目标的分辨以及目标再出现时的身份恢复等方面表现得更加鲁棒。

1.2 StrongSORT

StrongSORT它在DeepSORT的基础上进行了一系列的改进,以提高跟踪的准确性和性能。改时以下的几个地方:

  1. BoT(Bag of Tricks): 改进了外观特征提取器,它使用深度学习技术来提取目标的视觉特征,这些特征对于区分和识别不同的目标至关重要。
  2. EMA(Exponential Moving Average): 通过引入惯性项来平滑特征更新,EMA有助于减少噪声和异常值的影响,使得跟踪更加稳定。
  3. NSA(Neural Network-based Appearance): 这是一种用于非线性运动的卡尔曼滤波器,它通过神经网络来预测目标的状态,以适应更复杂的运动模式。
  4. MC(Motion Compensation): 包括运动信息的成本矩阵,这有助于在匹配过程中更好地考虑目标的运动信息,提高匹配的准确性。
  5. ECC(External Camera Calibration): 摄像机运动更正,它允许算法校正摄像机的外部参数,从而提高跟踪的准确性。
  6. woC(Without Cascading): 不采用级联算法,这可能意味着算法避免了在不同阶段使用不同复杂度的检测器,从而提高了处理速度。

StrongSORT++StrongSORT的一个变体,它进一步引入了:

  • AFLink(Association Graph Linking): 这是一种仅使用运动信息的全局链接方法,它在离线处理阶段用于改进跟踪结果。

  • GSI(Gaussian Process-based Interpolation): 通过高斯过程对检测误差进行内插,这是一种后处理技术,用于进一步提高跟踪的精度。

StrongSORT通过在特征提取、运动信息处理和成本矩阵计算等方面的改进,提高了多目标跟踪的性能。而StrongSORT++则通过引入AFLink和GSI技术,进一步优化了跟踪的准确性和鲁棒性。这些改进使得StrongSORT能够在复杂的场景中更有效地处理遮挡、目标丢失和重新出现等问题,从而实现最先进的跟踪性能(SOTA)。

在这里插入图片描述

StrongSORT与其说从根本上改变了结构,不如说是改进了跟踪所需的特征提取、运动信息和成本矩阵的处理StrongSORT++将AFLink(离线处理)和GSI插值(后处理)应用于改进的StrongSORT,是一个更加精确的模型。MOT17和MOT20的准确性比较,这表明了StrongSORT的优越性。

论文地址 :https://arxiv.org/abs/2202.13514
源码地址:https://github.com/dyhBUPT/StrongSORT.git

2. 研究背景

StrongSORT是基于DeepSORT算法的改进版本,旨在通过结合最新的技术元素来提升跟踪的准确性。

2.1. DeepSORT的起源与影响:

DeepSORT作为深度学习跟踪方法的先驱,为后续的研究奠定了基础。尽管后续出现了如FairMOTByteTrack等新方法,并在准确性上超越了DeepSORT,但这并不是因为DeepSORT方法本身存在缺陷,而是由于其提出的较早,技术尚未达到最新水平。因此,通过对DeepSORT进行改进,有潜力将其性能提升到新的水平。

2.2. SDE与JDE的对比:

DeepSORT属于单独检测和嵌入(SDE)模型,其检测器是独立于跟踪模型的。相比之下,联合检测和嵌入(JDE)模型如JDE(Joint Detection and Embedding)同时训练检测和跟踪任务,可能会导致模型冲突,限制了准确性。此外,JDE需要一个同时包含检测和跟踪信息的数据集进行训练,这限制了训练数据的多样性和范围。

2.3. 改进DeepSORT的动机:

尽管存在JDE这样的新方法,但它们在训练上的局限性和对复杂运动场景的处理不足表明,仍有很大的改进空间。StrongSORT的提出正是基于这样的动机,即在DeepSORT的SDE框架中充分利用外观特征来提升跟踪性能。

2.4. StrongSORT的定位:

提出StrongSORT的目的是为了证明在SDE方法中结合外观特征进行跟踪是有效的。通过改进DeepSORT,StrongSORT旨在解决ByteTrack等仅基于运动信息的模型在处理复杂运动时的局限性,同时避免JDE模型在训练上的挑战。

3.DeepSORT

在跟踪任务中,需要将当前帧(记为t)中检测到的物体与过去从0~t-1帧中跟踪到的物体的短期轨迹(tracklet)进行比较和匹配,确保为同一个物体分配相同的ID。这个过程涉及到创建一个成本矩阵,该矩阵基于物体的外观特征和运动信息来衡量当前检测到的物体与已有跟踪点之间的相似性和差异性,目的是找到成本最小的匹配组合。

3.1特征库

特征库用于存储tracklets的外观特征,以便评估新检测到的物体与当前帧中哪个跟踪点的外观最为相似。DeepSORT会保留最近100帧的外观特征,这些特征是通过一个简单的深度模型(如CNN)在MARS数据集上预训练得到的。这个深度模型能够提取物体的外观特征,有助于区分不同的个体。

3.2 卡尔曼滤波器

除了外观特征,运动信息也是跟踪过程中的一个重要因素。卡尔曼滤波器不仅关注物体的当前位置,还能够预测物体在下一帧中可能出现的位置。这种预测基于物体在前一帧的位置和运动状态,预测出的tracklet坐标与当前检测到的物体之间的距离被用作成本矩阵的一个元素。DeepSORT使用的是线性卡尔曼滤波器,并且假设所有物体的噪声特性是相同的。

3.3 匹配级联

在将检测结果与跟踪器进行关联时,DeepSORT使用匈牙利算法来处理位置信息和外观特征的成本矩阵,以找到最优的匹配方案。此外,DeepSORT采用了一种匹配级联的策略,优先考虑将最近的检测结果与当前活跃的轨迹进行匹配。这种策略有助于提高跟踪的实时性和准确性,尤其是在处理快速移动或频繁出现的物体时。

在这里插入图片描述

4. StrongSORT

在这里插入图片描述

4.1 BoT

StrongSORT采用了BoT作为更强大外观特征提取器。与DeepSORT中使用的简单CNN模型不同,BoT使用的是ResNeSt50作为骨干模型,并在DukeMTMCreID数据集上进行了预训练。这种特征提取器能够更有效地区分不同个体之间的特征,因为它利用了更复杂的网络结构和大量的预训练数据。

4.2 EMA

EMA是GIAOTracker中提出的一个特征库:DeepSORT特征库保留了100帧的特征,这使得它效率低下,对每一帧的检测噪声高度敏感。相比之下,EMA将过去的特征作为惯性项保留并更新,如下式所示:f是在第t帧检测到的物体的特征,并分配给小轨道 i,e是到第t-1帧为止的小轨道的特征。通过用α加权,特征被有效地更新,并减少了噪音。

在这里插入图片描述

4.3 NSA Karman

GIAOTracker中也提出了NSA卡尔曼:在DeepSORT中,它是一个简单的线性卡尔曼滤波器,但假设所有检测到的物体具有相同的观测噪声是不现实的。因此,NSA卡尔曼根据检测的置信度,以自适应的方式改变噪声。对于复杂的移动物体,检测器可能对物体的输出信心不足,所以卡尔曼滤波器加强了校正。

在这里插入图片描述
c k ckck代表每个对象的信心水平。通过这种方式,可以对各种复杂的物体运动进行位置估计。

4.4 MC

DeepSORT将位置信息作为一种成本,但实际上只实验了外观特征作为一种成本,其权重设置为零。与这样的DeepSORT不同,StrongSORT生成了一个λ=0.98的成本矩阵,如下式所示。KaTeX parse error: Expected ‘EOF’, got ‘&’ at position 3: Aa&̲是外观特征的成本,Am&是运动(位置)信息的成本。

在这里插入图片描述

4.5 其他

StrongSORT采用了ECC校正算法来处理相机视角的变化。这种算法考虑到了相机的外部参数,如焦距和畸变系数,从而能够更准确地校正图像中的视角变化,这对于在不同视角下保持跟踪的一致性和准确性至关重要。

在处理匹配成本矩阵时,StrongSORT并未采用DeepSORT中的匹配级联策略。相反,它将匹配问题视为一个简单的线性分配问题,并使用一种更直接的方法来解决。这种方法的优先级是考虑那些具有较近期观测数据的轨迹(tracklets)。这是因为如果跟踪模型本身性能良好,过分复杂的匹配策略反而可能限制跟踪的准确性。通过信任并优先使用优秀的跟踪模型,StrongSORT在匹配过程中避免了不必要的复杂性,从而提高了整体的跟踪准确性。

StrongSORT放弃了级联匹配策略(wOC)。这种改变简化了匹配过程,使得跟踪算法能够更加专注于利用高质量的外观特征和运动信息来进行有效的数据关联,而不是依赖于复杂的级联结构。

5.AFLink

在讨论的在线跟踪中,每一帧图像都会被实时检测并连接追踪单元,这是实时跟踪的过程。然而,在实际应用中,由于检测错误或遮挡等原因,跟踪有时会中断,导致短时间内产生的追踪信息虽然准确但不完整。为了解决这个问题,需要采用一种离线处理方法,也就是所谓的全局链接(Global Linking),它的目的将分散的追踪单元(tracklets)连接在一起,形成一个完整的追踪序列。

AFLink是一种新颖的全局链接方法,它是第一个不依赖外观特征的全局链接机制。在以往的全局链接方法中,例如GIAOTracker中提出的GIModel,通常会使用基于ResNet的深度CNN模型从每个tracklet的帧中提取外观特征,然后将这些特征输入到Transformer Encoder中进行关联性分析。这种方法虽然强大,但模型相对复杂,计算成本高昂,并且由于它依赖于外观特征,容易受到噪声等因素的影响,这也可能成为问题。

相比之下,AFLink在小追踪T中使用的唯一信息是检测到的帧数f和当时的位置(x,y);两个小追踪TiTj的最后30帧的信息Ti=(fk,xk,yk)(k=130)在卷积层中被压缩和特征提取,TiTj是否代表相同的信心水平输出是Ti和Tj是否代表同一个人的轨迹的信心水平。首先,时间块对三个特征``(f、x、y)中的每一个在七帧之间重复压缩时间序列方向。然后应用一个融合块来压缩这三个特征。综合结果被输入到分类器,分类器用AffineReLU将其转换为置信度。整体情况如下图所示。应该注意的是,为这两个小轨道提供了单独的区块。

在这里插入图片描述

在这里插入图片描述

时间块只在时间方向(7帧)对每个f,x,y独立进行卷积。与此相反,融合块压缩了在时间方向上压缩的三维特征。实验中使用的AFLink模型如下图所示。

在这里插入图片描述

6.高斯平滑插值

GSI它在在线和离线跟踪过程完成后进行的后处理阶段中发挥重要作用。后处理的一个重要任务是对那些在跟踪过程中遗漏的检测进行插值,以提高轨迹的完整性和精度。

SDE(Single Detection per Frame per Object)跟踪框架中,如果检测器在某帧中未能检测到某个物体,那么该物体在该帧中的轨迹就会丢失。为了弥补这些遗漏,可以通过插值方法来重建丢失的轨迹。线性插值是一种简单且广泛使用的方法,它通过在已知检测点之间直线连接来估计中间点的位置。然而,线性插值的精度有限,因为它没有考虑物体的运动信息,导致插值结果可能不够自然或不符合实际情况。

在下图中,蓝色线条展示了线性插值的结果,它简单地在检测到的轨迹之间进行直线插值,但这种方法没有考虑到物体的真实运动轨迹(Ground Truth,简称GT),因此可能无法准确地反映物体在场景中的移动。

为了解决这个问题,GSI(Gaussian Process-based Interpolation)插值方法被提出。GSI插值利用高斯过程对检测误差进行建模,并在此基础上进行插值。这种方法可以更准确地估计物体在丢失帧中的位置,因为它考虑了物体的运动信息和轨迹的连续性。

在这里插入图片描述

GSI的核心是一个高斯过程。高斯过程对多维正态分布进行建模,其均值m和协方差K作为a的函数给出,例如,当从a预测b时,对于一些观察到的数据a, b,p(b∣a)=N(m(a),K(a)) 。在这种情况下,我们假设在帧数t tt和位置信息(x、y、w、h) 之间分别有条件的多维正态分布p(x∣t)、p(y∣t)、p(w∣t)和p(h∣t∗∗)。然后,我们估计(x,y,w,h)在检测失误的帧t。请注意,对每个轨迹i应用一个高斯过程,在文中表示为pt。

在这里插入图片描述

RBF核用于核函数k。分母λ决定了轨迹的平滑性,在本文中被设定为10。

在这里插入图片描述

图中显示,帧数和位置坐标用正态分布建模,成功地插值了它们之间的检测误差。StrongSORT++是加入了这种AFLinkGSI插值StrongSORT

7. 实验

7.1 数据集

在评估跟踪算法的性能时,通常会使用公认的基准数据集来进行实验。MOT17和MOT20是两个专门用于人员跟踪的基准数据集。MOT20相比MOT17更具挑战性,因为它包含了更密集的跟踪目标。在进行消融实验时,MOT17训练数据集中每个视频的前半部分用于训练模型,而后半部分则用于验证模型的性能。

7.2 模型设置

StrongSORT算法中使用的外观特征提取器BoT在DukeMTMC数据集上进行了预训练,而检测器YoloX-X则是在COCO数据集上预先训练的。在模型设置中,抑制重复检测的非极大值抑制(NMS)阈值设定为0.8,检测置信度阈值为0.6。AFLink能够在30帧内和75像素范围内将小轨道联系起来,如果输出置信度大于0.95,则认为关联是有效的;GSI内插法将最大可能的插值检测失误设定为20帧。

7.3 评估指标

跟踪准确性的评估通常涉及多个指标,从不同的角度来衡量跟踪的性能:

  • MOTA(Multiple Object Tracking Accuracy)是一个侧重于检测准确性的指标,因为它基于跟踪过程中的假阳性、假阴性和ID切换来计算。ID切换是指在跟踪过程中物体的关联错误。
  • IDF1是一个侧重于追踪过程中ID匹配的指标,例如,相同数量的ID将导致一个长而稳定的追踪。
  • HOTA(Homogeneous Precision, Recall, and F1-score)是一个很平衡的评价指标,它可以同时评估检测精度(DetA)和跟踪方法(AssA)。

7.4 消融实验

为了理解StrongSORT中每个组件的作用,进行了消融实验。通过从基线DeepSORT开始,逐步添加StrongSORT的各个机制,对比在线跟踪的性能变化。这种逐项添加的方式有助于理解每个改进对整体跟踪性能的具体影响,从而验证每个新引入技术的有效性。消融实验是理解算法改进和优化效果的重要步骤,它确保了算法的每个部分都是经过精心设计和测试的。

在这里插入图片描述

改进外观特征提取器(BoT)明显改善了IDF1,这表明了外观特征的重要性;增加ECC略微改善了IDF1和MOTA,而相机校正可以提取准确的运动信息。然后,NSA卡尔曼改进了HOTA,但MOTA和IDF1保持不变。当tracklet特征改为EMA时,不仅代表关联准确性的IDF1增加了,而且FPS也提高了,导致速度加快。包括运动信息的成本(Motion Cost)也证实了StrongSORT准确性的提高。最后,StrongSORT在没有匹配级联的情况下执行正常的线性赋值问题,在IDF1中显示出明显的改善,表明级联是没有必要的。

7.5 AFLink和GSI。

这里使用StrongSORT和现有的SoTA模型来宣称AFLink和GSI的优势。上面的StrongSORT消融有v1~v6的顺序,这里用的是其中的v1/v3/v6,CenterTrack、TransTrack和FairMOT是现有的方法,AFLink和GSI处理分别加入到六个模型中。使用的模型如下。

在这里插入图片描述

AFLink提高了两个模型的准确性。就GSI而言,与AFLink不同,它对更强的跟踪模型更有效。与线性插值(LI)的比较是针对GSI单独进行的,表明GSI在计算成本略有增加的情况下提高了性能。

在这里插入图片描述

如上所述,AFLink和GSI被发现可以提高各种高精度跟踪模型的准确性,而不仅仅是StrongSORT。

7.6 MOTChallenge。

最后是与许多SoTA的比较:用MOT17和MOT20进行验证;没有进行FPS的比较,因为很难比较JDE和SDE,因为在SDE模型中检测阶段的处理时间基本上被忽略了。

首先是MOT17,在所有方法中,StrongSORT++在HOTA/AssA/DetA方面取得了第一名,在MOYA/IDs方面取得了第二名,远远领先于第二名的精确度。

在这里插入图片描述

MOT20处理更拥挤的情况。其中,StrongSORT++在HOTA/IDF1/AssA中同样取得了第一名的成绩。特别是,它显示了非常低的ID数量。

在这里插入图片描述

这些结果是在没有对每个数据的参数进行任何调整的情况下实现的,这表明了该方法的多功能性。

8.训练与部署

源码地址:https://github.com/dyhBUPT/StrongSORT.git

8.1 环境安装:

conda create -n strongsort python=3.8 -y
conda activate strongsort
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.7 -c pytorch -c nvidia
pip install opencv-python
pip install scipy
pip install scikit-learn==0.19.2

数据集可以从这里下载:https://motchallenge.net/
百度网盘地址:https://pan.baidu.com/s/1EtBbo-12xhjsqW5x-dYX8A?pwd=sort

8.2 训练与测试

  1. 在MOT17-val上运行DeepSORT:
python strong_sort.py MOT17 val
  1. 在MOT17-val上运行StrongSORT:
python strong_sort.py MOT17 val --BoT --ECC --NSA --EMA --MC --woC
  1. 在MOT17-val上运行StrongSORT++:
python strong_sort.py MOT17 val --BoT --ECC --NSA --EMA --MC --woC --AFLink --GSI
  1. 在MOT17-test上运行StrongSORT++:
python strong_sort.py MOT17 test --BoT --ECC --NSA --EMA --MC --woC --AFLink --GSI
  1. 在MOT20-test上运行StrongSORT++:
python strong_sort.py MOT20 test --BoT --ECC --NSA --EMA --MC --woC --AFLink --GSI

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

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

相关文章

SpringCloud基础 Consul的引入

前言 首先是为什么引入consul这个组件 我们知道微服务分为很多个模块,这里模块中相互调用,我使用硬编码的模式是不好的 比如微服务模块需要更新的时候,我们使用硬编码的方式可能需要修改很多个地方 但是使用consul之后,就引入了注册中心,我们只需要将对应的服务注册为节点 这样…

android脱壳第二发:grpc-dumpdex加修复

上一篇我写的dex脱壳,写到银行类型的app的dex修复问题,因为dex中被抽取出来的函数的code_item_off 的偏移所在的内存,不在dex文件范围内,所以需要进行一定的修复,然后就停止了。本来不打算接着搞得,但是写了…

【论文阅读】EgoPCA: A New Framework for Egocentric Hand-Object Interaction

论文主要贡献 提出一种新的框架:Ego-HOI recognition by Probing, Curation and Adaption (EgoPCA)。构建了全面的预训练集,平衡的测试集,以及一个包含了微调策略的baseline。 在Ego-HOI达到了SOTA,并且建立了有效的机制方法。 …

【后端】git与python的结合使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、git介绍二、git常见使用三、git与python的结合使用四、总结 前言 随着开发语言及人工智能工具的普及,使得越来越多的人会主动学习使用一些开发…

【OceanBase系列】—— 常用运维操作(备忘)

作者简介: 花名:绪宁,OceanBase 数据库解决方案架构师 创建租户 方法一:OCP 创建 确认可分配资源 具体可以分配多少内存,可以通过【资源管理】查看各节点的剩余资源 2. 新建租户 3. 填写租户信息 zone 优先级主要是 p…

STM32玩转物联网实战篇:5.ESP8266 WIFI模块MQTT通信示例详解

1、准备开发板 开发板功能区分布图 开发板俯视图 2、实验讲解 在之前的章节中,已经讲解过了MQTT的通讯原理和组包过程,现在开始手把手的教大家用代码来实现连接MQTT平台以及数据的交互,实际上这篇文章已经拖更接近两年了,非常…

《QT实用小工具·三十九》仿 Windows10 画图3D 的颜色选择器, 但更加强大

1、概述 源码放在文章末尾 该项目实现了仿 Windows10 画图3D 的颜色选择器,功能更加丰富更加强大。 项目部分代码如下所示: import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import QtGraphicalEffects 1.15Item {id…

【leetcode面试经典150题】72. 从前序与中序遍历序列构造二叉树(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

opencv绘制线段------c++

绘制线段 bool opencvTool::drawLines(std::string image_p, std::vector<cv::Point> points) {cv::Mat ima cv::imread(image_p.c_str()); // 读取图像&#xff0c;替换为你的图片路径 cv::Scalar red cv::Scalar(0, 0, 255); // Red color int thickness 2;// 遍…

面试遇到算法题:实现LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存约束的数据结构。 这是一道大厂面试高频出现的算法题&#xff0c;难度为⭐️⭐️⭐️&#xff0c;属于中等&#xff0c;老铁们来一起看看这个题该怎么解&#xff1f; 1. 原题再现 没有废话&#xff0c;翠花&#xff0c;上酸菜&…

JS 添加数组元素( 4种方法 )

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、四种…

Spring Boot 集成 EasyExcel 3.x

Spring Boot 集成 EasyExcel 3.x Spring Boot 集成 EasyExcel 3.x 本章节将介绍 Spring Boot 集成 EasyExcel&#xff08;优雅实现Excel导入导出&#xff09;。 &#x1f916; Spring Boot 2.x 实践案例&#xff08;代码仓库&#xff09; 介绍 EasyExcel 是一个基于 Java 的、…

HZNUCTF -- web

HZNUCTF第五届校赛实践赛初赛 Web方向 WriteUp-CSDN博客 ezssti 下载文件 访问 /login 可由源代码中看到 Eval 函数 &#xff0c;可以任意命令执行 按照格式&#xff0c;可执行命令 POST &#xff1a;name{{.Eval "env"}} 可以得到flag &#xff08;尝试ls 只能列出…

「ChatGPT」掀起新一轮AI热潮!超越GPT-4 Turbo,商汤日日新大升级!

目录 拳打 GPT-4 Turbo &#xff0c;脚踢 DALLE 3 端侧大模型&#xff0c;唯快不破 AI 应用落地需要一个即插即用的大模型超市 并不存在 AI 这个行业&#xff0c;只有 AI行业&#xff0c;强调 AI 需要与传统产业合作&#xff0c;这种关系是结合与赋能&#xff0c;而不是颠覆…

java开发之路——用户管理中心_简单初始化

用户管理中心_简单初始化 (一) 初始化项目1. 使用 Ant Design Pro(现成的管理系统) 进行前端初始化2. 后端初始化三种初始化java项目 (二) 遇到的问题【问题1】Ant design pro页面打不开&#xff0c;一直在budiling控制台出现错误error-./src/components/index.ts【问题2】初始…

基于SSM的物业管理系统(含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的物业管理系统2拥有三种角色 管理员&#xff1a;用户管理、物业管理、房产信息管理、小区概况管理、开发商管理、收费标准管理、物业公司管理等 物业&#xff1a;住户管理、收费…

如何通过cURL库实现远程控制插座

如何通过cURL库实现远程控制插座呢&#xff1f; 本文描述了使用cURL库调用HTTP接口&#xff0c;实现控制插座&#xff0c;即插即用&#xff0c;先插入插座&#xff0c;再接电器&#xff0c;实现远程控制。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格…

udp/tcp错误总结

udp tcp——多进程 tcp——多线程 tcp——线程池 tcp——守护进程 &#x1f386;udp  ✨pthread_create 错误总结  ✨LockGuard错误总结  ✨服务端需要写成多线程  ✨客户端也需要写成多线程  ✨多线程调试工具 &#x1f386;tcp  ✨tcp独有调试工具——telnet  ✨Threa…

基于瞬时频率的语言信号清/浊音判决和高音检测(MATLAB R2021)

语音是由气流激励声道从嘴唇或鼻孔辐射出来而产生的。根据声带是否振动&#xff0c;发音可分为浊音和清音。浊音和清音有明显的区别&#xff0c;浊音具有周期信号的特征&#xff0c;而清音则具有随机噪声的特征&#xff1b;浊音在频域上具有共振峰结构&#xff0c;其能量主要集…

⑤【Shiro】SpringBoot整合Shiro,实现登录认证

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ ⑤【Shiro】SpringBoot整合Shiro&#xff0c;实…