安徽网站建站系统哪家好,网站建设的违约责任,谁能给个网址啊,常用的网络营销方式有一、Diffusion扩散理论
1.1、 Diffusion Model#xff08;扩散模型#xff09;
Diffusion扩散模型分为两个阶段#xff1a;前向过程 反向过程
前向过程#xff1a;不断往输入图片中添加高斯噪声来破坏图像反向过程#xff1a;使用一系列马尔可夫链逐步将噪声还原为原始…一、Diffusion扩散理论
1.1、 Diffusion Model扩散模型
Diffusion扩散模型分为两个阶段前向过程 反向过程
前向过程不断往输入图片中添加高斯噪声来破坏图像反向过程使用一系列马尔可夫链逐步将噪声还原为原始图片
前向过程 ——图片中添加噪声 反向过程——去除图片中的噪声 1.2、 训练过程U-Net网络
在每一轮的训练过程中包含以下内容
每一个训练样本对应一个随机时刻向量time step编码时刻向量t转化为对应的time step Embedding向量将时刻向量t对应的高斯噪声ε应用到图片中得到噪声图Noisy image将成组的time step Embedding向量、Noisy image注入到U-Net训练U-Net输出预测噪声Predicted noise与真实高斯噪声True noise ε构建损失。 下图是每个Epoch详细的训练过程
1.3、 推理过程反向扩散
噪声图Noisy image经过训练后的U-Net网络会得到预测噪声Predicted Noisy而去噪图Denoised image 噪声图Noisy image - 预测噪声图Predicted Noisy。计算公式省略了具体的参数只表述逻辑关系
1.4、 补充U-Net结构
U-Net的模型结构就是一个编-解码的过程下采样Downsample、中间块Middle block、上采样Upsample中都包含了ResNet残差网络
1、主干网络做特征提取2、加强网络做特征组合3、预测网络做预测输出 1.5、补充DM扩散模型的缺点
Diffusion Model是在原图上完成前向、反向扩散过程计算量巨大Diffusion Model只与时刻向量t产生作用生成的结果不可控 二、Stable Diffusion原理
为改善DM扩散模型的缺点Stable Diffusion引入图像压缩技术在低维空间完成扩散过程并添加CLIP模型使文本-图像产生关联。
2.1、Stable Diffusion的改进点
1. 图像压缩DM扩散模型是直接在原图上进行操作而Stale Diffusion是在较低维度的潜在空间上应用扩散过程而不是使用实际像素空间这样可以大幅减少内存和计算成本 2. 文本-图像关联在反向扩散过程中对U-Net的结构做了修改使其可以添加文本向量Text Embedding使得在每一轮的去噪过程中让输出的图像与输入的文字产生关联 2.2、Stable Diffusion的生成过程
Stable Diffusion在实际应用中的过程原图——经过编码器E变成低维编码图——DM的前向过程逐步添加噪声变成噪声图——T轮U-Net网络完成DM的反向过程——经过解码器D变成新图。
Stable Diffusion会事先训练好一个编码器E、解码器D来学习原始图像与低维数据之间的压缩、还原过程首先通过训练好的编码器E 将原始图像压缩成低维数据再经过多轮高斯噪声转化为低维噪声Latent data然后用低维噪声Latent data、时刻向量t、文本向量Text Embedding、在U-Net网络进行T轮去噪完成反向扩散过程最后将得到的低维去噪图通过训练好的解码器D还原出原始图像完成整个扩散生成过程。
2.3、补充CLIP模型详解
CLIP(Contrastive Language-Image Pre-Training) 模型是 OpenAI 在 2021 年初发布的用于匹配图像和文本的预训练神经网络模型是近年来在多模态研究领域的经典之作。OpenAI 收集了 4 亿对图像文本对一张图像和它对应的文本描述分别将文本和图像进行编码使用 metric learning进行训练。希望通过对比学习模型能够学习到文本-图像对的匹配关系。
CLIP的论文地址
CLIP模型共有3个阶段1阶段用作训练2、3阶段用作推理。
Contrastive pre-training预训练阶段使用图片 - 文本对进行对比学习训练Create dataset classifier from label text提取预测类别文本特征Use for zero-shot predictiion进行 Zero-Shot 推理预测 2.3.1、训练阶段
通过计算文本和目标图像的余弦相似度从而获取预测值。CLIP模型主要包含以下两个模型
Text Encoder用来提取文本的特征可以采用NLP中常用的text transformer模型Image Encoder用来提取图像的特征可以采用常用CNN模型或者vision transformer模型 这里举例一个包含N个文本-图像对的训练batch对提取的文本特征和图像特征进行训练的过程
输入图片 — 图像编码器 — 图片特征向量输入文字 — 文字编码器 — 文字特征向量并进行线性投射得到相同维度将N个文本特征和N个图像特征两两组合形成一个具有N2个元素的矩阵CLIP模型会预测计算出这N2个文本-图像对的相似度文本特征和图像特征的余弦相似性即为相似度对角线上的N个元素因为图像-标签对应正确被作为训练的正样本剩下的N2-N个元素作为负样本CLIP的训练目标就是最大化N个正样本的相似度同时最小化N2-N个负样本的相似度
2.3.2、推理过程
CLIP的预测推理过程主要有以下两步
提取预测类别的文本特征由于CLIP 预训练文本端的输出输入都是句子因此需要将任务的分类标签按照提示模板 (prompt template)构造成描述文本由单词构造成句子A photo of {object}.然后再送入Text Encoder得到对应的文本特征。如果预测类别的数目为N那么将得到N个文本特征。进行 zero-shot 推理预测将要预测的图像送入Image Encoder得到图像特征然后与上述的N个文本特征计算余弦相似度和训练过程一致然后选择相似度最大的文本对应的类别作为图像分类预测结果。进一步地可以将这些相似度看成输入送入softmax后可以得到每个类别的预测概率。 2.3.3、补充zero-shot 零样本学习
zero-shot 零样本学习域外泛化问题。利用训练集数据训练模型使得模型能够对测试集的对象进行分类但是训练集类别和测试集类别之间没有交集期间需要借助类别的描述来建立训练集和测试集之间的联系从而使得模型有效。
可以发现CLIP其实就是两个模型视觉模型 文本模型。
在计算机视觉中即便想迁移VGG、MobileNet这种预训练模型也需要经过预训练、微调等手段才能学习数据集的数据特征而CLIP可以直接实现zero-shot的图像分类即不需要任何训练数据就能在某个具体下游任务上实现分类这也是CLIP亮点和强大之处。
我的猜测CLIP的zero-shot能力是依赖于它预训练的4亿对图像-文本对样本空间涵盖的太大并不是真正的零样本学习和解决域外泛化问题。和人脸比对的原理相似依靠大量样本来学习分类对象的特征空间。人脸比对是image-to-imageCLIP是 image-to-text。
2.3.4、代码 CLIP实现zero-shot分类
OpenAI有关CLIP的代码链接地址
2.3.4.1、图像数据、文本数据
向模型提供8个示例图像及其文本描述并比较相应特征之间的相似性
# images in skimage to use and their textual descriptions
descriptions {page: a page of text about segmentation,chelsea: a facial photo of a tabby cat,astronaut: a portrait of an astronaut with the American flag,rocket: a rocket standing on a launchpad,motorcycle_right: a red motorcycle standing in a garage,camera: a person looking at a camera on a tripod,horse: a black-and-white silhouette of a horse, coffee: a cup of coffee on a saucer
}2.3.4.2、计算余弦相似度 2.3.4.3、Zero-Shot图像分类
from torchvision.datasets import CIFAR100cifar100 CIFAR100(os.path.expanduser(~/.cache), transformpreprocess, downloadTrue)text_descriptions [fThis is a photo of a {label} for label in cifar100.classes]
text_tokens clip.tokenize(text_descriptions).cuda()with torch.no_grad():text_features model.encode_text(text_tokens).float()text_features / text_features.norm(dim-1, keepdimTrue)text_probs (100.0 * image_features text_features.T).softmax(dim-1)
top_probs, top_labels text_probs.cpu().topk(5, dim-1)plt.figure(figsize(16, 16))for i, image in enumerate(original_images):plt.subplot(4, 4, 2 * i 1)plt.imshow(image)plt.axis(off)plt.subplot(4, 4, 2 * i 2)y np.arange(top_probs.shape[-1])plt.grid()plt.barh(y, top_probs[i])plt.gca().invert_yaxis()plt.gca().set_axisbelow(True)plt.yticks(y, [cifar100.classes[index] for index in top_labels[i].numpy()])plt.xlabel(probability)plt.subplots_adjust(wspace0.5)
plt.show()2.4、补充Stable Diffusion训练的四个主流AI模型
Dreambooth会使用正则化。通常只用少量图片做输入微调就可以做一些其他扩散模型不能或者不擅长的事情——具备个性化结果的能力既包括文本到图像模型生成的结果也包括用户输入的任何图片text-inversion通过控制文本到图像的管道标记特定的单词在文本提示中使用以实现对生成图像的细粒度控制LoRA大型语言模型的低阶自适应简化过程降低硬件需求Hypernetwork这是连接到Stable Diffusion模型上的一个小型神经网络是噪声预测器U-Net的交叉互视cross-attention模块
四个主流模型的区别
Dreambooth最直接但非常复杂占内存大用的人很多评价好text-inversion很聪明不用重新创作一个新模型所有人都可以下载并运用到自己的模型模型小存储空间占用小LoRA可以在不做完整模型拷贝的情况下让模型理解这个概念速度快Hypernetwork没有官方论文 三、补充四大生成模型对比
GAN生成对抗模型、VAE变微分自动编码器、流模型、DM扩散模型
3.1、GAN生成对抗模型
GAN模型要同时训练两个网络难度较大多模态分布学习困难不容易收敛不好观察损失图像特征多样性较差容易出现模型坍缩只关注如何骗过判别器
3.2、VAE变微分自动编码器
Deepfaker、DeepFaceLab的处理方式生成中间状态
3.3、流模型
待完善
3.4、DM扩散模型
xx
参考 神器CLIP连接文本和图像打造可迁移的视觉模型