Exploring the Limits of Masked Visual Representation Learning at Scale论文笔记

news2025/2/7 23:56:28

论文名称:EVA: Exploring the Limits of Masked Visual Representation Learning at Scale
发表时间:CVPR2023
作者及组织:北京人工智能研究院;华中科技大学;浙江大学;北京理工大学
GitHub:https://github.com/baaivision/EVA

问题与贡献

本文中,作者提出了一个以视觉为中心的基础模型,EVA,来探索大规模masked视觉特征学习的局限性。

EVA is a vanilla ViT pretrained to reconstruct the masked out image-text aligned vision features conditioned on visible image patches.

EVA,是一个普通的ViT模型,预训练任务的目标是重建掩码patches的CLIP特征。通过新的pretext代理任务,可以有效地扩大EVA到10亿参数量,同时在一系列下游任务中取得新的记录。EVA除了可以作为视觉编码器之外,还可以应用到多模态任务中对齐图像和文本。使用EVA初始化CLIP可以极大减少训练波动,相对于从头开始训练CLIP使用更少的样本和计算量,为扩大和加速多模态基础模型的训练提供了一个新的方向。

模型、理论和方法

vision pretext task

基于之前的视觉预训练模型研究工作,有两个主流方案:

  • 重建masked out tokenized semantic vision features;
  • 重建来自大规模预训练模型蒸馏的特征;

两者都使用了预先训练图像文本对齐的视觉特征。通过下面的一些实验,可以发现CLIP的特征标记化对于好的下游任务表现不是必须的;随着预训练时间延长,重建蒸馏特征并不能带来一致的性能增益。作者发现简单地重建以可见图像块为条件的masked图像文本对齐视觉特征,效果更好。
image.png

pre-training objective

EVA有10亿参数量,与ViT giant和BEiT-3相当。在预训练阶段,EVA没有使用相对位置编码和layer-scale。EVA对输入的patchs进行mask,掩码率为40%。其重建目标来自使用224×224像素图像训练的OpenAI CLIP-L/14视觉encoder。EVA输出特征首先归一化,然后通过线性层映射成CLIP特征相同的维度。使用negative cosine similarity作为损失函数。
image.png
EVA的训练数据集共29.6million,来自于不同的开源数据集。用于生成预测模型的CLIP使用4亿图文对数据进行训练。因此,在EVA的预训练阶段也会从这些数据中学习到知识。

pre-training设置

image.png
如上图所示,EVA使用Adam优化器进行优化,decoupled weight decay参数设置为0.05。初始学习率设置为1e-3,采用余弦衰减方案缩放学习率。设置随机深度的比例为0.1用于正则化。数据增强的方案采用RandResizeCrop(0.2,1),没有使用Color jitter
image.png
预训练过程中的细节如上图所示。作者采用的GPU平台为NVIDIA A100-SXM4-40GB。预训练代码基于BEiT代码修改得来。同样,采用DeepSpeed优化库和ZeRO stage-1优化器来节省显存。在训练过程中,使用fp16精度搭配dynamic loss缩放模型整体收敛稳定,因此使用bfloat16是没有必要的。由于EVA使用fp16精度训练,因此可以使用16×NVIDIA 24GB(32GB)GPUs带(不带)梯度检查点进行预训练。

实验结果

为了证明EVA预训练模型的效果,在不同的下游任务,如图像分类,视频动作识别,目标检测和实例分割,语义分割,以及零样本评估的对比图文预训练,进行实验。

图像分类

对于图像分类任务,EVA在ImageNet-1K 的验证集上进行评估。同时在其他6个数据集上评估模型的鲁棒性和泛化性。

image.pngimage.png

EVA首先在ImageNet-21k上训练60个epoch,然后ImageNet-1K的训练集上训练10个epoch。与其他网络的复杂结构不同,EVA简单使用一个线性层作为分类器。需要注意的是,在ImageNet-21k上进行中间微调时,相比于MIM的预训练阶段只消耗了约1/5的时间和计算资源。然后对于其他billion参数级别的视觉模型,如SwinV2-G-3B,监督训练阶段消耗的资源约为MIM预训练的1.5倍。
image.png
上图为EVA与其他模型在ImageNet-1K上的实验效果。输入大小为336×336时,EVA的top-1精度达到了89.6%。使用更大的输入分辨率 56 0 2 560^2 5602可以进一步将top-1精度提升至89.7%。需要注意的是BEiT-3将图像分类任务作为一个图文检索任务,因此BEiT-3进行图像分类任务时额外引入了十亿参数量的语言编码器,该编码器是由350万图文对和160GB文本数据预训练得到。而EVA仅仅在模型基础上添加一个线性分类层,使用ImageNet-21k图像数据用于微调。使用公开的数据,EVA在ImageNet-1K上取得了一个新的记录。
为了验证EVA模型的鲁棒性和泛化能力,EVA在6个不同ImageNet-1K的非同源数据集上进行实验。如下图所示,EVA与timm库中一些性能较好开源的模型进行比较。所有的模型首先在ImageNet-1K的训练集上进行微调,然后在不同的非同源数据集上进行评估,该过程不做任何参数调整和额外微调。
image.png
由于模型的训练数据、输入大小、模型参数量,以及框架无法对齐,因此这些结果无法直接比较。作者以其他6个数据集的平均top-1值和原始ImageNet-1K的top-1之间的差距进行比较。从gap来看,EVA不仅取得了最高的平均值,并且性能差距也是最小的,表明EVA具有优秀的鲁棒性和泛化性。

