当前位置: 首页 > news >正文

做网站的是外包公司吗南京h5 网站建设

做网站的是外包公司吗,南京h5 网站建设,wordpress批量导入,本地wordpress密码忘记了大家好#xff0c;今天这个串讲其实是主要想说一下在过去一年中#xff0c;大家是怎么把 CLIP 这个模型或者 CLIP 这个思想应用到其他领域中去的。本来是想先做一下这个多模态的串讲的#xff0c;但是就在前几天看到了 CLICK puzzle 这篇论文#xff0c;获得了这个今年 c G…        大家好今天这个串讲其实是主要想说一下在过去一年中大家是怎么把 CLIP 这个模型或者 CLIP 这个思想应用到其他领域中去的。本来是想先做一下这个多模态的串讲的但是就在前几天看到了 CLICK puzzle 这篇论文获得了这个今年 c GRAPH 的最佳论文所以突然觉得先串讲一下这个 CLIP 的一些后续工作可能对讲接下来的这个多模态学习也有一些帮助所以就先做了这一期的串讲。 那其实自从 CLIP 去年大概2月底的时候出来在过去的一年半的时间里已经被应用到方方面面的各个领域里去了比如说用到分割里就有Lseg还有group。VIT。用到目标检测里就有viewed还有 clip V1 clip V2当然在目标跟踪里也有对应。的工作。然后如果放在视频里也有 video clip然后 clip four clip还有。action clip。还要把 clip 用到很多别的领域比如说用到 Optical flow depth 里这有 depth clip然后还有这个 3D 里的这个 point clip然后还有甚至用到这个语音里的 Audio clip然后在图像生成这边也有这种 clip puzzle 或者 VQ gan clip还有上次我们提到过的 clip draw 以及就到了这个多模态领域。最近也有一篇论文说这个 clip 模型那到底能对这个 vision language 的下游任务起到一个怎样的提升作用所以说 CLIP 真的是被用到了方方面面那鉴于有这么多论文可能我一次串讲也讲不完今天可能主要就先说的是这个分割和目标检测。 1 CLIP简单回顾 那在开始之前我们先快速回顾一下CLIP就是用对比学习的方式去训练一个视觉语言的多模态模型它的训练方式非常简单就是给定一个图像。文本对。图像通过这个图像的编码器文本通过文本的这个编码器就会得到一系列的这些图像文本的特征。那这个对应的图像文本对也就是这种 IET 一I2、 T2 一直到INTN它们就都算是正样本因为这个文本描述的就是这个图片但是所有不是对焦线上的元素它就都是负样本了。作者这里就假设比如说TN它肯定就不是在描述I3它们之间没有对应关系所以就是负样本。然后就用这么一个简单的对比学习的目标函数在超大规模的这个 4 个亿的图像文本对上训练完之后这个 CLIP 模型就获得了强大的性能尤其是这个 Zero shot 的能力简直是让人。叹为观止。那在推理的时候如果你想给任意的一张图片去做这个分类你这时候就可以把它可能的那些标签全都通通的做一个这个template就说这是一个什么什么样的图片然后把这些所有的文本都传给这个文本编码器你就会得到一系列的这个文本特征那你这里有多少个标签你最后就会得到多少个文本特征就相当于你给定一张图片之后你不停地问它你这个图片里有没有个狗你这个图片里有没有个飞机你这个图片里有没有只。鸟然后你通过这样不停地问其实就是不停地去算这个图像特征和这些所有的文本特征之间的相似度最后你就会得到一个。最大的相似度。CLIP 模型就认为这个最大的相似度所对应的那个文本标签就是你这张图片的标签。类别。所以说做起推理栏非常的灵活真的是 Zero shot。 2 领域一分割 那简单回顾完了CLIP那接下来我们就来串一下今天要讲的第一个领域就是分割这个任务其实跟分类很像它无非就是把这个图片上的这个分类变成了这个像素级别的分类但是往往在图片分类那边用的这个技术都能直接用到这个像素级别的分类上来。这也就是为什么过去几年分割这个领域这么的卷而且论文非常的多。如果你去看 paper with code你去查每个领域的论文你就会惊奇地发现分割的论文竟然是最多的我记着我去年查的时候就有几千篇。因为每当分类那边有什么技术出来以后分割这边就可以直接拿来用那这个模型的backbone这样就不用多说了那分类那边用了自注意力分割这边也有了自注意力。分类那边有对比学习分割这边紧接着就出了这个密集对比学习那分类那边用了Transformer分割这边迅速 set tra SEC former mask former 就全来了。分类那边用了 seed labeling分割这边也很快用了 seed labeling 2.1 Lseg分割的 Zero shot 那这回也不例外分类有了CLIP那怎么能少了分割的 Zero shot 呢 2.1.1 分割效果非常好 很快今年的这个ICLEAR。2022。就有一篇论文直接拿 clip 预训练的模型去做这种 language driven 的语义风格而且这篇论文的方法非常的简单写的也很好所以我们就从这篇文章开始。那我们先来看一下这篇论文的图一看一看 Zero shot 的分割效果有多么的好。 在这用了这个 CLIP 之后确实效果很拔群。我们先来看一下这个第一个例子看看它这个灵活性这个就是说草地上有只狗如果我现在要对它进行分割假如说我的这个文本给的是 other 和dog就是说狗或者其他的物体。他就把这个狗完美的这个分割出来了然后剩下的其他都是黑色的这个背景也就是other。那如果这个时候你说我想检测点别的东西我想把这个树也检测出来那你就在这个文本这把这个数也加上你就会发现树它也给你分割出来了狗还是很好的分割出来了。 然后这个时候作者还想再展示一下这个模型的能力一个就是它的这个容错能力。比如说如果我多给了一个这个汽车的标签那这张图里是没有汽车的那无论如何他都不应该给出来这个汽车的mask那确实在下面这个图里却没有标出来汽车。 另外一个它想展现的就是这种强大的 Zero shot的能力。就是它能检测这个类别的这个子类或者父类。因为之前这里躺着一只狗所以你知道它是个狗那现在作者给了pet也就是宠物相当于是狗的一个超集superset。那这个时候模型还是能检测出来因为在整张图片里也就只有这一块儿看起来像pet。所以说它还是把这块儿分割成了pet。 那我们再来看一个更难的例子就是他这里的第三张图是一个室内的图片那他上来先说检测一个椅子那他就把这个椅子给检测出来了然后别的全都是背景然后这个时候作者又多加了一些比如说把这个墙加上就会发现这个墙非常完美的这个分割出来了然后剩下的就还是这个背景。 然后这个时候作者想检测更多的东西更细致的这种分类作者就把这个窗户、地板、天花板全都加上然后你就会发现天花板也标出来了。两个大窗户也标出来了这个地板它也标出来了所以说真的感觉很神奇像指哪儿打哪儿一样。不过确实现在这种 language guided 的这个分割做的是挺好的所以这就让这个图像 PS 达到了一个新的高度。就我直接可以说我想把这边这个人给 PS 掉因为我现在能做非常完美的这种分割所以我就可以把这个人从这里抠掉然后再换上别的东西。 2.1.2 模型总览图 那看完了这个很好的结果那我们现在就直接来看这个模型的总览图 然后你一看这个图 2 你就会发现诶它跟这个 CLIP 的这个模型总览图怎么这么像呢都是这块有一个图片这块有一些文字然后图像通过图像编码器文字通过文本编码器然后得到了一些文本特征然后图像这边只不过是从简单的这种图像特征变成了这种比较密集的 dence features然后通过做点击你也有类似的这么一个矩阵然后最后得到一些结果。看起来非常的像。 那现在我们先假设没有上面的这个文本这一支我们就看底下这个图像这一支我们就会发现其实它跟这种正儿八经的有监督的语义分割其实没有任何的区别它都是有一个图片然后进了一个这个分割的模型最后就能得到一个特征图然后这个特征图通过一些 upscaling 就把它放大。因为我们现在做的是一个密集任务它最后的这个输出应该跟原来图像的大小是一致的所以这块就要做一些升维的操作然后最后模型的输出去跟那个 ground truth 的 supervision 去做一个 cross entrpy loss 就可以。那细致点来说这个图像的编码器这边其实是一个 DPT 的结构也是这篇论文的几个作者之前做的一篇语义分割的工作是拿 vision Transformer 去做有监督的语义风格的。简单来说这个 DPT 的结构就是前面有一个 vision Transformer后面加了一个decoder。decoder 的作用就是把一个 bottleneck feature 慢慢的把它upscale上去。就像我们之前说的 PSP 或者 ASPP 这种层一样。然后我们就相当于把一个 H*w*3 的一个图像就变成了一个 H*T*C一个特征图。那 H*T*C其实就是跟原图相比它可能降维了一些。比如说是原来的 1/ 4 或者 1/ 16 这样的大小。 c 是指这个特征的维度一般就是 512 或者768然后视觉特征其实就算抽完了。 那我们先来再来看文本的这一支文本就是假设你这个数据集你有 n 个label也就这里说的people tennis record 这些标签你就把这些标签通过这个文本编码器你就会得到 n 个这个文本特征那这里对 n 其实是没有限制的也就跟我们刚才的样例一样你也可以只检测狗你也可以检测狗和树或者更多的东西。这个 n 是可以随时都可以改变的。然而这个文本通过文本编码器之后就会得到一个 n *c的一个矩阵 c 依旧是特征的维度也就是 512 或者768。那到这儿其实我们就把文本的特征也算抽出来了 那现在如果我们来仔细看一下它的这个特征维度我们就会发现文本这边你得到了一个 n *c矩阵然后图像这边你得到一个H*T*C的一个tensor。然后你对这两个矩阵在这个 C这个 dimension 上进行一下相乘的话你就会得到一个 h 乘 w 乘n的一个tenser。n就是你有多少个标签也就是多少个类别。那其实做到这就跟传统的有监督的分割没有任何区别了。因为传统的有监督的分割也是会得到这么一个 h 乘 w 乘 n 的一个特征然后拿这个特征去跟最后的 ground truth 去做 cross centrip loss。 那这篇论文它虽然说是用了CLIP它虽然说是 Zero shot但其实它的训练过程是有监督的训练。它是在 7 个分割数据集上一起训练出来的也就是说它最后是有 ground truth mask 的它的目标函数就是跟那些 ground truth mask 去做的cross entry loss。而不是像 CLIP 一样是对比学习的loss它不是一个无监督训练的工作。那这篇论文的意义其实就是把文本的这一支加入到了这个传统的有监督分割的模型的这个 pipeline 里来通过这块的这么一乘它就把这个文本特征和这个图像特征给结合起来了那它这个模型再去做训练的时候就能学到一些 language aware 的这种视觉特征从而在最后你在做推理的时候你能用文本的这种 prompt 就任意的得到你最后想要的这种分割的效果。 2.1.3 Lseg和CLIP的关系 那最后来说一下这个工作跟 CLIP 的关系虽然这篇文章的作者说它这里这个图像编码器可以用任意的这个网络结构它这里的这个文本编码器也可以用任意的网络结构或者那些预训练的模型参数。但是在这篇论文里为了达到最好的效果它这里的文本编码器其实就是用了 CLIP 里的那个文本编码器一点儿都没动而且在训练的时候也都没有动就是自始至终而这个文本编码器都是锁住的并没有进行训练。 clip 是什么样它这就是什么样。这个可能也是作者担心因为在这个 7 个 segmentation 数据异常训练的时候虽然你听起来好像有 7 个数据集但其实分割这边的数据集都很小即使是 7 个它的规模也还是非常小的可能也就是十几万 20 万张图片。那这个时候如果你在这么小的数据集上你想去 fine tuning CLIP 的那个预训练参数你很有可能就把那个参数给带跑偏了。所以说为了不让模型训练变得更加困难为了不让原来的 CLIP 模型这么好的特征又被学坏了。所以说作者这里就没有动这个文本的编码器。 然后图像抽取特征这边其实就是 VIT 加了一个decoder那 VIT 这边作者也试了要么呢用 clip 提供的那个 VIT 预训练参数要么呢就是用之前别的工作比如说原始的 VIT 或者 DEIT 那些工作预训练的参数。结果作者最后发现用那些 VIT DEIT 训练的参数效果更好用 CLIP 的反而不太行。当然作者也没有解释说为什么不行我其实也想不出一个合理的解释就全当是实验科学了。 2.1.4 Spatial regularization blocks可以忽略 然而这篇论文技术上作者其实还提出了另外一个东西叫做 special regularly block。但不知道是为了增加一些 novelty 还是说增加一些内容。其实这个 block 也就是一些 conv 或者 depth wise com的层。 作者应该是觉得在你这个文本和视觉特征进行相乘之后我应该还有一些可学习的模型参数在它后面然后去多理解一下这个文本和视觉到底应该怎么去交互从而达到最好的这个效果。所以作者就在这块又额外的加了一些这种block。但是作者也没有过多强调后面的消重实验也做得比较短比如说他发现加两个这种 block 效果最好但是加到四个 block 的时候突然这个性能就崩了但是作者也没有说为什么会崩也没有任何解释所以我们其实完全可以忽略这个东西。这个其实对整篇文章的理解或者说最后的性能都没有多大的影响。 2.1.5 实验结果 因为是论文串讲我们还有很多内容所以说实验部分我们就只挑最有意思的那些实验结果大概看一下就好了。这篇论文它选择的数据集和这个评价的标准至少对于我来说其实不是很常见。 他是 follow 了之前几个做 few-shot分割的这个工作他是在 Pascal 五、 Coco 二十和 FSS 1000 上做的这个评价它其实的意思就是说把原来的一个数据集分成了四份比如说 Pascal 的话它本来有 20 类它现在把这 20 类分成四份儿每一份儿就有五类。然后这样当前的 5 类其实就是我们知道的类剩下的 15 类我们就当不知道的类这样你就可以去做这种 Zero shot 或者 feel shot 这个实验。然后这里这个 i 其实就代表你选你这里选的第几份。 那同样的道理这个 COCO 20 也就是把 80 类分成了 4 份那如果是 COCO 20 也就是第一类也就是说把前 20 类当成我们知道的类把后 60 类当成我们不知道的类然后你就可以在后 60 类上去做这种 Zero shot 或者few。shot 的实验了。 然后这个 FSS 1000 这个数据集也很有意思它有 1000 类。我之前还不知道分割有数据集有这么多类别的 那我们简单看一下表格那我们先看 Pascal 上的结果其实这篇文章这个LSEG提出的方式它是 Zero shot它这个结果比之前的这种 Zero shot 方法还是提升不少的大概提了十几二十个点。但是跟之前哪怕是 one shot 的这种方式比它还是差得挺远的。而且如果你考虑到之前的方法还都用的是rise。101。而 l SEC 这篇论文已经是用 VIP large 模型了你的模型其实比 rise 101 大了非常多倍也就是说现在 Zero shot 分割跟这个有监督的分割距离还是非常远的。中间能提升的空间至少是几十个点。 那同样如果我们来看 Coco 二十的话也是一样的道理它的这个 Zero shot 比之前的 Zero shot 好一些但是哪怕是跟之前 one shot 的比还不是跟用所有的数据比它们之间的这个差距也还是非常明显。 2.1.6 failure case 那作者最后还展示了一些这个 failure case这个还比较有意思。当然之前他还列举了很多成功的情况那些就跟我们刚开始看的图差不多了所以我们就不一一过了。这里如果我们来看这个例子 这图里还是草地和狗但是我的文本给的是草地和玩具。那最后就把这个狗判断成了玩具所以这里还是同样的问题就是说这个模型还有跟clip或者说一切用了 clip 模型的这些工作因为本质上它都是在算这个图像特征和文本特征之间的相似性他并不是真的在做一个分类所以说谁跟他最接近他就选谁在这里这只小狗肯定不是草而这种样子的小狗看起来其实跟玩具也差不多所以就把这只狗分类分给了玩具。 而且其实更有意思就是这篇论文是有代码而且是有预训练模型的。我之前也玩过。其实如果你把这里的词再换一换会有很多有意思的情况就比如说你如果把这里的 toy 换成 face 就是脸。那它其实就会把脸也分给狗。还有这篇论文里经常使用的这个 other 就是代表背景的这种other你也可以把它换成别的词你可以把它换成 a an 这种没有意义的词或者那种 and but i me you 这种没有明确的物体语义的这个词。你就会发现它们都可以拿来替代这个other当成是这个背景类的这个提示词。所以总之这个 Zero shot 去做分割能提升的空间还非常的大要走的路也非常的远。最近也陆陆续续又出来了一些工作比如马上我们就要讲group VIT。这个方向其实算是个不错的坑有兴趣的同学都可以来玩一玩。 2.2 groupViT摆脱手工标注用文本做监督信号做无监督的训练 那说完了 l SEC那接下来我们来看一下更新的一篇 C V P R 2022 的论文叫做groupV I T。那其实我们刚才也强调过了那 LSEG那篇论文它虽然用了 clip 的这个预训练参数而且这个图画的也很像clip。但是终究它的目标函数也不是对比学习它也不是无监督学习的框架它其实并没有把文本当成一个监督信号来使用。这就会导致一个什么问题:就是它还是依赖于这个手工标注的这个segmentation mask。这个就比较难办因为就像我们刚才说的一样虽然他用了七个数据集去训练但其实这所有的这七个数据集也没有很大。跟别的任务相比不论是有监督还是无监督一二十万的这个训练量都非常非常的小。对于分割来说你去手工标注的那个 Mask 是非常非常贵的一件事情所以说如何能摆脱掉这个手工标注如何能真的去做到用文本来做这个监督信号从而能达到无监督的训练这个才是大家更想要的东西。 那 group i t 就算是这个方向上比较有贡献的一个工作了你从题目里也可以看出来它的监督信号就是来自于文本它并不依赖于 segmentation mask 的这种手工标注而是可以像 CLIP 那样就利用图像文本堆来进行这种无监督的训练能让模型进行简单的这种分割的任务。 2.2.1 模型到底是怎么工作的为什么要叫groupVIT 那模型到底是怎么工作的为什么要叫groupVIT其实在视觉这边很早之前做无监督分割的时候经常就是用一类方法叫做Grouping。它就类似于说如果你有一些聚类的那个中心点然后我从这个点开始发散然后把附近周围相似的点逐渐扩充成一个group那这个 group 其实就相当于是一个 segmentation mask 了是一种自下而上的方式。那在这里作者其实相当于是重新审视了一下这个 Grouping 的方法发现其实能把 Grouping 完美的用到当前的这个框架中来。 他们提出了一个计算单元也就是右边儿的这个东西叫做 grouping block。然后还有一些可以学习的这个 group tokens它主要的目的就是想让这个模型在初始学习的时候就能慢慢地一点一点地。把这个相邻相近的像素点都慢慢地 group 起来变成一个又一个的这个 segmentation mask 就跟它右边图里画出来一养。在模型刚开始的浅层的时候他学到这些 group token这个分割的效果还不是很好我们这里还能看到一些五颜六色的颜色块但是经过模型的学习等到深层一点的这些 group token 的时候我们就可以看到它的这个分割已经做得相当不错了已经能够把这几个大象房子后面的树林和草地全都分割出来了。 所以 group VIT 的贡献就是在一个已有的 VIT 的框架之中加入了这个 Grouping block同时加入了这个可学习的group tokens。 2.2.2 什么是 Grouping block什么是 group token 那接下来我们就来仔细的看一下什么是 Grouping block什么是 group token 那老样子我们还是用一个具体的例子来说明这个情况。首先对于图像编码器来说它这边就是一个 vision Transformer从头到尾一共有 12 层也就是说有 12 个这个 transformer layers。 那图像编码器这边的输入其实有两个部分一个就是来自于原始图像的这个 patching bedding另外一个就是这篇文章提出来的这个可学习的group tokens。 patch embedding其实就是假如我们这儿有个 224 *224 的图片然后我们的 patch size 选成 16 * 16那其实我们就有一个 14 * 14一个 196 序列长度的一个序列。然后经过这个 linear projection 就得到了一些这个Patch embedding。它的维度其实就是 196 乘384因为这里用的是 VIT small所以这个特征的维度是384那另外一个输入 group tokens 作者这里刚开始设的是 64 * 384384是为了保持维度不变所以能够和这个 196 * 384 去做直接的拼接。那这个 64 是希望你刚开始的时候有尽可能多的这个聚类中心因为反正你回头还可以合并。所以刚开始就设了一个不大不小的值64。这个 group token 你其实就可以理解为是这个之前我们说的 cl s token就是说他想用这个 token 就代表整个这个图片但是我们这里是用了 64 个 group token而不是一个 group token。为什么呢也很简单因为过去你用一个的原因是因为你想代表整个图片有一个特征但是你现在你是想做分割所以你是想每一个类别或者说每一个小块它都有一个特征去表示它。所以说在这篇论文里它刚开始设的就是 64 个也就是说你有 64 个起始点或者说你有 64 个聚类中心。把那些看起来相似的或者语义接近的像素点都归结到这 64 个 cluster 里面。至于学习的过程其实 group token 和这个 cls token 学习都是一样的就是通过这个 transformer layer 里这个自注意力去不停地学习到底这些图像的 patch 哪些属于这个token哪些属于这个token然后经过了几层 consumer layer 的学习之后。比如说在这篇论文里经过了 6 层 Transformer layer 之后然后就在这 6 层之后加了一个 grouping block就是作者认为你现在已经互相教会了 6 个 Transformer layer 了这个 group token 可能已经学的差不多了这个 clustering center 也学的差不多好了那这个时候。我得试着来 cluster 你一下把你合并成为更大的group学到一些更有语义的这个信息。所以它就利用这个 grouping block把之前的这些图像 patch embedding 直接 assign 到这 64 个 group token 上相当于做了一次这个聚类的分配那你一旦分配完那你有 64 个聚类中心那你就当然只剩下64个 token 了。所以做完这一步操作之后得到的这个 segment token也就是这些颜色相间的token它的这个维度就是 64 * 384 了。当然这里 grouping block 还有另外一个好处就是它相当于变相的把这个序列长度给降低了那这个模型的计算复杂度还有这个训练时间也就相应的都减少它就跟 swin Transformer 一样是一个层级式的网络结构。 那我们现在具体来看一下 Grouping block 是怎么操作。其实 grouping block 就是用类似于自助意义的方式先算了一个相似度矩阵然后用这个相似度矩阵去帮助原来的这个 image token 做一些这个聚类中心的分配从而完成了把这个输入从 196 * 384 降维到这个 64 * 384 的这个过程。当然大家都知道你做这种聚类中心的分配这个过程它其实是不可导的。所以作者这里用了一个trick也就是用个gumbles of the Max。从而把这个过程变成可导的这样整个模型就可以端到端的进行训练了。那到这儿其实我们就完成了第一阶段的这个grouping就把这个输入序列从 196 加 64 的这个长度变成了一个 64 * 384 的序列。 然后因为一般的数据集或者说常见的这个图片里它的种类也不会太多所以作者希望能把这 64 个聚类中心变得再小一点把一些相似的小的这个类别块尽量的把它再合并成大的这种块所以它就又加了新的 8 个这个 group tokens也就是8 *。384。希望能通过进一步 translora 这个学习能把这 64 个 segment token 再次映射到这 8 个聚类中心上。那在文章中作者其实是在第九层 consumer layer 之后又加了一次grouping block。也就是说在这个 grouping blog 之后又过了 3 层transmer layer 的学习作者觉得新加的这八个 segment token 其实就学得差不多了于是乎再做一次这个 grouping block就把这个 64 8 的这个序列分配到这 8 * 384 的这个token 上了。也就是说这个图像分成了八大块儿然后每个块儿对应的有一个特征。 2.2.3 模型怎么训练 那说到这儿其实已经把这个 grouping block 和 group token 都已经说完了那整个这个模型该怎么去训练其实这也就是 group VIT 和 clip 的这个相似之处了它们都是通过这个图像文本堆儿去算了一个对比学习的loss从而训练整个网络的。但是这里问题就来了你原来做 clip 的时候你是一个图片有一个特征然后那个文本有一个特征所以你图像文本的特征很容易算一个对比学习的loss。但是现在你的文本端还是通过文本编码器得到了一个这个文本特征ZT。但是你的图像因为做这种 group token 和 group MERGING 的操作它到目前为止得到的是一个序列长度为 8 的这个特征序列那怎么能把这 8 大块的特征融合成一块变成整个图像的这个 image level 的特征那作者这里就选择了最简单的一种方式就是我直接做一下这个 average pulling直接把这些特征平均一下不就完了那它就得到了一个384的特征。那这个特征通过一层 MLP 就得到了整个图像对应的这个特征ZL。那这样接下来就跟 clip 完全一样。 总体而言 group VIP 还是一个非常简单的方法它没有在这个 vision Transformer 的基础上加什么特别复杂的模块它的目标函数也跟 CLIP 保持一致所以就意味着它的这个 skill 的性能非常的好。如果你把它这个模型变大或者说如果你给它更多的数据它有可能就能给你更好的学习结果。当然在这篇论文里作者就选择了 vision consumer small而且数据集最大也直到 29 million也就是 2900 万个图像文本对儿如果像 CLIP 那样用 4 个亿的图像文本盾儿训练不知道最后的这个分割效果。会不会更好 2.2.4 怎么做zeroshot推理 那说完了模型是怎么训练的那接下来就说一下这个模型是怎么去做 Zero shot 的推理的其实跟 CLIP 还是非常的像比如说给定一个图片。 图片首先经过 group i t 的这个结构也就是左边的那个图像编码器它就会得到最后的这八个这个 group embedding。然后这个时候我们再把有可能这些标签通过这个文本编码器得到一系列的这个文本特征。那接下来我们只要算这些图像的 grouping embedding和这些文本的特征之间的相似度就可以知道每个这个 grouping embedding 到底对应什么样的class。 当然这里我们能看到一个很明显的一个局限性也就是说因为这个模型最后只有 8 个这个 group embedding也就意味着其实这个图片的分割最多只能检测到 8 类再多就不可能了。因为这边这个维度只有 Z1 到 Z 8 只有 8 个group token。了这个使用多少个这个 group token或者最后用多少个 output token这些都是可以调的超参数。作者这里也试了一下各种各样的这个 group token 和 output token比如这里一路从 16 试到64这边从 4 试到16但是作者发现就用最后这 8 个 output token最后结果是最好的。所以就选择了这个设定。 2.2.5 有意思的可视化 那接下来我们看一个比较有意思的。可视化。因为说白了你加了这些 group token你加了这个 grouping stage它到底工作没工作它到底是怎么工作的其实你不知道那作者这里就把第一个 stage 还有第二个 stage 里的一些这个 group token 拿出来可视化了一下看看这些 token 到底有没有成为一个聚类中心那是不是某一个token它就对应的具体的某一个类别我们发现诶还确实如此。比如说在前面的这个 stage 一的时候一般他关注的就是比较小的区域因为那个时候还有 64 个token。作者这里就发现说假如说第五个group其实它对应的就是眼睛不光是人的眼睛还有狗的眼睛各种各样的眼睛其实都能被它分割出来。那如果我们换一个token换到这个第 36 个group token。我们就会发现其实他说的是这个四肢而如果我们换到第二个阶段我们就可以看到它对应的这个区域明显就扩大了很多因为这个时候已经是 8 大类了。比如这个时候我们看这个第六个 group token就会发现它对应的全都是这个草地那或者说这个第七个 token 对应的就全都是人脸。所以确实如你所愿这个 group VIP 里的这个 group token 起到了这个聚类中心的作用真的用 grouping 的这种思想完成了这种无监督的分割。 2.2.6 数值上的比较 那最后我们来看一下这个数值这样的比较在 Pascal VOC 和 Pascal context 这两个数据集上这个 group it 分别取得了 52. 3 和 22. 4 的这个结果。跟他这里说的这些 baseline 方法比起来确实有很大的提升。而且也确实是用这个文本做监督信号的第一个工作而且还可以做 Zero shot 的inference所以还是相当厉害的。但如果我们考虑一下它这个有监督的这个上限是多少我们就会发现这里这个差距还是非常非常的大的。比如说在 Pascal VOC 上之前最好的方法比如说 deep lab V3 plus我记得好像已经是 8788 的这个 MLU 了也就说比这里的 52. 3 高了30多个点。那 Pascal context 的数据集也一样最好的有监督的方法应该也是五六十的准确度所以也是差了 30 多个点所以说无监督的这个分割还是很难的。能做的东西非常多 2.2.7 局限性 作者这里也列举出来了它的两个这个limitation大概说了一下它未来可能才会做哪些改进。那其中的一个局限性就是说现在这个 group it 的结构其实还是更偏向于是一个图像的编码器它没有很好的利用这种 dence prediction 的特性比如说之前在分割这边用的很火的这种 dilated convolution 或者 pyramid pooling 或者 unit 的这种结构从而你能获得更多的这个上下文信息而且能获得更多的这个多尺度的信息能帮助你更好地去做分割任务。但目前 group it 这边都还没有考虑这些。所以每一个刚才说的东西都有可能未来成为一篇论文。 那另外一个局限性就是分割这边存在的一个东西叫做背景类那 group VIT 在这个推理的过程中是怎么考虑这个背景类的这个刚才我也忘了说就是我们在做 Zero shot 的这个推理的时候不光是选择最大的那个相似度因为有的时候你这个最大的相似度可能也比较小可能最后就只有 0. 20. 3 这样那作者这里为了尽可能提高前景类的这个分割性能所以它设置了一个阈值就是这个相似度的阈值。比如说对于 Pascal VOC 这个数据集来说它的阈值就设置了 0. 9 还是 0. 95。也就是说这个 grouping embedding 和这个文本的特征它的这个相似度必须超过 0 点儿九而且是取的最大的那一个你才能说这个 group embedding 属于这一类。如果你这个 group embedding 跟所有的这个文本的特征的相似度都没有超过零点儿9那 group i t 就认为你就是个背景类你就不是一个前景。那这套推理方案对于 Pascal VOC 来说还好因为本来它的这个类别数就少而且一般都是实打实的这个物体有非常明确的语义信息所以它不太存在这个背景类干扰的问题当然也有了但是如果当你把这套框架移到 Pascal context 或者做 Coco 数据集的时候这个问题就非常显著。因为这个时候你的类别非常的多那你的这个置信度或者说你这个相似度一般就会比较低就很容易出现你的这个前景物体的置信度和你这个背景物体差不了多少那这个时候怎么设置这个阈值就成为了一个很关键的问题。如果我们把这个阈值设得很高那基本大多数全都变成背景物体了那这这样前景类别的这个 MLU 分数肯定就会变得很低。那如果我们把这个阈值设得很低就会造成一个错误分类的问题就是有可能它相似度最高的那一类并不是真正正确的那一类。也就是论文作者自己这里发现的一个问题就是他们通过这个肉眼的观察。他们发现其实 group VIP 这个 group token 学的挺好的就是真正的那个分割已经做得很好了还真的把那个人呐或者那个马呀那个桌子都分割出来了。但是只不过最后的这个分类给分错了。那作者这里为了验证一下到底是不是因为分类的错误导致这个 Coco 和这个 context 数据集这个性能这么低。它就做出了一个上线的实验。如果 group VIT 给了它一个输出的这个 prediction mask它就拿这个 mask 去跟所有的这个 ground truth mask 去做这个对比。一旦他发现哪个 IOU 最大他就把那个 ground truth 的那个 label 直接就给这个 group VIT prediction mask 当成它的标签。那这样一来只要你这个分割做得好那你这个分类就肯定不会错因为你相当于是直接从 ground truth 那边拿过来的这个标签。作者就发现不论是对 VOC 来说还是后面这两个更难的数据集来说它的这个上线的 MLU 一下就增加了二三十个点现在就跟这个有监督的那边最高的这个性能就差不多了。这也就验证了其实 group it 的这个结构尤其是 group token 和 grouping block 其实非常的有效因为它已经把这个 segmentation mask 生成的很好它分割做得很好它只是没有把语义分割做得很好。因为它分类错了很多。那这个怪谁这个其实是怪这个 clip 的这种训练方式因为 clip 的这种训练方式只能学到那种物体语义信息非常明确的东西它学不到这种很模糊的。比如说什么是背景因为背景可以代表很多很多类它是一个很模糊的概念。所以说 CLIP 这种训练方式就没有办法学到这些背景类那对于这个 limitation 其实也有很多的解决方案比如说那个阈值该怎么设是不是应该根据每一个类别去设是不是应该可以有一个可学习的阈值或者说整个把这个 Zero shot 的这个推理过程给改了或者说你在训练的时候再加上一种约束能把背景类这个概念融入到你的训练之中所以这里也有很多可以挖掘的东西。 总之分割这边就讲 l SEG 和 group i t 这两篇工作第一篇就是直接使用了 CLIP 的这个预训练模型而且也使用了它的这个大概框架从而把这个图像和文本的特征融合在了一起能够去做这种 language driven 的语义分割但是它还是一个有监督的学习。 那第二个工作 group it 它并没有使用 CLIP 的这个预训练参数它反而是自己从头训练了一个分割模型。但是它的目标函数就用的是 CLIP 的目标函数一点儿都没有变。 那接下来我们还会讲这个目标检测还会讲这个视频还会讲一些其他的领域。我们就都可以发现这个 CLAP 出来以后大家一般刚开始就是先用下它这个预训练的参数大家做一些简单的改动然后再把 clip 的特性和这个下游任务的特性结合起来。要么呢是利用 clip 的这个目标函数要么呢是利用 clip 的一些其他特性去把这个下游任务做得更好。 那说完了 clip 在分割里的应用接下来我们就来看一下 clip 在目标检测这边是怎么使用目标检测的。这个网络结构一般是要比这个分类或者分割要复杂一些的但是好像也丝毫没有影响这篇论文出来的。这个。速度。虽然这篇论文是 iclear 二的一篇中稿论文但事实上它在 21 年的4月 28 号就已经上传到 ARCHIVE 上。我们之前在讲 clip 的时候也提到过 clip 这篇论文是在 21 年2月 26 号传到r。cap。上意思就是说这篇论文从看到 clip 到写出来这个 21 页的 i clear 的论文中间只花了两个月的。时间。而且后面我们也可以看到它训练模型用了 18 万个iteration大概换算过来就是 460 个epoch。这是一个非常长的训练时间有几十个上百个TPU应该是没办法在这么短的时间内完成这么高质量的工作。那我们言归正传这篇论文叫做viewed就是 vision language knowledge distillation然后你一看题目open。vocabulary。你就知道这多多少少跟 clip 肯定。有点关系。然后你再读到后面 vision language knowledge distillation你就大概知道了他肯定是把 clip 模型当成了一个teacher然后去蒸馏。他自己的那个网络。从而达到能 zero shot 去做目标检测这个目的。接下来我们直接跳到引言这篇论文的引言写得非常好我也想给大家安利一下这种写作的方法它一上来就给了一张图然后根据这张图作者就问了一个问题直接就把这篇文章到底要做什么给引出来了。真的就是一句话把这篇文章的研究动机说得。明明白白。的。紧接着就直接说在这篇论文里我们就是想做一个 open vocabulary 的目标检测从而能够检测到任意的这个新的物体类别。
http://www.huolong8.cn/news/287017/

