如何将图像和文本嵌入向量带到单个共享空间?

问题描述 投票:0回答:1

我见过多种多模态架构,它们采用图像和文本等两种不同模态的嵌入,并通过查找这些向量之间的相似性,它们执行各种下游任务,如视觉问答、图像到文本或文本到图像检索、图像字幕等。这种多模态架构的一个很好的例子是 CLIP、DALL-E 等。但是我有一个问题,当图像和文本嵌入最初进行时,它们属于不同的坐标系。例如,假设图像嵌入向量属于某个坐标系“A”,而文本嵌入系统属于某个完全不同的坐标系“B”。如何将这两个不同的向量投影或带到单个嵌入空间。进行什么样的变换或对齐以使它们成为单个坐标系的向量(假设为“C”)。那么显然它们的尺寸和大小会有所不同。例如,如果我从某个 CNN 传递图像,我得到 1024 维向量,而由某个转换器制作的文本嵌入是 786 维向量。他们如何使它们的维度相等,因为要找到相似性,例如任何两个向量之间的余弦相似性,需要两个向量具有相同的大小。所以首先我想知道这些向量如何被带到同一个空间以及它们的维度如何变得相等。

我正在实现 CLIP 模型来连接 X 射线图像和放射学报告,为此我想知道如何将图像和文本嵌入引入单个共享空间。

clip multimodal openaiembeddings
1个回答
0
投票

CLIP 采用图像和文本嵌入的点积将图像和文本潜在嵌入到同一空间中。

即来自 CLIP 论文(“从自然语言监督中学习可迁移的视觉模型”):

# 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)
© www.soinside.com 2019 - 2024. All rights reserved.