不同条件下的EVA表现

image.png
其中psz14to16表示将patch_embed的kernel_size从14×14调整为16×16.这个对于目标检测、实例分割和语义分割的性能有提升作用。

训练EVA-CLIP

使用EVA初始化CLIP的图像编码器进行训练,在ImageNet-1K下的效果如下:
image.png

使用EVA-CLIP构建重建目标

EVA-L是ViT-Larger的一个变体,以MIM方式进行预训练,EVA-CLIP的特征作为预测目标。因此,在EVA-L的预训练阶段会从更强的teacher模型中获取知识。
采用MAE风格的预训练方式,预训练设置如下:
image.png
在ImageNet-1K的测试结果如下:
image.png

视频动作识别

**数据集:**对于视频动作识别任务,分别在Kinetics-400,Kinetics-600和Kinetics-700数据集上进行实验。首先在一个合并数据集coined Kinetics-722上进行中间微调,该数据集是由K-400,K-600和K-700通过删除在训练集和验证集中重复视频得到。经过去重操作之后,K-722中包含6.3亿视频数据包含722个动作类别。
**训练和评估设置:**EVA处理视频数据仅仅简单通过spatial-temporal attention,没有其他特殊的结构调整。首先使用K-722训练集上训练EVA,然后在每个数据集上仅仅微调1或者2epochs。设置frame×crop×clip为16×3×4用于微调和评估所有数据集。每一帧的分辨率为 22 4 2 224^2 2242
**结果:**如下图所示,EVA取得更好的效果相对于一些视频分类模型或者更大的基础模型。一个参考指标,对于经过K-722微调后的模型,直接在K-400上进行评估可以取得的top-1精度为88.4%。
image.png

目标检测&实例分割

**数据集:**使用COCO和LVISv1.0来评估目标检测和实例分割效果。COCO是一个大规模应用的目标检测数据集,其包含11.8万训练集、5千验证集和2万测试集,共80个类别。LVISv1.0中包含1200个目标类别,由超过2百万高质量的实例分割掩码图像。
**评价指标:**对于COCO,使用标准的box AP A P b o x AP^{box} APbox和mask AP A P m a s k AP^{mask} APmask作为评价指标。而LVISv1.0,给出了 A P b o x , A P m a s k AP^{box},AP^{mask} APbox,APmask A P r a t e m a s k AP_{rate}^{mask} APratemask指标。
**训练和评估设置:**EVA使用Cascase Mask R-CNN 作为检测器,采用ViTDet的训练方案和框架配置。按照正常的训练方案,首先在Objects365数据集上进行中间微调,分辨率为 102 4 2 1024^2 10242,然后分别在COCO和LVISv1.0训练集上进行微调,分辨率为 128 0 2 1280^2 12802
**COCO实验结果:**与其他最先进的方法进行比较,EVA在COCO数据集上创造了一个新的记录。与ViTDet-H相比,同样采用Cascasde Mask R-CNN,EVA结果表示采用一个更大模型,更好的编码器和检测器训练方案,相同框架下模型的效果可以取得很大进步。
image.png
**LVIS实验结果:**在LVIS1.0上,EVA使用单尺度评估在所有指标上都取得最好的结果,相较于之前的方法有很大进步。
image.png
**LVIS-COCO结果差异分析:**相比于COCO数据集的80类,LVIS有1200类物体,自然而然存在一个长尾分布问题,与现实应用场景更加符合。因此,LVIS相对于COCO更难,常见的方法在LVIS上相对于COCO有一个更大的性能下降。
如下图所示,分析了COCO和LVIS在不同模型的性能差异。对于之前的模型,如ViTDet,在 A P b o x AP^{box} APbox A P m a s k AP^{mask} APmask上的性能差异分别8和5。但是,采用相同检测器和参数配置,EVA不仅在LVIS&COCO上取得了最好的效果,同时极大的缩小了两个数据集上的性能。
image.png

语义分割

