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

MECD+: 视频推理中事件级因果图推理--VLM长视频因果推理

论文链接:https://arxiv.org/pdf/2501.07227v1

1. 摘要及主要贡献点

摘要:

视频因果推理旨在从因果角度对视频内容进行高层次的理解。然而,目前的研究存在局限性,主要表现为以问答范式执行,关注包含孤立事件和基本因果关系的简短视频片段,缺乏对包含多个相互关联事件视频的全面、结构化因果分析。为了填补这一空白,我们提出了一项新任务和数据集,即多事件因果发现 (MECD)。该任务旨在揭示分布在长时间视频中事件之间的因果关系。给定事件的视觉片段和文本描述,MECD 识别这些事件之间的因果关联,从而推导出一个全面且结构化的事件级视频因果图,解释结果事件为何以及如何发生。为了应对 MECD 的挑战,我们设计了一种受格兰杰因果关系方法启发的全新框架,该框架结合了一种高效的基于掩码的事件预测模型来执行事件格兰杰测试。该模型通过比较前提事件被掩码和未掩码时预测的结果事件来估计因果关系。此外,我们集成了前门调整和反事实推理等因果推理技术,以缓解 MECD 中因果混淆和虚幻因果关系等挑战。同时,我们引入了上下文链推理,以进行更稳健、更通用的推理。实验验证了我们框架在推理完整因果关系方面的有效性,其性能分别比 GPT-4o 和 VideoChat2 高出 5.77%2.70%。进一步的实验表明,因果关系图还可以促进视频问答和视频事件预测等下游视频理解任务。

主要贡献点:

  1. 提出新任务 MECD: 旨在发现长时间视频中事件之间的事件级因果关系,并构建完整的因果图。
  2. 构建新数据集 MECD+: 收集了包含多个事件和复杂因果关系的较长视频,并手动标注了事件对之间的真实因果关系。
  3. 开发新模型 VGCM (Video Granger Causality Model):
    • 核心思想: 基于事件格兰杰测试,通过比较在掩码和未掩码前提事件的情况下对结果事件的预测结果来推断因果关系。
    • 创新点:
      • 多模态处理: 同时处理视频片段和文本描述,最大化信息利用。
      • 因果推理技术: 集成前门调整和反事实推理,以解决因果混淆和虚幻因果关系问题。
        • 前门调整: 补偿或消除相邻桥接事件对因果关系的干扰。
        • 反事实推理: 使用存在性描述和思维链推理来缓解虚幻因果关系问题。
      • 上下文链推理: 在事件因果测试中同时考虑多个前提事件,增强模型对上下文事件的推理能力。
      • 非回归式完整图推理: 提出一种高效的方法,在推理阶段无需对每个事件进行重复掩码操作即可构建完整的因果图。
  4. 实验验证:
    • VGCM 在因果链和完整因果图推理任务中均达到最先进的性能,准确性为 71.28%,平均 SHD 为 3.94
    • 与现有模型相比,VGCM 在因果推理方面表现出色,例如:
      • 比性能最接近的模型在 SHD 上提高了 0.74,在准确性上提高了 2.70%
      • 比 GPT-4o 和 VideoChat2 分别高出 5.77%2.70%
    • 此外,VGCM 在视频问答和事件预测等下游任务中也表现出色。

2. 引入部分总结

视频因果推理 旨在从因果角度理解视频内容,这对于自动驾驶、活动识别、视频监控等应用至关重要。然而,现有视频因果推理任务主要基于问答范式,侧重于发现视频中单一因果关系,存在以下局限性:

  • 推理范围有限: 难以处理包含多个相互关联事件且因果关系复杂的视频场景。
  • 缺乏细粒度事件级推理: 无法深入分析事件之间的因果关系,导致对视频内容的理解不够深入。
  • 无法提供结构化的因果表示: 无法构建完整的因果图,难以全面解释视频中事件之间的关系。

为了解决这些问题,本文提出了一项新任务 多事件因果发现 (MECD),旨在发现长时间视频中事件之间的事件级因果关系,并构建完整的因果图。

3. 多事件因果发现任务 (MECD)

任务定义:

MECD 旨在确定给定视频中任何先前事件与最后一个事件之间是否存在因果关系。

  • 输入:
    • 视频 E \mathcal{E} E,包含按时间顺序排列的 N N N 个事件 E : = { e 1 , … , e N } \mathbb{E}:=\{e_{1},\dots,e_{N}\} E:={e1,,eN}
    • 每个事件 e n = { v n , c n } e_{n} = \{v_{n},c_{n}\} en={vn,cn} 包含一个视频片段 v n v_{n} vn 和相应的字幕 c n c_{n} cn
  • 输出:
    • 关系向量 r = [ r 1 , … , r N − 1 ] \pmb{r}=[r_{1},\dots,r_{N-1}] r=[r1,,rN1],其中 r k r_{k} rk 表示事件 e k e_{k} ek e N e_{N} eN 之间是否存在因果关系。
    • 该设置可推广到任意两个事件之间的因果关系,只需截取视频并将后者视为最后一个事件即可。

数据集构建:

  • 数据来源:
    • 重新组织了 ActivityNet Captions、EgoSchema 和 NExTVideo 数据集中的视频,这些视频包含多个事件和复杂的因果关系。
    • 从中选择了 1,438 个视频(5.6k 个事件)作为 MECD 数据集,其中 1,139 个用于训练,299 个用于测试。
  • 数据清洗:
    • 排除了缺乏因果关系的视频,例如描述多个非因果步骤的手工艺视频。
    • 筛选标准:超过 20% 的标注者认为视频几乎缺乏因果关系,则该视频将被排除。
  • 数据标注:
    • 属性: 持续时间、句子、时间戳和因果关系。
    • 标注过程:
      • 首先使用 GPT-4 API 对事件之间的关系进行初步标注。
      • 然后由五名人工标注者进行细化。
      • 通过交叉标注过程,最终的因果关系由大多数标注者的选择决定。
    • 附加属性: 为测试集引入“完整因果关系”属性,表示任意两个事件之间的所有因果关系,标注和细化方式与“因果关系”属性相同。
  • 数据统计:
    • MECD 数据集主要分析持续时间超过两分钟且包含五个或更多事件的中长视频。
    • 事件之间因果关系和非因果关系的比例大致平衡,且相邻事件之间存在因果关系的可能性更高。

图 1: MECD 任务示意图

4. 方法部分

4.1 视频格兰杰因果模型 (VGCM)

核心思想: 基于事件格兰杰测试,通过比较在掩码和未掩码前提事件的情况下对结果事件的预测结果来推断因果关系。

模型架构:

VGCM 是一种多模态 Transformer 结构,包含以下组件:

  • 视频编码器: 预训练于动作识别任务,用于提取视频片段的特征。
  • 字幕编码器: 用于提取字幕的特征。
  • 多模态解码器: 共享权重,用于融合视频和文本信息,并进行跨模态推理。
  • 关系头: 包含语义查询模块和自增强模块,用于推理事件之间的因果关系。
    • 语义查询模块: 使用交叉注意力机制将未掩码事件和结果事件的特征进行融合。
    • 自增强模块: 对融合后的特征进行自注意力计算,以增强特征表示。
  • 辅助相似性测量: 测量未掩码和掩码事件预测结果之间的相似性,作为关系头输出信息的补充。

图 2: VGCM 模型架构

工作流程:

  1. 数据预处理:
    • 将视频片段和字幕分别编码为特征向量。
    • 将未掩码事件集 E p \mathbb{E}^{p} Ep 和掩码事件集 E k m \mathbb{E}_{k}^{m} Ekm 分别输入到视频编码器和字幕编码器中。
  2. 多模态融合:
    • 将视频和文本特征输入到多模态解码器中,生成输出特征 O p O^{p} Op O k m O_{k}^{m} Okm
    • 解码器利用未掩码前提事件提供的上下文信息,对结果事件进行预测。
  3. 因果关系推理:
    • O p O^{p} Op 输入到字幕头进行监督事件预测。
    • O p O^{p} Op O k m O_{k}^{m} Okm 输入到关系头进行因果关系推理。
    • 将结果事件 e N e_{N} eN 编码为特征 F N {\pmb F}_{N} FN 和输出 O N {\cal O}_{N} ON,并将其聚合到关系头中以进行推理。
    • 通过交叉推理层 g r g_{r} gr 进行进一步交互,并测量 O p O^{p} Op O k m O_{k}^{m} Okm 之间的辅助相似性。
  4. 损失函数:
    • 重建损失: 包括字幕损失 L C \mathcal{L}_{C} LC 和视觉重建损失 L V {\mathcal{L}}_{V} LV,用于确保模型能够准确预测结果事件。
    • 因果关系损失 L R \mathcal{L}_{R} LR: 对输出关系 r ^ k \boldsymbol{{\hat{r}}_{k}} r^k 进行监督。
    • 语义相似性损失 L S \mathcal{L}_{S} LS: 确保在存在或不存在非因果前提事件的情况下,结果事件预测的语义相似性。
