Llama 3.2 Vision Molmo:多模态开源生态系统基础
编者按: 视觉功能的融入对模型能力和推理方式的影响如何?当我们需要一个既能看懂图像、又能生成文本的 AI 助手时,是否只能依赖于 GPT-4V 这样的闭源解决方案?
我们今天为大家分享的这篇文章,作者的核心观点是:多模态语言模型领域正处于快速发展阶段,Llama 3.2 Vision 和 Molmo 等开源模型的出现为构建开放的多模态生态系统奠定了重要基础。
本文分享了来自 Meta 的 Llama 3.2 Vision 和 AI2 的 Molmo 模型的主要技术架构及其特点,同时比较了它们与众多多模态大模型的性能表现。文中介绍在多数视觉领域测试中, Molmo 表现更优,Llama 3.2 V 在 MMMU 等文本相关任务中表现更好,目前多模态模型的开源定义仍需进一步探讨和完善,但 Molmo 是目前最接近开源的视觉模型。同时还探究了视觉功能的融入对模型能力和推理方式的影响。
尽管目前在评估工具、数据集等方面还存在不足,但开源模型已经展现出与闭源模型相媲美的潜力,这预示着多模态 AI 领域即将迎来新的发展机遇。
作者 | Nathan Lambert
编译 | 岳扬
多模态语言模型领域相比纯语言模型,显得定义更为不明确、未解决的问题更多,同时也有更多空间让人们发挥创意。在语言模型领域,存在一系列明确的任务和行为,那些前沿实验室正试图通过例如 OpenAI o1 这样的创新训练方法,在最为棘手的推理问题上取得突破。然而,无论是前沿实验室(frontier labs)还是小型实验室(small labs),都在探索多模态模型的应用方向。AI如何“感知”和理解外部世界?拥有一系列强大的开放式模型(open models)对于该领域全面且公开、透明的发展至关重要——这是实现积极成果的两个关键条件(译者注:这两个条件应当是指全面、公开透明的发展)。
目前,多模态语言模型研究大多是通过 late-fusion 模型进行的,即基于语言主干网络(language backbone)和图像编码器(image encoder)(很可能也是 GPT-4V 所使用的方法)进行初始化。 这种对基础语言模型的微调方式虽然成本较高,但实际上计算成本并没有人们想象的那么难以承受。虽然存在多种模型架构[1],但由于 late-fusion 这一架构的稳定性和可预测性,成为了当下研究的热门选择。Molmo 和 Llama 3.2 V 就是通过这种方法训练而成的。
通过在多模态数据集上预训练的 early-fusion 模型来扩展数据的预期效果尚未显现。或许只有当这些模型在 GPT-5 级别的计算集群上进行测试时,它们的真正优势才会显现出来。
Late-fusion 的多模态方法激发了我们对如何将基础语言模型转型升级为多样化输出形式的深入探索。回顾过去几年我们在模型微调领域所采用的各种技术,从 RLHF 开始,到多模态 late-fusion 模型,再到像 o1 这样的创新模型,我们意识到模型还有大量表达潜能等待我们去发掘。一些基本问题仍然值得关注,比如“多模态训练会对 GSM8k 或 IFEval 这样的标准文本评测基准造成何种影响?”在对模型进行视觉方面的微调之后,那些主要用于评估模型知识水平的标准测试,例如 MMLU(Massive Multitask Language Understanding)测试,并没有发生较大变化。
这个领域对我来说同样新颖。本文的主要介绍对象是 Ai2 的一个重要模型版本——Molmo[2](开放式多模态语言模型),以及 Meta 的新模型 Llama 3.2 Vision。两者都推出了一套不同规模的四个模型。它们的性能表现相当,但 Molmo 在开放程度上更胜一筹。
Meta 发布了 Llama 3.2 的早期版本,包括 1B、3B、11B-Vision 和 90B-Vision[3],并在博客文章中透露了一些训练过程的细节[4](文章中还有相关链接)。11B 模型可能是基于 Llama 3 8B 模型的改进版,而 90B 模型则是在 Llama 3 70B 模型的基础上发展而来的。
Ai2 推出了基于 Qwen 2 72B 打造的 Molmo 72B,基于 Qwen 2 7B 的 Molmo-7B-D,即将问世的基于 OLMo 7B 版本的 Molmo-O,以及基于 OLMoE 并拥有 1B 活跃参数的 Molmo-E。
Molmo 系列模型采用 Apache 2.0 许可协议,而 Meta 模型则采用了 Llama 3.2 社区许可协议,该许可协议对模型的使用施加了一些较为严格的限制。
这不禁让人思考,人工智能领域的发展将何去何从。实际上,重头戏是 1B 和 3B 参数规模的 Llama 模型。小型语言模型的市场需求持续攀升,而且随着这些模型能力的不断提升,市场潜力还在不断扩大。我会反复探讨这一话题,但今天我们聚焦的是多模态。
01 Llama Vision:面向大众开发者的多模态模型
自 Llama 3 报告[5]发布以来,Meta 已经明确表示这些模型不久将面世(欧盟地区除外)。Meta 正在将它们应用到 Meta AI 以及旗下的增强现实(AR)/虚拟现实(VR)设备,例如 RayBan 智能眼镜。这些模型非常可靠,比封闭实验室的小型模型更胜一筹,后者的活跃参数通常估计在 60B 范围内。
关于这些模型的具体信息相对较少。若欧盟地区的用户尝试从 Meta AI 的官方页面下载模型,将会看到我在 HuggingFace 平台上看到的地理限制锁🔒。
其他用户可在 Meta AI 中获取这些模型。不过还有个更重要的消息,还有一些具有更丰富文档和更高开放性的模型可供使用(且不受地理限制)。
02 Molmo:与 Llama Vision 相当的一个(大部分)开源的模型
Molmo 是 Ai2 最新推出的开源语言模型[6],它附有一份初步的技术报告[7],用户可以免费体验模型 demo[8],而且即将公开相应的数据集。该项目的宗旨是构建开源语言模型,让任何人都有机会参与或理解构建现代 AI 模型的最关键部分。Molmo 模型是在 Qwen2 和 OLMo 的架构基础上,结合了 CLIP 编码器[9]进行训练的。但尽管有了这个数据开放的 CLIP 版本[10],研究团队并没有选择这个版本,而是放弃使用它,转而选择另一种版本,因为后者下游性能更卓越。请注意,Mistral 的 Pixtral 模型[11]和 Llama 模型都训练了自己的编码器。相关博客文章清晰地阐述了这些组成部分是如何协同工作的:
该模型架构采用了将语言模型与图像编码器结合的简洁而标准的设计。整个模型由四个主要部分组成: (1) 一个预处理器,将输入的单张图像转换成一系列不同尺度(multiscale)和不同裁剪方式(multi-crop)的图像集合; (2) 一个 ViT 图像编码器,独立地将这些图像转换成一系列视觉 tokens; (3) 一个连接器,负责将视觉 tokens 转换为适合语言模型输入的维度,并通过池化技术减少视觉 tokens 数量; (4) 一个仅包含解码器的 Transformer 大语言模型(LLM)。
论文中对该模型结构进行了详细的概述。
请留意,在这些模型的两个训练阶段中,所有的模型参数都会得到更新,而不是保持不变。此外,这些模型在训练过程中并未采用RLHF(基于人类反馈的强化学习)或偏好调优技术(preference tuning)。就我们针对视觉模型所设定的基准测试而言,Molmo 模型在性能上可与 GPT、Claude 以及 Gemini 模型相媲美。
相较于 Llama 3.2 V 模型,Molmo 在多数视觉领域的表现更胜一筹。以下是对各个基准测试得分情况的概述:
- 在 MMMU 测试中,Llama模型的得分高出6分;
- 在 MathVista 测试中,Molmo模型的得分领先1分;
- 在 ChatQA 测试中,Molmo模型的得分高出2分;
- 在 AI2D 测试中,Molmo模型的得分领先4分;
- 在 DocVQA 测试中,Molmo模型的得分高出3分;
- 而在 VQAv2 测试中,两者的得分相近,或者 Molmo 稍占优势(Llama 3.2 的博客文章中对这一处的报告不够明确)。
以下是 Reddit 上的用户 LocalLlama[12] 对评估结果的独立复现。
依我看,这一点也基本符合各组织的追求目标,Llama 3.2 V 在文本方面表现更佳,或许优势还相当明显,但在图像方面,Molmo 则更胜一筹。特别是在识别图像中的指向性特征和读取时钟等任务上,Molmo 的表现尤为出色。
正如我将在本文后续部分进一步探讨的,基准测试并不能全面反映这些模型的实力。Molmo 对开源和科学界做出了巨大贡献,但探讨这些模型的行为特性同样重要。Molmo 具备一项独特的功能,是其同等级模型所不具备的 —— 那就是能够指向参考图片中的特定像素。 例如,我向 Molmo 询问了一张我的照片中自行车的位置[13]。
这种指向性功能是多模态模型在 web agents 应用中最显著的优点。一旦在模型训练时融入了足够的 web 数据,它就能迅速掌握浏览所有常规网页的能力。
当模型被要求对同一张图片进行描述时,它给出了一个相当详尽的描述[14],而且相当标准:
图片是一张 Zoom 通话的截屏,图片被黑色边框和白色内框所环绕。在右上角,有一个小窗口显示另一位参与者,他留着胡须,戴着眼镜和耳机,身穿一件黑色T恤。他坐在壁炉前,壁炉台上摆放着照片和书籍。主画面中的年轻男子有着短短的棕色头发和蓝色的眼睛,面带微笑,穿着一件点缀着白色圆点的蓝色衬衫。他坐在一个白色墙壁、带窗台窗户的房间里,背后是一个黑色的架子。架子上陈列着各式物品,墙上还挂着一个自行车轮胎。屋内还摆放了几幅装框的画作。屏幕顶端显示着文件名……
这种详细的描述得益于新数据集 PixMo 的直接影响,该数据集被用于训练 Molmo 模型。PixMo 的价值远远超出这些早期模型。这个数据集的创新之处在于,它让标注人员通过音频而非文字来对图片做出回应(类似于这篇关于局部化叙述的研究[15]),这使得他们的数据标注更加富有创造性和描述性。事实上,数据标注人员们非常喜欢这些任务(比如提供指向数据),以至于他们主动要求完成更多任务。激发数据标注人员的高度参与度是任何人工数据流程(human data pipeline)的目标,而这在我所见过的案例中是前所未有的。这个数据集有数百万个样例,涉及各种各样的图像。
我们所掌握的有关 Llama 3.2 V 的少数技术细节之一是,它是在 “6B(图像,文本)对” 上进行训练的,其中大部分可能是合成数据。而 Molmo 则是通过主要由人类产生的数百万份数据进行训练。
对于 OLMo 模型,包括 Molmo 在内,最关键的差异化因素和战略是其开放性(openness)。随着对“开源 AI”定义的讨论进行,像这些多模态模型(例如 CLIP)就是很好的案例,可以用来检验或“压力测试”我们对开源 AI 的理解。以下是对 Molmo 模型及其同类模型的开放性比较 —— Llama 3.2 V 的开放性与其他所有权重开源模型(open-weight models)相似。
这些模型都采用了没有开放数据的视觉编码器(主要是 OpenAI 的 CLIP),但也有开源的替代方案。公开图像数据风险较高(可能会涉及像 CSAM 这样的敏感问题),而且过程复杂。Molmo 模型是基于非开源模型进行微调的(并对参数进行了更新),根据开源倡议的最新定义,它们并不能算作开源。但如果 Molmo 只是公开数据的嵌入,而不是原始图像或文本数据,那么这种做法是否能让模型满足开源要求。这就引出了一个问题:当核心权重保持不变并且公开嵌入数据时,模型的开源性是否依旧符合标准?
这与根据其他语言模型(包括非公开模型)的合成输出训练出的模型可被视为开源的定义是一样的。在同时使用多个模型和数据流的领域,开源 AI 的定义还需要进一步的探讨。 对于仅使用文本进行预训练的模型,其“开源”定义原则上是合理的,只需要在一些细节上做出调整。然而,当涉及到微调和多模态时,情况变得更加复杂,因此还需要更多的讨论。
基于这些原因,我不会直接宣称“Molmo 是开源的”,但它无疑是目前最为接近开源的视觉模型。从定义上讲,生态系统中最开放的实验室在战略上与开源的差距微乎其微。
03 视觉功能的融入对模型能力和推理方式的影响
视觉功能的增加可以被视为一种微调问题,让我不禁要问,当前顶级模型在处理带图像和不带图像的相同提示词时会有怎样的表现。在幕后会将 query 路由给不同的模型。对于那些不是 early fusion 模型的,比如 GPT-4 和 Claude,除了推理成本之外,带有视觉元素几乎肯定会对性能有所影响 —— 否则,所有的模型都将是视觉模型。而对于像 GPT-4o 这样能够原生处理图像数据的模型,这一测试并不适用。
最直接的比较方法就是查看模型的标准版本和视觉版本对文本任务进行评估的差异。然而,在目前已经发布的模型中,进行这种直接比较的寥寥无几。即便有,也通常只限于部分评估。在撰写本文的过程中,我做了一个还算不错但并不完全详尽的调查,发现对比数据不足,因此没法用具体的数字支撑一个有说服力的论点。我的直觉是,在模型中加入视觉处理会使得模型在训练完成之后通过各种方法(如微调、优化等)实现的性能提升(我们在 ChatBotArena 等平台上观察到的)变得更加难以实现。
本实验旨在观察 GPT-4 和 Claude 3.5 Sonnet 在处理中等难度的推理或编程任务时,能否在有图像干扰的情况下正确地忽略非相关信息。实验结果显示,当明确指示模型忽略某些信息时,它们都能轻松做到,并且在后续询问图像相关问题时,仍能准确理解图像内容。图像的引入可能会导致模型更容易出现之前模型在处理类似任务时遇到的那些典型问题或错误。
我首先提出了一个我经常使用的简单推理问题:“月球能装下多少高尔夫球?”无论是附有图像还是无图像的 ChatGPT4 ,它们的推理过程几乎相同,得出的答案也非常接近。
另一方面,Claude 的视觉系统在这个例子中(见下图右侧)显得有些力不从心。Claude 给出的回应,更像是一种巧妙的回避,而不是像往常那样尝试解答这个常见的概念性问题。
这个任务难度似乎不够,于是我决定挑战一个编程问题,要求 LLM 阐述解题思路,然后为其编写一个 Python 脚本 —— 一个语言模型的基本训练脚本。首先未提供给 ChatGPT 相关图像,这也在情理之中,对于实际开发来说,其作用有限。
ChatGPT 对带有图像的提示词的回应不够详尽,也不够周全。
而 Claude 所给出的两次回答在内容上几乎无二致。
这个结论并不让人意外。模型的图像输入不那么成熟,因此我们看到了更多去年常见的典型问题或不足之处。
更值得关注的问题是未来这种情况会有显著改善,还是维持现状?像 o1 这样的特性获得的认可度,明显高于更优质的视觉输入。在 AI 模型领域,语言仍然是核心, 如果没有明确的任务来挑战视觉的极限 ,就很难证明视觉输入具有变革性。语言依然是这个生态系统的命脉。
对于 Molmo 而言,由于缺乏标准的文本指令调优和 RLHF(基于人类反馈的强化学习),在进行推理任务时,给人的感觉与以往熟悉的模型大相径庭。我们清楚,需要在所有 OLMo 模型上不断优化这类任务。
然而,Molmo 还有一些 Claude 和 ChatGPT 所不具备的特殊功能。我们期待这些功能能够证明其使用价值。如果想要体验这些模型,还有一个选择是 Vision Arena[16],但需要注意的是,它的某些功能接口出现了问题,而且其运行速度不及原生的本地应用程序。
04 多模态语言模型:正处于快速发展阶段的前端
Molmo 项目与我之前关注的纯文本模型项目的进展相比,最显著的区别在于多模态模型生态系统的成熟度较低。 尤其是在模型训练完成后的行为研究方面,我们缺少评估工具、数据集、开放的基准模型 —— 总之,一切都非常缺乏。我在今年年初就这个问题发表了自己的看法,特别是对于开放流程(open pipelines)中多模态 RLHF 的不明确性[17],遗憾的是,至今变化不大。这就导致了一个现象:某些可以说是“开源”的模型几乎能与像 GPT-4o 这样的闭源模型相媲美。
需要明确的是,虽然技术报告中对模型的基准测试讨论颇多,但与潜在的研究空间相比,这些讨论仅仅是触及了表面。许多评估工作是将传统语言模型的理念,如解释概念或识别内容,迁移到视觉领域。 而对于视觉模型来说,我们需要的是全新的基准测试方向。对于视觉语言模型,SWE-Bench 的对等基准测试会是什么?我推测可能会出现 SWE-Bench-Vision,但我们还需要开发更多无法与文本模型相对应的新测试类别。
在使用多模态模型时,我发现并不清楚应该用它们来做什么。这些模型在信息提取和加工处理等方面确实强大。我就经常用 Claude 或 ChatGPT 来复制表格内容或重新编写代码生成图表。除了前面提到的用途之外,还有很多功能,特别是场景描述(scene captioning),虽然展示出来的时候非常吸引人,让人印象深刻,但并不是我们日常生活中会经常使用到的功能。
曾经,视觉语言模型的效果并不理想。但现在,它们的性能得到了大大增强,更重要的是,它们现在可以被大规模公开使用,这无疑会促进其被更广泛地采用。而随着使用率的提升,就有了发展的反馈回路。以下是对这一论点的详细解释。
特别是,Meta 采取了将“开源 AI”的品牌与 Llama 模型挂钩的策略,这一行动提升了 Llama 模型在业界的可信度,从而促使更多开发者更加重视此类模型。
在未来的多模态语言模型中,唯一尚未解决但肯定会重要的应用是理解网页元素。 Web agents 成为了阻碍生成式 AI 产品大规模部署的最后几道关卡之一。 我们之所以尚未见到更多的 web agents,可能是因为当前的生态系统过于依赖封闭模型,而这些模型很难获得执行相关操作所需的权限(尤其是在企业级应用中)。随着技术能力的提升,我们有理由相信,权重开源模型(open-weight models)将会得到快速的推广和应用。推动多模态模型发展的原因似乎更多是市场、技术、行业趋势等方面的因素,而非仅仅是为了推广本地多模态模型 —— 这一点我们可以向 Adept 公司进行探讨。随着权重开源模型和近乎开源模型((nearly) open-source models)的增多,AI 领域的加速发展指日可待。
Thanks for reading!
Hope you have enjoyed and learned new things from this blog!
About the authors
Nathan Lambert
ML researcher making sense of AI research, products, and the uncertain technological future. PhD from Berkeley AI. Experience at Meta, DeepMind, HuggingFace.
END
本期互动内容 🍻
❓Molmo 模型的“像素级指向功能”给您带来了哪些启发?您认为这个功能在未来可能催生什么样的创新应用?
🔗文中链接🔗
[1]https://lilianweng.github.io/posts/2022-06-09-vlm
[2]https://molmo.allenai.org/blog
[3]https://huggingface.co/collections/meta-llama/llama-32-66f448ffc8c32f949b04c8cf
[4]https://ai.meta.com/blog/llama-3-2-connect-2024-vision-edge-mobile-devices/?utm_source=twitter&utm_medium=organic_social&utm_content=video&utm_campaign=llama32
[5]https://arxiv.org/abs/2407.21783
[6]https://www.interconnects.ai/p/olmo
[7]https://molmo.allenai.org/paper.pdf
[8]https://molmo.allenai.org/
[9]https://huggingface.co/openai/clip-vit-large-patch14-336
[10]https://github.com/mlfoundations/open_clip
[11]https://mistral.ai/news/pixtral-12b/
[12]https://www.reddit.com/r/LocalLLaMA/comments/1fpb4m3/molmo_models_outperform_llama_32_in_most_vision/
[13]https://molmo.allenai.org/share/963de0d0-9069-4a14-ad5a-8e4bc0863136
[14]https://molmo.allenai.org/chat/d1917496-1581-4ca5-8bda-1f4216d1ea1e
[15]https://arxiv.org/abs/1912.03098
[16]https://huggingface.co/spaces/WildVision/vision-arena
[17]https://www.interconnects.ai/i/140525309/multimodal-rlhf-questions-ideas-and-resources
原文链接:
https://www.interconnects.ai/p/molmo-and-llama-3-vision
相关文章:

Llama 3.2 Vision Molmo:多模态开源生态系统基础
编者按: 视觉功能的融入对模型能力和推理方式的影响如何?当我们需要一个既能看懂图像、又能生成文本的 AI 助手时,是否只能依赖于 GPT-4V 这样的闭源解决方案? 我们今天为大家分享的这篇文章,作者的核心观点是…...

【数据结构与算法】第6课—数据结构之栈
文章目录 1. 栈2. 栈的初始化和栈的销毁3. 入栈和出栈(压栈)4. 取栈顶元素并打印5. 栈的练习题5.1 有效的括号 1. 栈 栈:也是一种线性表,其数据结构与动态顺序表的数据结构类似栈分为栈顶和栈底,在栈中,插入…...

开源全站第一个Nextron(NextJS+electron)项目--NextTalk:一款集成chatgpt的实时聊天工具
NextTalk 简介 该项目是一个基于Nextron(NextJSElectron)的桌面端实时聊天工具。 但由于使用了NextJS中的ssr及api route功能,该程序只能在开发环境运行。 关于生产版本:我将其网页端部分分离,并用Pake将其打包成桌面端,生产体…...

多样化的编程模型:并发与并行策略
因为经常看着某些框架设计的编程模型很晕,所以自己梳理总结了一下编程模型的分类,总共六个大类,基本所有常见框架设计的编程模型都是基于这六个大类来实现的,如果有错误的地方,请见谅并不吝赐教,感谢&#…...