**数据集:**EVA在ADE20K和COCO-Stuff-164K数据集上评估语义分割任务。ADE20K数据集中包含150个分割类别,包含2万张训练集和2千张验证集。COCO-Stuff-164K共包含16.4万张图像数据,包含172个类别。相比于ADE20K,COCO-Stuff更具有挑战性。
**实验结果:**与其他最先进的语义分割方法进行比较,EVA在ADE20K和COCO-Stuff-164K数据集上都取得了较好的结果。可以看到EVA的性能在ADE20K上略低于BEiT-3,这个可能是因为由于资源限制弱化了网络结构配置。
image.png

CLIP零样本评估

CLIP是一种多模态基础模型通过对比图像文本预训练来对齐视觉和语言。CLIP可以直接应用于任何图像分类benchmark,仅仅只需要提供数据集的类别名称即可。将EVA作为CLIP的视觉编码器,评估其在零样本图像/视频benchmark上的效果。
**训练设置:**使用预训练的EVA作为CLIP的视觉编码器,语言编码器保持OpenAI CLIP-L原样。该实现是基于Open CLIP代码。使用DeepSpeed优化库来节省显存。作者发现使用fp16精度搭配dynamic loss缩放在整个训练过程能稳定收敛。基于此,训练1.1B的CLIP模型在256× NVIDIA A100 40GB GPUs上batch size可以设置为41k。
**评估设置:**作者在12个数据集上评估每个CLIP模型的零样本图像/识别分类性能。对于零样本分类任务,选择了8个数据集。对于CLIP模型的鲁棒性评估,以这些数据集的平均性能与原始ImageNet-1K验证集的差异作为指标。对于零样本视频分类任务,选择了4个数据集,分别为UCF-101,Kinetics-400,Kinetics-600和Kinetics-700。
**实验结果:**EVA-CLIP取得了最好的平均精度,在12个数据集上有10个为最优。此外,数据集之间的性能差异也是最小的,表示模型具有很好的鲁棒性。

image.png
在下图中,展示了EVA-CLIP在零样本、线性探测和端到端微调的top-1精度。该方法相对于现有所有的自监督方法的性能都更好。
image.png
EVA-CLIP的视觉分支是从OpenAI CLIP-L中学习得到,而语言分支是用CLIP-L模型直接初始化得到。因此,从430M参数的CLIP-L出发,进一步放大得到1.1B EVA CLIP-g模型,在性能上取得了很大提升。这意味着交错的 MIM 和图像文本对比预训练可能是一种高效且可扩展的 CLIP 训练方法。 据我们所知,EVA CLIP-g 是通过公开数据和资源训练的最大的高性能 CLIP 模型。 我们希望我们在扩展和改进 CLIP 方面的实践也能够启发并转移到其他大规模多模态基础模型的研究。

思考

本文中,作者推出了 EVA,一个 10 亿参数的普通 ViT 编码器,以探索掩码视觉表示学习的局限性。 我们展示了以简单的掩码特征作为重建目标,可以在一组具有代表性和多样化的下游任务中获得优异的结果。 作者希望EVA可以缩小视觉和语言研究之间的差距,为视觉研究做出贡献。

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

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

相关文章

OpenCV之图像匹配与定位

利用图像特征的keypoints和descriptor来实现图像的匹配与定位。图像匹配算法主要有暴力匹配和FLANN匹配,而图像定位是通过图像匹配结果来反向查询它们在目标图片中的具体坐标位置。 以QQ登录界面为例,将整个QQ登录界面保存为QQ.png文件,QQ登…

百度Apollo五步入门自动驾驶:Dreamview与离线数据包分析(文末赠送apollo周边)

🎬 鸽芷咕:个人主页 🔥 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 粉丝福利活动 ✅参与方式:通过连接报名观看课程,即可免费获取精美周边 ⛳️活动链接&#xf…

Kind创建k8s - JAVA操作控制

kind 简介kind 架构安装 Kind (必备工具)docker官网kubectl官网kind官网校验安装结果 关于kind 命令 安装一个集群查看当前 Kubernetes 集群中的节点信息。查看当前命名空间下中的Pod(容器实例)的信息。使用 kind create cluster 安装,关于安…

分布式下有哪些好用的监控组件?

在之前的内容中,分析了分布式系统下的线上服务监控的常用指标,那么在实际开发中,如何收集各个监控指标呢?线上出现告警之后,又如何快速处理呢?本文我们就来看下这两个问题。 常用监控组件 目前分布式系统…

深入剖析LinkedList:揭秘底层原理

文章目录 一、 概述LinkedList1.1 LinkedList简介1.2 LinkedList的优点和缺点 二、 LinkedList数据结构分析2.1 Node节点结构体解析2.2 LinkedList实现了双向链表的原因2.3 LinkedList如何实现了链表的基本操作(增删改查)2.4 LinkedList的遍历方式 三、 …

