当前位置: 首页 > news >正文

Quo Vadis, Anomaly Detection? LLMs and VLMs in the Spotlight 论文阅读

文章信息:

在这里插入图片描述

原文链接:https://arxiv.org/abs/2412.18298

Abstract

视频异常检测(VAD)通过整合大语言模型(LLMs)和视觉语言模型(VLMs)取得了显著进展,解决了动态开放世界场景中的一些关键挑战,如可解释性、时序推理和泛化能力。本文深入回顾了2024年基于LLM/VLM的前沿方法,重点关注四个关键方面:

(i)通过语义洞察和文本解释增强可解释性,使视觉异常更易于理解;

(ii)捕捉复杂的时序关系,检测和定位视频帧中的动态异常;

(iii)支持少样本和零样本检测,减少对大量标注数据集的依赖;

(iv)通过利用语义理解和运动特征解决开放世界和类无关的异常问题,实现时空一致性。

我们强调这些方法在重新定义VAD领域格局方面的潜力。此外,我们还探讨了LLMs和VLMs所提供的视觉和文本模态之间的协同作用,突出了它们的联合优势,并提出了未来的研究方向,以充分发挥它们在提升视频异常检测方面的潜力。

I. INTRODUCTION

视频异常检测(VAD)是一个关键问题,广泛应用于安全监控、医疗健康、自动驾驶和内容审核等领域[1]–[7]。自动识别视频数据中的异常事件或行为对于实时干预、系统优化以及理解不同领域中的复杂动态至关重要[8]。然而,传统的VAD方法[1]–[5],[9]–[14]面临着显著的挑战,这些挑战主要来源于视频内容的动态性、在各种情境中检测异常的复杂性,以及获得标注数据以训练鲁棒模型的困难[7],[15]。

近年来,深度学习的进展带来了强大的模型,如大语言模型(LLMs)和视觉语言模型(VLMs),它们在提升视频异常检测(VAD)性能方面显示出巨大的潜力[16]–[20]。LLMs和VLMs能够更深入地理解视频的视觉和文本内容,为检测和解释异常提供了新的可能性。这些模型可以捕捉长时间范围的时序依赖,理解上下文关系,甚至生成视频内容的文本描述,使其成为提升现实世界开放场景中异常检测的多功能工具。

i. 我们识别了最新的语言模型驱动的方法,讨论了四个方面:时序建模、可解释性、无需训练的学习方法和开放世界检测。

ii. 我们对这些方法进行了比较分析,突出了它们在应对VAD实际挑战中的优缺点。

iii. 我们提出了未来的研究方向,强调了时序上下文、精细化可解释性和自适应方法的整合,以检测新的、未见过的异常。我们建议将无需训练的方法与精细化语义监督和开放世界能力相结合,可以实现更强大和可扩展的视频异常检测解决方案。

II. RELATED WORK

Interpretability and semantic insights.可解释性已成为视频异常检测(VAD)中的一个关键问题,特别是在敏感或高风险应用中,解释为何某个异常被标记为异常至关重要。早期的方法[12]–[14]通常依赖于黑箱模型,这使得人们很难信任它们的预测。近期的研究[27],[29]–[34]采用了来自大语言模型(LLMs)的语义洞察和来自视觉语言模型(VLMs)的文本解释,为检测到的异常生成可理解的推理。这些系统将检测到的视觉异常映射到文本描述或语义线索,从而使最终用户更容易理解异常的性质。尽管这显著提高了透明度,但挑战仍然在于平衡这些解释的细粒度与计算效率,尤其是在实时系统中

Temporal reasoning in dynamic anomalies.检测和定位随着时间展开的动态异常仍然是视频异常检测(VAD)中的核心挑战之一。早期的方法[12]–[14]通常独立分析视频帧,忽略了定义许多异常的时序关系。近期的研究[27],[29]–[32],[35],[36]整合了大语言模型(LLMs)和视觉语言模型(VLMs),开始通过建模帧之间的长程依赖关系来弥补这一空白,从而实现跨时序序列的异常检测。这些模型使用先进的技术,如运动和上下文建模,来改善对时序动态的捕捉,这对识别动态场景中的异常行为至关重要。然而,扩展性和处理噪声或不完整数据仍然是这些时序推理方法面临的重大难题

Few-shot and zero-shot detection.标注数据的稀缺性是视频异常检测(VAD)中一个持续的挑战,特别是在检测新颖的、未见过的情境中的异常[12]–[14]。由大语言模型(LLMs)和视觉语言模型(VLMs)驱动的少样本和零样本方法,提供了有希望的解决方案,通过使有限的标注数据能够泛化[25],[30],[33]–[35],[37]。这些模型利用预训练的知识来识别未见类别或仅使用最少训练数据的异常。依赖于视频内容的语义理解与运动特征相结合的方法,使得在无需大规模标注数据集的情况下,也能够识别异常。然而,尽管这些方法具有潜力,但它们通常在处理与常规行为显著偏离的复杂异常类型时存在困难,尤其是在开放世界环境中,异常的性质是未知的。

