【VLM】SigLIp: Sigmoid Loss for Language Image Pre-Training

PaperLink: https://arxiv.org/pdf/2303.15343
code: https://github.com/mlfoundations/open_clip/blob/main/src/open_clip/loss.py
参考: https://zhuanlan.zhihu.com/p/709572492

概要

CLIP面临的挑战
1.需要较大的batch,即需要大量的GPU;
2.图像和文本的特征需要gather所有GPU上的,需考虑GPU之前的大量通信
提出SigLip(使用sigmoid计算loss,替换之前的softmax函数),减少clip对batch大小的要求。

技术细节

  • ClipLoss
    1)非对称loss,由文本–图像的softmax+图像到文本的softmax两项组成,
    2)以image–>text softmax计算为例,分子中的每个正样本对(xi, yi),都会被分母中的所有负样本(xi,yj)对进行全局归一化。每个GPU需要维护一个N*N的成对相似性矩阵(导致二次复杂)
    t为温度超参,控制softmax输出的锐度/平滑度
    softmax:多分类问题,给定查询图像I,分配给其对应的正文本T(小batch中所有其他负文本中的文本)
    在这里插入图片描述
  • SigLipLoss
    SigLIP 既不对称,也不需要全局归一化因子。因此,每对(正数和负数)的损失都与小批量内的其他对无关
    zij为图像-文本对的标签,正对为1,负对为-1
    b: logit bias, 训练初期很多负样本的严重不平衡占据loss主体,导致较大的初始化优化步长去纠正这种偏差,为了避免这种情况,引入额外可学习的bias参数,初始化值为-10,确保训练初期和先验值较接近,且不需要过度纠正。

在这里插入图片描述
对显存的需求(都计算小批量中每对(正/负)之间的相似性):
Clip:每个GPU 都会为所有成对相似性维护一个NxN矩阵,以便对正对进行规范化–>需要两次gather
SigLip:无需维护NxN矩阵,因为每个正/负对都是独立的–>1次全收集
在这里插入图片描述

Sigmoid: 二分类问题, 匹配对(I,T)为正样本,其余为负标签,无需全局归一化因子
全收集时间成本较大: 所有 GPU 都处于空闲状态,等待接收所有特征后再计算损失

  • "chunk"实现
    在这里插入图片描述
    在这里插入图片描述
    对于每个 GPU(设备),“分块”实现可以总结如下:
    a)计算其自身文本和图像特征的损失
    b)从单个兄弟 GPU接收文本特征
    c)使用其自身的图像及其同级文本特征来计算新的损失。
    d)将总损失增加新计算的损失。
    e)重复步骤#2,直到所有兄弟 GPU 都传递其文本特征。

关于复现

基于cnclip框架复现siglip的结果,在小批量公开数据集(10M)上做消融实验,复现siglipLoss的效果
评测: 在MUGE+Flickr30K-CN数据集上做Text-to-Image Retrieval的测试, 指标为MR(mean-recall),R@1/5/10

  • 预训练【视觉-文本模型】的权重组合方式【vit_so400m_patch14_siglip_224+cnclip-vit-l-14-bert-base】,[指标对标ViT-L-14]
  • 文本侧数据增强:使用大语言模型,对公开数据集重新打标;结合原始文本标签进行文本aug(以较大的概率选择原始标签)
  • 大视觉模型+大分辨率的指标收益
  • clip范式中,效果较优时,视觉模型与语言模型参数量的大小
    参数量gap不宜过大(大视觉模型+大语言模型+大输入分辨率)
    大语言模型(长输入文本)
  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值