matlab设置colorbar标题的两种方式

%% 第一种 figure; A rand(3,4,3); A1 A(:,:,1); A2 A(:,:,2); A3 A(:,:,3); contourf(A1,A2,A3,30); colormap(jet);colorbar; my_handlecolorbar; my_handle.Label.String depth/km; my_handle.Label.FontSize 15;%% 第二种 figure; A rand(3,4,3); A1 A(:,:,1); A2 …

排序算法--------计数排序

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…

【VS】NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。

问题描述 报错 NETSDK1045 严重性代码说明项目文件行禁止显示状态错误NETSDK1045当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标,或使用支持 .NET 6.0 的 .NET SDK 版本。RCSoftDrawMicrosoft.NET.TargetFrameworkInference.ta…

2024年科技盛宴“上海智博会·上海软博会”招商工作接近尾声

2024年上海智博会和上海软博会即将于3月份在上海跨国采购会展中心盛大召开。作为全球科技和软件行业的盛会,这两大展会汇集了业界顶尖的企业、创新技术和前瞻思想,吸引了来自世界各地的专业人士和参展商。 今年的展会将一如既往地为大家呈现最前沿的科技…

TypeScript下载安装,编译运行

TypeScript是拥有类型的JavaScript超集,它可以编译成普通、干净、完整的JavaScript代码。 简单理解:TypeScript就是加强版的JavaScript。 TypeScript最终会被编译成JavaScript代码,那么我们必然需要对应的编译环境 环境搭建前提&#xff1a…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)Dispatcher模块的实现思路和定义

(四)Dispatcher模块的实现思路 关于dispatcher,它应该是反应堆模型里边的核心组成部分,因为如果说这个反应堆模型里边有事件需要处理,或者说有事件需要检测,那么是需要通过这个poll、epoll 或者 select来完…

C# 初识System.IO.Pipelines

写在前面 在进一步了解Socket粘包分包的过程中,了解到了.NET 中的 System.IO.Pipelines,可以更优雅高效的解决这个问题;先跟随官方的示例做个初步的认识。 System.IO.Pipelines 是一个库,旨在使在 .NET 中执行高性能 I/O 更加容…

56.0/DIV+CSS 布局(详细版)

目录 56.1 本章简介 56.2 实例讲解 56.2.1 菜单制作 56.2.2 美化滚动条 56.2.3 DIV+CSS 布局 56.3 综合示例 56.3.1 总体分析 56.3.2 Header 层 56.3.3 最终代码 56.1 本章简介 本章通过几个实例讲解 DIV+CSS 的应用。 采用表格布局的页面内,为了实现设计的布局,制作者往往…

SQL server 数据库练习题及答案(练习3)

一、编程题 公司部门表 department 字段名称 数据类型 约束等 字段描述 id int 主键,自增 部门ID name varchar(32) 非空,唯一 部门名称 description varchar(1024) …

数据库原理及应用·关系数据库标准语言SQL

4.1 SQL概述 4.1.1 SQL的产生和发展 1.产生 1974年,SQL语言的雏形最早由美国IBM公司的Raymond F. Boyce和Donald D. Chamberlin提出 1975-1979年,在System R上首次实现,由IBM的San Jose研究室研制,称为SEQUEL 2.发展 1986年推…

使用 pytest.ini 文件控制输出 log 日志

一、前置说明 pytest.ini 文件中可以配置参数来控制 pytest 的运行行为,其存放路径要求与 conftest.py 一样。 项目根目录project_root/ ├── pytest.ini ├── tests/ │ └── test_demo.py以test开头的测试子目录project_root/ ├── tests/ │ ├── pytest.in…

C# 学习网站

C# 文档 - 入门、教程、参考。 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/csharp/ Browse code samples | Microsoft LearnGet started with Microsoft developer tools and technologies. Explore our samples and discover the things you can build. htt…

STM32独立看门狗和窗口看门狗的区别

独立看门狗: 本质上是一个定时器,这个定时器有一个输出端,可以输出复位信号。 该定时器是一个 12 位的递减计数器,当计数器的值减到 0 的时候,就会产生一个复位信号。如果在计数没减到 0 之前,重置计数器的…

Go_defer详解

defer 1. 前言 defer语句用于延迟函数的调用,每次defer都会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行。 为了方便描述,我们把创建defer的函数称为主函数,defer语句后面的函数称为延迟函数。 延迟函数可能有输入…

深入了解队列:探索FIFO数据结构及队列

之前介绍了栈:探索栈数据结构:深入了解其实用与实现(c语言实现栈) 那就快马加鞭来进行队列内容的梳理。队列和栈有着截然不同的工作方式,队列遵循先进先出(FIFO)的原则,在许多场景下…