CLIP改进工作串讲(bryanyzhu)内容记录

news2025/1/24 22:45:29

文章目录

  • 分割
    • Language-driven semantic segmentation - ICLR2022
    • GroupViT: Semantic Segmentation Emerges from Text Supervision
  • 目标检测
    • ViLD : Open-vocabulary object detection via vision and language knowledge distillation
  • 视觉定位
    • GLIP:Grounded Language-Image Pre-training
  • 图像生成
    • CLIPasso: Semantically-Aware Object Skecthing
  • 视频
  • 多模态
    • How Much Can CLIP Benefit Vision-and-Language Tasks?
  • 深度估计
    • Can Language Understand Depth?
  • 总结

CLIP 改进工作串讲(上)【论文精读·42】

截止2022年9月.

分割

Language-driven semantic segmentation - ICLR2022

请添加图片描述

文本编码器采用CLIP的文本编码器, 原因是数据集规模小(10万,20万), 微调的话, 可能会把参数带偏.
视觉编码器采用DPT, 是作者之前的工作.

文本编码器得到 N × C N\times C N×C的特征, 视觉编码器得到 H ~ × W ~ × C \tilde{H}\times\tilde{W}\times C H~×W~×C的特征. 相乘后得到 H ~ × W ~ × N \tilde{H}\times\tilde{W}\times N H~×W~×N的特征.

本文的意义在于将文本分支加入进来, 使分割效果可以通过文本进行控制.

Spatial Regularization Blocks : 可忽略.

Failure cases : 请添加图片描述

实际上, CLIP这一模型算的是图文之间的相似度, 所以选择相似的, 而不是准确的.

GroupViT: Semantic Segmentation Emerges from Text Supervision

监督信号来自文本, 和CLIP一样, 利用图像文本对进行训练.

请添加图片描述

group: 有几个初始的中心点, 逐渐向外发散, 和与自己相近的点构成一个group, 形成最终的mask. 是一种自下而上的方式.

提出计算单元grouping block和一些可学习的tokens(贡献). 在学习的过程中能够把相邻相似的点给group
起来.

group tokens : 聚类中心, 初始设定为 64 × 384 64\times 384 64×384, 可以理解为cls token, 因为每一个类别/小块都有一个token去表示他.

grouping block : 将input token assign 到group token, 最终输出 g r o u p t o k e n s s i z e × 384 group tokens size \times 384 grouptokenssize×384.

如何训练呢?
把group tokens的特征做了pooling, 得到一个特征.

如何推理呢?
请添加图片描述

group embedding和text embedding计算相似度, 即可得到类别信息.

GroupViT分割做的很好, 但是分类效果不好. 这是因为CLIP只能学到语义信息很明确的东西.

目标检测

ViLD : Open-vocabulary object detection via vision and language knowledge distillation

引言非常好(越早知道想做什么越好).

现有数据集的标注信息有限. 本文希望在现有标注情况下, 做到识别更细粒度的,更深层次的标签.

请添加图片描述

在这里插入图片描述

Baseline是Mask RCNN.

ViLD-text也是在基础类上做有监督的训练, 目的是将视觉和文本编码关联起来. 其尚未具备open-vocabulary的能力.

请添加图片描述

如何拓展ViLD-text在CN(新的类别)上的性能?如何引入CLIP?

ViLD-image

对于候选框, 原网络抽取的特征和CLIP抽取的特征尽可能地接近, 即做蒸馏即可. 此时, 这是一个无监督的训练, 监督信号从CLIP来.

为了加快训练过程, 这里的proposals都已经抽取完全.

对于最终的ViLD, Splitting出的分支之用于训练.

请添加图片描述

有了图文编码即可计算交叉熵损失, 做无监督的训练.

回顾ViLD和GroupViT, 两者的共性在于:

  1. 用图文对做无监督训练, 该思想完全源于CLIP;
  2. 在推理中, 图文编码的相似度用于反馈类别标签, 图像编码本身可以实现分割或检测.
    两者的差异性在于:
  3. ViLD用CLIP蒸馏, 目的是获取捕捉更多新类的能力;
  4. GroupViT则迁移了Grouping的思想, 其侧重点在于无监督训练.

请添加图片描述

LVIS数据集(长尾数据集), 分为三类, 下标f表示常见类, 下标c表示一般类, 下标r表示罕见类. 重点观察罕见类的结果. 效果好也是利用了LVIS的特性(少见数据不如不训).

请添加图片描述

视觉定位

目标检测: 给一张图像, 输出目标框;
视觉定位: 给一张图像, 一段文本, 输出目标框.

GLIP:Grounded Language-Image Pre-training

如何把图像文本对用上.

把detection和visual grounding结合起来, 把大规模图像文本对用上做预训练.

请添加图片描述

请添加图片描述

