Vision-Language 的 Vision Encoders

1. CLIP 2021.2.26

论文:Learning Transferable Visual Models From Natural Language Supervision(OpenAI in ICML2021)

如下图所示,将图片和文本描述通过网络都得到768维的Embedding,其中文本编码器使用transformer,图片编码器使用了ResNet和ViT两种结构进行实验,ViT的有4个模型:输入224px 的 ViT-B/32, ViT-B/16 (196 tokens), ViT-L/14 (256 tokens);输入336px的 ViT-L/14 (576 tokens)。预训练使用了400M(4亿)个图像文本对,每个batch采样三万多个这样的配对,通过对比学习,配对的Embedding位置处为1,非配对处为0进行交叉熵损失训练。

在测试时支持zero-shot推理,如下面右图所示:首先分别获得图像和文本的embedding,对提取的embedding进行归一化用来算相似度image_features /= image_features.norm(dim=-1, keepdim=True), text_features /= text_features.norm(dim=-1, keepdim=True)。通过计算图片Embedding和各个候选("a photo of [cls_name]")的相似度,相似度大于某个阈值或者topk的为输出类别结果。

CLIP

2. OpenCLIP 2022.9 (Stability AI)

2022年9月LAION发布OpenCLIP,用几十亿级数据训了不同规模的CLIP模型,效果优于原CLIP,如 224px输入的有:ViT-B/32, ViT-B/16, ViT-L/14, ViT-H/14, 和ViT-g/14。

3. FLIP 2022.12

论文:Scaling Language-Image Pre-training via Masking
在后续的改进中,Kaiming团队的FLIP证明,对图片进行50%的mask后只对非mask部分计算Embedding来训练CLIP,只在最后几轮用unmask训不会降低CLIP的性能,反而可以起到一定的正则化作用。他们也尝试了增加MAE loss,但没有带来性能提升。

4. SigLip 2023.3

论文:Sigmoid Loss for Language Image Pre-Training (Google)
SigLIP 提出把 CLIP 中的loss function 变为 a simple pairwise sigmoid loss. 由于不需要softmax,只需要过sigmoid,所以SigLIP可以支持更大的batchsize(虽然实验结果表明 32k的batchsize就足够了)。模型实现了84.5% ImageNet zero-shot accuracy,优于CLIP、OpenCLIP、EVA-CLIP。
CLIP: batch内的图文对做多分类softmax;比如下图第一行表示第一个文本与batch内哪个图片匹配,除了行还计算列,比如第一列表示第一个图片与哪个文本匹配。
SigLIP: batch内的图文对做二分类sigmoid,比如下图第一行表示第一个文本分别与batch内每个图片做二分类。

SigLIP

loss伪代码实现如下:

I_f = image_encoder(I)  # [n, d_i]
T_f = text_encoder(T)   # [n, d_t]
I_e = l2_normalize(np.dot(I_f, W_i), axis=1)   # [n, d_e]
T_e = l2_normalize(np.dot(T_f, W_t), axis=1)   # [n, d_e]

# CLIP
logits = np.dot(I_e, T_e.T) * np.exp(t)        # t is learned temperature parameter
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

# SigLIP
logits = np.dot(I_e, T_e.T) * np.exp(t) + b   # t, b is learned temperature and bias
labels = 2 * eye(n) - ones(n)                 # -1 with diagonal 1
loss = -sum(log_sigmoid(labels * logits)) / n

5. MetaCLIP

论文:

  1. DEMYSTIFYING CLIP DATA(Meta in ICLR2024 2023.9)
  2. MoDE: CLIP Data Experts via Clustering(Meta in CVPR2024 2024.4)
    ICLR2024这篇处理数据时加了子字符串匹配和数据分布平衡,他们的数据训出来的CLIP在ImageNet Zero-shot Acc上得分略好于DataComp-1B。CVPR2024这篇的思想如下图所示,
    MetaCLIP

纯Vision的Vision Encoders

1. DINOv2

论文:DINOv2: Learning Robust Visual Features without Supervision (Meta)

2. SAM

论文:Segment Anything (Meta)

标签: 多模态

添加新评论