4.2 因果推理方法

因果混淆: 当某些中间事件被掩码时,原有的因果关系会受到影响。VGCM 通过以下方法解决:

  • 前门调整: 补偿缺失的因果效应,例如 e k − 1 e_{k-1} ek1 e N e_{N} eN 的因果效应。
  • 反事实推理: 消除冗余的因果效应,例如 e k + 1 e_{k+1} ek+1 e N e_{N} eN 的因果效应。

虚幻因果关系: 包括虚幻的时间因果关系和存在因果关系。VGCM 通过以下方法解决:

  • 思维链推理: 利用 GPT-4 API 提供的思维链 T c o t [ e k − 1 : e N ] T_{c o t[e_{k-1}:e_{N}]} Tcot[ek1:eN] 来引导模型进行逻辑推理,避免对时间相关性的注意力偏差。
  • 存在性描述: 使用 GPT-4 API 提取事件中的对象,并将其组织成句子 c k 0 c_{k}^{0} ck0,以缓解虚幻存在因果关系问题。

5. 实验部分

5.1 实验设置

模型实现细节:

  • 编码器: 基于 Videobert 构建,包含视频编码器、字幕编码器和多模态视频解码器。
  • 参数数量: 仅 144M,远小于 7B VideoLLMs。
  • 超参数设置: λ C , λ R , λ V , λ S \lambda_{C},\,\lambda_{R},\,\lambda_{V},\,\lambda_{\mathcal{S}} λC,λR,λV,λS 分别设置为 1.0, 4.0, 0.25, 0.05。
  • 输入长度限制: 字幕、思维链和存在性描述的最大输入长度均为 50。
  • 预训练: 在 ActivityNet 数据集上进行动作识别任务预训练,并使用 ActivityNet Captioning 数据集进行密集视频字幕任务预训练。

比较模型:

  • 基线模型: Videobert
  • 多模态基础模型: CLIP-L、SIGLIP、VAR
  • 大型语言模型 (LLM): Mixtral-8x22B-Instruct、GPT-4、Gemini-Pro 等
  • 图像 LLM 和视频 LLM: GPT4-o、GeminiPro、VideoLLaVA、VideoChat2 等

训练策略:

  • 少样本学习 (In-Context Learning): 对 LLM 和图像 LLM 进行评估。
  • 强微调: 对视频 LLM 和所有多模态基础模型进行评估。
5.2 主要评价指标
  • 因果链推理准确性: 评估模型对与结果事件相关的输出因果关系链的 top-1 准确性。
    • Neg: 模型预测不存在因果关系的准确性。
    • Pos: 模型预测存在因果关系的准确性。
  • 结构汉明距离 (SHD): 评估模型在因果推理方面的泛化能力。SHD 测量完整因果图之间的匹配程度,通过计算错误因果关系的数量之和来表示。较低的 SHD 值表示更好的性能。
5.3 主要实验结果

总体表现:

  • **VGCM 在因果链和因果图推理任务中均达到最先进的性能,准确性为 71.28%,平均 SHD 为 3.94
  • 与现有模型相比,VGCM 在因果推理方面表现出色,例如:
    • 比性能最接近的模型在 SHD 上提高了 0.74,在准确性上提高了 2.70%
    • 比 GPT-4o 和 VideoChat2 分别高出 5.77%2.70%

表 1: 主要结果

