DALL-E学习

2024-06-24  本文已影响0人  还没想好ONE

DALL-E

  1. CLIP

  2. Diffused Attention

    2.1 Denoise

    2.1.1 Noise Predicter

1.CLIP

全称为Contrastive Language–Image Pre-training,是一种多模态预训练模型,旨在将文本和图像信息相结合,实现强大的跨模态理解和生成能力

CLIP是由OpenAI提出的多模态预训练算法,它的主要思想是通过一个超大的图像-文本数据集,来训练一个图像Encoder和一个文本Encoder。如果是相关的文本和图片,编码后的特征向量应该是相似的,如果是不相关的文本和图片,编码后的特征向量应该是不相似的。

主要用途:

1.将预训练好的模型用于下游任务:比如作为zero-shot图像分类任务;

2.模型可以用于图像查询;

3.可用于文字生成图片的任务:比如说AI绘画;

CLIP源码地址https://github.com/openai/CLIP

1.1 预训练

1.1.1 训练集:

这个数据集有超过4亿个图片和文本的pair,完全是大力出奇迹。

训练集.png

1.1.2 训练集原理:

CLIP模型包含一个Text Encoder和一个Image Ecnoder。它们用于分别提取文本和图片的特征向量到同一个特征空间。在预训练的过程中,通过计算余弦相似度(cosine similarity)作为损失函数。原论文中的伪代码作为参考(引用:https://controlnet.space/2023/01/07/reading/ai-painting/)

# image_encoder - ResNet or Vision Transformer
# text_encoder - CBOW or Text Transformer
# I[n, h, w, c] - minibatch of aligned images
# T[n, l] - minibatch of aligned texts
# W_i[d_i, d_e] - learned proj of image to embed
# W_t[d_t, d_e] - learned proj of text to embed
# t - learned temperature parameter

# extract feature representations of each modality
I_f = image_encoder(I) #[n, d_i]
T_f = text_encoder(T) #[n, d_t]

# joint multimodal embedding [n, d_e]
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)

# scaled pairwise cosine similarities [n, n]
logits = np.dot(I_e, T_e.T) * np.exp(t)

# symmetric loss function
labels = np.arange(n)
loss_i = cross_entropy_loss(logits, labels, axis=0)
loss_t = cross_entropy_loss(logits, labels, axis=1)
loss = (loss_i + loss_t)/2

1.对比预训练

对比预训练.png

2.如何匹配

如何匹配.png

2.diffused attention

扩散:是因为它是通过扩散过程来生成噪声,然后再训练模型去预测这个噪声来去噪,从而达到生成图片的目的

2.1初步去理解图像生成的过程

初步理解图片生成.png

2.2前向过程:

生成噪声开始

高斯噪声

高斯噪声.png 高斯噪声1.png 高斯噪声2.png

2.3反向过程

通过预测这个噪声来去噪

反向过程噪声.png

3.Denoise - Noise Predicter

降噪 - 噪声预测

3.1 内部做了什么

内部做什么.png

3.2如何训练Noise Predicter

如何训练Noise.png

3.3加上语义后

3.3.1 前向过程

前向过程.png

3.3.2 反向过程

反向过程textto.png

反向过程

反向过程2.png
上一篇 下一篇

猜你喜欢

热点阅读