npm入门教程2:npm历史
一、起源与诞生 时间背景:npm的诞生与Node.js的兴起紧密相关。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许JavaScript代码在服务器端运行。随着Node.js的流行,开发者们对于包管理和依赖解决的需求日益增长。诞生:…...

Cuebric:用AI重新定义3D创作的未来
一、简介 Cuebric 是一家成立于2022年夏天的好莱坞创新公司,致力于为电影、电视、游戏和时尚等行业提供先进的AI多模态SaaS平台。自2024年1月正式推出以来,Cuebric 已经在市场上获得了广泛的认可和积极的反馈。目前,该平台正处于1.0版本的beta测试阶段,已募集约50万美元的…...

前端react常见面试题目(basic)
1. 如果 React 组件的属性没有传值,它的默认值是什么? 如果一个 React 组件的属性(props)没有传值,那么它的默认值会是 undefined。你可以通过组件内部的逻辑来设置默认值,比如使用逻辑运算符或者 ES6 的默认参数。 …...

机器人技术基础(4章逆运动解算和雅克比矩阵)
逆运动解算: 雅克比矩阵: 将动力学分析转向运动的物体 下图中的 n o y 反映了机器人的姿态矩阵, 最后一列 p 反应了机器人在空间中的位置:...

OpenGL入门002——顶点着色器和片段着色器
文章目录 一些概念坐标转换阶段顶点着色器片段着色器VBOVAO 实战简介main.cppCMakeLists.txt最终效果 一些概念 坐标转换阶段 概述: 模型空间、世界空间、视图空间和裁剪空间是对象在3D场景中经历的不同坐标变换阶段。每个空间对应渲染管道的一个步骤,…...

