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

AI多模态技术介绍:视觉语言模型(VLMs)指南

本文作者:AIGCmagic社区 刘一手

AI多模态全栈学习路线

在本文中,我们将探讨用于开发视觉语言模型(Vision Language Models,以下简称VLMs)的架构、评估策略和主流数据集,以及该领域的关键挑战和未来趋势。通过了解这些基础方面,读者可以深入了解如何在包括医疗、机器人和媒体等行业中应用VLMs,以创建更复杂且具备上下文感知能力的人工智能系统。

曾经人工智能能够像人类一样有效地理解视觉和文本线索的想法,似乎遥不可及且难以想象。

然而随着多模态AI的出现,我们正在经历一场革命。AI现在可以同时理解多种模态,如文本、图像、语音、面部表情和手势等,以理解我们周围的世界。处理多种模态的能力为AI应用打开了各种途径。

多模态AI的一个主流的应用是视觉语言模型(VLMs)。这些模型可以同时处理和理解语言(文本)和视觉(图像)的模态,以执行高级的视觉语言任务,如视觉问答(VQA)、图像描述和文本到图像搜索。在本文中我们将介绍:

  • VLMs的主流架构;
  • VLMs的评估方法;
  • VLMs的数据集;
  • VLM的关键挑战、主要应用和未来趋势;

一、VLMs的一般定义

视觉语言模型(VLM)是视觉模型与自然语言模型的融合。它接收图像及其对应的文本描述作为输入,并学习将两种模态的知识关联起来。模型的视觉部分捕捉图像的空间特征,而语言模型则编码文本信息。

来自两种模态的数据,包括检测到的对象、图像的空间布局和文本嵌入,都会相互映射。例如,如果图像中有一只鸟,模型会学习将其与文本描述中的相关关键词关联。

通过这种方式,模型学会理解图像,并将知识转换为自然语言(文本),反之亦然。

VLM的训练

构建VLM涉及预训练基础模型和零样本学习。可以使用迁移学习技术,如知识蒸馏,对模型进行微调,以适应更具体的下游任务。

这些是相对简单的技术,需要较小的数据集和较少的训练时间,同时保持良好的效果。

现代框架则使用各种技术来获得更好的结果,例如:

  • 对比学习。
  • 掩蔽语言-图像建模。
  • 使用Transformer的编码器-解码器模块等。

这些架构能够学习各种模态之间的复杂关系,并提供最先进的结果。接下来,我们将详细讨论这些内容。


二、VLMs的主流架构

让我们来看看一些VLM架构,以及主流模型如CLIP、Flamingo和VisualBert等所使用的学习技术。

2.1 对比学习

对比学习是一种通过理解数据点之间差异来学习的方法。该方法计算数据实例之间的相似度得分,并旨在最小化对比损失。在半监督学习中尤为有用,因为只有少量标记样本指导优化过程,以标记未见过的数据点。

对比学习

 

理解猫的外形特征有多种方法,其中一种是将其与相似的猫图像和狗图像进行对比。对比学习模型通过识别面部结构、体型大小和毛发等特征来区分猫和狗。这些模型能够判断哪张图像与原始图像(称为"锚点")更相似,从而预测其类别。

CLIP是一个运用对比学习的典型模型。它使用文本和视觉编码器来计算文本与图像嵌入之间的相似度。为实现零样本预测,CLIP遵循以下三个步骤:

  • 在预训练阶段同时训练文本和图像编码器,学习图像-文本对的关系
  • 将训练数据集中的类别转换为文字描述
  • 对输入图像进行零样本预测时,估算最匹配的文字描述
CLIP预训练过程
CLIP推理过程

2.2 PrefixLM

PrefixLM 是一种主要用于模型预训练的自然语言处理学习技术。它输入部分文本(前缀),并学习预测序列中的下一个词。在视觉语言模型中,PrefixLM 使模型能够基于图像及其对应的前缀文本来预测下一个词序列。它利用视觉 transformer(ViT)将图像划分为一维的图像块序列,每个图像块代表一个局部图像区域。

