ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

多模态网络实战:从 CLIP 对比预训练到 VQGAN+CLIP 与 DALL-E 图像生成(AI-For-Beginners 课程 X1)

多模态网络实战:从 CLIP 对比预训练到 VQGAN+CLIP 与 DALL-E 图像生成(AI-For-Beginners 课程 X1) 教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载导读本文基于 AI-For-Beginners 课程中第 25 课《多模态网络Multi-Modal Networks》仓库位置 lessons/X-Extras/X1-MultiModal/README.md本文依据其爱沙尼亚语译本 translations/et/lessons/X-Extras/X1-MultiModal/README.md展开系统讲解 OpenAI 提出的CLIP对比式图像预训练、VQGANCLIP 文本生成图像与DALL-E三类多模态模型。读完本文你将掌握CLIP 如何在零样本zero-shot条件下完成图像分类与基于文本的图像搜索VQGAN 与传统 GAN 的本质差异及CLIP 引导生成的优化闭环以及 DALL-E 1 与 DALL-E 2 的演进脉络。文中代码与运行结果均来自本仓库附带的 Clip.ipynb 动手实验。为什么需要多模态模型Transformer 架构在 NLP 任务上取得巨大成功后相同或相似的架构被迅速迁移到计算机视觉任务中。与此同时业界越来越希望构建同时融合视觉与自然语言能力的模型——让模型既能看懂图像又能理解文字指令并在这两种模态之间建立映射关系。OpenAI 的两个代表性尝试正是本文的主角CLIP与DALL.E。在本课程的主 READMEREADME.md中该课被定位为Extras部分的第 25 课并配套提供 PyTorch 风格的 Notebook 动手练习。CLIP对比式图像预训练Contrastive Image Pre-Training核心思想衡量图像与文字指令的匹配度CLIP 的主要思想是将文字提示text prompt与图像进行比较并判断图像与提示的匹配程度。它不要求模型事先见过某个固定类别的标签集合而是通过描述性文本作为分类的语义载体。CLIP 架构示意图像编码器与文本编码器将各自模态映射到同一向量空间图片来自本仓库 translated_images/et/clip-arch.b3dbf20b4e8ed8be.webp对比学习最大化正对的余弦相似度CLIP 使用互联网上采集的图像 标题caption数据进行训练。对于每一个批次取 N 对(图像, 文本)分别编码为向量表示图像向量I₁, ..., I_N文本向量T₁, ..., T_N随后将这些表示互相配对。损失函数的设计目标是最大化同一对如图像 I_i 与其标题 T_i向量之间的余弦相似度同时最小化该向量与所有其他配对的余弦相似度。这种拉近正样本对、推远负样本对的训练方式正是该方案被称为对比式contrastive的原因。CLIP 模型与对应库由 OpenAI 发布本仓库 Clip.ipynb 中通过pip install git...方式安装其方法在 OpenAI 官方博客中有介绍更详细的原理可参阅论文《Learning Transferable Visual Models From Natural Language Supervision》。预训练完成后只要给模型输入一批图像和一批文本提示它就会返回一个包含匹配概率的向量张量。应用一零样本图像分类假设需要在猫、狗、人三类之间对图像分类。此时无需为每个类别重新训练分类头只需给模型输入一张图像同时输入一组文本提示a picture of a cat、a picture of a dog、a picture of a human模型输出一个长度为 3 的概率向量取其中最大值对应的下标即为分类结果。CLIP 将图像与多条文本提示逐一匹配概率最高的提示即分类结论图片来自 translated_images/et/clip-class.3af42ef0b2b19369.webp由于模型已在大规模图文对数据上完成预训练分类过程不需要任何领域专属训练因此被称为**零样本zero-shot**能力。应用二基于文本的图像搜索反向使用同一机制即可实现文本驱动的图像检索当拥有一批图像的集合时把它们连同一条文本提示一起送入模型模型将返回与提示最相似的那张图像。这种搜索不再依赖预先写死的标签而是以自然语言语义为检索条件因此更加灵活还能感知图像中物体的空间布局关系。动手实验在 Clip.ipynb 中使用 CLIP本仓库在 Clip.ipynb 中提供了完整的端到端实验代码。需要特别提醒Notebook 开头明确说明CLIP 对计算资源相当贪婪greedy运行时请留意显存与内存占用。第一步安装与加载模型import torch import clip from PIL import Image import matplotlib.pyplot as plt import numpy as np import os np.set_printoptions(precision2, suppressTrue) device cuda if torch.cuda.is_available() else cpu model, preprocess clip.load(ViT-B/32, devicedevice)代码首先自动探测 GPUtorch.cuda.is_available()随后通过clip.load(ViT-B/32, ...)加载 CLIP 的 ViT-B/32 预训练权重preprocess为配套的图像预处理管线。第二步准备图像数据Notebook 从外部数据集下载猫图像子集Oxford-IIIT 宠物数据集的一个子集并解压到本地oxcats目录!wget https://mslearntensorflowlp.blob.core.windows.net/data/oxcats.tar.gz !tar xfz oxcats.tar.gz !rm oxcats.tar.gz第三步零样本图像分类image preprocess(Image.open(oxcats/Maine_Coon_1.jpg)).unsqueeze(0).to(device) text clip.tokenize([a penguin, a bear, a cat]).to(device) with torch.no_grad(): image_features model.encode_image(image) text_features model.encode_text(text) logits_per_image, logits_per_text model(image, text) probs logits_per_image.softmax(dim-1).cpu().numpy() print(Label probs:, probs)运行输出为Label probs: [[0. 0. 1.]]对一张缅因猫Maine Coon照片模型给出的三标签概率为[企鹅≈0, 熊≈0, 猫≈1]正确判定为猫。整个判定过程没有经过任何针对该任务的训练这正是零样本能力的直观体现。注意在推理时使用torch.no_grad()关闭梯度计算以节省显存。第四步智能图像搜索cats_img [Image.open(os.path.join(oxcats, x)) for x in os.listdir(oxcats)] cats torch.cat([preprocess(i).unsqueeze(0) for i in cats_img]).to(device) text clip.tokenize([a very fat gray cat]).to(device) with torch.no_grad(): logits_per_image, logits_per_text model(cats, text) res logits_per_text.softmax(dim-1).argmax().cpu().numpy() print(Img Index:, res) plt.imshow(cats_img[res])这一次输入的是一整批猫图像 一条文本提示a very fat gray cat一只非常胖的灰色猫运行输出Img Index: 97模型在全部图像中检索到第 97 张最符合胖灰猫语义描述的图片并直接可视化——这就是基于文本的图像搜索的完整工作流。本节要点Takeaway预训练 CLIP 模型无需领域专属训练即可完成常见物体的图像分类同时它允许更灵活的分类 / 搜索方式能够考虑图像中物体的空间配置。CLIP 另一个激动人心的用途就是下文要讲的VQGANCLIP。用 VQGANCLIP 实现文本到图像生成CLIP 除了判别式任务还能驱动图像生成仅凭一条文本提示生成对应画面。为此需要一个生成器模型generator——能够依据某个向量输入生成图像的模型其中一个典型代表就是VQGANVector-Quantized GAN向量量化 GAN。VQGAN 与传统 GAN 的三个关键差异VQGAN 与传统 GAN课程基础见 lessons/4-ComputerVision/10-GANs/README.md相比核心区别在于自回归 Transformer 生成视觉部件VQGAN 使用自回归 Transformer 架构生成一系列上下文丰富的视觉部件visual tokens再由这些部件拼合成完整图像而这些视觉部件本身由CNN学习得到CNN 基础见 lessons/4-ComputerVision/07-ConvNets/README.md。子图像判别器sub-image discriminator传统 GAN 对整张图做真 / 假的全有或全无判定而 VQGAN 的判别器逐个判断图像局部区域是否真实从而提供更细粒度的监督信号。VQGAN 生成器与 CLIP 引导打分器协作完成文本到图像生成图片来自 translated_images/et/vqgan.5027fe05051dfa31.webp为什么生成过程需要 CLIP导航VQGAN 与传统 GAN 的一个重要区别在于传统 GAN 从任意输入向量基本都能生成一张像样的图而 VQGAN 从随机向量出发很大概率产生不连贯incoherent的图像。因此生成过程必须被额外引导这正是 CLIP 的用武之地。完整的生成闭环如下从一个随机编码向量出发将其送入 VQGAN 生成一张初始图像将图像与目标文本提示同时送入 CLIP计算出一个损失函数衡量当前图像与文本提示的匹配程度通过**反向传播back propagation**不断调整输入向量参数最小化该 CLIP 损失重复迭代直到生成的图像与提示高度匹配。实现 VQGANCLIP 的出色开源库之一是Pixray。课程文档中以Artificial Teachers系列作品为例展示了 Pixray 的生成效果例如由提示a closeup watercolor portrait of young male teacher of literature with a book一位拿着书的年轻男文学教师水彩特写肖像生成的图像以及由a closeup oil portrait of young female teacher of computer science with a computer、a closeup oil portrait of old male teacher of mathematics in front of blackboard等提示生成的对应作品。相关生成样例图片保存在 translated_images/et/a_closeup_watercolor_portrait_of_young_male_teacher_of_literature_with_a_book.2384968e9db8a0d0.webp 等处VQGAN 论文《Taming Transformers for High-Resolution Image Synthesis》提供了更深入的理论细节。DALL-E以文本为条件的图像生成模型DALL-E 1DALL-E 是GPT-3 的一个变体专门训练用于根据提示生成图像参数量达到120 亿12 billion。与 CLIP 不同DALL-E 将文本与图像统一处理为单一的 token 流即图像和文本共享同一套离散 token 表示因此可以从多条提示出发按文本语义生成对应的图像。DALL-E 2DALL-E 2 与 DALL-E 1 的主要区别在于它能生成更逼真realistic的图像与艺术创作。课程文档中展示的示例如文学教师、计算机科学教师、数学教师三幅由提示生成的肖像即体现了这类文本条件生成模型的效果。小结与仓库资源索引主题仓库内配套资源CLIP 零样本分类与图像搜索实验lessons/X-Extras/X1-MultiModal/Clip.ipynbGAN 基础生成器 / 判别器 / 对抗训练lessons/4-ComputerVision/10-GANs/README.mdCNN 基础VQGAN 视觉部件的学习基础lessons/4-ComputerVision/07-ConvNets/README.md课程整体目录与课程环境搭建README.md、lessons/0-course-setup/setup.md通过本课你可以得出三个关键结论第一CLIP 通过对比学习把图像与文本映射到同一向量空间从而获得看图识字与以文搜图的零样本能力第二VQGAN 在生成端提供图像先验而 CLIP 在优化端提供语义对齐信号二者结合构成文本 → 图像的完整生成管线第三DALL-E 系列则展示了把文本与图像统一为 token 流、由语言直接驱动像素生成的另一条技术路线。若想进一步把 CLIP 应用到自己的任务中可直接在 Clip.ipynb 的基础上替换图像与提示文本进行实验。说明本文依据的爱沙尼亚语课程文档由 AI 翻译服务自动生成如需严谨校对建议以仓库内英文原版 lessons/X-Extras/X1-MultiModal/README.md 为准。赞分享教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载相关推荐AI-For-Beginners 多模态网络实战CLIP 对比预训练、VQGAN 引导生成与 DALL-EAI For Beginners 多模态网络实战CLIP 对比预训练、VQGAN 引导生成与 DALL E 在 Transformer 架构成功解决 NLP教程人工智能机器学习深度学习AI-For-Beginners 多模态网络实战指南从 CLIP 对比学习到 VQGANCLIP 与 DALL-E 图像生成AI For Beginners 多模态网络实战指南从 CLIP 对比学习到 VQGANCLIP 与 DALL E 图像生成 导读 本文是 AI For B教程人工智能机器学习深度学习eslint-plugin-react 的 no-invalid-html-attribute 规则禁止无效 HTML 属性值完整指南eslint plugin react 的 no invalid html attribute 规则禁止无效 HTML 属性值完整指南 本篇技术指南围绕 es教程人工智能机器学习深度学习上一篇腾讯混元 Hy3 在 CANN NPU 上的高性能推理部署与优化实战下一篇DataHub Kafka 元数据采集实战指南从 Confluent Cloud 连接到 Schema 解析、数据画像与排障创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表