CLIP论文阅读

作者:LioneWang
链接:https://zhuanlan.zhihu.com/p/1996842714956841421
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

标题

  • Learning transferable visual models from natural language supervision
  • Clip定义是constrastive language-image pre-training
  • 无监督的训练范式
    通过正类和负类样本的比较,看到正类就拉近,看到负类就拉远

目的

从自然语言的监督信号学习迁移性能好的模型 目的是学一个泛化性能好的特征,从而在各种数据集和任务,不需要训练,直接推理就可以获得好的效果
框架

  • 对比学习预训练
  • 创建label分类器,用prompt engineering的方式将文本变成句子
  • 使用zero-shot进行推理
    摘要
  • 之前的数据集有固定的类,但是如果推理任务需要一个其他的类,这个类难道要新训练一个模型吗? 该方法可以通过zero-shot,可以通过对语义信息(而不依赖预训练的图片信息)的摘取,从而识别新出现的image,在任何新的类上进行下游任务的推理 采用的是对比学习的方法,采样了400million的pair

引入

  • 自回归和MLM的训练方式都是自监督的预训练,目标函数和下游任务无关,只是通过预训练得到一个泛化性能好的特征
  • 模型架构也和下游任务无关
  • 之前的工作,有的数据集不够大,有的模型不够好
    这篇文章的数据集使用400million的图像文本对,模型使用8个models进行对比,在30个CV的数据集上进行测试
    线性探测
  • 区分微调:线性探测完全冻结预训练参数,只是增加分类的线性头部
    使用线性探测(linear probe)的方式,发现对ImageNet的固定的1000个label,效果依然比SOTA的resnet等模型效果要好

方法

自然语言监督

优势

  • 只需要收集<图片,文本>对这种无监督的数据,无需标注
  • 监督信号是文本, 不需要学习imagenet的1-N这种gold label,输出自由度大
  • 学到的特征不是单单视觉特征,而是多模态特征,很容易做zero-shot学习
    创建大规模数据集
    现有工作
  • instagram数据集的图片,hashtag对,很多都是无效语义信息,并且数量不够,只有15million
    构建数据集
  • 自己构造400million的数据集,叫WebImageText数据集
    预训练的任务方式
    预测型任务
  • 如果给定一张图片,可以解释的语言就太多了
    对比学习
  • 只需要判断图片和文本是否配对


随着约束不断放宽,从预测到对比学习,性能提升4倍

伪代码

  • 损失函数的label是一个单位矩阵
  • loss每一行算一次,每一列算一次

细节

  • 图像和文本的encoder没有使用预训练的,而是从头训练
  • 展示层没有使用非线性层,而是线性层
  • 数据增强只使用了裁剪
  • 没有设置超参数temperature作用于softmax,而是把它作为一个可学习参数
    训练
  • 视觉模型选择resnet变体和ViT
  • 优化器Adam
  • 使用权重衰退抑制过拟合,提高泛化能力
  • 32个epochs
  • 3w个minibatch
  • 混合精度训练
    实验

Zero-shot

prompt-engineering

  • 目的是模拟预训练的文本格式,将lavel转换成句子
  • 实验结果


Prompt Engineering and Ensembling
现有问题
Polysemy(多意性)

  • 只用一个单词label来匹配图片,会有语义多意性
    Distribution Gap(分布偏差)
  • 预训练采用的文本通常是句子,因此微调为了模拟这种方式
    解决办法
    Prompt Engineering
  • 使用不同的提示词和句子
    研究发现对于OCR任务,如果对于想要识别的物体用双引号扩起来,往往效果更好
    Prompt Ensembling

  • 使用多次推理
  • 将结果综合起来考虑
    Few-shot
    LinearProbe-Clip
  • 冻住image的encoder,添加有标签的线性分类头

局限

  • 不擅长处理抽象任务:异常,数数,安全
  • 对某些特定数据集效果不好,例如MNIst,由于原始数据中不存在人工合成的数字照片,导致出现了distribution shift的情况
  • 不适合图生文的生成任务
  • 数据量太大,解决办法是可以用数据增强,self-supervision或者self-training的方式
  • 爬虫数据带有一些性别,肤色的偏见,公平性问题有待处理