Open-world and class-agnostic anomalies.传统的视频异常检测(VAD)方法[12]–[14]通常在封闭世界环境中操作,假设存在预定义的异常类别。然而,现实世界的应用需要能够检测开放世界、类无关异常的模型,这些异常可能涉及到之前未见过的行为。结合语义和运动推理的多模态模型[30],[33],[35],[38],[39]在解决这些挑战方面取得了进展,通过在没有先验类别知识的情况下检测异常。这些系统在开放世界环境中更为鲁棒,可以检测到意外的异常,但与扩展性和动态适应性相关的问题仍未解决,尤其是在随着时间推移出现新的异常类型时。

Motivation and key differences.尽管现有的方法在这些领域中的一个或多个方面取得了显著进展[7],[19],[20],但大语言模型(LLMs)和视觉语言模型(VLMs)的整合提供了一种综合性的方法来应对视频异常检测的挑战。与以往通常侧重于VAD某个孤立方面(如时序推理、可解释性或类特定检测)的研究不同,本文强调了视觉和文本模态之间的协同作用,旨在同时解决所有关键挑战。通过聚焦于语义洞察和运动特征,本综述突出了多模态模型如何为视频异常检测提供更全面的解决方案。此外,通过探索少样本和零样本能力,本文提出了向更加通用的系统转变的建议,即使在最少的训练数据下,也能表现良好。

III. INSIGHTS ON RECENT ADVANCES

在这里插入图片描述

图1:我们展示了2024年13篇紧密相关的研究工作,这些研究利用大语言模型(LLMs)和视觉语言模型(VLMs)进行视频异常检测(VAD)的系统评估。分析围绕四个关键视角组织: (a) 时序建模,(b) 可解释性,( c) 无需训练,(d) 开放世界检测,每个视角通过一个子图表示。对于每个视角,我们突出了所使用的策略、关键优点、局限性,并概述了未来研究的有前景方向。分析中使用的视频帧来自MSAD [7] 数据集。

我们对2024年视频异常检测(VAD)领域进行了深入分析,重点关注大语言模型(LLMs)和视觉语言模型(VLMs)的整合。我们回顾的方法包括:VADor [29]、OVVAD [35]、LAVAD [30]、TPWNG [36]、CALLM [39]、Holmes-VAD [32]、HAWK [27]、VLAVAD [31]、ALFA [34]、AnomalyRuler [37]、STPrompt [33]、Holmes-VAU [38] 和 VERA [25]。我们围绕四个关键视角(见图1)结构化地展开讨论,这些视角是近期进展所涉及的内容:时序和上下文关系、可解释性和可解释性、无需训练和少样本学习方法,以及开放世界/类无关异常检测。对于每个视角,我们突出了所使用的策略,评估了方法的优缺点,并提出了未来研究的潜在方向。

A. Temporal Modeling and Context

时序建模是视频异常检测(VAD)的基础,因为异常通常通过时序模式的偏差来表现。主要的挑战在于如何在保持计算效率和可扩展性的同时,捕捉复杂的时序动态。近期的方法通过创新的模块和上下文推理的整合来解决这些挑战[27],[29]–[32],[35],[36]。

VADor [29] 引入了长时上下文(LTC)模块,解决了开源视频大语言模型(LLMs)在处理长程上下文时的局限性,有效捕捉时序动态。然而,对于较长或更复杂的视频,扩展性仍然是一个问题。LAVAD [30] 使用帧级字幕的滑动窗口来聚合时序信息,在结构化场景中表现出合理的性能,但在字幕噪声大或不完整时表现不佳。OVVAD [35] 使用图卷积网络(GCN)作为时序适配器,将冻结的CLIP编码器与序列数据连接起来,有效地进行时序推理,而无需广泛的再训练。然而,它难以充分利用细粒度的时序线索。VLAVAD [31] 通过序列状态空间模块(S3M)将语义不一致性与时序信息整合,在无监督设置中提高了异常检测的效果,但由于高维状态表示,面临扩展性挑战。以运动为中心的方法,如HAWK [27],使用运动到语言的映射将动态模式与文本描述相连接,增强了运动异常的可解释性和精确性。类似地,TPWNG [36] 通过自学习模块适应不同的视频时长,在弱监督设置中表现优异。最后,Holmes-VAD [32] 结合了轻量级时序采样器和多模态分析,有效地在复杂场景中识别和解释异常。

这些方法展示了多种时序建模策略。虽然VADor和OVVAD专注于预定义的模块来处理长时上下文,但HAWK和Holmes-VAD则强调运动动态和自适应采样。未来的工作可以将基于运动的特征[40]–[44]与先进的上下文感知模块相结合,以应对实时异常检测中的扩展性和效率挑战

B. Interpretability and Transparency