[数组排序] LCR 164. 破解闯关密码
文章目录 1. 题目链接2. 题目大意3. 示例4. 解题思路5. 参考代码 1. 题目链接 LCR 164. 破解闯关密码 - 力扣(LeetCode) 2. 题目大意 描述:给定一个非负整数数组 nums。 要求:将数组中的数字拼接起来排成一个数,打印…...

05 Django 框架模型介绍(一)
文章目录 1、Django 模型简介2、Django 中创建并使用模型(1)新加一个名为 myapp 的应用(2)定义模型类(2)激活模型类(3)创建数据库迁移文件(4)应用迁移文件 3、…...

【简道云 -注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...

【C++题解】1970. 判断是什么字符
欢迎关注本专栏《C从零基础到信奥赛入门级(CSP-J)》 问题:1970. 判断是什么字符 类型:字符串、字符型 题目描述: 从键盘读入一个字符,有可能是大写字母、小写字母、数字中的一种,请编程判断&…...

Python自动化操作Word文档详解
在日常办公和数据处理中,我们经常需要处理Word文档。手动操作Word文档可能会非常繁琐和耗时,而使用Python可以实现自动化操作,提高工作效率。本文将详细介绍如何使用Python自动化操作Word文档,包括读取、写入、修改和格式化等操作…...