随后,模型对处理后的图像块应用卷积或线性投影,以生成上下文化的视觉嵌入。对于文本模态,模型将与图像块相关的文本前缀转换为词元嵌入。transformer 的编码器-解码器模块接收视觉和词元嵌入。在这个过程中,模型学习嵌入之间的关系。

SimVLM 是一个采用 PrefixLM 学习方法的流行架构。相比其前身,它具有更简单的 transformer 架构,在多个基准测试中取得了更好的结果。

它使用 transformer 编码器来学习图像-前缀对,并使用 transformer 解码器来生成输出序列。该模型还展示了良好的泛化能力和零样本学习能力。

SimVLM 架构

同样地,VirTex 使用卷积神经网络来提取图像特征,并使用带有 transformer 的文本处理模块来管理文本前缀。通过向文本处理模块输入图像-文本对,你可以端到端地训练模型来预测正确的图像描述。

VirTex 架构

 2.3 Frozen PrefixLM

虽然 PrefixLM 技术需要从头开始训练视觉和文本编码器,但冻结 PrefixLM 允许你使用预训练网络,只更新图像编码器的参数。

例如,下面的架构展示了如何使用预训练语言模型和视觉编码器来实现冻结机制。文本编码器可以来自任何大型语言模型(LLM),视觉编码器也可以是预训练的视觉基础模型。

你可以微调图像编码器,使其图像表示与文本嵌入对齐,从而使模型能够做出更好的预测。

Frozen PrefixLM 架构

 Flamingo 的架构采用了更先进(SOTA)的方法。它使用类似 CLIP 的视觉编码器和一个名为 Chinchilla 的大型语言模型。通过保持 LLM 固定不变,你可以在文本之间交错插入图像来训练视觉编码器。

视觉编码器通过 Perceiver Sampler 处理图像。这种技术可以实现更快的推理速度,使 Flamingo 特别适合少样本学习。

Flamingo 架构

2.4 使用交叉注意力的多模态融合

这种方法通过添加交叉注意力层,利用预训练 LLM 的编码器进行视觉表示学习。VisualGPT 是一个主要的示例,它允许快速调整 LLM 的预训练编码器权重以适应视觉任务。

VisualGPT 架构

研究人员从输入图像中提取相关对象,并将它们输入到视觉编码器中。生成的视觉表示随后被输入到解码器中,并根据预训练的 LLM 进行权重初始化。解码器模块通过自恢复激活单元(SRAU)来平衡视觉和文本信息。

SRAU 方法避免了梯度消失的问题,这是深度学习中的一个常见问题,即由于梯度过小导致模型权重无法更新。因此,VisualGPT 的性能优于多个基准模型,如普通 transformer、注意力上的注意力(AoA)transformer 和 X-transformer。

2.5 掩码语言建模(MLM)和图像-文本匹配(ITM)

MLM 在 BERT 等语言模型中的工作原理是通过掩盖或隐藏文本序列的一部分,并训练模型来预测缺失的文本。ITM 则涉及预测句子 Y 是否跟随句子 X。

可以将 MLM 和 ITM 技术应用于视觉任务。下图展示了在 COCO 数据集上训练的 VisualBERT 架构。它通过引入图像序列和带掩码的文本描述来增强 MLM 过程。基于视觉嵌入,其目标是预测缺失的文本。同样地,ITM 预测某个描述文本是否与图像匹配。

VisualBERT 架构

2.6 无需训练的方法

你可以直接使用大规模预训练的视觉-语言模型,而无需任何微调。例如,MAGIC 和 ASIF 是免训练框架,旨在预测与输入图像紧密对齐的文本描述。

MAGIC 使用基于 CLIP 生成的图像嵌入的专门评分来指导语言模型的输出。使用这个评分,LLM 生成与图像语义紧密对齐的文本嵌入,使模型能够以零样本方式执行多模态任务。