优点

  • 打破固定标签范式,不需要做固定label类,而是用无监督的方式 > 收集数据更方便,训练更方便,推理更方便
  • 可以做zero-shot推理,泛化性能好
  • 应用范围广,多模态支持

Read more

Obsidian 看板 + Copilot:项目管理与每日总结的完美闭环

Obsidian 看板 + Copilot:项目管理与每日总结的完美闭环

在多项目并行的职场节奏中,项目管理是每个人的必修课。我曾深陷“工具选择困难症”,在滴答清单、Notion 等工具间反复横跳。虽然滴答清单足够优秀,但它始终无法与我的个人知识库深度联动,更难以调用 AI 能力来二次加工我的工作轨迹。 今天,我想分享一套基于 Obsidian 看板 + Copilot 的全自动化项目管理工作流。 核心思路 All in One 的自动化闭环这套工作流的核心在于利用 Obsidian 的“万物皆 Markdown”特性。看板文件本质上是 Markdown 列表,通过插件自动记录的时间戳,我们可以让 Copilot 扮演“私人秘书”,瞬间完成从“任务执行”到“复盘总结”。 必备插件 在 Obsidian 插件市场安装以下三个插件: * Kanban:提供直观的看板视图。 * Tasks:自动为完成的任务打上时间戳。 * Copilot:调用

Trae、Cursor、Copilot、Windsurf对比

我最开始用Copilot(主要是结合IDE开发时进行代码补全,生成单元测试用例),但是后面又接触了Cursor,发现Cursor比Copilot更加实用,Cursor生成的单元测试用例更加全面。         多以网上查了查资料,这里记录分享一下。         这篇文章资料来自于网络,是对部分知识整理,这里只是记录一下,仅供参考 前言         随着AI技术的爆发式发展,AI编程工具正在重塑软件开发流程。GitHub Copilot作为先驱者长期占据市场主导地位,但新一代工具如Cursor、Windsurf和Trae正以颠覆性创新发起挑战。本文基于多维度实测数据,深度解析三款工具的核心竞争力,揭示AI编程工具的格局演变趋势。 工具定位与核心技术 1. Cursor:智能化的全能助手         基于VS Code生态深度改造,Cursor融合GPT-4和Claude 3.5模型,支持自然语言转代码生成、跨文件智能补全和自动文档生成。其核心优势在于: * 上下文感知能力:可同时分析10+个关联文件的语义逻辑 * Agent模

Chat took too long to get ready.Please ensure...<VSCode\Copilot>

Chat took too long to get ready.Please ensure...<VSCode\Copilot>

在VScode里面,应用Copilot提问,无法解决问题,该怎么解决呢? 1、在vscode里面,按键  ctrl + shift + p,输入setting,即看到setting.json文件 2、在setting.json文件中添加下面两行   "github.copilot.nextEditSuggestions.enabled": true,   "chat.extensionUnification.enabled":false, 参考图片25、26行 3、保存,重启vscode 4、重启后,点击vscode左下角人头像,查看是否有让授权Copilot的,如果有点击一下授权,解决!!! 如果这样无法解决,建议检查账号是不是不能使用Copilot功能了

零代码体验AI绘画:Jimeng AI Studio保姆级教程

零代码体验AI绘画:Jimeng AI Studio保姆级教程 你不需要写一行代码,也不用折腾环境配置,甚至不用打开终端——只要点几下鼠标,就能生成一张细节锐利、风格可控、堪比专业摄影棚出品的高清图像。这不是未来预告,而是你现在就能上手的现实。今天要介绍的,正是这样一款为“非技术用户”量身打造的影像创作终端:** Jimeng AI Studio (Z-Image Edition)**。 它不堆砌参数,不强制你理解CFG、采样器或LoRA原理;它把所有复杂性藏在后台,只把最直观、最顺手、最出片的界面交到你手上。无论你是想快速做一张社交平台封面、设计小红书配图、生成电商主图,还是单纯想试试“把脑海里的画面变成真实图片”,它都能在30秒内给你答案。 本文将全程以零基础用户视角展开,不讲架构、不谈原理、不列公式,只聚焦三件事: 怎么启动它(5秒完成) 怎么让它听懂你想要什么(提示词怎么写才有效) 怎么让生成结果更稳、更美、更像你心里想的(3个关键微调动作) 全程无需安装Python、不配CUDA、