Visual Grounding的范式和ViLD-text的分类头是类似的.

请添加图片描述

统一后的detection和visual grounding任务对样本的要求是图像, 文本以及目标框. 为了扩大数据集, 作者额外引入了caption的数据, 然后通过tiny模型预测他们的目标框(伪标签).

每个框的编码和一句话中每个单词的编码计算相似度矩阵.

在这里插入图片描述

文本编码和图像编码直接得到后和L-Seg一样, 是可以直接计算相似度矩阵的. 但是图文之间的joint embedding 还不是学的很好, 因此需要一些Fusion模块优化两个编码的表示.

本文采用Cross Attention把两部分特征交互一下(DeepFusion技术).

上述Alignment Loss就是ViLD-text.

请添加图片描述

GLIP能够对概念做一些理解, 图上海绿色也能被框出.

对比ViLD和GLIP:

  1. 同样是需要预测框, 对于框的取舍, 都采用与文本的相似度计算;
  2. 对于框的定位, 这是固定不变的.

图像生成

CLIPasso: Semantically-Aware Object Skecthing

保持语义信息的物体素描.

把真实物体变成简单形象, 且保持简单形象的语义信息. 简而言之, 给一张真实照片, 反馈一张简笔画.

以往的方法收集素描数据集来训练模型, 这带来两个问题: 生成的风格受限, 生成的种类受限.

请添加图片描述

CLIP能够不管图像的风格, 都能够把图像的特征编码得特别好.

请添加图片描述

简笔画生成的特征和简笔画生成的特征尽可能接近, 即 L s L_s Ls, 语义损失.

除了在语义上的限制, 还需要在几何上进行限制, 即 L g L_g Lg. 把ResNet50浅层的特征去算loss, 因为其中保持一些几何信息.

此时, 已经可以通过贝兹曲线生成各种各样的简笔画了, 即简笔画的生成方式是前人的工作.

但是作者发现, 控制贝兹曲线的点的位置放置很有讲究. 于是提出了基于saliency的方法, 不过多赘述.

综上, 这里也是采用蒸馏的方式.

最后, 在生成简笔画的过程中, 得到了多幅, 最后选择与原图损失最小的, 这一思想在DALL-E中也被运用.

请添加图片描述
上图体现CLIPasso生成罕见图像的简笔画

请添加图片描述

上图体现CLIPasso生成不同难度的简笔画.

视频

多模态

How Much Can CLIP Benefit Vision-and-Language Tasks?

empirical study.

使用预训练好的CLIP模型当做视觉编码器的初始化参数, 然后在下游任务上微调并查看性能.

结论是效果很好!

深度估计

Can Language Understand Depth?

把深度估计看做分类问题.

请添加图片描述

pipeline与L-seg高度相似.

总结

  1. 把图像和文本通过CLIP得到特征, 和原来的特征做拼接或点乘(L-Seg, ViLD);
  2. 把CLIP作为Teacher来蒸馏预训练好的知识(CLIPasso);
  3. 借鉴对比学习的思想, 定义自己的正负样本对并计算Loss(GroupViT).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/965521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VsCode搭建Java开发环境 vscode搭建java开发环境 vscode springboot 搭建springboot

VsCode搭建Java开发环境 vscode搭建java开发环境 vscode springboot 搭建springboot VsCode java开发截图1、安装Java 环境相关插件2、安装 Spring 插件3、安装 Mybatis 插件第一个 vsc-mybatis第二个 mybatisX 4、安装Maven环境4.1、安装Maven环境4.2、VsCode配置Maven环境 5、…

使用Python进行Base64编码和解码

假设您有一个想要通过网络传输的二进制图像文件。您很惊讶对方没有正确接收该文件 - 该文件只是包含奇怪的字符! 嗯,您似乎试图以原始位和字节格式发送文件,而所使用的媒体是为流文本而设计的。 避免此类问题的解决方法是什么?答…

Interspeech 2023 | 火山引擎流媒体音频技术之语音增强和AI音频编码

背景介绍 为了应对处理各类复杂音视频通信场景,如多设备、多人、多噪音场景,流媒体通信技术渐渐成为人们生活中不可或缺的技术。为达到更好的主观体验,使用户听得清、听得真,流媒体音频技术方案融合了传统机器学习和基于AI的语音增…

微服务--Seata(分布式事务)

TCC模式在代码中实现:侵入性强,并且的自己实现事务控制逻辑 Try,Confirm() cancel() 第三方开源框架:BeyeTCC\TCC-transaction\Himly 异步实现:MQ可靠消息最终一致性 GlobalTransacational---AT模式

Threejs里反向播放动画

在Blender里给对象添加了一个动画后,假设是在帧1到帧40添加的动画帧,那么正常播放时是从帧1到帧40,反向播放则是从帧40到帧1,本文讲述如何在Threejs里方向播放Blender里添加的动画。 一 添加动画 之前文章中已经讲述如何在Blende…