ASIF 使用相似图像具有相似描述的理念。模型计算训练数据集中查询图像和候选图像之间的相似度。接下来,它比较查询图像嵌入与相应候选图像的文本嵌入。

然后,它预测嵌入与查询图像最相似的描述,从而实现与 CLIP 和 LiT 等模型相当的零样本性能。

ASIF 预测策略

2.7 知识蒸馏

这种技术涉及将知识从一个训练良好的大型教师模型转移到参数较少的轻量级学生模型。这种方法允许研究人员从更大的预训练模型中训练视觉语言模型(VLM)。

例如,ViLD 是一个使用知识蒸馏方法开发的流行 VLM。该模型使用预训练的开放词汇图像分类模型作为教师来训练两阶段检测器(学生)。

该模型将文本编码器的文本嵌入与图像嵌入进行匹配。

ViLD 架构

 知识蒸馏将知识从图像编码器转移到骨干模型,以自动生成区域嵌入。在推理过程中,只有骨干模型生成区域嵌入,并将其与未见过的文本嵌入进行匹配。

其目标是根据文本描述在图像中为对象绘制正确的边界框。


三、VLMs的评估方法

VLM 验证涉及评估图像和文本数据之间关系的质量。对于图像描述模型来说,这意味着将生成的描述与真实描述进行比较。

你可以使用各种基于 n-gram 的自动评估策略来比较预测标签的准确性、语义和信息精确度。以下是几个关键的 VLM 评估指标:

  • BLEU:双语评估替补(BLEU)指标最初是为评估机器翻译任务而提出的。它通过考虑候选句子中有多少词出现在参考句子中,来计算目标文本相对于参考文本(真实值)的精确度。
  • ROUGE:面向召回率的摘要评估替补(ROUGE)通过考虑参考句子中有多少词出现在候选句子中来计算召回率。
  • METEOR:显式排序翻译评估指标(METEOR)计算精确度和召回率的调和平均值,对召回率给予更大的权重,并将其与惩罚项相乘。该指标是对其他仅使用精确度或召回率的指标的改进,因为它结合了两者的信息来提供更好的评估。
  • CIDEr:基于共识的图像描述评估(CIDEr)通过使用 TF-IDF 分数计算参考句子和目标句子之间的平均相似度,将目标句子与一组人工句子进行比较。

四、VLMs的数据集

既然你已经了解了视觉语言模型(VLM)相关的评估指标,了解如何为这些模型整理数据集也是至关重要的。一个合适的数据集为 VLM 的训练和验证提供了肥沃的土壤,并且在决定模型在各种任务中的表现方面起着关键作用。

收集 VLM 的训练数据比传统 AI 模型更具挑战性,因为它涉及多种数据模态的收集和质量保证。Encord Index 通过提供全面的数据管理和整理解决方案来简化这个过程。以下是几个结合图像和文本数据用于多模态训练的数据集:

LAION-5B:实践者使用 LAION-5B 数据集来构建大型预训练 VLM。该数据集包含超过 50 亿个由 CLIP 生成的图像-文本对,包含英语和其他语言的描述,适用于多语言领域。

PMD:公共模型数据集(PMD)最初出现在 FLAVA 论文中,包含 700 亿个图像-文本对。它是从其他大规模数据集(如 COCO、Conceptual Captions(CC)、RedCaps 等)收集而来的数据集合。这个数据集是多模态数据的宝库,有助于稳健的模型训练。

VQA:专家使用 VQA 数据集来微调预训练的 VLM,以用于下游的视觉问答和视觉推理任务。该数据集包含超过 20 万张图像,每张图像有 5 个问题,每个问题有 10 个正确答案和 3 个错误答案。ImageNet:ImageNet 包含超过 1400 万张图像,这些图像根据 WordNet 层次结构进行注释分类。它有助于构建用于简单下游任务的模型,如图像分类和对象识别。


五、VLMs的关键挑战

尽管 VLM 在理解视觉和文本模态以处理信息方面很强大,但它们面临三个主要挑战:

