码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • CLIP论文解读


    文章目录

    • 问题
    • 方法
      • 自然语言监督
      • 数据集
      • 有效预训练方法
      • 模型选择
    • 实验
      • Zero-Shot Transfer
    • 结论

    论文: 《Learning Transferable Visual Models From Natural Language Supervision》
    github: https://github.com/openai/CLIP

    问题

    现有SOTA视觉模型预测一组固定的预定对象类别,因此限制了它们的通用性和可用性,因为额外的标签需要进行明确定义;
    作者从互联网收集的 4 亿(图像,文本)对的数据集上从头开始学习 SOTA 图像表示,经过预训练后,自然语言用于参考学到的视觉概念,零样本迁移模型到下游任务;在30个不同视觉数据上测试,该模型非常重要地转移到大多数任务,并且通常与完全监督的基线相比具有竞争力,而无需任何数据集特定的训练。

    方法

    自然语言监督

    跟其他训练方式相比,自然语言监督有以下优势:
    1、与常规图像分类标定相比,自然语言更容易扩展,因为其不像图像分类中标签为N个中1个最合适标签;可从大量互联网文本中学习;
    2、与无监督、半监督方法相比,自然语言监督不只是学习表征,并且将表征与语言联系起来,从而实现zero-shot迁移;

    数据集

    作者构建一个新数据集,包括4亿图像文本对,共50万个文本序列,每个文本序列对应多达2万个文本图像对;

    有效预训练方法

    训练效率是自然语言监督成功的关键;
    现有预训练方法相似,都是预测text中准确单词,但是这种方案比较难,因为同一张图有各种各样描述。
    虽然图像的生成模型可以学习高质量的图像表示,但它们需要比具有相同性能的对比模型多一个数量级的计算量。
    因此,作者训练一个系统解决更容易的替代任务,即仅预测整个文本与哪个图像配对,而不是该文本的确切单词;将预测目标转变为对比目标,效率提升4倍,如图2
    在这里插入图片描述
    CLIP训练过程如下,伪代码如图3,结构如图2;
    1、给定一个batch,N个图像文本对;
    2、CLIP预测 N ∗ N N*N N∗N个可能对;CLIP学习多模态嵌入空间,通过联合训练图像编码器和文本编码器,最大化N个真实样本对,最小化 N ∗ 2 − N N*2-N N∗2−N个不相关样本对;
    在这里插入图片描述

    在这里插入图片描述

    由于预训练数据集量大,因此过拟合问题不严重,而且训练过程图像编码器及文本编码器不需要预训练模型;

    数据增强:
    图像随机裁剪是训练过程使用的唯一一种数据增强;

    模型选择

    图像编码器:
    ResNet50作为基线;
    ResNet-D作为改进,替换全局池化为attention池化;
    VIT,将patch和position embedding 结合后增加LN层;
    文本编码器:
    Transfoemer,结构依据 Radford《Language models are unsupervised multitask learners. 2019.》更改;

    实验

    Zero-Shot Transfer

    在3个数据集上,CLIP大幅超过之前Zero-Shot方法,如表1;
    在这里插入图片描述
    图5与全监督方法比较,27个数据集,其中16个数据集上CLIP性能超过全监督Res50方案,其中包括ImageNet;
    在这里插入图片描述
    图6表示few-shot方法比较,Zeor-Shot CLIP与4-shot Linear Probe CLIP性能价接近,Linear Probe CLIP超越其他模型;
    在这里插入图片描述

    结论

    CLIP模型验证NLP迁移至其他任务可行性,在预训练时学习各种任务表现,使得可以zero-shot迁移至许多已有数据集,取得与全监督模型接近效果;

  • 相关阅读:
    如何配置百度地图应用访问白名单
    【原创】十年带队经验,万字长文分享:如何管理好一个程序员团队?
    【微信小程序开发】自定义组件以及页面布局设计
    Java BufferedOutputStream类的简介说明
    SpringBean生命周期&扩展接口&简化配置
    【Rust 基础篇】Rust 父trait:扩展和组织trait的继承体系
    GraphQL入门
    java使用stream流把集合中元素的属性空值赋值为0,BigDecimal类型属性使用reduce()自定义运算符,避免计算的时候导致报错
    FruitJuice for Mac:智能优化电池寿命,Mac持久续航不再难!
    css:移动端实现1px、0.5px的细线
  • 原文地址:https://blog.csdn.net/qq_41994006/article/details/126085910
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号