常用滤波算法(二)-中位值滤波法
文章目录 一、中位值滤波法简介二、C语言实现中位值滤波法三、程序说明信号初始化:滤波窗口大小:内存分配:中位值滤波函数:中位值计算函数:内存释放: 四、总结 中位值滤波法,作为一种非线性滤波…...

HCIP--以太网交换安全(总实验)
实验背景 假如你是公司的网络管理员,为了提高公司网络安全性,你决定在接入交换机部署一些安全技术:端口隔、端口安全、DHCP snooping、IPSG。 实验拓扑图 实验的要求: 1.在R1、R2连接在GE0/0/1和GE0/0/2接口下,均划…...

C语言 | Leetcode C语言题解之第519题随机翻转矩阵
题目: 题解: typedef struct {unsigned long long val;UT_hash_handle hh; } Hash;typedef struct {Hash *hash;int n_rows;int n_cols; } Solution, SL;Solution* solutionCreate(int n_rows, int n_cols) {SL *obj malloc(sizeof(SL));obj->hash …...

《机器人SLAM导航核心技术与实战》第1季:第10章_其他SLAM系统
视频讲解 【第1季】10.第10章_其他SLAM系统-视频讲解 【第1季】10.1.第10章_其他SLAM系统_RTABMAP算法-视频讲解 【第1季】10.2.第10章_其他SLAM系统_VINS算法-视频讲解 【第1季】10.3.第10章_其他SLAM系统_机器学习与SLAM-视频讲解 第1季:第10章_其他SLAM系统 …...

《双指针篇》---快乐数
题目传送门 1.创建一个bitsum函数用于得到这个数每位的平方和。 2.令快指针等于bitsum(n) 3.慢指针等于n。 逐步令 fast bitSum(bitSum(fast)); slow bitSum(slow); 若最后fast等于slow,则且等于1.则return true。 否则return false。 cla…...

U盘引导丢失问题的处理办法
项目背景:在使用自制的u盘系统的时候经常遇到引导丢失的问题,那么咱们怎么解决这个问题呢,首先第一步通过手动引导u盘 进入系统,同时再进行引导区的修复这样u盘系统就可以正常工作了。 1 进入grub 的提示符下面,首先…...

layui tree customSelet选中的内容重写,查找父级
layui tree customSelet选中的内容重写,查找父级 需要重新源码 // 递归查找函数 // tree 所有数据 ,nodeId选中数据id值 function findParent(tree, nodeId, parent null) {for (let i 0; i < tree.length; i) {if (tree[i].id nodeId) {return …...

Maven 插件
Maven 插件 Maven 是一个强大的项目管理和构建自动化工具,广泛应用于 Java 项目中。它通过插件来实现各种功能,如编译、测试、打包、部署等。Maven 插件是 Maven 的核心组成部分,它们扩展了 Maven 的功能,使其能够执行各种任务。…...

MybatisPlus入门(七)MybatisPlus-DQL编程控制
一、查询投影 查询投影:查出来的东西有多少字段,设置查询出来的结果长什么样,查出的字段控制; 查询投影适用于lamda格式,使用select 查询 lqw.select(User::getId,User::getName,User::getAge); 代码示例࿱…...

K8S概念及其常见组件和整体架构
1.概念 什么是Kubernetes 官网:Kubernetes 文档 | Kubernetes K8S的本质是一组服务器集群,可以在对应服务器集群的每个节点上运行程序,来对节点中的容器进行管理 类似Master-Work方式,每个服务器上安装特定的K8S组件,…...

LabVIEW继电器视觉检测系统
随着制造业的自动化与高精度要求不断提升,传统的人工检测方法逐渐难以满足高效和高精度的需求。特别是在航空航天、医疗设备等高端领域,密封继电器推动杆部件的质量直接影响到设备的性能与可靠性。LabVIEW自动化视觉检测系统,能对推动杆部件进…...

linux操作系统进程
linux操作系统是对下的软硬件进行管理,为了能够对上提供稳定,快速,安全的服务而诞生的软件。 广义上的操作系统是包含搭载在操作系统上的软件和函数库等文件的。 狭义上的操作系统就是操作系统内核,进行进程管理,文件…...

jeecgbootvue2菜单路由配置静态文件夹(public)下的html
需求:想要在菜单配置src/assets/iconfont/chart.html显示页面(目的是打包上线以后运维依然可以修改数据) 官网没有相关数据:菜单配置说明 JeecgBoot 开发文档 看云 问题现象: 我把文件放在src/assets/iconfont/chart.html然后在vue中作为 iframe 的 src 属性&am…...

PHP反序列化原生类字符串逃逸框架反序列化利用
PHP反序列化 概念 序列化的原因:为了解决开发中数据传输和数据解析的一个情况(类似于要发送一个椅子快递,不可能整个椅子打包发送,这是非常不方便的,所以就要对椅子进行序列化处理,让椅子分成很多部分在一起打包发送…...

6.1、属性动画
使用显式动画产生布局更新动画 1.旋转动画 只修改对应的属性 rotate({angle: this.angle}) 即可达到效果 动画效果 对应实现代码 @Entry @Component struct AnimationPage {@State angle:number = 0aboutToAppear() {...

v-model还可以作用于其他表单元素的使用
1、文本输入框 直接双向绑定输入的元素值 初始化默认值为空字符串 2、复选按钮 直接双向绑定输入的元素值 初始化默认值为flase,不选中 3、单选按钮, 1.使用name分组,产生互斥效果。 2.使用value存值, 3再用v-model双向绑定…...