模型复杂性

语言和视觉模型本身就相当复杂,将两者结合只会使问题更加严重。它们的复杂性在获取强大的训练计算资源、收集大型数据集以及在物联网设备等弱硬件上部署时带来了额外的挑战。

数据集偏差

当 VLM 在没有真正解决问题的情况下记住训练集和测试集中的深层模式时,就会出现数据集偏差。例如,在使用从互联网上收集的图像训练 VLM 时,可能导致模型记住特定模式,而不是学习各种图像之间的概念差异。

评估策略

上面讨论的评估策略仅将候选句子与参考句子进行比较。这种方法假设参考句子是唯一的真实标准。然而,特定图像可能有多个真实描述。

虽然像 CIDEr 这样基于共识的指标考虑了这个问题,但当特定图像的共识度较低时,使用这些指标就变得具有挑战性。

多张图片可以用同一个描述

 如图所示,VLM 可以标注或检索多个与通用描述匹配的相关图像。然而,实际上,模型仅仅是一个词袋。它只是考虑"城市"、"公交车"、"灯光"等词来描述图像,而不是真正理解描述文本的顺序和真实的上下文含义。

此外,用于视觉问答的 VLM 可能会对无意义的问题生成高置信度的答案。例如,对于一张包含白马的图像,如果问 VLM "汽车是什么颜色?",它会回答"白色",而不是指出图片中没有汽车。

最后,VLM 缺乏组合泛化能力。这意味着当它们处理新颖概念时,性能会下降。例如,VLM 可能无法将黄色马识别为一个类别,因为马很少与黄色关联。

尽管在开发和部署方面存在许多挑战,研究人员和实践者在采用 VLM 解决实际问题方面已取得重大进展。下面简要讨论这些进展。


六、VLMs的主要应用

虽然前面讨论的大多数 VLM 主要用于图像描述,但它们的实用性延伸到了各种利用视觉和语言模态桥接能力的领域。以下是一些额外的应用:

图像检索:像 FLAVA 这样的模型通过帮助用户基于语言查询找到相关照片,来协助他们浏览图像库。电商网站就是一个相关的例子。访问者可以在搜索栏中描述他们想要找的东西,VLM 会在屏幕上显示合适的选项。这种应用在智能手机上也很流行,用户可以输入关键词(如风景、建筑等)从相册中检索相关图像。

生成式 AI:通过文本提示生成图像是一个不断发展的领域,像 DALL-E 这样的模型允许用户根据他们的描述创建艺术作品或照片。这种应用在设计师和发明家想要可视化不同产品创意的企业中很实用。它还有助于创建网站和博客内容,并辅助讲故事。

分割:像 SegGPT 这样的 VLM 有助于实例分割、全景分割、语义分割等任务。SegGPT 通过理解用户提示并利用独特的配色方案来分割上下文中的对象。例如,用户可以要求 SegGPT 从多张图像中分割彩虹,SegGPT 将高效地标注所有彩虹。


七、VLMs的未来趋势

以下是 VLM 领域几个关键的未来研究方向:

更好的数据集

研究界正在努力构建更好的训练和测试数据集,以帮助 VLM 提高组合理解能力。CLEVR 就是一个很好的例子。如图所示,它包含新颖的形状、颜色的图像以及相应的问题,使专家能够测试 VLM 的视觉推理能力。

CLEVR 示例

更好的评估方法

评估挑战需要对更好的评估方法进行深入研究,以构建更稳健的 VLM。一种替代方案是通过 ARO 基准测试来评估 VLM 的各项技能。

属性识别、关系推理和词序敏感性(ARO)是 VLM 必须掌握的三项技能。下图解释了 ARO 在不同上下文中的含义。使用这样的数据集,专家可以分析 VLM 学到了什么,以及如何改进结果。

ARO 示例

机器人技术