详细分析:

  • VGCM 的消融研究:
    • 因果推理方法: 前门调整和反事实干预均能提高模型的推理能力。
      • 前门调整缓解了时间虚幻因果关系问题。
      • 反事实干预与存在性描述相结合,使模型能够更关注因果关系而非简单的语义信息。
    • 上下文链推理: 增强了模型的整体因果推理能力,尽管对因果链发现的准确性没有显著提高。
    • 输入模态: 视觉信息对因果发现任务的影响更大,即使在 80% 的文本或视觉信息被掩码的情况下,VGCM 仍然能够很好地推断因果关系。

图 3: 输入模态实验

  • 视频 LLM 的性能:

    • 在上下文学习范式中,视频 LLM 的表现优于 LLM 和图像 LLM 的表现,这可能归因于其包含与 MECD 数据集因果方面相似的预训练数据。
    • 视频 LLM 的 Pos 和 Neg 指标之间的差距较小,这可能是由于幻觉的减少以及视觉信息的引入缓解了字幕模糊性的影响。
    • 在微调范式中,视频 LLM 的表现有所提高,但仍然低于 VGCM 的表现。
  • LLM 和图像 LLM 的性能:

    • 专有 LLM GPT-4 和 Gemini-Pro 在所有 LLM 中表现最佳,但仍然受到幻觉的影响,以及将主观情感与客观规律混为一谈。
    • 专有图像 LLM 和视频 LLM 的性能优于开源图像 LLM 和视频 LLM 的性能。
  • 人类的表现: 十名志愿者的平均表现达到 87.19%,其中视觉信息作为输入时表现更好。

表 2: 虚幻因果关系测试

  • 虚幻测试: LLM 和图像 LLM 在判断具有条件相关性或时间相关性事件之间的因果关系时表现不佳,而视频 LLM 和 VGCM 的表现则有所降低。

图 4: 虚幻测试可视化示例

5.4 下游任务评估
  • 视频问答 (VQA): 当用 VGCM 推理出的因果关系提示 MiniGPT4-video 时,其回答准确性提高了 9.04%
    • 表明 VGCM 能够为视频提供准确的因果感知,从而显著提高相关视频推理任务的性能。

图 5: 下游视频问答的可视化

  • 事件预测: 当用 VGCM 输出因果图提示 MiniGPT4-video 时,其事件预测准确性提高了 22.56%
    • 表明 VGCM 能够增强相关事件预测任务的性能。

图 6: 下游事件预测的可视化

6. 结论

本文提出了一项新任务 MECD,并构建了相应的数据集 MECD+,旨在促进视频中事件级因果图推理的发展。同时,本文提出了第一个视频因果发现模型 VGCM,该模型基于事件格兰杰测试,并集成了先进的因果推理技术,以解决虚幻和混淆因素等问题。实验结果表明,VGCM 在因果推理方面优于现有模型,展示了其卓越的推理能力。

相关文章:

MECD+: 视频推理中事件级因果图推理--VLM长视频因果推理

论文链接:https://arxiv.org/pdf/2501.07227v1 1. 摘要及主要贡献点 摘要: 视频因果推理旨在从因果角度对视频内容进行高层次的理解。然而,目前的研究存在局限性,主要表现为以问答范式执行,关注包含孤立事件和基本因…...

pycharm+pyside6+desinger实现查询汉字笔顺GIF动图

一、引言 这学期儿子语文期末考试有一道这样的题目: 这道题答案是B,儿子做错了选了C。我告诉他“车字旁”和“车”的笔顺是不一样的,因为二者有一个笔画是不一样的,“车字旁”下边那笔是“提”,而“车”字是“横”&am…...

拟合算法 (matlab工具箱)

拟合算法: 1线性最小二乘法拟合 使用matlab进行求解 拟合优度:R^2 拟合优度的matlab代码: 2,Matlab工具箱的教学 一些函数: 拟合算法: 插值算法中,得到的多项式f(x)要经过所有样本点。但是如果样本点太多&#…...

联想电脑怎么用u盘装系统_联想电脑用u盘装win10系统教程

联想电脑怎么重装系统?在当今科技发展迅猛的时代,联想电脑已经成为了人们生活中不可或缺的一部分。然而,随着时间的推移,我们可能会遇到一些问题,例如系统崩溃或者需要更换操作系统。这时,使用U盘来重新安装…...

WPF2-在xaml为对象的属性赋值