可解释性正日益被认为是VAD系统中的一个关键因素,尤其是在敏感和高风险环境中的部署。该类别的方法侧重于生成语义和多模态的洞察,使得异常检测系统对最终用户更加可理解[27],[29]–[34]。

VADor [29] 通过微调VideoLLaMA的投影层来增强可解释性,将异常检测与语义推理相结合。然而,它对指令调优数据的依赖限制了对多种异常类型的适应能力。LAVAD [30] 通过场景描述增加透明度,但噪声字幕削弱了其可靠性。相比之下,VLAVAD [31] 简化了语义映射,在无监督设置中提高了可解释性,但为了减少复杂性,牺牲了细粒度的细节。Holmes-VAD [32] 使用多模态指令调优和时序监督生成丰富上下文的异常解释。HAWK [27] 通过交互式视觉-语言模型整合基于运动的推理,增强了可解释性。类似地,STPrompt [33] 将时空区域与学习到的提示对齐,减少背景噪声并提高空间定位。ALFA [34] 强调使用图像-文本对齐的像素级精度,但需要额外的微调以实现有效的泛化。

对语义和多模态策略的重视标志着向透明VAD系统迈出了有前景的一步。虽然Holmes-VAD在提供上下文解释方面表现出色,但ALFA则提供了更为细致的洞察。未来的研究应平衡细粒度、语义泛化和计算效率,以开发强大且可解释的VAD系统。

C. Training-Free and Few-Shot Detection

标注数据集的匮乏是VAD面临的一个重大挑战,尤其是在开放世界场景中。无训练和少样本方法利用预训练模型和最少的标注来促进数据稀缺环境中的异常检测[25],[30],[33]–[35],[37]。

LAVAD [30] 通过使用预训练的LLMs和VLMs进行时序聚合,绕过了数据集特定的训练。尽管具有适应性,但其缺乏专业化限制了在复杂异常类型上的表现。AnomalyRuler [37] 在静态少样本场景中表现出色,通过基于规则的推理使用最少的正常样本进行异常检测,但在动态异常方面存在困难。OVVAD [35] 将异常检测与分类解耦,能够有效检测未见过的异常,但缺乏时序深度。STPrompt [33] 通过对时空提示的对齐来定位异常,在弱监督下表现良好,但在处理复杂模式时存在问题。ALFA [34] 在运行时动态调整提示,以实现细粒度检测,而VERA [25] 引入了语言化学习,使得无需修改模型参数即可进行无训练的异常检测。

将VERA的适应性与ALFA的细粒度能力相结合,再加上OVVAD中的时序推理,可能为开放世界异常检测提供更加稳健的解决方案。

D. Open-World and Class-Agnostic Detection

现实世界应用要求VAD系统能够检测未知的异常并适应不可预测的场景。开放世界和无类别方法旨在解决这些挑战[30],[33],[35],[38],[39]。

OVVAD [35] 使用双任务策略同时进行无类别和特定类别的检测,尽管其时序建模可以进一步增强。LAVAD [30] 使用文本描述进行异常评分,但受限于噪声较多的字幕。STPrompt [33] 在弱监督下表现出色,有效地定位异常,但在应对复杂模式时其鲁棒性有限。Holmes-VAU [38] 使用分层注释以覆盖更广泛的情况,而CALLM [39] 通过使用多模态特征进行伪标签创新,但在动态环境中的进一步验证仍然是必要的。

将Holmes-VAU的分层注释方法与CALLM的多模态创新相结合,可以应对现实世界中的复杂性。进一步改进时序和文本推理框架对于提高开放世界场景下的检测可靠性至关重要。

IV. ANALYSIS AND DISCUSSION

Frame sampling strategies.
帧采样策略在平衡时间分辨率、计算效率和整体模型性能方面发挥着关键作用。表 I 总结了常见的策略,而图 2 则直观地对比了它们。密集采样提供了最高的时间粒度,对于检测细微的、快速发生的异常(如突如其来的行为变化或短暂事件)至关重要。然而,密集采样帧的冗余性增加了计算成本,使得该策略在大规模或实时应用中不太实用。均匀采样(如在 VERA 中使用)通过在固定间隔采样帧提供了一个更简单的替代方案。这种方法在计算开销和时间覆盖之间取得了平衡,但通常会错过关键的局部时间模式。同样,随机采样(如在 VADor 中使用)引入了变异性,通过暴露模型于多样的时间模式来增强训练数据。然而,这一策略可能忽略定义异常的关键帧,减少了其在需要精确时间建模的场景中的有效性。自适应采样(如在 Holmes-VAD 和 Holmes-VAU 中使用)动态地关注时间上的兴趣区域。该方法优先选择可能包含异常的帧,从而实现细粒度检测和计算效率的平衡。自适应策略在异常时间稀疏或依赖上下文的场景中表现优秀。然而,它们依赖额外的启发式或学习机制,带来一定的成本。

在这里插入图片描述