研究人员也在使用 VLM 构建特定用途的机器人。这些机器人可以帮助导航环境,通过监控物品改进制造业的仓库运营,并通过让机器人理解人类的面部表情、肢体语言、语音语调等手势来增强人机交互。

医疗视觉问答

VLM 标注图像和识别复杂对象的能力可以帮助医疗专业人员进行医疗诊断。例如,他们可以向 VLM 询问关于 X 光片或 MRI 扫描的关键问题,以尽早确定潜在问题。


推荐阅读

AI多模态核心架构五部曲:

AI多模态模型架构之模态编码器:图像编码、音频编码、视频编码

AI多模态模型架构之输入投影器:LP、MLP和Cross-Attention

AI多模态模型架构之LLM主干(1):ChatGLM系列

AI多模态模型架构之LLM主干(2):Qwen系列

AI多模态模型架构之LLM主干(3):Llama系列  

AI多模态模型架构之输出映射器:Output Projector  

AI多模态模型架构之模态生成器:Modality Generator

AI多模态实战教程:

AI多模态教程:从0到1搭建VisualGLM图文大模型案例

AI多模态教程:Mini-InternVL1.5多模态大模型实践指南

AI多模态教程:Qwen-VL升级版多模态大模型实践指南

AI多模态实战教程:面壁智能MiniCPM-V多模态大模型问答交互、llama.cpp模型量化和推理


技术交流

加入「AIGCmagic社区」群聊,一起交流讨论,涉及AI视频、AI绘画、数字人、多模态、大模型、传统深度学习、自动驾驶等多个不同方向,可私信或添加微信号:【lzz9527288】,备注不同方向邀请入群!

更多精彩内容,尽在AIGCmagic社区」,关注了解全栈式AIGC内容!

相关文章:

AI多模态技术介绍:视觉语言模型(VLMs)指南

本文作者:AIGCmagic社区 刘一手 AI多模态全栈学习路线 在本文中,我们将探讨用于开发视觉语言模型(Vision Language Models,以下简称VLMs)的架构、评估策略和主流数据集,以及该领域的关键挑战和未来趋势。通…...

高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图

目录 高效工作流:用Mermaid绘制你的专属流程图 一、流程图的使用场景 1.1、流程图flowChart 1.2、使用场景 二、如何使用mermaid画出优雅的流程图 2.1、流程图添加图名 2.2、定义图类型与方向 2.3、节点形状定义 2.3.1、规定语法 2.3.2、不同节点案例 2.…...

uniApp通过xgplayer(西瓜播放器)接入视频实时监控

🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…...

ws 配置 IngressRoute 和 http一样

ws 配置 IngressRoute 和 http一样 apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata:name: web-ws-ingressroutenamespace: starp spec:entryPoints:- webroutes:- match: Host(webws.we…...

IMX6ULL的IOMUXC寄存器和SNVS复用寄存器似乎都是对引脚指定复用功能的,那二者有何区别?

IMX6ULL 的 IOMUXC 和 SNVS(Secure Non-Volatile Storage)复用寄存器都是用于配置引脚功能的,但它们的作用范围、目的和使用场景存在明显区别。以下是它们的差异分析: 1. IOMUXC(I/O Multiplexer Control)寄…...

LabVIEW实现动态水球图的方法

水球图是一种直观展示百分比数据的图表,常用于数据监测与展示。LabVIEW 虽不直接支持水球图绘制,但可通过图片控件动态绘制波形,或借助 HTMLCSS 的 Web 控件实现。此外,还可以结合 Python 等第三方工具生成水球图,LabV…...

【江协STM32】11-2/3 W25Q64简介、软件SPI读写W25Q64

1. W25Q64简介 W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器,常应用于数据存储、字库存储、固件程序存储等场景存储介质:Nor Flash(闪存)时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)存储容…...

《自动驾驶与机器人中的SLAM技术》ch2:基础数学知识