1. AttributeValue方式 1.1. 简单属性赋值1.2. 对象属性赋值 2. 属性标签的方式给属性赋值3. 标签扩展 (Markup Extensions) 3.1. StaticResource3.2. Binding 3.2.1. 普通 Binding3.2.2. ElementName Binding3.2.3. RelativeSource Binding3.2.4. StaticResource Binding (带参…...

什么是报文的大端和小端,有没有什么记忆口诀?

在计算机科学中,**大端(Big-Endian)和小端(Little-Endian)**是两种不同的字节序(即多字节数据在内存中的存储顺序)。理解这两种字节序对于网络通信、文件格式解析以及跨平台编程等非常重要。 1…...

【2024 博客之星评选】请继续保持Passion

我尝试复盘自己2024年走的路,希望能给诸君一些借鉴。 文章目录 回头望感想与收获成长与教训今年计划感恩一些体己话 回头望 回望我的2024年,年初拿高绩效,但感觉逐渐被公司一点点剥离出中心;年中一直在学习防患于未然&#xff1b…...

网络通信---MCU移植LWIP

使用的MCU型号为STM32F429IGT6,PHY为LAN7820A 目标是通过MCU的ETH给LWIP提供输入输出从而实现基本的Ping应答 OK废话不多说我们直接开始 下载源码 LWIP包源码:lwip源码 -在这里下载 ST官方支持的ETH包:ST-ETH支持包 这里下载 创建工程 …...

Redis源码-redisObject

解释 redis中,所有的数据类型最终都转换成了redisObject,该结构体的定义,在文件server.h中。 参数说明 参数名说明unsigned type:4对象对应的数据类型unsigned encoding:4对象的编码方式unsigned lru:LRU_BITSLRU算法清空对象&#xff0c…...

YOLOv10-1.1部分代码阅读笔记-tuner.py

tuner.py ultralytics\engine\tuner.py 目录 tuner.py 1.所需的库和模块 2.class Tuner: 1.所需的库和模块 # Ultralytics YOLO 🚀, AGPL-3.0 license# 此模块提供用于对象检测、实例分割、图像分类、姿势估计和多对象跟踪的 Ultralytics YOLO 模型的超参数调…...

【数据结构】二分查找

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...

iOS-支付相关

支付宝支付 #import <AlipaySDK/AlipaySDK.h> //orderStrAliPay为服务端传的订单信息 //fromScheme为应用配置的schemeUrl标识&#xff0c;用户支付包支付成功后跳转会本应用内 //callback回调需要在- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url 中调…...

ubuntu16.04 VSCode下cmake+clang+lldb调试c++

VSCode下cmakeclanglldb调试c Ubuntu16.04 安装OpenCV4.5.4 文章目录 VSCode下cmakeclanglldb调试c1.安装clangclangdcmake2、打开VSCode&#xff0c;安装扩展插件3、编译4、Debug4.1 创建launch.json。4.2 配置setting.json 5. vscode安装配置clang-format插件5.1 Linux系统安…...

学Python的人…

学Python的人… 一、Python能干什么&#xff1f; 1.爬虫&#xff1a;前几年&#xff0c;深度学习还没发展起来的时候&#xff0c;书店里Python就和爬虫挂钩&#xff0c;因为Python写爬虫确实方便。 2.数据分析&#xff1a;Python有各种的数据分析库可以方便使用&#xff0…...

GDB相比IDE有什么优点

GDB(GNU Debugger)相比于集成开发环境(IDE)具有一些独特的优点,主要体现在其灵活性、可定制性和低级控制能力。具体来说,GDB有以下几个优点: 1. 轻量级且无依赖 GDB是一个命令行工具,不依赖于任何复杂的图形界面或大型库,这使得它非常适合在资源受限的环境中使用,比…...

Docker 镜像加速的配置

解决拉取镜像报错&#xff1a;Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while 在使用 Docker 过程中&#xff0c;拉取镜像的速度常常会受到网络状况的影响&#xff0c;尤其是在国内网络环境下&#xff0c;…...

分布式多卡训练(DDP)踩坑

多卡训练最近在跑yolov10版本的RT-DETR&#xff0c;用来进行目标检测。 单卡训练语句&#xff08;正常运行&#xff09;&#xff1a; python main.py多卡训练语句&#xff1a; 需要通过torch.distributed.launch来启动&#xff0c;一般是单节点&#xff0c;其中CUDA_VISIBLE…...

MFC程序设计(一)MFC入门

本MFC教程使用VS2022实现 MFC基本概念 微软基础类库&#xff08;英语&#xff1a;Microsoft Foundation Classes&#xff0c;简称MFC&#xff09;是一个微软公司提供的类库&#xff08;class libraries&#xff09;&#xff0c;以C类的形式封装了Windows API&#xff0c;并且…...

swift Actor并发处理

preconcurrency 使用 /*在 Swift 5.5 引入并发模型后&#xff0c;编译器会对潜在的数据竞争和不安全的并发代码发出警告或错误。然而&#xff0c;某些旧代码或第三方库可能尚未完全适配这些新规则。preconcurrency 提供了一种临时解决方案&#xff0c;允许你在不修改代码的情况…...

网络编程 | UDP套接字通信及编程实现经验教程

1、UDP基础 传输层主要应用的协议模型有两种&#xff0c;一种是TCP协议&#xff0c;另外一种则是UDP协议。在上一篇博客文章中&#xff0c;已经对TCP协议及如何编程实现进行了详细的梳理讲解&#xff0c;在本文中&#xff0c;主要讲解与TCP一样广泛使用了另一种协议&#xff1a…...

Hadoop•搭建完全分布式集群

听说这里是目录哦 一、安装Hadoop&#x1f955;二、配置Hadoop系统环境变量&#x1f96e;三、验证Hadoop系统环境变量是否配置成功&#x1f9c1;四、修改Hadoop配置文件&#x1f36d;五、分发Hadoop安装目录&#x1f9cb;六、分发系统环境变量文件&#x1f368;七、格式化HDFS文…...

代码中使用 Iterable<T> 作为方法参数的解释

/*** 根据课程 id 集合查询课程简单信息* param ids id 集合* return 课程简单信息的列表*/ GetMapping("/courses/simpleInfo/list") List<CourseSimpleInfoDTO> getSimpleInfoList(RequestParam("ids") Iterable<Long> ids); 一、代码解释&…...

web前端1--基础

&#xff08;时隔数月我又来写笔记啦~&#xff09; 1、下载vscode 1、官网下载&#xff1a;Visual Studio Code - Code Editing. Redefined 2、步骤&#xff1a; 1、点击同意 一直下一步 勾一个创建桌面快捷方式 在一直下一步 2、在桌面新建文件夹 拖到vscode图标上 打开v…...

关于opensips的帮助命令的解释

opensips -help以下是 opensips 命令及其选项的中文解释&#xff08;基于 3.6.0-dev 版本&#xff09;&#xff1a; 命令用法 opensips -l 地址 [-l 地址 ...] [选项]选项说明 选项功能-f 文件指定配置文件&#xff08;默认为 /usr/local//etc/opensips/opensips.cfg&#x…...

你还在用idea吗

从VIM、Emacs&#xff0c;到eclipse、Jetbrains, 再到VSCode&#xff0c;过去的三十年时间&#xff0c;出现了这三代IDE产品。现在属于AI的时代来了&#xff0c;最新一代的产品像Cursor、Windsurf&#xff0c;就在昨天&#xff0c;字节跳动发布了最新的IDE&#xff0c;就叫Trae…...

安装wxFormBuilder

1. 网址&#xff1a;GitHub - wxFormBuilder/wxFormBuilder: A wxWidgets GUI Builder 2. 安装MSYS2 MSYS2可以在GitHub的内容中找到&#xff0c;这个版本是32位64位的 3. 在程序中打开MINGW64 shell 4. 在MSYS2 MINGW64 shell中输入 pacman -Syu pacman -S ${MINGW_PACKAGE…...

【大数据2025】Hadoop 万字讲解

文章目录 一、大数据通识大数据诞生背景与基本概念大数据技术定义与特征大数据生态架构概述数据存储数据计算与易用性框架分布式协调服务和任务调度组件数仓架构流处理架构 二、HDFSHDFS 原理总结一、系统架构二、存储机制三、数据写入流程四、心跳机制与集群管理 安全模式&…...

HTML语言的计算机基础

HTML语言的计算机基础 引言 在当今信息技术迅猛发展的时代&#xff0c;网页设计和开发已成为计算机科学中不可或缺的一部分。而HTML&#xff08;超文本标记语言&#xff09;作为构建网页的基础语言&#xff0c;承载着网页上所有内容的结构&#xff0c;帮助开发者创建和展示信…...

Cannot resolve symbol ‘XXX‘ Maven 依赖问题的解决过程

一、问题描述 在使用 Maven 管理项目依赖时&#xff0c;遇到了一个棘手的问题。具体表现为&#xff1a;在 pom.xml 文件中导入了所需的依赖&#xff0c;并且在 IDE 中导入语句没有显示为红色&#xff08;表示 IDE 没有提示依赖缺失&#xff09;&#xff0c;但是在实际使用这些依…...

Swift语言的函数实现

Swift语言函数实现详解 引言 Swift是一种强类型、泛型编程的现代编程语言&#xff0c;广泛应用于iOS和macOS开发。函数是Swift编程中的基本构建块之一&#xff0c;通过函数可以将代码进行模块化&#xff0c;实现重用性和可读性。本篇文章将系统地介绍Swift中的函数&#xff0…...

除了基本的事件绑定,鸿蒙的ArkUI

鸿蒙操作系统&#xff08;HarmonyOS&#xff09;是由华为技术有限公司开发的分布式操作系统&#xff0c;旨在为多种智能设备提供一个统一的操作平台。它不仅适用于智能手机&#xff0c;还适用于平板电脑、智能手表、智能电视等物联网设备。为了使开发者能够更加便捷地创建跨设备…...

数据分析及应用:经营分析中的综合指标解析与应用

目录 1. 市场份额(Market Share) 2. 客户获取成本(Customer Acquisition Cost, CAC) 3. 客户生命周期价值(Customer Lifetime Value, CLV) 4. 客户留存率(Customer Retention Rate, CRR) 5. 净推荐值(Net Promoter Score, NPS) 6. 转化率(Conversion Rate) …...

Mac开启任何来源安装配置环境变量

目录 开启任何来源配置环境变量退出保存时如果没有权限修改文件权限拓展——.bash_profile和.zshrc 开启任何来源 sudo spctl --master-disable#打开软件时提示文件损坏 sudo xattr -r -d com.apple.quarantine 进入访达应用程序拖拽应用到终端配置环境变量 cd ~ vi ~/.bash…...

UI自动化设计模式--POM

在自动化测试中&#xff0c;Page Object Model&#xff08;POM&#xff09;设计方式是一种常用的设计模式&#xff0c;它将页面元素和操作封装成独立的类&#xff0c;提高了测试代码的可读性、可维护性和可复用性。以下是关于POM设计方式的详细介绍&#xff1a; 基本概念 POM…...

(三)线性代数之二阶和三阶行列式详解

在前端开发中&#xff0c;尤其是在WebGL、图形渲染、或是与地图、模型计算相关的应用场景里&#xff0c;行列式的概念常常在计算变换矩阵、进行坐标变换或进行图形学算法时被使用。理解二阶和三阶行列式对于理解矩阵运算、旋转、平移等操作至关重要。下面&#xff0c;我将结合具…...

postman接口测试工具详解

一、前言 Postman是一款广泛使用的API测试工具&#xff0c;适用于开发人员和测试人员。它提供了直观的用户界面&#xff0c;能够方便地进行API请求、响应验证、自动化测试等操作。本文将详细介绍Postman的功能和用法&#xff0c;帮助用户高效地进行API测试。 二、Postman的主…...

Golang 中强大的重试机制,解决瞬态错误

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

【C语言系列】深入理解指针(2)

一、数组名的理解 上一篇文章中我们写过一个这样的代码&#xff1a; int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0];这里使用&arr[0] 的方式拿到了数组第⼀个元素的地址&#xff0c;但是其实数组名本来就是地址&#xff0c;而且是数组首元素的地址&#xff…...

【网络原理】万字详解 HTTP 协议

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. HTTP 前置知识1.1 HTTP 是什么1.2 HTPP 协议应用场景1.3 HTTP 协议工作过程 2. HTTP 协议格式2.1 fiddler…...

WIFI连接与通信

ESP32-S3 支持 2.4 GHz 的 Wi-Fi 4&#xff08;802.11n&#xff09;标准&#xff0c;提供高达 150 Mbps 的数据传输速率。它支持 STA&#xff08;Station&#xff09;模式、AP&#xff08;Access Point&#xff09;模式和 Wi-Fi 直连&#xff08;Wi-Fi Direct&#xff09;模式&…...

Elixir语言的数据库编程

Elixir语言的数据库编程 介绍 Elixir是一种基于Erlang虚拟机&#xff08;BEAM&#xff09;的函数式编程语言&#xff0c;特别适用于构建可扩展和可维护的系统。它结合了Erlang的卓越并发特性和Ruby的易用性&#xff0c;因此在Web开发和实时应用中越来越受到欢迎。伴随着Elixi…...

python中Mako用法

Mako 是一个轻量级的 Python 模板库&#xff0c;它以其高效的代码生成和灵活的表达能力著称&#xff0c;常用于 Web 开发和静态文件生成。以下是对 Mako 的核心 API介绍。 1. 安装 Mako 首先安装 Mako&#xff1a; pip install mako2. 基本用法 Mako 的核心在于 Template 类…...

SMS4J - 一个聚合各种短信API商的工具

众所周知&#xff0c;在我们日常的项目开发中&#xff0c;短信验证码发送是一个必不可少的环节。 特别是如今手机互联网时代&#xff0c;基本所有东西都跟手机强绑定&#xff0c;所有的安全验证都离不开验证码这一环节。 所以对于一个系统来说&#xff0c;发送短信验证码成为…...

BEVFusion论文阅读

1. 简介 融合激光雷达和相机的信息已经变成了3D目标检测的一个标准&#xff0c;当前的方法依赖于激光雷达传感器的点云作为查询&#xff0c;以利用图像空间的特征。然而&#xff0c;人们发现&#xff0c;这种基本假设使得当前的融合框架无法在发生 LiDAR 故障时做出任何预测&a…...

【总结盘点类】2024,一场关于海量数据治理以及合理建模的系列写作

目录 1.今年的创作路线 2.先说第一条线 2.1.由日志引出的海量文本数据存储和分析问题 2.2.监控以及监控的可视化 2.3.数据量级再往上走牵扯出了大数据 2.4.由大数据牵扯出的JAVA线程高级内容 3.第二条线&#xff0c;也是2025要继续的主线 1.今年的创作路线 今年的写作内…...

【25考研】考清华的软件工程专业的研究生需要准备什么?

清华软件复试竞争一样很激烈&#xff01;建议同学认真复习&#xff01; 关于项目的注意事项先来一些总结&#xff1a; 千万别照抄开源项目 开源项目是一个很好的参考&#xff0c;但直接搬过来就没啥意义啦。我们可以根据开源项目学习它的技术架构和关键点&#xff0c;然后结…...

网络编程-UDP套接字

文章目录 UDP/TCP协议简介两种协议的联系与区别Socket是什么 UDP的SocketAPIDatagramSocketDatagramPacket 使用UDP模拟通信服务器端客户端测试 完整测试代码 UDP/TCP协议简介 两种协议的联系与区别 TCP和UDP其实是传输层的两个协议的内容, 差别非常大, 对于我们的Java来说, …...

EXCEL的一些用法记录

按某个分隔符进行拆分多列 【数据】- 【分列】 多列调整成多行 复制 - 粘贴 - 选择【转置】 部分内容替换 SUBSTITUTE()函数 &#xff0c;固定内容 加“”...

不使用 JS 纯 CSS 获取屏幕宽高

前言 在现代前端开发中&#xff0c;获取屏幕的宽度和高度通常依赖于 JavaScript。然而现代 CSS 也可以获取到屏幕的宽高&#xff0c;通过自定义属性&#xff08;CSS Variables&#xff09;和一些数学函数来实现这一目标。本文将详细解析如何使用 CSS 的 property 规则和一些数…...

Node.js 完全教程:从入门到精通

Node.js 完全教程&#xff1a;从入门到精通 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;允许开发者在服务器端使用 JavaScript。它的非阻塞 I/O 和事件驱动架构使得 Node.js 非常适合于构建高性能的网络应用。本文将详细介绍 Node.js 的安装、基本语…...