谷歌推出创新SynCLR技术:借助AI生成的数据实现高效图像建模,开启自我训练新纪元!
谷歌推出了一种创新性的合成图像框架,这一框架独特之处在于它完全不依赖真实数据。这个框架首先从合成的图像标题开始,然后基于这些标题生成相应的图像。接下来,通过对比学习的技术进行深度学习,从而训练出能够精准识别和理解这些图像的模型,令人惊讶的是,这种方法在各种下游任务中都表现出色。让我们一起来看看使用了什么神奇的魔法!
论文标题: Learning Vision from Models Rivals Learning Vision from Data
论文链接:
https://arxiv.org/pdf/2312.17742.pdf
引言
集大规模的真实数据往往伴随着许多挑战:未经筛选的庞大数据集虽然成本较低,但其效益却是有限的;而精细筛选的小规模数据集虽然更为精确,但却限制了模型的广泛应用。为了克服这些障碍,一项新的研究提出了一种独特的解决方案——利用合成数据来学习视觉表示。这种方法通过生成大量的图像标题和相应的图像,实现了有效的对比学习,能够将共享同一标题的图像视为相互匹配的正例。研究团队特别强调,这种基于合成数据的学习方法不仅展现了卓越的可扩展性,而且在多种下游任务中展现了与传统方法相媲美的卓越性能。
传统学习方法("Learning from data")侧重于纯粹从真实数据中汲取知识。一个典型的例子是CLIP模型,它直接从文本和图像数据集中提取信息,在ImageNet上实现了令人瞩目的80.2%的线性转移精度。
混合学习方法("Hybrid")则采用了一种双管齐下的策略,结合真实文本和生成图像进行学习。例如,StableRep模型就是在这样的框架下运作,它利用文本数据集和图像生成器进行学习,在ImageNet上也取得了相当不错的76.7%的线性转移精度。
而本文提出的基于模型生成的方法("Learning from models")——SynCLR,标志着一次创新的飞跃。它通过从合成文本和合成图像中学习,即便没有直接接触任何真实数据,也能在ImageNet上展现出与CLIP相匹敌的竞争力,达到了非常优秀的80.7%的线性转移精度。
方法
SynCLR的核心创新在于它通过生成模型重新界定了视觉类别的细粒度。与传统的自监督和监督学习方法相比,SynCLR独特地以标题作为类别定义,其中每个标题都细致地描述了一个视觉类别。这一方法的巧妙之处在于它允许按照标题所共享的语义将图像分组,而非仅限于更为宽泛的类别标签,如“金毛寻回犬”等。在实验中,这种以标题为基础的精细分类方式证明了其优于传统自监督和监督训练方法的效果。该系统包括以下三个步骤:
生成图像标题
首先,作者们成功地生成了一个庞大的图像标题语料库。为了实现这一目标,他们巧妙地利用了大型语言模型(LLMs)的上下文学习能力,精心设计了一系列的提示模板,以指导LLM根据特定上下文产生相关联的文本内容。
通过从现有数据集(如ImageNet-21k和Places-365)中精选概念列表,作者们为每个概念构建了特别的提示,引导LLM生成描述性且富有创意的图像标题。这一过程的核心在于确保生成的标题既准确描述图像内容,又展现足够的多样性,以覆盖广泛的视觉概念。这种多样性至关重要,因为它保证了生成的图像集可以代表尽可能多样的场景、对象和活动,进而提高学习到的视觉表示的泛化能力。
通过这种方式,作者们合成了大量多样化的图像标题,这些标题随后用于指导图像生成模型生成相应的合成图像。将这些合成图像与合成标题结合起来,形成了一个用于训练视觉表示学习模型的丰富数据集。这种方法使得在完全没有真实图像数据的情况下进行视觉模型训练成为可能,为传统依赖真实数据集的视觉学习方法提供了一种创新且有效的补充。
在下图中,研究团队提供了一个上下文(左侧),用于指导模型根据给定的类别对(例如“tiger, forest”或“groom, wedding ceremony”)生成具体的描述性标题。例如,在实际生成的结果中(右侧),对于“red fox, yard”这一类别对,模型生成了以下标题:“wild red fox sitting on a partially snow covered front yard of a house in the suburbs of a small city”。在这个过程中,每次推理都会随机选择三个这样的上下文实例。
图像生成
研究团队采用了一种创新的方法来生成图像,即通过不同的随机噪声启动反向扩散过程。在这个过程中,Classifier-Free Guidance(CFG)比例扮演着至关重要的角色,它有效地平衡了样本质量、文本与图像之间的一致性,以及样本多样性之间的关系。为了为每个文本描述生成一系列不同的图像,团队调整了随机噪声输入,从而丰富了生成图像的多样性。
表示学习方法
这一表示学习方法是在StableRep方法的基础上构建的,引入了一种多正面对比学习损失。其核心思想是在嵌入空间中将由相同标题生成的图像对齐,同时融合了其他自监督学习方法中的多种技术,包括补丁级掩蔽图像建模目标。
StableRep
StableRep方法通过比较不同样本之间的相似性和差异性,最小化交叉熵损失。这一策略训练模型识别和区分由相同或不同标题生成的图像。
iBOT
iBOT方法采用掩蔽图像建模目标,其中局部补丁被掩盖,而模型的任务是预测这些被掩盖的补丁的标记表示。这一策略将DINO模型从图像级别调整到补丁级别。
指数移动平均(EMA)
EMA最初由MoCo在自监督学习中引入,用于编码作物并生成iBOT损失的目标。在训练期间,EMA模型按照余弦计划更新,以平滑模型参数的更新过程,从而使模型在训练过程中保持稳定性。
多作物策略
多作物策略作为一种提高计算效率的方法,允许模型从多个视角和上下文中学习,增加了训练样本的多样性并提升了表示的泛化能力。具体而言,StableRep通过最小化真实分配和对比分配之间的交叉熵损失来提高效率。在这个框架中,存在一个编码的锚点样本和一组编码的候选样本集合。对比分配分布描述了模型预测锚点样本和每个候选样本是否由相同标题生成的概率。他们使用指示函数来标识两个样本是否来自同一个标题。
实验
研究团队对其模型进行了长达500k步骤的预训练,采用8192个标题的大批量尺寸,所有预训练任务均在224x224分辨率下进行。他们将SynCLR与OpenAI的CLIP、OpenCLIP以及DINO v2进行了对比,这些模型分别代表了不同的从数据中学习的方法。特别指出的是,DINO v2中的ViT-B/14和ViT-L/14是由ViT-g模型蒸馏得来,这一点在比较时为DINO v2带来了优势。
ImageNet线性评估
为了进行公平的比较,所有模型均使用最后一个块的cls令牌作为表示(与DINO v2使用多层串联的结果相比)。据表6所示,SynCLR在ViT-B结构上达到了80.7%的成绩,在ViT-L结构上则达到了83.0%。这些成绩与那些直接从真实数据中学习的模型(如CLIP和DINO v2)相当,尽管SynCLR仅使用了合成数据。
UperNet语义分割
研究团队在UperNet语义分割中采用了单一尺度512x512分辨率,部分模型为适应518x518分辨率而使用了14x14的补丁尺寸。他们使用了600M的合成数据,与包括MoCo v3、SimMIM、MAE、PeCo、data2vec、iBOT、BEiT v2、CLIP和OpenCLIP在内的其他模型进行了对比,这些模型主要是基于真实的ImageNet数据预训练的。SynCLR在mIoU指标上分别在标准分辨率和高分辨率下达到了54.3%和57.7%,与使用真实数据训练的模型相比,表现十分出色。
ImageNet图像分类
SynCLR在ImageNet图像分类方面的表现也值得关注。使用600M合成数据,SynCLR与采用不同数据集,如IN21K、WIT-400M和LAION-2B预训练的各种模型进行了比较。在ViT-B结构上,SynCLR的Top-1准确率为85.8%,而在ViT-L结构上则为87.9%,均优于多数使用真实数据训练的模型。
这些结果明确表明,尽管完全依赖合成数据,SynCLR方法在视觉表示学习领域仍能与依赖真实数据的模型媲美,展示了这一方法的显著有效性和巨大潜力。
小结
作者们提出了以下关键观点和结论:
从生成模型中学习的理由:生成模型的一个显著优势在于其能够同时扮演成百上千个数据集的角色。在传统的研究方法中,研究者往往需要为不同的图像类别(比如汽车、花朵、猫、狗等)单独收集数据集。而像DINO v2这样的系统通过综合和整合大量这类数据集,能够构建出强大且鲁棒的表征。
生成模型的显著优势:与传统的数据收集和标注方法相比,生成模型提供了一个更加高效、范围更广的视觉概念覆盖方式。这一方法免去了在真实图像数据收集和标注上耗费的大量时间和资源。
论文强调了合成数据在视觉表示学习中的关键作用。尽管在分类精度方面,合成数据可能不及真实数据,但在训练视觉表示模型方面,合成数据展现出了极高的效果。这些训练好的表示随后可以轻松适应于真实数据量较小的下游任务,显示出合成数据的实用性和适应性。
相关文章:
谷歌推出创新SynCLR技术:借助AI生成的数据实现高效图像建模,开启自我训练新纪元!
谷歌推出了一种创新性的合成图像框架,这一框架独特之处在于它完全不依赖真实数据。这个框架首先从合成的图像标题开始,然后基于这些标题生成相应的图像。接下来,通过对比学习的技术进行深度学习,从而训练出能够精准识别和理解这些…...
Vue2中使用echarts,并从后端获取数据同步
一、安装echarts npm install echarts -S 二、导入echarts 在script中导入,比如: import * as echarts from "echarts"; 三、查找要用的示例 比如柱状图 四、初始化并挂载 <template><div id"total-orders-chart" s…...
【Redux】自己动手实现redux-thunk
1. 前言 在原始的redux里面,action必须是plain object,且必须是同步。而我们经常使用到定时器,网络请求等异步操作,而redux-thunk就是为了解决异步动作的问题而出现的。 2. redux-thunk中间件实现源码 function createThunkMidd…...
ElasticSearch使用Grafana监控服务状态-Docker版
文章目录 版本信息构建docker-compose.yml参数说明 创建Prometheus配置文件启动验证配置Grafana导入监控模板模板说明 参考资料 版本信息 ElasticSearch:7.14.2 elasticsearch_exporter:1.7.0(latest) 下载地址:http…...
VS Code 如何调试Python文件
VS Code中有1,2,3处跟Run and Debug相关的按钮, 1 处:调试和运行就不多说了,Open Configurations就是打开workspace/.vscode下的lauch.json文件,而Add Configuration就是在lauch.json文件中添加当前运行Python文件的Configuratio…...
day06、SQL语言之概述
SQl 语言之概述 6.1 SQL语言概述6.2 SQL语言之DDL定义数据库6.3 SQL语言之DML操纵数据库 6.1 SQL语言概述 6.2 SQL语言之DDL定义数据库 6.3 SQL语言之DML操纵数据库...
3D目标检测(教程+代码)
随着计算机视觉技术的不断发展,3D目标检测成为了一个备受关注的研究领域。与传统的2D目标检测相比,3D目标检测可以在三维空间中对物体进行定位和识别,具有更高的准确性和适用性。本文将介绍3D目标检测的相关概念、方法和代码实现。 一、3D目…...
让设备更聪明 |启英泰伦离线自然说,开启智能语音交互新体验!
语音交互按部署方式可以分为两种:离线语音交互和在线语音交互。 在线语音交互是将数据储存在云端,其具备足够大的存储空间和算力,可以实现海量的语音数据处理。 离线语音交互是以语音芯片为载体,语音数据的采集、计算、决策均在…...
React Hooks之useState、useRef
文章目录 React Hooks之useStateReact HooksuseStatedemo:在函数式组件中使用 useState Hook 管理计数器demo:ant-design-pro 中EditableProTable组件使用 useRef React Hooks之useState React Hooks 在 React 16.8 版本中引入了 Hooks,它是…...
提供电商Api接口-100种接口,淘宝,1688,抖音商品详情数据安全,稳定,支持高并发
Java是一种高级编程语言,由Sun Microsystems公司于1995年推出,现在属于Oracle公司开发和维护。Java以平台无关性、面向对象、安全性、可移植性和高性能著称,广泛用于桌面应用程序、嵌入式系统、企业级服务、Android移动应用程序等。 接口是Ja…...
git的使用 笔记1
GIT git的使用 使用git提交的两步 第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。 .git 跟踪管理版本的目录 创建版本库…...
基于SpringBoot的医疗挂号管理系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的医疗挂号管理系统,java…...
prometheus与zabbix监控的对比介绍
一、普米与zabbix基本介绍 1、prometheus介绍 Prometheus的基本原理是Prometheus Server通过HTTP周期性抓取被监控组件的监控数据,任意组件只要提供对应的HTTP接口并且符合Prometheus定义的数据格式,就可以接入Prometheus监控。 工作流程大致分为收集数…...
详解全志R128 RTOS安全方案功能
介绍 R128 下安全方案的功能。安全完整的方案基于标准方案扩展,覆盖硬件安全、硬件加解密引擎、安全启动、安全系统、安全存储等方面。 配置文件相关 本文涉及到一些配置文件,在此进行说明。 env*.cfg配置文件路径: board/<chip>/&…...
【MySQL】WITH AS 用法以及 ROW_NUMBER 函数 和 自增ID 的巧用
力扣题 1、题目地址 601. 体育馆的人流量 2、模拟表 表:Stadium Column NameTypeidintvisit_datedatepeopleint visit_date 是该表中具有唯一值的列。每日人流量信息被记录在这三列信息中:序号 (id)、日期 (visit_date)、 人流量 (people)每天只有…...
基于SpringBoot的在线考试系统源码和论文
网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合,利用java技术建设在线考试系统,实现在线考试的信息化管理。则对于进一步提高在线考试管理发展,丰富在线考试管理经验能起到不少的促进作用。 在线考试系统能够通…...
基于Spring Boot的美妆分享系统:打造个性化推荐、互动社区与智能决策
基于Spring Boot的美妆分享系统:打造个性化推荐、互动社区与智能决策 1. 项目介绍2. 管理员功能2.1 美妆管理2.2 页面管理2.3 链接管理2.4 评论管理2.5 用户管理2.6 公告管理 3. 用户功能3.1 登录注册3.2 分享商品3.3 问答3.4 我的分享3.5 我的收藏夹 4. 创新点4.1 …...
Axure医疗-住院板块,住院患者原型预览,新增医护人员原型预览,新增病房原型预览,选择床位原型预览,主治医生原型预览,主治医生医嘱原型预览
目录 一.医疗项目原型图-----住院板块 1.1 住院板块原型预览 1.2 新增住院患者原型预览 1.3 新增医护人员原型预览 1.4 新增病房原型预览 1.5 选择床位原型预览 1.6 主治医生原型预览 1.7 主治医生医嘱原型预览 1.8 主治医生查看患者报告原型预览 1.9 护士原型预…...
前端实战第一期:悬浮动画
悬浮动画 像这样的悬浮动画该怎么做,让我们按照以下步骤完成 步骤: 先把HTML内容做起来,用button属性创建一个按钮,按钮内写上悬浮效果 <button classbtn>悬浮动画</button>在style标签内设置样式,先设置盒子大小&…...
Python学习笔记(五)函数、异常处理
目录 函数 函数的参数与传递方式 异常处理 函数 函数是将代码封装起来,实现代码复用的目的 函数的命名规则——同变量命名规则: 不能中文、数字不能开头、不能使用空格、不能使用关键字 #最简单的定义函数 user_list[] def fun(): #定义一个函数&…...
Vue实现模糊查询
在Vue中实现模糊查询,你可以使用JavaScript的filter和includes方法,结合Vue的v-for指令。下面是一个简单的例子: 首先,你需要在你的Vue实例中定义一个数据数组和一个查询字符串。 data() { return { items: [Apple, Banana, Che…...
【十一】【C++\动态规划】1218. 最长定差子序列、873. 最长的斐波那契子序列的长度、1027. 最长等差数列,三道题目深度解析
动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利…...
主板部件
▶1.主要部件 主板是计算机的重要部件,主板由集成电路芯片、电子元器件、电路系统、各种总线插座和接口组成,目前主板标准为ATX。主板的主要功能是传输各种电子信号,部分芯片负责初步处理一些外围数据。不同类型的CPU,需要不同主板与之匹配。…...
2023年度学习总结
想想大一刚开始在CSDN写作,这一坚持,就是我在CSDN的第九个年头,这也是在CSDN最有里程碑的一年,这一年我被评为CSDN的博客专家啦!先是被评为Unity开发领域新星创作者,写的关于一部分Unity开发的心得获得大家…...
服务器感染了.kann勒索病毒,如何确保数据文件完整恢复?
导言: 勒索病毒成为当前网络安全领域的一大威胁。.kann勒索病毒是其中的一种变种,对用户的数据造成了极大的威胁。本文91数据恢复将介绍.kann勒索病毒的特征、应对策略以及预防措施,以帮助用户更好地保护个人和组织的数据安全。当面对被勒索…...
使用results.csv文件数据绘制mAP对比图
yolov5每次train完成(如果没有中途退出)都会在run目录下生成expX目录(X代表生成结果次数 第一次训练完成生成exp0 第二次生成exp1…以此类推)。expX目录下会保存训练生成的weights以及result.txt文件,其中weights是训练…...
【算法刷题】## 算法题目第1讲:双指针处理数组题目 带视频讲解
算法题目第一讲:双指针处理数组题目 解决力扣: [344. 反转字符串][167. 两数之和 II - 输入有序数组][26. 删除有序数组中的重复项][27. 移除元素][283. 移动零][5. 最长回文子串] 配合b站视频讲解食用更佳:https://www.bilibili.com/video/BV1vW4y1P…...
达梦数据:数字化时代,国产数据库第一股终于到来?
又是新的一年开始。回首一年前的此时,在大家千呼万唤地期待中,数据基础制度体系的纲领性文件正式发布。 时隔一年之后,数据资源入表如约而至。2024年1月1日《企业数据资源相关会计处理暂行规定》正式施行,各行各业海量数据巨大的…...
selenium4.0中常见操作方式50条
前阵子升级了py3.9,一些常年陪伴的库也都做了升级,不少命令也更新了,适度更新一下记忆。 1. 打开浏览器:driver webdriver.Chrome() 2. 访问网址:driver.get("Example Domain") 3. 获取当前网址ÿ…...
如何解决使用融云音视频时由于库冲突导致编译不通过的问题
音视频库里面使用了一些第三方库,比如 openssl,libopencore-amrnb 等第三方库,如果集成的过程中遇到冲突可以尝试这样修改: 1、在 Build Settings 中 Other Linker Flags 中把 -all_load 去掉; 2、如果遇到 openssl 库…...
杭州投资公司自适应网站/dw网页制作教程
SpringBoot入门一 推荐: Spring Boot系列文章Spring Boot基础教程Spring Boot参考指南springboottutorial 项目属性配置 参考: Spring Boot属性配置文件详解 可以使用properties文件,YAML文件配置。YAML文件相对来说更简洁一点。 如下…...
三元里网站建设/华联股份股票
前言 随着大前端时代的来临,node在前段开发的过程中占据了越来越重要的地位,近期接受了一个项目,恰好是node做中间层模式开发的,趁此机会我也对node做中间层有了更深层次的理解,这里记录一下在这个项目中node.js做中间…...
网站做资讯需要获取许可证吗/抚顺seo
java内部类 内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类 如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动&#…...
阿里云免备案服务器/seo教程seo教程
一个测试软硬件系统信息的工具,32位的底层硬件扫描,它可以详细的显示出PC硬件每一个方面的信息。 功能强大的说... 下载地址: http://vbcoder.qupan.com/5466121.html 转载于:https://www.cnblogs.com/it201108/archive/2009/12/25/2148068.html...
wordpress实现伪静态/上海短视频推广
前几天有网友问在输入坐标或长度的时候是否能输入公式,比如20/3或7*8这样简单的算式。cad虽然在定位点或长度时不能直接输入算式,但利用计算器功能不仅可以输入数字的算式,还可以输入点之前的算式,点可以是直接拾取的点࿰…...
甘肃省临夏州建设局网站/百度seo优化服务
本文为看雪论坛精华文章看雪论坛作者ID:Umiade0x00 简介最近在思考“如何在划水的同时让自己觉得不是在划水”,再加上一直对无源码的so加固方案有些兴趣,就找了自定义linker实现加固的方向在慢慢琢磨。然而想着想着思路慢慢歪了,就…...