MAC ITEM 解决cd: string not in pwd的问题

今天使用cd 粘贴复制的路径的时候,报了这么一个错. cd: string not in pwd eistert192 Library % cd Application Support cd: string not in pwd: Application eistert192 Library % 让人一脸懵逼. 对比一下,发现中文路径里的空格截断了路径 导致后面的路径就没有办法被包含…

财报解读:迈向高端化,珍酒李渡如何持续讲好品牌故事?

2023年上半年,尤其是第二季度,白酒行业淡季属性较为明显。对于市场情况,中国酒业协会《2023中国白酒市场中期研究报告》也有所披露:约40.91%的受访者反馈春节后平日的白酒消费量有所减少,约31.82%的受访者反馈五一期间…

数据结构与算法(二)算法分析

算法的特性 算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。 输入输出 算法具有零个或多个输入至少有一个或多个输出:算法是一定需要输出的,不需要输出,你用这个算法干吗? 有穷性 指算法在执行有限的步骤…

教你如何进行vcruntime140_1.dll文件下载安装,4种方法详细的安装方法

今天主要要跟大家说说vcruntime140_1.dll文件下载安装,其实要下载安装这个文件还是有不少方法的,只要不要慌,有的时候办法解决,首先我们要知道vcruntime140_1.dll是Microsoft Visual C的一部分,是许多计算机程序运行所…

Python项目打包与部署(1):模块与包的概念与关系

Python是动态类型编程语言,意味着python不需要提前编译。1个Python项目通常也包含多个.py文件, 通常也会引用python标准库,或第3方库,也存在着依赖关系。因此python项目也 当实际构建1个 Python 项目时,模块与包是我们…

【python基础教程】类中属性和方法的具体定义方法及使用

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 以下介绍在python的re模块中怎样应用正则表达式 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备…

Mybatis1.2 查询所有数据

1.2 查询所有数据 1.2.1 编写接口方法1.2.2 编写SQL语句1.2.3 编写测试方法1.2.4 起别名解决上述问题1.2.5 使用resultMap解决上述问题1.2.6 小结 如上图所示就页面上展示的数据,而这些数据需要从数据库进行查询。接下来我们就来讲查询所有数据功能,而实…

JavaScript【转】

以下内容转载和参考自:w3school的JavaScript学习内容,HTML JavaScript。 JavaScript 使 HTML 页面更具动态性和交互性,前面我们都是在代码中一开始就将元素的值、属性、style样式写死,使用JavaScript 的话就可以对这些内容动态的更…

WordPress(6)网站侧边栏倒计时进度小工具

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 效果图在这里插入图片描述一、添加位置二、主题style.css文件中添加美化1.引入库2.添加自定义的HTML模块效果图 提示:以下是本篇文章正文内容,下面案例可供参考 一、添加位置 在主题中 child.js…

QT DAY 4

时钟: #include "widget.h" #include "ui_widget.h"int hour0; int min0; int sec0; int count0; Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->setFixedSize(800,600);timer new …

【LeetCode-中等题】200. 岛屿数量

文章目录 题目方法一:深度优先搜索 dfs方法二:广度优先搜索 bfs方法三:(重点掌握)并查集 题目 方法一:深度优先搜索 dfs 思路:让一个扫描指针扫描每一个格子,然后每扫到一个为1的格…

代码随想录—力扣算法题:19删除链表的倒数第N个节点.Java版(示例代码与导图详解)

19.删除链表的倒数第N个节点 力扣题目链接 更多内容可点击此处跳转到代码随想录,看原版文件 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1&#xff1…

浅析Linux系统I/O模型

文章目录 概述阻塞式I/O模型非阻塞式I/O模型I/O多路复用模型信号驱动式I/O模型异步I/O模型相关参考 概述 在操作系统中,I/O类操作是相对慢速的,应用发起一个I/O操作,需要等待I/O资源就绪后,才能继续后面的处理。这种简单的请求-响…

无涯教程-JavaScript - NORMINV函数

NORMINV函数取代了Excel 2010中的NORM.INV函数。 描述 对于指定的平均值和标准差,该函数返回正态累积分布的反函数。 语法 NORMINV (probability,mean,standard_dev)争论 Argument描述Required/OptionalProbabilityA probability corresponding to the normal distributio…

NVME Linux的查询命令-继续更新

NVME Linux的查询命令 查看NVMe设备 # nvme list 查看nvme controller 支持的一些特性 # nvme id-ctrl /dev/nvme0 查看设备smart log信息 # nvme smart-log /dev/nvme0 查看设备error 信息 # nvme error-log /dev/nvme0 设备的所有命名空间 # nvme list-ns /dev/nvmeX 检…