GLIP的理论介绍

参考

CLIP,GLIP论文解读,清晰明了-CSDN博客

目标检测概论

传统方法:基于CNN网络

主流:基于transfomer架构

        yolos :VIT做目标检测

        DERT:CNN提取特征,再transfomer

        共同缺点:都需要事先知道检测的类别,训练的时候训练集要有对应的类别

本文Glip:不需要事先知道类别。训练的时候可以是猫狗,检测的时候可以是马

GLIP做什么

        这篇论文做的任务是phrase grounding(利用指定描述的语句进行标定图片中所显示的物体),属于visual grounding(视觉基础训练)的一种。phrase grounding的任务是输入句子和图片,对于给定的sentence,要定位其中提到的全部物体然后框出来。

GLIP思想

过程:

        1.图像通过特征提取网络,先提取出图像中的特征

        2.文本通过文本特征提取网络,得到相应文本特征

        3.通过Fusion对视觉和文本信息交互。

        4.然后计算图像与文本的匹配度(把分类问题变成匹配问题,理解类别的语义)

Deep Fusion:将文本的特征和图像的特征抽出来之后,理论上是可以算后面这个相似度矩阵的,但是如果直接这么算的话,这个图像文本的joint embedding space (联合的特征提取)还没学好,如果多加一些层数,让他们之间融合一下,可能学的更好,相似的概念拉的更近,能让最后的文本特征和图像特征更好,更有关联性,这样再算后面的相似度的时候,就更有针对性。具体操作:用cross attention把这个文本和图像的特征进行交互,

CLIP的预训练(参考CLIP)

image-20240531131906031

        CLIP中,输入是图像-文本对的形式

        图像通过一个图像编码器,提取图像的特征

        文字通过文本编码器,提取文本特征

  每个training betch有N个图像-文本对,那么就可以得到N个这种图片的特征,N个文本的特征。

clip就是对特征去做对比学习。需要定义好正样本和负样本,如上图配对上就是正样本,不匹配就是负样本。那么上图对角线就是正样本,其余是负样本。那么N个特征,有N个正样本,N^2-N个负样本。

之后就可以改变输入,对比学习来训练,需要大量的数据

clip如何做zero shot(无标定)的推理(参考CLIP)

相似度来决定图像的文本

用 Image Net举例,CLIP就是先把Image Net 里这1000各类,飞机,车,狗啥的,变成一个句子,A photo of a plane,然后这1000个句子通过之前预训练好的这个文本编码器得到1000个文本的特征,推理的时候,任何一张图片通过图片的编码器,得到图片特征之后,与所有的文本特征做cosine similarity,相似性最高的这个文本特征所对应的句子就是我们想要的,从而完成分类。

GLIP与目标检测的损失

目标检测的分类loss:给定一个图片,有一个此图像的backbone,就可以得到这个region embedding,假如是一个Nxd的region embedding(就是假如说有N个bounding box,每个bounding box embedding的维度就是d),然后就是接了一个分类头,看看每一个bounding box里面的物体到底是哪个类,那么这个分类头就是一个矩阵W,它的维度就是cxd,c是有多少个类别,然后把region embedding和W相乘之后就可以得到最后这个分类的logic,再用NMS把这些bounding box筛选一下,跟ground truth(正确标记的)算cross entropy loss(交叉熵损失)就能得到最终的这个分类loss。

vision grounding的分类loss:算了一个匹配的分数S,看图像中的区域和句子里的单词如何匹配,也是给定一个图片,有一个image backbone,得到这个region embedding,然后给了一个句子prompt,通过一个文本编码器得到文本的embedding P,之后跟图像的embedding O 算一下similarity,就可以得到最终的这个分数。

把目标检测和vision grounding联合:判断什么时候是positive match,什么时候是negative match

GLIP的大数据集预训练方式

我的简单理解:

        选择用自训练的方式,用训练好的GLIP网络,去标注一些数据,得到标注好的图片。这些图片的标注可能是对的,可能是错的。不管,直接再放入网络继续训练

用已有的数据集不够,想把数据集变大,就需要借鉴于unlable的data,引入图像文本对来增加数据集,为了训练这个的目标检测模型,必须得有bounding box的ground truth,还需要知道这个bounding box对应于句子里的哪个单词,所以作者就采取self training,借鉴伪标签的方式,就是说他拿已经训练好的这个glip-tiny c,直接在这些图像文本对上做推理,他推理出来当前的图片上有哪些bounding box,他就把这些bounding box当成ground truth。可能有错误所以叫做伪标签,用了之后模型的稳健性更好

目标函数

我的理解:

        通过上面预训练的方式,和计算损失的方式,这样就能算出损失。通过损失算目标函数

目标函数怎么算的:做了一个有监督的学习的工作,时时刻刻都是有bounding box annotation,当抽出来O1,O2这些region的时候,是知道跟上面的单词是一一对应的,这样在算完这个O和P的这个相似度点乘之后,就可以去跟ground truth来算Alignment Loss,就完成了文本和图像特征之间的融合,就可以进一步的来做zero shot,对于这个定位的loss来说,因为有ground turth,就直接算一个L-1loss就可以。

升级版GLIPV2

他融合了更多的数据集,更多的任务,加入了一个VQA(Visual Question Answering)能回答问题了和Image Caption(图片说明),如图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值