多模态大模型 MLLM 的架构发展与思考
多模态大模型(MLLM)通过视觉、音频等编码器与大语言模型结合,实现跨模态理解与生成。文章综述了典型架构,包括 Vision Encoder、Projector 及 LLM 组件,探讨了动态分辨率处理、多图视频输入策略及训练顺序。重点分析了幻觉问题的成因(数据、结构、训练、推理)及解决思路,如引入负面数据、改进损失函数、强化学习对齐等。此外,还讨论了任务统一化趋势、数据集演进及未来研究方向,涵盖能力提升、边界扩展与小型化部署,为工业界应用提供参考。

多模态大模型(MLLM)通过视觉、音频等编码器与大语言模型结合,实现跨模态理解与生成。文章综述了典型架构,包括 Vision Encoder、Projector 及 LLM 组件,探讨了动态分辨率处理、多图视频输入策略及训练顺序。重点分析了幻觉问题的成因(数据、结构、训练、推理)及解决思路,如引入负面数据、改进损失函数、强化学习对齐等。此外,还讨论了任务统一化趋势、数据集演进及未来研究方向,涵盖能力提升、边界扩展与小型化部署,为工业界应用提供参考。

自以 GPT-3 为代表的大语言模型问世以来,纯文本模态的大模型和多种模态混合的多模态大模型都获得了迅速的发展。无论是学术界还是工业界,文本模态的大语言模型几乎学习了目前人类能够从公开渠道获取到的所有文本数据。结合模型规模的扩大以及模型'涌现'能力,使得大语言模型的'智能'、'记忆'、'推理'、'对话'、'创作'等多方面的能力得到了长足的发展。
互联网发展到今天,除了海量的文本数据之外,还产生了更多的多模态数据,如图文多模态数据、音视频,甚至于某些终端还包含了位姿信号、深度、雷达等多种模态的信号。因此高效、系统的处理多模态数据,将带来机器智能的进一步发展。当前研究多模态大模型的主流方向是通过不同模态数据独有的编码器编码,然后将多模态信号同文本进行'语义'层面的对齐,再利用大语言模型的能力进行处理。
• 这种通用的处理方式,是否是最优的,值得深入研究 • 是否有更好的进行单独模态数据编码的方式,以及更好的同文本进行'语义'对齐的技术方案? • 从文本训练的大语言模型拥有较高的'智能',但是否一定就适合用来处理多模态的问题? • 有没有一种类似文本大模型的端到端的通用的训练范式适用于多模态场景? • 计算机视觉发展了很多年,也有非常多的任务类型,多模态大模型是否有可能将这些多样的任务进行统一建模? • 多模态大模型都有哪些不可或缺的应用场景?
以上问题都值得更为深入和系统的研究。
多模态大模型(Multi-Modal Large Language Model, MLLM)、大语言模型(Large Language Model, LLM)、视觉编码器(Vision Encoder)、音频编码器(Audio Encoder)、模态对齐(Modal Alignment)、端到端训练(End-to-End Training)、视觉摘要(Vision Caption)、视觉问答(Vision QA)、多模态理解(Multi-Modal Understanding)、多模态生成(Multi-Modal Generation)、长视频理解(Long Video Understanding)
多模态模型的发展由来已久,从早期通过多模态数据的引入提升模型精度,如通过引入图像和文本信息,提升内容分类的精度,这是通过有监督的多模态分类标注数据,将图像、文本模态的信息进行融合来提升精度的方法;中期,出现了多种不同方式的无监督多模态对比学习,通过对比学习拉近不同模态之间的距离,来提升多模态表示学习的效果,进而在其他任务上表现出更好的泛化性和精度;当前,多模态大模型的发展更多是在对不同模态'语义'对齐的基础上,通过大语言模型强大的理解、推理、总结等能力,来提升模型的效果,同时通过一个模型完成多个任务。
本文将从以下几个方面来进行多模态大模型的文献解读: • 多模态大模型的典型结构,以及不同结构的研究重点; • 多模态大模型同更多任务的结合,如和更多计算机视觉任务的结合,和生成任务的结合等; • 多模态大模型数据集及构建方式的演进; • 多模态大模型幻觉问题机理及解决思路; • 多模态理解与生成任务统一
![图:多模态大模型的典型模块]
如图一所示,一个典型的多模态大模型(仅视觉、文本示意),包括针对图像信息的 Vision Encoder 结构,将 Vision 特征映射到类似大语言模型 Token 的映射模块 Projector,大语言模型,以及训练任务,以及各任务的训练顺序和策略。
针对 Vision Encoder 结构,直观能够想到的可能的问题包括如何处理多尺度的图像。最简单的方式是 Resize 到固定的尺寸(如 256x256),但这种粗暴的方式显然会引入较多的问题,如长图、高分辨率图像 Resize 到小尺度之后,细节信息丢失等。论文 InternVL 1.5 中,作者通过 Dynamic High Resolution 技术来解决图像尺度以及高分辨率的问题。首先将图片 Resize 到最适合的预设的长宽比(如 448x448, 448x896 等),同时对全图进行缩放,保留图片的一个缩略图,然后将每一个大小为 448x448 的 Patch 送入 Encoder 提取视觉特征。论文 Navit 中,作者通过固定 Patch 大小的方式,将不同长宽比和分辨率的图像先进行 Patchify,然后通过 Token Drop 的方式来减少运算量。
针对 Vision Encoder,在处理完长宽比和分辨率的问题之后,另一个直观能够想到的问题是如何处理多图和视频。论文 Qwen2-VL 中,可以支持同时输入不同长宽比,不同分辨率,以及视频作为多模态的输入。视频被视为多张长宽比一致的图片(如每秒中采样 1 张图片),然后通过相同的 Vision Encoder 进行编码。由于不同的尺度和 Patch 数量的问题,不同大小的图像或视频将会最终获得不同数量的 Token 数。又由于大语言模型能够支持的输入 Token 数有上限,因此也有方法研究如何动态调整如视频模态所占用的 Token 数量。
针对 Vision Encoder,还有一部分工作在研究如何在大语言模型场景,训练或者复用更适配的 Encoder。大部分多模态大模型的工作中,初期 Vision Encoder 的参数都是冻结,但会在图文语义对齐阶段打开,或者是最后的任务 Tuning 阶段打开对 Vision Encoder 参数进行训练,以保证在初期视觉编码器能够有效提取视觉特征,以及在后期能够让特征更适配多模态大模型的场景。论文 Points 中,为了提升模型对图片中 OCR 信息的提取和理解精度,作者创新的引入了一直冻结的 OCR Vit 编码器,提取 OCR 相关的信息。以此类推,若模型希望较大的提升某一视觉任务的精度,可以引入在对应任务训练的视觉编码器作为输入,通过更大的计算量换取精度的提升。
总结来说,视觉编码器需要能够解决视觉输入的多分辨率、多长宽比问题,能够解决视频输入时如何控制 Token 数量,以及视频中不同帧之间时序相关性的问题,能够解决当对某一视觉任务精度要求更高情况下,如果复用、重新训练更适配的编码器的问题。
Projector 模块的作用,更多的在于将 Vision Encoder 的结果同文本 Tokens 进行对齐,或者说是特征转换。初期,这个结构相对简单,一般是 2-3 层的 MLP 结构;中期,有些论文对这一结构进行了调整,改进为更为复杂的 Qformer 结构;但在一些后续的论文中,以及笔者的实际经验来看,复杂的 Qformer 结构并未让多模态大模型收获更高的精度。
做一个极限的假设,如果我们拥有无限的计算资源,无限的数据以及高质量的数据,那其实我们就端到端的训练多模态大模型,理应收获当前模型结构下的最优解。但实际上,由于训练资源的限制,以及不同训练任务的数据规模,尤其是高质量数据的规模,以及对于部分模块原有知识的复用,才迫使我们通过不同的训练顺序、训练策略、训练阶段,来尽量提升模型在有限资源下的精度。
图八是一个典型的多模态大模型的不同训练阶段期待达成的目标。第一阶段,通过图文对数据训练 Vision Encoder 和 Projector,将视觉特征同大语言模型数据的文本 Token 特征进行对齐;在部分工作中,这一阶段的训练也存在只训练 Projector 的情况。这里有一个可能的研究方向,是在使用图文对数据训练 Vision Encoder 时,可以引入部分纯计算机视觉的任务,来增强 Vision Encoder 的特征提取能力,而非简单的提取 high level 的语义特征。
第二阶段,通过丰富的下游任务数据,提升模型多方面的能力;如视觉 QA、视觉 Caption、图表理解、视觉对话等多种任务。可以大致总结一下,经过第二阶段的训练,多模态大模型掌握了较多的通用能力。
第三阶段,一般情况下会根据模型具体的使用场景,以及特有的一些指令的支持,构造相应的数据,同时搭配部分第二阶段的高质量数据,进行模型训练。第三阶段对于数据质量的要求更高,分布要求更为均匀,大量重复的第三阶段的数据反而可能导致精度下降。当然,很多论文如 ShareGPT4V、ChatBridge 等都介绍了一些通过 GPT-4V/GPT-4o 等闭源模型进行高质量数据构造的方法,由于第三阶段对于数据质量的要求,通常需要对这部分数据进行多模型的 Double Check 或者是人工挑选。
训练任务本质上取决于训练数据的构造,以及目标使用场景的需求;当然为了统一性和建模的一致性,部分工作也在尝试通过统一的建模,将多种有差别的任务进行统一。展示了 Qwen2-VL 模型当前能够处理的主流任务,包括但不限于内容理解,对话,推理,还包括公式、代码、密集文字等类似人类智能的能力。
以上多种任务在输入,尤其是输出上,是有较大的差异的。LAVENDER 模型,通过巧妙的前处理,将相关任务都统一成语言掩码模型(Masked Language Modeling)进行建模,提升模型训练效率。在 InternLM-XComposer 中,作者引入图文交互创作任务,让多模态大模型能够根据给定的题目写一篇包含插图的文章;文章将这个过程拆解成 3 个步骤,第一步生成文字,第二步生成插图的位置以及插图的 Caption 描述,第三步则从图片库中进行检索和优选。
在多模态大语言模型中,其语言模型的部分基本上是现有的大语言模型的简单复用,当然也会在 SFT 和后续的指令微调阶段引入部分文本数据,来保持语言模型的原有能力。从笔者的经验大致有如下的结论:
多模态大模型出现之前,典型的计算机视觉任务包括检测、跟踪、识别,分割,生成,编辑,Caption 等;每一个上述任务都需要单独设计数据集,评估标准,以及相应的算法模型。但以上任务又可以相对简单的总结为如下范式:特征 + 任务。多模态大模型出现之后,VisionLLM v2 将更多的上述任务统一到了同一个框架中,通过 Super-Link 技术,以及任务独有 Decoder 模块的复用,提升了多模态模型在不同子任务上的效果。
在工业界,通常会面临一种质疑,那就是内容理解应该做到什么粒度,才是一个好的,完备的,信息损失少的内容理解。举个例子,我们识别到图像中有一个人,而这个信息可能对于内容的分发是无效信息,但如果我们识别到图像中有一个长头发、混血、20 岁左右、正在练习瑜伽、颜值高、充满活力的女生这样的信息时,对于内容分发就会变更有效率。因此笔者认为,一个完备的内容理解应该具有如下特点:那就是这个内容理解的输出能够让生成模型完整的生成对应的内容。
欣喜的是,我们在论文 Emu3 中,看到了将多模态大模型的内容理解,同图片生成模型 Stable Diffusion 模型进行结合的方案。常见的语音交互助手,更多的是在理解自然语言的基础上,通过底层 API 的设计和调用来完成交互。在 MM1.5 中,通过多模态大模型能够理解 UI 界面的交互信息,然后我们就可以通过如'打开淘宝,帮忙我把购物车中的第一件商品下单'的方式来操作手机,这将极大的扩展语音交互的边界,让人可以通过自然语言更舒畅的同机器交流。
同其他任务的结合还包含了另一个方向,就是在输入中引入更多的其他模态的信息(如 Audio、Video 等),在 Ocean-Omni 中,Audio、Video 信号的引入,使得多模态大模型能够同时处理更多的多模态信号,扩展了任务的边界。
从 2022 年至今,大语言模型和多模态大模型都取得了长足的进步,但本质上上讲,其模型结构,建模方式都并未发生明显的改进。针对多模态大模型,这两年的模型进步应该说至少有一半的功劳是取决于训练数据的进步,模型的架构、训练范式等都未发生过于明显的变化。因此我们有必要讨论下多模态大模型数据集及其构建方式的演进。
预训练数据有两个基本的目的:(1)对齐不同模态,(2)提供世界知识。预训练数据可以根据粒度分为粗粒度和细粒度数据。粗粒度字幕数据有一些共同的特点:(1)数据量大,因为样本通常来源于互联网;(2)由于网络爬取的特性,字幕通常很短且嘈杂,因为它们来自网络图像的搭配文本。这些数据可以通过自动工具进行清洗和过滤,例如,使用 CLIP 模型过滤掉图像 - 文本对的相似度低于阈值的图像 - 文本对。
CC-3M 是一个包含 3.3M 图像 - 字幕对的网络规模字幕数据集,原始描述来源于与图像关联的 Alt-Text。CC-12M 是 CC-3M 的后续工作,包含 12.4M 图像 - 字幕对。SBU 字幕是一个包含 1M 图像 - 文本对的带字幕的照片数据集。
指令指的是任务的描述。直观地说,指令调整的目的是教会模型更好地理解用户指令并完成所要求的任务。通过这种方式调整后,LLM 能够通过遵循新的指令来泛化到未见过的任务,从而提升零样本性能。监督微调方法通常需要大量的特定任务数据来训练特定任务的模型,而提示方法减少了对大规模数据的依赖,并且可以通过提示工程完成专业任务。
在本节中,我们总结了三种典型的大规模收集指令数据的方法,即数据适应、自我指令和数据混合。数据适应:特定任务的数据集是高质量数据的丰富来源,大量工作利用现有的高质量数据集构建了指令格式化的数据集。以 VQA 数据集的转换为例,原始样本是一个输入 - 输出对,其中输入包括一个图像和一个自然语言问题,输出是给定图像的问题的文本答案。这些数据集的输入 - 输出对可以自然地构成指令样本的多模态输入和响应。
对齐调整更常用于需要将模型与特定人为偏好对齐的场景中,例如减少幻觉,人力反馈的强化学习(RLHF)和直接偏好优化(DPO)是两种主要的技术,用于对齐调整。对齐调整的数据收集要点是收集模型响应的反馈,即决定哪种响应更好。通常,收集此类数据的成本很高,同时此阶段使用的的数据量通常甚至少于前几个阶段。
LLaVA-RLHF,它包含 10K 个由人类反馈收集的偏好对,主要针对诚实和有帮助程度。该数据集主要用于减少模型响应中的幻觉。RLHF-V,它有 5.7K 个细粒度的人类反馈数据,通过分段级别的幻觉纠正收集。VLFeedback,它利用 AI 为模型响应提供反馈。数据集包含超过 380K 个比较对,由 GPT-4V 根据帮助性、忠实度和道德考虑进行评分。
对大模型而言,幻觉问题一直是阻碍其更为广泛应用的瓶颈。多模态大模型依旧存在幻觉问题。大体上,幻觉的产生主要来自于 4 个方面:(1)数据,(2)模型结构,(3)训练方法,(4)推理方法。
对于数据而言,产生幻觉又主要体现在 3 个方面:数量、质量、统计偏差(分布)。(1)数量方面,多模态大模型的训练数据量级是远小于大语言模型的,因此数据不足的情况可能导致跨模态对齐问题从而引发幻觉。(2)质量方面,由于多模态大模型的训练数据有大部分都从网络爬取,然后经历一系列的清洗过程得到,因此难免引入噪声数据;另一方面,数据缺乏多样性,尤其是负面样本的缺失;还有一点,在预训练阶段,我们会引入图 - 文对数据,常用的如图片的 Caption 数据,但是 Caption 的粒度(粗、细),细节到什么程度目前还没有很好的定论。(3)统计偏差方面,比如 Counting 任务,如果我们的模型很少见到 5 个及以上物体的训练数据,那么 Counting 的结果可能也倾向于给出小于 5 个的答案。
对于模型结构而言,较弱的视觉模块以及对齐模块,可能是导致幻觉发生的原因之一;另外,语言模型的偏向性容易导致模型忽略视觉内容,而引起幻觉。如语言模型学习到了'香蕉 - 黄色'这一对根深蒂固的知识,如果我们给一张照片,并且把香蕉涂成红色,大语言模型可能就会因为这种语言/知识的先验主导而忽略视觉信息。
对于训练方法而言,MLLM 的训练目标基本上与 LLM 相同,即自回归的下一个令牌预测损失。然而,MLLM 领域的一些研究表明,由于视觉内容具有复杂的空间结构,下一个令牌预测损失可能并不适合用于视觉内容的学习。此外,该损失函数在令牌级别进行优化,却缺乏对序列级别的监督。另一种观点认为,与训练 LLM 不同的是,MLLM 的训练过程中缺少了从强化学习引导的微调(RLHF)阶段,这成为了产生幻觉的一个潜在原因。
对于推理方法而言,一些工作也指出了自回归生成中可能存在一个问题。生成过程中,随着序列长度的增长,自注意力会更多地集中在先前生成的文本令牌上,也就是说,对视觉内容的注意力被稀释了。通过可视化生成过程中的注意力图谱,可以观察到生成内容更多地聚焦于之前的特殊令牌,如标点符号,而非视觉内容相关的令牌。这种'注意力丢失'的问题同样会导致模型的输出响应与视觉内容无关。
如幻觉成因部分所述,数据是导致 MLLM 中产生幻觉的主要因素之一。为了减轻幻觉问题,近期的研究在数据方面进行了尝试,包括引入负面数据、引入反事实数据,以及减少现有数据集中存在的噪声和错误。LRV-Instruction 被提出用于应对现有指令微调数据主要集中于正面指令样本的问题。HalluciDoctor 论文通过校准指令微调数据集来解决 MLLM 中的对象幻觉问题。ReCaption 工作提出了一种名为 ReCaption 的框架,用于重写数据集中现有图像 - 文本对的文本描述。EOS Decision 研究指出,幻觉往往发生在生成描述中位置较后的对象上,探索了增强模型序列结束(EOS)决策过程的方法。
直观地,提高 Vision Encoder 的分辨率,以及引入多个 Vision Encoder,都能够较为容易的降低多模态大模型的幻觉问题。QwenVL 展示了逐步将图像分辨率从 224×224 增大至 448×448 的有效性。最近的研究提出通过整合其他视觉编码器的视觉特征来弥补这一信息损失,研究提议混合 CLIP ViT 和 DINO ViT 的特征。为了改进 OCR 识别精度以及 OCR 方面的幻觉问题,POINTS 引入 OCR ViT 来提升模型性能。
HACL 提议通过对比损失增强视觉和文本表示之间的对齐。含有幻觉的文本被用作图像锚点的难负样本。此外,引入强化学习,也是一种有效的降低幻觉的方法。HA-DPO 将幻象处理为偏好选择问题,训练模型优先选择准确的响应而非幻象响应。HalDetect 首先介绍了 MHalDetect 数据集以检测幻象,随后提出了一种多模态奖励模型来检测由 MLLM 生成的幻象。LLaVA-RLHF 也尝试通过人类反馈来缓解幻象,将 RLHF 范式从文本领域扩展到视觉 - 语言对齐任务。
OPERA 方法,通过识别 Anchor Token 的存在检测幻觉问题。OPEAR 的工作提出了一个有趣的观察,即大多数幻觉与自注意力矩阵中表现出的知识聚合模式密切相关。基于这一观察,提出了一种基于过度信任惩罚和回顾分配策略的 MLLM 解码方法。首先,在 MLLM 束搜索解码过程中引入了对模型 Logits 的惩罚项,以缓解过度信任问题。此外,为了处理惩罚项无法解决的困难情况,提出了一种更积极的策略,称为回滚策略,以回顾先前生成标记中摘要标记的存在,并在必要时重新分配标记选择。
在 3.2 中我们回顾了多模态大模型同多种任务结合的方法。这里我们单独一章,较为全面的介绍一下多模态内容理解与生成任务的统一,这也是笔者认为较为理想的多模态大模型的发展方向。一般情况下,目前的方案都在尝试将图片内容的多模态理解同图像生成任务结合。VILA-U 将多模态大模型的理解任务和图像生成任务结合,通过发现输出 Token 中的 Vision Token,以及 Vision Decoder 将对应的视觉特征转化为图片输出。同时训练过程中,引入如图二十四所示的图像重建损失和对比学习损失,学习更为适配的 Vision Decoder。
Janus 模型在思路上和 VILA-U 类似,不同之处在于使用了两组不同的视觉 Encoder:(1)Understanding Encoder,负责常规的多模态理解任务;(2)Generation Encoder + Generation Decoder 组合,负责生成任务。Emu3 将图像生成的部分通过 Stable Diffusion 模型来实现,一定程度上是在利用一个足够好的图片生成模型,来提升多模态大模型理解和生成结合的效果。多模态大模型具备卓越的跨模态语义理解能力。在此基础上,生成任务将更具创造性和逻辑性。模型可以根据对多模态数据的理解,生成高质量的内容,如依据用户对特定场景的描述(包括场景氛围、人物特征等文本信息)以及参考一些风格类似的图像或视频,创作出符合用户期望的新作品。
在章节 3 中,我们较为详细的回顾了当前多模态大模型研究方向和热点,以及这些研究方向对于多模态大模型研究的必要性。就我个人而言,倾向于做创新性以及对于工业界有潜在价值的研究。通过对于多模态大模型的学习,以及在当前工业界实际项目推进中,我觉得值得深入研究的有如下几个课题。
探讨这个问题的核心出发点有两个:(1)当前多模态大模型依旧是弱视觉模型、强语言模型;(2)当前多模态大模型还未发现更为适配的训练方案。基于这两个出发点,我们可以从如下的角度进行研究: • 尝试引入更为强大的 Vision Encoder(已经存在或重新训练); • 多模态理解与生成任务更为紧密的结合,探索更适配的训练策略及方案; • 更为有效的训练数据构建方法(含生成数据)
如果一个模型拥有较高的智能,那理论上他能够处理更多的任务、解决更多的问题。在前文中曾讨论过,将多种多样的视觉任务进行引入,扩展大模型的能力边界。让多模态大模型不仅能够处理视觉问答、视觉 Caption、Counting、简单的属性判断等常规的任务,还能够处理如目标检测、跟踪、分割、识别、关键点等更为复杂且要求更高的任务。基于这个目标,我们可以尝试从如下的角度进行研究: • 是否有更为合理的、统一的方式将多种任务进行结合的方案; • 已有的子任务模型可以如何帮助到多模态大模型的学习; • 已有的子任务数据,应该如何被利用,比如目标检测,这些年来工业界应该积累海量的数据
无论是多模态大模型,还是大语言模型,小型化因该是业界的共识,都期待小型化后的大模型能够成为 On-Device/On-Chip 的能力,才能跟快速的普及和应用。常规的我们通过蒸馏来小型化,或者是通过把多模态大模型中 LLM 部分替换成更小的大语言模型,来达到小型化的目的。另外,小型化后的多模态大模型,将在更多的场景中被使用,如机器人场景,一个拥有多粒度的内容理解能力,以及自然流利的对话能力的机器人,将有非常大的想象空间。基于这个目标,可以有如下的研究方向: • 更为有效的多模态大模型的蒸馏手段; • 在模型尺寸有限的情况下,通过更为高效的端到端训练策略,及更多的训练数据,提升模型的精度; • 针对垂直领域,如 Mobile UI 操作,构建更为高效的方案; • 针对机器人场景,尝试将三维信息进行引入,构建更强大的多模态大模型;
多模态大模型的潜在应用场景还有很多,比如医疗图像领域。未来也可能由于理解和生成模型的进一步统一,多模态大模型能够完成很多生成模型的工作,类似 LLM,目前理解和生成能力都很强大。这一轮技术变革带来的提升短期受到了一些质疑,但长期看依旧乐观。
图二十八总结了多模态大模型截止 2024 年 4 月份的主要发展脉络。多模态大模型正朝着更高效、更通用、更可控的方向演进,为各行各业带来智能化升级的契机。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online