目录 2.1 几何学 向量的内积和外积 旋转矩阵 旋转向量 四元数 李群和李代数 SO(3)上的 BCH 线性近似式 2.2 运动学 李群视角下的运动学 SO(3) t 上的运动学 线速度和加速度 扰动模型和雅可比矩阵 典型算例:对向量进行旋转 典型算例:旋转的复合 2.3 …...

算法日记2:洛谷p3853路标设置(二分答案)

一、题目: 二、解题思路: 2.1:首先,我们二分空旷指数 1、因为题目中要求我们求解最大值最小应该是属于第二类模型2.也就是说,当check()函数为true时候,说明这个空旷指数是成立的,对应的路标数…...

浅谈云计算06 | 云管理系统架构

云管理系统架构 一、云管理系统架构(一)远程管理系统(二)资源管理系统(三)SLA 管理系统(四)计费管理系统 二、安全与可靠性保障(一)数据安全防线(…...

Blender常规设置

移动:Shift鼠标中键 旋转:鼠标中键 缩放:Ctrl鼠标中键...

c++ 中的容器 vector、deque 和 list 的区别

表格汇总: 容器存储结构随机访问性能中间插入/删除性能两端插入/删除性能内存管理特点迭代器类型适用场景vector连续存储的动态数组 O ( 1 ) O(1) O(1) O ( n ) O(n) O(n)(需要移动元素)末尾: O ( 1 ) O(1) O(1),头部…...

【物流管理系统 - IDEAJavaSwingMySQL】基于Java实现的物流管理系统导入IDEA教程

有问题请留言或私信 步骤 下载项目源码:项目源码 解压项目源码到本地 打开IDEA 左上角:文件 → 新建 → 来自现有源代码的项目 找到解压在本地的项目源代码文件,点击确定,根据图示步骤继续导入项目 查看项目目录&#xff…...

数据集-目标检测系列- 电话 测数据集 call_phone >> DataBall

数据集-目标检测系列- 电话 测数据集 call DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” 贵在坚持! …...

VUE3 自定义指令的介绍

自定义指令的概述 在 Vue 中,自定义指令是一种机制,允许开发者在模板中直接操作 DOM 元素,执行一些低级别的操作。Vue 提供了几个内置指令(如 v-if、v-for、v-model 等),但当我们需要一些特定功能时&#…...

HTML学习笔记记录---速预CSS(2) 复合属性、盒子模型、边框线、浮动、定位

复合属性写法: {font: font-style font-weitght font-size/line-height font-family} {font: 样式 粗细 字号 字体} (书写瞬间为固定的不可更改) block 块级元素 div inline 行内元素 span inline-block 行内块元素 …...

二 RK3568 固件中打开 ADB 调试

一 usb adb Android 系统,设置->开发者选项->已连接到计算机 打开,usb调试开关打开 通过 usb otg 口连接 开发上位机 (windows/linux) 上位机安装 adb 服务之后 , 通过 cmd/shell: #1 枚举设备 adb devices #2 进入 android shell adb shell # 3 验证上传下载…...

centos9设置静态ip

CentOS 9 默认使用 NetworkManager 管理网络,而nmcli是 NetworkManager 命令行接口的缩写,是一个用来进行网络配置、管理网络连接的命令工具,可以简化网络设置,尤其是在无头(没有图形界面)环境下。 1、 cd…...

【Python】Python之Selenium基础教程+实战demo:提升你的测试+测试数据构造的效率!

这里写目录标题 什么是Selenium?Selenium基础用法详解环境搭建编写第一个Selenium脚本解析脚本脚本执行结果常用的元素定位方法常用的WebDriver方法等待机制 Selenium高级技巧详解页面元素操作处理弹窗和警告框截图和日志记录多窗口和多标签页操作 一个实战的小demo…...

内网服务器添加共享文件夹功能并设置端口映射

参考网址 https://blog.csdn.net/Think88666/article/details/118438465 1.服务器安装smb服务,由于网路安全不允许使用默认端口(445,446),于是修改端口为62445、62446。 2.每台需要共享的电脑都要修改端口映射&#x…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...