在这里插入图片描述

采样策略的选择应与异常的性质和操作约束相匹配。对于全局趋势,均匀采样或随机采样已足够,而对于细粒度、时间敏感的检测任务,密集采样或自适应采样是不可或缺的。将自适应机制融入训练自由框架,作为未来的研究方向,可以在增强 VAD 系统的可扩展性和精确度方面发挥重要作用。

Fine-tuning vs. training-free approaches.

基于微调的方法在需要详细时间推理的数据集上占主导地位。例如,Holmes-VAD 在 UCF-Crime 数据集上达到了 89.5%,在 XD-Violence 数据集上达到了 90.7%,这得益于异常感知的微调,能够捕捉时间和语义模式。STPrompt 使用时空提示,在上海科技数据集上表现出色(97.8%),但需要为每个数据集重新训练,这限制了其可扩展性。像 LAVAD 和 VERA 这样的免训练方法在可扩展性方面表现优秀,避免了重新训练的开销,同时保持了具有竞争力的性能。VERA 在 XD-Violence 上达到了 88.2%,展示了其对新场景的适应能力。然而,这些方法可能在处理复杂的时间动态时遇到困难,例如,LAVAD 在 XD-Violence(62.0%)和 UCF-Crime(80.3%)上的表现较差。

一种结合免训练可扩展性与微调精度的混合方法可以解决这些局限性。例如,将微调方法中的时间采样技术集成到免训练框架中,可以在不妥协可扩展性的情况下增强其时间推理能力。未来的研究还应探索少样本学习和开放词汇技术,以弥合泛化能力和适应性之间的差距,正如 Holmes-VAU 在 UCF-Crime 上取得的有前景的结果(89.0%)所示。这个方向能够使系统在最小化重新训练的同时,处理新兴的异常现象并保持高准确性。

Quantitative evaluation and comparative analysis.
表 II 展示了近期视频异常检测(VAD)方法在基准数据集上的性能和特点。在评估的方法中,VLAVAD、VADor、Holmes-VAD 和 STPrompt 因其高可解释性和时间建模能力而脱颖而出,尽管它们在不同的基准数据集上表现各异。VLAVAD 在通过微调捕捉细粒度的时间特征方面表现突出,在像 UCSD Ped2(99.0%)这样的数据集上非常有效,但在处理开放世界异常时缺乏适应性。与之相对,LAVAD 提供了语义解释的可解释性,但由于其对时间动态的处理不足,其在像 UCF-Crime(80.3%)和 XD-Violence(62.0%)等数据集上的表现有限。这一对比突显了在现实世界的异常检测中,平衡可解释性与强大的时间建模能力的重要性。

在这里插入图片描述
表 II:视频异常检测(VAD)近期方法的比较。我们对近期的 VAD 方法进行了比较,重点突出了解释性、时间建模、少样本学习和开放世界检测等关键方面。性能评估基于六个基准数据集:UCSD Ped2(Ped2)[45]、CUHK Avenue(CUHK)[46]、ShanghaiTech(ShT)[47]、UCF-Crime(UCF)[12]、XD-Violence(XD)[13] 和 UBnormal(UB)[14]。使用曲线下面积(AUC)评估的数据集包括 Ped2、CUHK、ShT、UCF 和 UB,而 XD 数据集则使用平均精度(AP)进行评估。

在时间建模方面,像 Holmes-VAD 和 Holmes-VAU 这样的算法在解决视频异常检测中固有的时间依赖性方面更为成功。LAVAD 提供了一种无训练的解决方案,通过时间聚合进行处理,但它在与像 TPWNG 这样的算法竞争时处于劣势,后者采用了时空提示学习。尽管 AnomalyRuler 在上海科技(ShanghaiTech,85.2%)数据集上取得了不错的表现,但仍落后于 STPrompt(97.2%),这表明 STPrompt 在视频序列中的时间动态适应能力提供了显著的优势。然而,尽管 STPrompt 在时间敏感的异常检测中表现强劲,但其对微调的依赖限制了其可扩展性和对未见异常类型的适应能力,这是其主要缺点(例如在 UBnormal 数据集上的表现仅为 64.0%)。

少样本学习和开放世界检测能力对于处理新兴或以前未见过的异常至关重要,像 OVVAD 和 AnomalyRuler 这样的算法在这方面表现优异。OVVAD 展现了检测已见和未见异常的能力,特别是在其开放词汇方法和类无关检测的帮助下。然而,在需要时间建模的场景中,其表现不尽如人意,例如在 XD-Violence 数据集上的结果为 66.5%。另一方面,AnomalyRuler 在 UCSD Ped2(97.9%)和 CUHK Avenue(89.7%)数据集上取得了强劲的表现,展现了其稳健性。然而,它的基于规则的方法可能在处理更复杂、动态的异常时遇到困难,这表明虽然 AnomalyRuler 在受控环境中非常有效,但在更广泛的应用场景中可能需要进一步优化。

