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)取得了显著进展,解决了动态开放世界…...
Rust : tokio中select!
关于tokio的select宏,有不少的用途。包括超时和竞态选择等。 关于select宏需要关注,相关的异步条件,会同时执行,只是当有一个最早完成时,会执行“抛弃”和“对应”策略。 说明:对本文以下素材的来源表示感…...
【hackmyvm】hacked靶机wp
tags: HMVrootkitDiamorphine Type: wp 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集2.1. 端口扫描2.2. 目录扫描2.3. 获取参数 3. 提权 靶机链接 https://hackmyvm.eu/machines/machine.php?vmHacked 作者 sml 难度 ⭐️⭐️⭐️⭐️️ 2. 信息收集 2.1. 端口扫描…...
MaixBit k210学习记录
开发背景:Window系统主机,在主机上安装了虚拟机(VirtualBoxUbuntu23.04) 目标实现:在虚拟机(Ubuntu)中,实现对Maix bit(k210)开发板的开发 虚拟机的安装参考…...
Wordperss漏洞 DeDeCMS漏洞
Wordperss漏洞 环境搭建 #执⾏命令 cd /vulhub/wordpress/pwnscriptum docker-compose up -d #靶场地址 http://8.155.7.173:8080/wp-admin/ 注册账号 登录 漏洞一:后台修改模板拿WebShell 步骤一:思路是修改其WP的模板写入⼀句话木马后门并访问其文件…...
如何构建有效的AI Agents:从复杂到简约——深度解读Claude实践总结《Building effective agents》(上)
在人工智能技术日新月异的今天,大语言模型(LLM)已经成为技术创新的热点。 然而,在追逐技术前沿的热潮中,我们是否忽视了工程设计的本质? 作为全球人工智能领域的领军企业之一,Anthropic以其在AI安全和伦理方面的深入…...
git status 耗时
某个git库每次status一下就是半小时起步,gc后还是没有效果,后来排查记录发现某笔记录提交几百G的冗余文件,虽然revert了,但是还是存在库中,遂如下清理: # 查找大文件 git verify-pack -v .git/objects/pac…...
C++进阶重点知识(一)|智能指针|右值|lambda|STL|正则表达式
目录 1智能指针1.shared_ptr1.1 shared_ptr的基本用法使用shared_ptr要注意的问题运用 2.unique_ptr独占的智能指针示例:管理动态内存 3.weak_ptr弱引用的智能指针weak_ptr的基本用法lock 的作用:weak_ptr返回this指针weak_ptr解决循环引用问题weak_ptr使…...
OSCP打靶大冒险之Solidstate:多端口获取信息,shell逃逸,计划任务提权
声明! 学习资源来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...
八股(One Day one)
最近老是看到一些面试的视频,对于视频内部面试所提到的八股文,感觉是知道是什么,但是要说的话,却又不知道该怎么说(要不咋称之为八股文呢),所以就想到写一篇八股文总结的博客,以便进…...
如何快速又安全的实现端口转发【Windows MAC linux通用】
背景 有很多程序是在虚拟机上运行的,返回的url 又是127.0.0.1。在个人电脑上调试需要解决这个问题。端口转发是一个不错的方法 可能的解决办法: 1.修改程序,返回虚拟机的ip (要改代码,换虚拟机还要再改代码…...
LongLLMLingua: 长上下文场景的智能提示压缩框架
LongLLMLingua: 长上下文场景的智能提示压缩框架 一、框架概述 核心目标 解决长上下文场景下的计算成本问题降低处理延迟提升模型性能表现 创新特点 问题感知的粗到细压缩策略文档重排序机制动态压缩比例控制压缩后的子序列恢复策略 二、技术方法详解 粗粒度压缩 (a) 文…...
Django serializers:把ValidationError处理的更优雅
开发中必不可少的会对参数做各种校验,必填、唯一等等,这个时候我们需要在校验失败时抛出友好、清晰的提示。 直接使用serializers做校验,虽然也能抛出自定义的错误提示,但是其信息格式是嵌套,并不适合直接反映在前端页…...
CASA(Carnegie-Ames-Stanford Approach) 模型原理及实践技术
植被作为陆地生态系统的重要组成部分对于生态环境功能的维持具有关键作用。植被净初级生产力(Net Primary Productivity, NPP)是指单位面积上绿色植被在单位时间内由光合作用生产的有机质总量扣除自养呼吸的剩余部分。 专题(一)C…...
【HarmonyOS之旅】ArkTS语法(一)
目录 1 -> 基本UI描述 1.1 -> 基本概念 1.2 -> UI描述规范 1.2.1 -> 无参数构造配置 1.2.2 -> 必选参数构造配置 1.2.3 -> 属性配置 1.2.4 -> 事件配置 1.2.5 -> 子组件配置 2 -> 状态管理 2.1 -> 基本概念 2.2 -> 页面级变量的状…...
【畅购电商】项目总结
目录 1. 电商项目架构图 1.1 系统架构 1.2 技术架构 2. 介绍电商项目 2.1 后台和前台、后端和前端 2.2 Vue全家桶包含哪些技术? 2.3 什么是Vuex? 2.4 什么是SSR 2.5 电商模式是什么? 2.6 枚举类 2.7 elasticsearch相关 2.8 gatew…...
python|利用ffmpeg按顺序合并指定目录内的ts文件
前言: 有的时候我们利用爬虫爬取到的ts文件很多,但ts文件只是视频片段,并且这些视频片段是需要按照一定的顺序合并的,通常ts文件合并输出格式为mp4格式 因此,本文介绍利用python,调用ffmpeg来批量的按自己…...
IP属地和所在地不一致什么意思?怎么换成另外一个地方的
在数字化时代,IP地址作为网络设备的唯一标识符,不仅关乎设备间的通信,还涉及到用户的网络身份与位置信息。然而,有时我们会发现,社交媒体或网络平台上显示的IP属地与用户的实际所在地并不一致。这种不一致现象引发了诸…...
Hive其十,优化和数据倾斜
目录 Hive优化 1、开启本地模式 2、explain分析SQL语句 3、修改Fetch操作 4、开启hive的严格模式【提高了安全性】 5、JVM重用 6、分区、分桶以及压缩 7、合理设置map和reduce的数量 合理设置map数量: 设置合理的reducer的个数 8、设置并行执行 9、CBO优…...
matlab reshape permute
1.reshape 将向量按照顺序重新构建 矩阵,新矩阵 先排完第一列, 再第二列… 2.permute 将向量 维度变换...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