相关文章:

  • 一家公司可以做几个网站开发网站监控工具
  • 做网站的优点淘宝店铺怎么买
  • 东风多利卡道路清障车做网站wordpress 博客下载
  • 企业网站建设公司怎么做vs2015 网站开发
  • 企业网站建设上机考试做鞋子的网站
  • 网站建设的成功经验asp 网站 内容静态化
  • 澄迈网站新闻建设房子wordpress正版主题
  • 百度网站关键词网站部署
  • 如何更快的学习.net网站开发一起做网店17广州沙河
  • 温州网站建设备案拓者设计吧官网案例
  • 团购网站的发展公司做网站大概多少钱
  • 广州网站建设+致茂金湖县住房和城乡建设局网站
  • 个人网站,可以做淘宝客吗除了wordpress还有什么
  • 北京学校网站建设营销伎巧
  • o2o网站中建八局第二建设有限公司平台
  • 网站qq号获取关键词林俊杰mp3免费下载
  • 厦门网站建设开发公司想做外贸做哪些网站
  • 多就能自己做网站个人网站备案材料
  • 电子商务网站规划与建设试题做铜字接单网站
  • 做网站有弹窗叫什么wordpress怎么添加网盘下载
  • 免费制作论坛网站台州关键词优化服务
  • 上海一 网站建设公司建立网站是很多企业开始进行网络营销的第一步
  • 网站搭建品牌怎样做销售水蜜桃网站
  • 网站推广计划怎么做公司小程序如何申请
  • 设计用哪些网站有哪些功能电商网站后台管理系统
  • 安居客房产网seo技术培训泰州
  • 建设直播网站软件华为手机价格一览表
  • 网站流量统计软件建设工程敎育网网站
  • 住建培训网站Wix网站开发 工作室
  • 济南网站建设哪家强linux目录不可写 wordpress