最后,Holmes-VAD 和 STPrompt 方法在可解释性、时间建模和适应性方面表现突出。Holmes-VAD 尤其在 UCF-Crime(89.5%)和 XD-Violence(90.7%)数据集上表现出色,得益于其结合了异常感知监督和微调,使其能够有效地捕捉时间和语义特征。同样,STPrompt 通过时空提示学习和微调,在 ShanghaiTech(97.8%)和 UCF-Crime(88.1%)等数据集上取得了优异的成绩。然而,两个方法都受到微调依赖的限制,这减少了它们在不同异常类型和数据集上的泛化能力。

结果表明,为了优化视频异常检测(VAD)系统,需要采取多方面的方法。像 Holmes-VAD 和 STPrompt 这样的方案表明,将经过微调的时间和语义建模与可解释性以及对新异常的适应性相结合,可以在多个数据集上取得较高的性能。然而,规模化问题、对稳健的时间建模的需求以及处理嘈杂的字幕或不完整注释仍然是重要的障碍。结合训练-free 解决方案和微调,如 LAVAD 所展示的,可能为开放世界异常检测提供一个更具多功能性的框架。

V. CONCLUSION

本研究探讨了大语言模型(LLMs)和视觉-语言模型(VLMs)在视频异常检测(VAD)中的融合,重点关注时间建模、可解释性、少样本学习和开放世界异常检测等关键挑战。我们分析了近年来的进展,揭示了当前方法的优缺点。我们的分析强调了更强大的时间建模的必要性,以捕捉视频数据中的复杂依赖关系,同时强调细粒度可解释性的重要性,以更好地理解异常检测的决策。此外,我们还认识到训练-free 和少样本学习方法的潜力,这些方法在有限监督或未知异常场景下具有提高可扩展性和适应性的潜力。我们提出,未来的 VAD 系统可以通过结合这些方法来受益,例如改进时间一致性、对齐语义特征,并结合自适应学习策略。本工作为推动 VAD 发展奠定了基础,通过完善这些模型、增强其可扩展性并解决动态视频数据中固有的复杂性。

相关文章:

Quo Vadis, Anomaly Detection? LLMs and VLMs in the Spotlight 论文阅读

文章信息: 原文链接:https://arxiv.org/abs/2412.18298 Abstract 视频异常检测(VAD)通过整合大语言模型(LLMs)和视觉语言模型(VLMs)取得了显著进展,解决了动态开放世界…...

redis的学习(二)

4 哈希表 哈希类型中的映射关系通常称为field-value,⽤于区分Redis整体的键值对(key-value), 注意这⾥的value是指field对应的值,不是键(key)对应的值, 4.1 操作命令 hset&#xff…...

简单使用linux

1.1 Linux的组成 Linux 内核:内核是系统的核心,是运行程序和管理 像磁盘和打印机等硬件设备的核心程序。 文件系统 : 文件存放在磁盘等存储设备上的组织方法。 Linux 能支持多种目前浒的文件系统,如 ext4 、 FAT 、 VFAT 、 ISO9660 、 NF…...

springboot541党员学习交流平台(论文+源码)_kaic

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统党员学习交流平台信息管理难度大,容错率低&am…...

心力衰竭相关临床记录数据分析开发技术概述

心力衰竭相关临床记录数据分析开发技术概述 心力衰竭临床记录数据分析的开发涉及多种技术,包括数据采集、处理、建模和可视化等方面。以下是从技术角度对整个开发流程的概述: 数据采集技术 1.1 数据来源 公开数据集:如 UCI 数据存储库、Clin…...

SpringMVC(六)拦截器

目录 1.什么是拦截器 2.拦截器和过滤器有哪些区别 3.拦截器方法 4.单个拦截器的执行流程 5.使用拦截器实现用户登录权限验证(实例) 1.先在html目录下写一个login.html文件 2.在controller包下写一个LoginController文件 3.加拦截器 1.创建一个conf…...

将simpletex 识别的公式 复制到ppt 中

1)点击 复制MathML(word) 2)右击粘贴到任意word 中 3)将word公式粘到 office (2019) 的ppt 中 线上识别链接:SimpleTex - Snip & Get!...

vs 2022 中xml 粘贴为Class 中,序列化出来的xml 的使用

