Transformer实战(39)——多模态生成式Transformer

张开发
2026/4/14 3:58:19 15 分钟阅读

分享文章

Transformer实战(39)——多模态生成式Transformer
Transformer实战39——多模态生成式Transformer0. 前言1. 多模态学习2. 生成式多模态人工智能3. Stable Diffusion3.1 扩散模型3.2 Stable Diffusion 应用4. 使用 MusicGen 生成音乐5. 基于 Transformer 文本转语音小结系列链接0. 前言能够理解多种类型输入的模型被称为多模态模型。多模态学习是人工智能 (Artificial Intelligence,AI) 领域的重要研究方向之一长期受到众多研究人员的关注。本节将介绍使用多模态模型的生成式AI包括文本到图像 (text-to-image) 和文本到音乐 (text-to-music) 的生成模型。将介绍Stable Diffusion及其工作原理同时也将介绍MusicGen和AudioGen模型。1. 多模态学习从广义上讲多模态学习 (Multimodal Learning) 是指在机器学习中使用不同模态进行学习的过程。在机器学习中模态指的是输入模型的数据类型。常见的模态包括文本、视觉(图像和视频)、听觉(声音、语音和音乐)等数据。对比语言-图像预训练 (contrastive language-image pretraining,CLIP) 模型是经典的多模态模型它能够将文本和视觉数据表示到同一个空间中。利用这种表示我们可以创建不同的应用。例如我们可以为来自同一数据集的图像和文本创建向量表示并在此基础上构建分类器。或者我们也可以通过摄像头、RAM、电池和设备外观图像等特征预测手机的价格。如何融合这些模态使得模型能够理解并生成最佳输出一直是该领域的一个重要问题。多模态学习并不仅仅关注理解不同模态中的数据它还涉及从一种模态获取输入并生成另一种模态的输出。从这个意义上讲图像描述 (image captioning) 也可以视为一种多模态学习形式因为输入是视觉数据而输出是文本数据。传统方法融合不同模态特征通常采用手动加权或训练融合权重而新的方法通过将所有特征转换为相同或非常相似的特征空间来解决这一问题。例如文本-视觉多模态模型将图像分割为与文本词元类似的图像块。然后这些视觉词元和文本词元以相似的方式表示模型不再分别接受不同模态的输入模型则以相同的方式处理它们。在下一小节中将了解更多关于生成式多模态AI的内容从一种模态获取输入并生成另一种模态的输出。2. 生成式多模态人工智能生成式人工智能 (Generative AI,GenAI) 是一类能够生成输出的AI模型。这并不意味着其他模型不能生成输出(所有AI模型都会生成输出)生成式AI强调的是能够理解训练数据的潜在模式并根据这些模式生成新数据的模型。生成式AI由来已久但由于过去我们对其生成输出的控制有限因此它并未引起广泛关注。即便我们能控制它也无法精确指定我们希望生成的内容。即便我们能够控制并明确指定生成内容这一过程对于用户而言也并不容易理解。随着ChatGPT、DeepSeek等模型的发布能够通过文本描述来获取我们希望生成的内容甚至一些模型能够接受图像或语音形式的输入这使得生成式AI技术可以更容易地为广大用户所使用。在下一节中我们将详细解释Stable Diffusion在文本到图像生成中的工作原理并展示其在实际图像生成中的应用。3. Stable Diffusion3.1 扩散模型文本生成图像是生成式AI的一种应用。通过文本生成图像特别是生成高质量图像具有广泛的应用场景包括游戏设计、市场营销等。为了理解这类模型的工作原理我们需要首先了解关于扩散模型 (diffusion model) 的基本原理。扩散 (Diffusion) 这一术语源自物理学。类似于墨水在水中溶解的物理反应AI中的扩散过程也是如此。例如以一张普通图像为起点正向扩散是向图像中添加噪声的过程。如下图所示这一过程会将图像逐渐转化为噪声(随着噪声水平的增加)使图像与原始图像无法区分。正向扩散过程会生成同一图像带有不同噪声量的版本我们可以用它来训练模型以逆转该过程即去除噪声。这是一种非常高效的技术可以生成非常逼真的图像。但这种方法的一个主要问题是它的生成速度非常慢。必须逐步去除图像中的噪声。这一过程也称为采样在每一步中将含噪图像输入到模型中模型预测噪声像素然后从图像中去除噪声。这个迭代过程会持续进行直到最终从纯噪声生成一张逼真的图像。调度器 (Scheduler) 用于控制添加到图像中的噪声量。调度器遵循一定的模式在每一步为图像添加一定量的噪声这确保了在整个过程中噪声量按照一定的规律变化。变分自编码器 (Variational Auto-Encoders, VAE) 是一种更快的方法首先压缩输入然后再尝试解压。经典的VAE架构如下图所示Stable Diffusion使用的另一种更快噪声添加的方法是VAE因为它们不是直接对图像应用噪声而是将噪声应用于图像的潜空间表示。与原始图像相比潜空间的大小要小得多。这个过程可以重新表述为在图像的潜空间表示中生成具有特定调度器约束的噪声并将其添加到图像中。上述过程是一种生成图像的方法。但如果无法控制这个过程它只能用来随机生成图像。为了解决这个问题使用文本编码器(例如CLIP)将文本编码成密集向量。然后这个密集向量用来在去噪和解码过程中引导UNet(一种卷积神经网络架构) 生成图像。我们已经了解了Stable Diffusion及其工作原理。接下来将学习如何使用它生成图像。3.2 Stable Diffusion 应用在本节中将学习如何使用Stable Diffusion进行实际操作。通过使用diffusers和transformers库可以极大简化这一过程。(1)为了以最简单的方式使用Stable Diffusion首先需要安装以下库$ pipinstalldiffusers transformers accelerate safetensors(2)diffusers是用来加载Stable Diffusion模型的库importtorchfromdiffusersimportStableDiffusionPipeline,DPMSolverMultistepScheduler model_idstabilityai/stable-diffusion-2-1pipeStableDiffusionPipeline.from_pretrained(model_id,torch_dtypetorch.float16)pipe.schedulerDPMSolverMultistepScheduler.from_config(pipe.scheduler.config)pipepipe.to(cuda)(3)管道构建完成后向其提供提示生成图像prompt hyperrealistic portrait of unicornimagepipe(prompt).images[0](4)生成的图像如下图所示frommatplotlibimportpyplotasplt plt.axis(off)plt.imshow(image)(5)可以看到虽然生成的图像并不像预期的那样逼真但生成图像质量非常高。通过使用提示工程可以改进生成结果prompthyperrealistic portrait of unicorn, cosmic survival, Hyper quality, photography, digital artimagepipe(prompt).images[0]plt.axis(off)plt.imshow(image)通过提示工程改进后的输出如下可以看到使用提升工程能够显著改进生成质量这也就是提示工程逐渐流行的原因。Stable Diffusion不仅可以通过文本提示进行控制还可以通过另一张图像作为生成源进行控制。在Stable Diffusion基础上应用的新技术(如ControlNet)可以实现这种能力。简单来说ControlNet通过将Stable Diffusion与特定输入条件结合来控制生成过程。例如可以使用涂鸦、边缘图、姿态关键点、深度图、分割图等。4. 使用 MusicGen 生成音乐大语言模型在许多领域都取得了巨大成功。除了生成文本和图像外也可以将大模型(通常基于Transformer)用于其他任务。例如可以创建一个大音乐模型接受文本提示作为输入并生成音乐作为输出。MusicGen是音乐生成大模型中的前沿代表使用audiocraft库可以轻松使用MusicGen。(1)首先安装Audiocraft库$ pipinstallaudiocraft(2)接下来加载模型并设置音乐生成时长fromaudiocraft.modelsimportmusicgenimporttorch modelmusicgen.MusicGen.get_pretrained(facebook/musicgen-medium,devicecuda)model.set_generation_params(duration8)(3)最后向模型传递提示并生成音乐generated_musicmodel.generate([80s rock music with drums and electric guitar,90s retro action game music],progressTrue,)(4)在notebook中播放音乐fromaudiocraft.utils.notebookimportdisplay_audio display_audio(generated_music,32000)可以使用不同的提示生成音乐。可以将这些生成的音乐用于创意工作例如为正在开发的游戏制作大量音乐或者可以创建一个应用程序让用户生成音乐并相互分享。MusicGen还支持音频提示这意味着可以输入一段特定音乐样本改变其风格。在下一节中我们将学习如何使用语音生成模型。5. 基于 Transformer 文本转语音文本转语音生成一直是AI助手的重要组成部分因为它们通常需要与用户进行语音交互。可以使用Transformer来完成这一任务Transformer能够学习如何复制不同的声音。BARK是文本转语音生成领域最成功的模型之一。这个模型可以生成逼真的人类语音还可以添加背景噪声、音乐和音效。它支持多语言和多个说话者。使用transformers库可以非常简单的调用BARK模型。(1)首先导入所需库和模块fromtransformersimportAutoProcessor,AutoModel(2)接下来加载处理器和模型。处理器用于处理输入processorAutoProcessor.from_pretrained(suno/bark)modelAutoModel.from_pretrained(suno/bark)(3)使用处理器和模型生成语音。需要注意的是我们可以使用特殊词元比如[clears throat](清喉咙)或[laughs](笑声)来在语音中添加效果inputsprocessor(text[Hi! My name is Superman. I like superpower [laughs] I mean, I really like it [clears throat] I have been working in field on saving world for almost a decade],return_tensorspt,)speechmodel.generate(**inputs,do_sampleTrue)(4)在notebook中播放生成的音频fromIPython.displayimportAudio Audio(speech.cpu().numpy().squeeze(),ratemodel.generation_config.sample_rate)我们已经学习了如何使用多模态模型生成图像、音乐和语音这些模型能够实现更加智能和多样化的应用。内容创作者可以使用它们来生成创意性内容用于广告、游戏等。小结在本节中我们学习了如何使用多模态生成式Transformer生成图像、音乐和语音同时这一领域发展迅速几乎每天都会有新的生成式AI工具被创建。通过本节我们已经掌握了如何使用这些模型并将它们集成到日常内容创作任务中。系列链接Transformer实战1——词嵌入技术详解Transformer实战2——循环神经网络详解Transformer实战3——从词袋模型到TransformerNLP技术演进Transformer实战4——从零开始构建TransformerTransformer实战5——Hugging Face环境配置与应用详解Transformer实战6——Transformer模型性能评估Transformer实战7——datasets库核心功能解析Transformer实战8——BERT模型详解与实现Transformer实战9——Transformer分词算法详解Transformer实战10——生成式语言模型 (Generative Language Model, GLM)Transformer实战11——从零开始构建GPT模型Transformer实战12——基于Transformer的文本到文本模型Transformer实战13——从零开始训练GPT-2语言模型Transformer实战14——微调Transformer语言模型用于文本分类Transformer实战15——使用PyTorch微调Transformer语言模型Transformer实战16——微调Transformer语言模型用于多类别文本分类Transformer实战17——微调Transformer语言模型进行多标签文本分类Transformer实战18——微调Transformer语言模型进行回归分析Transformer实战19——微调Transformer语言模型进行词元分类Transformer实战20——微调Transformer语言模型进行问答任务Transformer实战21——文本表示Text RepresentationTransformer实战22——使用FLAIR进行语义相似性评估Transformer实战23——使用SBERT进行文本聚类与语义搜索Transformer实战24——通过数据增强提升Transformer模型性能Transformer实战25——自动超参数优化提升Transformer模型性能Transformer实战26——通过领域适应提升Transformer模型性能Transformer实战27——参数高效微调Parameter Efficient Fine-TuningPEFTTransformer实战28——使用 LoRA 高效微调 FLAN-T5Transformer实战29——大语言模型Large Language ModelLLMTransformer实战30——Transformer注意力机制可视化Transformer实战31——解释Transformer模型决策Transformer实战32——Transformer模型压缩Transformer实战33——高效自注意力机制Transformer实战34——多语言和跨语言Transformer模型Transformer实战35——跨语言相似性任务Transformer实战36——Transformer模型部署Transformer实战37——Transformer模型训练追踪与监测Transformer实战38——视觉Transformer

更多文章