赞
踩
从自然语言监督中学习可迁移的视觉模型
openAI 2021年2月 48页
PDF
CODE
CLIP(Contrastive Language-Image Pre-Training)对比语言图像预训练模型
它比ImageNet模型效果更好,计算效率更高。尤其是zero-shot能力更强。
最初的想法类似于VirTex,联合训练一个图像CNN和文本Transformer预测一张图片的标题。但是很难预测到最准确的词汇。因此将预测目标函数改为了对比目标函数。
给定一个batch里的N个图文对(图片,文本),CLIP用来预测N×N个实际可能发生的图文对。为此,CLIP通过联合训练图片编码器和文本编码器学习了一个多模态的embedding空间,来最大化这N个真实图文对中图片和文本embedding之间的cosine相似度,同时最小化错误对的cosine相似度。损失函数:SCE 对称交叉熵
只使用了一个线性投影将各编码器表示汇集到多模态embedding空间中。简化了很多模块。架构图如图所示。
伪代码:
# 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
图片编码器-ResNet-50 或者 ViT,并做了些修改
文本编码器-Transformer
训练32轮
Adam
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。