上图是visual studio 2022 中使用的粘贴功能的菜单位置 在生成的xml 中,有些是类似如下类型的 [System.Serializable] [System.Xml.Serialization.XmlType] public class Item {private bool isVisibleField;private bool isVisibleFieldSpecified;[System.Xml.Se…...

短视频平台的视频水印怎么去除?

当你看到某个短视频,觉得内容非常有价值,想要个人收藏以便日后学习或回顾,但发现短视频平台无法直接下载且带有水印时,以下提供的几种方法将帮助你轻松去除水印,获取高清无水印的视频内容。 方法一:使用第…...

《Vue3实战教程》34:Vue3状态管理

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 状态管理​ 什么是状态管理&#xff1f;​ 理论上来说&#xff0c;每一个 Vue 组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例&#xff1a; vue <script setup> import { r…...

AI大模型系列之七:Transformer架构讲解

目录 Transformer网络是什么&#xff1f; 输入模块结构&#xff1a; 编码器模块结构&#xff1a; 解码器模块: 输出模块结构&#xff1a; Transformer 具体是如何工作的&#xff1f; Transformer核心思想是什么&#xff1f; Transformer的代码架构 自注意力机制是什么…...

每天五分钟机器学习:凸集

本文重点 在SVM中,目标函数是一个凸函数,约束集合是一个凸集。因此,SVM问题可以转化为一个凸规划问题来求解。这使得SVM在实际应用中具有较高的计算效率和准确性。 凸集的定义 凸集是指一个集合中的任意两点之间的线段都完全包含在这个集合中。换句话说,给定集合C中的两…...

【智能算法】改进蚁狮优化算法【matlab】

目录 1 主要内容 2 部分程序 3 程序结果 下载链接 1 主要内容 该程序方法复现《改进蚁狮算法的无线传感器网络覆盖优化》两种改进算法模型&#xff0c;即原始ALO算法的基础上添加了两种改进策略&#xff1a; - 改进1&#xff1a;将原先的间断性边界收缩因子变为连续性边界…...

【Python】闭包

闭包&#xff08;Closure&#xff09;是指一个函数记住了并可以访问它的词法作用域&#xff08;lexical scope&#xff09;&#xff0c;即使这个函数在词法作用域之外执行。 闭包其实就是延伸了作用域的函数&#xff0c;包括被延伸函数主体中引用的非全局变量和局部变量。这些…...

Python跨年烟花

目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析 1. 程序初始化与显示设置 2. 烟花类 (Firework) 3. 粒子类 (Particle) 4. 痕迹类 (Trail) 5. 烟花更新与显示 6. 主函数 (fire) 7. 游戏循环 8. 总结 注意事项 写在后面 系列文章 序号直达链接爱…...

QT------------其他工具软件和技术

实现思路 多语言界面程序设计&#xff1a; 使用 QTranslator 类为 QT 应用程序提供多语言支持。将不同语言的翻译文件&#xff08;.qm 文件&#xff09;添加到应用程序中&#xff0c;根据用户的语言设置动态加载相应的翻译文件。 QT 样式表&#xff08;QSS&#xff09;&#x…...

数据结构9.3 - 文件基础(C++)

目录 1 打开文件字符读写关闭文件 上图源自&#xff1a;https://blog.csdn.net/LG1259156776/article/details/47035583 1 打开文件 法 1法 2ofstream file(path);ofstream file;file.open(path); #include<bits/stdc.h> using namespace std;int main() {char path[]…...

javaEE-文件操作和IO-文件

目录 一.什么是文件 1.文件就是硬盘(磁盘)上的文件。 2.计算机中存储数据的设备&#xff1a; 3.硬盘的物理特征 4.树型结构组织和⽬录 5.文件路径 文件路径有两种表示方式&#xff1a; 6.文件的分类 二、java中文件系统的操作 1.File类中的属性&#xff1a; 2.构造方…...

富芮坤FR800X系列之软件开发工具链(如IDE、编译器、调试器等)

文章目录 一、IDE&#xff08;集成开发环境&#xff09;二、编译器三、调试器四、其他辅助工具五、小结 FR800x系列作为一款低功耗蓝牙芯片&#xff0c;其软件开发工具链对于开发者来说至关重要。以下是对FR800x软件开发工具链的详细介绍&#xff0c;包括IDE&#xff08;集成开…...

微服务-Eureka

Eureka的作用 使用RestTemplate完成远程调用需要手动的生命被调用者的ip和端口&#xff0c;从而能够发起http请求&#xff0c;但是如果有很多个实例也更加不能有效的处理&#xff0c;而且我们又该如何知道这些实例是否健康呢。所以就有了很多的注册中心比如Eureka、Nacos等等。…...

Elasticsearch: 高级搜索

一、match_all匹配所有文档 1、介绍&#xff1a; match_all查询是一个特殊的查询类型&#xff0c;它用于匹配索引中的所有文档&#xff0c;而不考虑任何特定的查询条件。 基本语法&#xff1a; GET /<your-index-name>/_search {"query": {"match_all…...

项目优化之策略模式

目录 策略模式基本概念 策略模式的应用场景 实际项目中具体应用 项目背景&#xff1a; 策略模式解决方案&#xff1a; 计费模块策略模式简要代码 策略模式基本概念 策略模式(Strategy Pattern) 是一种行为型设计模式&#xff0c;把算法的使用放到环境类中&#xff0c;而算…...

HTML——57. type和name属性

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>type和name属性</title></head><body><!--1.input元素是最常用的表单控件--><!--2.input元素不仅可以在form标签内使用也可以在form标签外使用-…...

LabVIEW 实现自动对焦的开发

自动对焦&#xff08;Autofocus, AF&#xff09;技术是通过分析图像或传感器信号&#xff0c;动态调整焦点位置以实现清晰成像或高精度定位的过程。在LabVIEW中&#xff0c;可以通过集成信号采集、数据处理、控制算法和硬件接口模块&#xff0c;实现多种自动对焦方法&#xff0…...

Ruby 数据类型

Ruby 数据类型 Ruby&#xff0c;作为一种动态、开放源代码的编程语言&#xff0c;以其简洁明了的语法和强大的功能而闻名。在Ruby中&#xff0c;数据类型是编程的核心组成部分&#xff0c;它们决定了变量可以存储的信息种类以及可以对这些信息执行的操作。Ruby是一种类型安全的…...

【MySQL】--- 表的CRUD

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; MySQL CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除)。 &#x1f3e0; 插入C &#x1f9f7; 基本…...

算法13、基础二分查找的应用(木根切割等)

&#x1f330;1、方程求根 晴问算法 1️⃣即求f(x) x^3 x^2 x - a 0的根&#xff0c;又因为要求精确到0.01&#xff0c;所以eps至少设置为1e-3或者更小&#xff1b; 2️⃣求导得3x^2 2x 1 2x^2 x^2 2x 1 2x^2 (x1)^2 > 0&#xff0c; 所以f(x)是单调递增函数&…...

hive on spark报错解决(基于hive-3.1.3和spark-2.3.0)

相关配置可参考&#xff1a;https://blog.csdn.net/weixin_46389691/article/details/134126254 原作者&#xff1a;月亮给我抄代码 他写的很详细 ERROR : Job failed with java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init&…...

CentOS — 目录管理

文章目录 一、目录结构二、切换目录三、查看目录四、创建目录五、复制目录六、剪切目录七、删除目录 目录也是一种文件。 蓝色目录&#xff0c;绿色可执行文件&#xff0c;红色压缩文件&#xff0c;浅蓝色链接文件&#xff0c;灰色其它文件&#xff0c; 点开头的是隐藏文件&…...

学AI编程的Prompt工程,豆包Marscode

学习链接&#xff1a;Datawhale-AI活动https://www.datawhale.cn/activity/116/23/95?rankingPage1 目录 一、如何使用 二、编写游戏 2.1 创意输入与代码生成 2.2 项目初始化与应用 2.3 创意优化与迭代 三、效果展示 一、如何使用 建议在在vscode上安装marscode插件&a…...

基于微信小程序的面部动作检测系统

引言 本技术文档旨在详细阐述一个基于微信小程序的面部动作检测系统的技术路线、实现方法及关键技术框架。系统的核心功能包括检测用户的左右转头、眨眼和张嘴动作&#xff0c;并根据检测结果逐步引导用户完成任务。为确保系统的安全性和准确性&#xff0c;特别是防止用户通过…...

Java网络套接字

在Java的开发中&#xff0c;有一个很重要&#xff01;很重要&#xff01;很重要&#xff01;的东西&#xff0c;叫做网络套接字&#xff0c;它被广泛的用来二次开发服务&#xff0c;比如大数据中台的服务链路调用等。 它的实现原理是依靠三次握手来完成通信的建立&#xff0c;…...

mapbox基础,测面功能实现

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️Turf 框架二、🍀测面功能实现1. ☘️实现思路2. ☘️代码样例一、🍀…...

如何通过设置失效时间清除本地存储的数据

一、使用localStorage和时间戳&#xff08;JavaScript&#xff09; 1. 原理 localStorage是浏览器提供的一种在本地存储数据的方式&#xff0c;数据没有过期时间限制。但是可以通过自己记录时间戳来模拟数据过期的功能。在存储数据时&#xff0c;同时存储一个时间戳&#xff…...

【QT】找不到qwt_plot.h

系统环境&#xff1a; linux 20.04 qt 6.7.2 cmake 3.22 原因&#xff1a; Qwt没有正式的FindQwt.cmake&#xff0c;Qwt也没有提供QwtConfig.cmake。而且cmake不支持qmake的配置特性&#xff0c;也不支持读取mkspecs (.prf)文件。也就是说cmake构建的qt项目不可用qwt。 解决步…...

程序员如何培养技术领导力?

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…...

C# 设计模式(创建型模式):原型模式

C# 设计模式&#xff08;创建型模式&#xff09;&#xff1a;原型模式 引言 在面向对象的设计中&#xff0c;创建型模式关注于对象创建的方式和复杂度。原型模式&#xff08;Prototype Pattern&#xff09;是其中一种创建型设计模式&#xff0c;它允许通过复制现有的实例来创…...

Python自学 - 函数初步(内置函数、模块函数、自定义函数)

1 Python自学 - 函数初步(内置函数、模块函数、自定义函数) 1.1 内置函数 几乎所有的编程都会提供一些内置函数&#xff0c;以便完成一些最基本的任务&#xff0c;Python提供了丰富的内置函数&#xff0c;熟悉内置函数可以给工作带来极大便利。   Python官方的内置函数介绍网…...

Mono里运行C#脚本21—mono_image_init_name_cache

前面分析了怎么样加载mscorlib.dll文件,然后把文件数据读取到内存。 接着下来,就会遇到加载整个C#的类型系统,比如System. Object,大体类型如下图所示: 在对CIL编译之前,需要把这些类型全部加载到内存里,以便快捷地访问它们。 mono_image_init_name_cache函数就是完成…...

MySQL中distinct和group by去重的区别

MySQL中distinct和group by去重的区别 在MySQL中&#xff0c;我们经常需要对查询结果进行去重&#xff0c;而DISTINCT和GROUP BY是实现这一功能的两种常见方法。虽然它们在很多情况下可以互换使用&#xff0c;但它们之间还是存在一些差异的。接下来&#xff0c;我们将通过创建测…...

快速上手大模型的对话生成

本项目使用0.5B小模型&#xff0c;结构和大模型别无二致&#xff0c;以方便在如CPU设备上快速学习和上手大模型的对话上传 #mermaid-svg-Z86hUiQZ0hg9BVji {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Z86hUiQZ0h…...

SpringCloud(一)--SpringCloud简介

一. 引言 ​ 在微服务架构日益盛行的今天&#xff0c;Spring Cloud凭借其简单易用、功能强大的特性&#xff0c;成为了众多开发者的首选。本文仅为学习所用&#xff0c;联系侵删。 二. SpringCloud概述 2.1 定义 ​ Spring Cloud是一系列框架的有序集合&#xff0c;它巧妙地…...

常见的 Redis 面试题

1. Redis 是什么&#xff1f;它解决了哪些问题&#xff1f; Redis 是一个开源的内存数据结构存储系统&#xff0c;可以用作数据库、缓存和消息中间件。它主要用于解耦应用程序的不同组件或服务&#xff0c;支持高吞吐量和低延迟的消息传递。解决了系统之间的同步调用导致的性能…...

面试准备备备备

职业技能 放到简历的黄金位置&#xff08;HR刷选简历的重要参考&#xff09; 基本准则&#xff1a;写在简历上的必须能聊&#xff0c;不然就别写 参考公式&#xff1a;职业技能 必要技术 其他技术 针对性的引导面试官&#xff08;让他问一些你想让他问的&#xff09; 寻找合…...

GeoIP + Nginx:实现网站的地域访问控制

1. 引言 在全球化的互联网环境中&#xff0c;地域访问控制已成为许多企业和个人网站管理的重要需求。通过限制特定地区的访问&#xff0c;网站管理员可以保护资源、提高安全性并优化用户体验。本文将介绍如何使用GeoIP和Nginx实现地域访问控制&#xff0c;并提供两种情况的详细…...

打造三甲医院人工智能矩阵新引擎(一):文本大模型篇--基于GPT-4o的探索

一、引言 当今时代&#xff0c;人工智能技术正以前所未有的速度蓬勃发展&#xff0c;深刻且广泛地渗透至各个领域&#xff0c;医疗行业更是这场变革的前沿阵地。在人口老龄化加剧、慢性疾病患病率上升以及人们对健康需求日益增长的大背景下&#xff0c;三甲医院作为医疗体系的核…...

算法题之将列表的数据复制到另一个列表中

方法一&#xff1a;for循环遍历list1中的每个元素append方法将元素逐个添加到list2列表中 list1 [‘q’,‘efe’,‘reb’,‘yhh’,2]list2 []for i in list1:list2.append(i) print(list2) 方法二&#xff1a;python列表自带copy方法&#xff0c;调用copy方法可以得到原列表的…...

Docker图形化界面工具Portainer最佳实践

前言 安装Portainer 实践-基于Portainer安装redis-sentinel部署 Spring Boot集成Redis Sentinel 前言 本篇文章笔者推荐一个笔者最常用的docker图形化管理工具——Portainer。 安装Portainer 编写docker-compose文件 Portainer部署的步骤比较简单&#xff0c;我们还是以…...

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件 一、RTP流与WAV文件格式二、实现步骤三、伪代码示例四、C语言示例代码五、关键点说明六、总结在Linux操作系统上,从媒体服务器(如Media Server,简称MS)获取RTP(Real-time Transport Protocol)流…...

栈及栈的操作

栈及栈的操作 栈结构 栈是一种只能在一端进行插入或删除操作的数据结构。栈有两个基本的操作:入栈和出栈。 入栈:将一个新的元素放到栈顶。 出栈:从栈顶取出一个元素。栈顶的元素总是最后入栈&#xff0c;需要出栈时&#xff0c;又最先被从栈中取出。栈的操作规则:LIFO(Last…...