无需额外数据,首次实现ImageNet 87.1% 精度,颜水成团队开源VOLO

2023-10-26

人工智能学习离不开实践的验证,推荐大家可以多在FlyAI-AI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

VOLO 是第一个在 ImageNet 上无需额外数据达到 87.1% top-1 准确率的模型,进一步拉近了视觉 Transformer 与最较高级 CNN 模型的性能距离。

近十年来,计算机视觉识别任务一直由卷积神经网络 (CNN) 主导。尽管最近流行的视觉 Transformer 在基于 self-attention 的模型中显示出巨大的潜力,但是在没有提供额外数据的情况下,比如在 ImageNet 上的分类任务,它们的性能仍然不如的 SOTA CNNs。目前,在无额外数据集时,ImageNet 上的较高性能依旧是由 Google DeepMind 提出的 NFNet (Normalizer-Free Network)所获得。

ImageNet 分类性能实时排行榜(无额外数据集),来源 https://paperswithcode.com/

Cityscapes validation 实时排行榜,来源 https://paperswithcode.com/

在一篇最近发表的论文中,来自新加坡 Sea 集团旗下、颜水成教授领导的 Sea AI Lab (SAIL) 团队提出了一种新的深度学习网络模型结构——Vision Outlooker (VOLO),用于高性能视觉识别任务。它是一个简单且通用的结构,在不使用任何额外数据的情况下,实现了在 ImageNet 上图像分类任务 87.1% 的精度目标;同时,实现了在分割数据集 CityScapes Validation 上 84.3% 的性能,创下 ImageNet-1K 分类任务和 CityScapes 分割任务的两项新纪录。

VOLO 模型与 SOTA CNN 模型(NFNet)和 Transformer 模型(CaiT)的 ImageNet top-1 准确率比较。在使用更少参数的情况下,VOLO-D5 优于 CaiT-M48 和 NFNet-F6,并首次在不使用额外训练数据时达到了 87% 以上的 top-1 准确率。

颜水成教授认为,以 Transformer 为代表,「Graph Representation + Attentive Propagation」以其灵活性和普适性已展现出成为各领域统一框架的潜能,VOLO 算法表明了在视觉领域 Attention 机制也可以超越 CNN, 佐证了各领域走向模型统一的可行性。

论文地址:https://arxiv.org/pdf/2106.13112.pdf

GitHub 地址:https://github.com/sail-sg/volo

方法概述

这项工作旨在缩小性能差距,并证明在无额外数据的情况下,基于注意力的模型优于 CNN。

具体来说,作者发现限制 self-attention 模型在图像分类中的性能的主要因素是在将精细级特征编码到 token 表征中的效率低下。

为了解决这个问题,作者提出了一种新颖的 outlook attention,并提出了一个简单而通用的架构——Vision OutLOoker (VOLO)。

与专注于粗略全局依赖建模的 self-attention 不同,outlook attention 旨在将更精细的特征和上下文有效地编码为 token,这些 token 对识别性能至关重要,但在很大程度上被自注意力所忽略。

Outlooker

VOLO 框架分为两个阶段,或者说由两个大的 block 构成:

第一个阶段由多层 outlooker 构成,旨在用于生成精细级别的数据表征;

第二个阶段部署一系列 transformer 层来聚合全局信息。在每个阶段的开始,使用 patch 嵌入模块将输入映射到相应大小的数据表示。

第一个 stage 由多层 outlooker 构成,outlooker 是本文提出的特殊的 attention 层,每一层 outlooker 由一层 outlook attention 层和 MLP 构成,如下所示为一层 outlooker 的实现方式。

其中,核心操作为 Outlook attention,如下图所示:

具体来说,outlook attention 的操作如下所示:

总体而言,outlook attention 具有如下优点:

较低的复杂度:相对于普通 self-attention 的时间复杂度是 O(H^2xW^2),而 outlook attention 只有 O(HW x k2 x k2)=O(HW x k4),而窗口大小 k 一般只有 3 或者 5,远小于图片尺寸 H 和 W。因此可用于具有更高分辨率的特征图(例如,28x28 标记),这是提高 ViT 的有效方法;

更好建模局部细节:适用于下游视觉应用,如语义分割;

Key and Query free: outlook attention 中无 Key 和 Query,attention map 可以直接由线性生成,去掉 MatMul(Query, Key),节省计算量;

灵活性:可以很容易地构成一个带有 self-attention 的混合网络。

作者也提供了 Outlook attention 实现的伪代码,如下图所示:

基于提出的 Outlooker 和传统的 Transformer, 该工作提出了 VOLO 架构,同时包含五个大小变体,从小到大依次为 VOLO-D1 到 D5,架构示意如下图所示:

实验

研究者在 ImageNet 数据集上对 VOLO 进行了评估,在训练阶段没有使用任何额外训练数据,并将带有 Token Labeling 的 LV-ViT-S 模型作为基线。他们在配有 8 块英伟达 V100 或 A100 GPU 的单个节点机上训练除 VOLO-D5 之外所有的 VOLO 模型,VOLO-D5 需要在双节点机上训练。

V0LO-D1 到 VOLO-D5 模型的设置如下表 3 所示:

主要结果

下表 4 中,研究者将 VOLO 模型与 SOTA 模型进行了比较,所有的结果都基于纯(pure)ImageNet-1k 数据集,没有使用额外训练数据。结果表明,VOLO 模型优于 CNN、Transformer 等以往 SOTA 模型。

具体来说,该工作在图像分类和分割中验证了所提方法有效性,下图为 VOLO 在 ImageNet 上的实验结果,可以看出,仅凭 27M 参数,VOLO-D1 就可以实现 85.2% 的准确率,远超以往所有模型。同时 VOLO-D5 实现了 87.1% 的准确率,这也是当前在无额外数据集下 ImageNet 较好结果,比以往 SOTA 模型 NFNet-F6 有 0.5% 以上的提升。

Outlooker 的性能

研究者展示了 Outlooker 在 VOLO 模型中的重要性,他们将最近的 SOTA 视觉 transformer 模型 LV-ViT-S 作为基线。LV-ViT-S 及 VOLO-D1 模型的实验设置和相应结果如下表 5 所示:

研究者还对 Outlooker 与局部自注意力(local self-attention)和空间卷积进行了比较,结果如下表 6 所示。结果表明,在训练方法和架构相同的情况下,Outlooker 优于局部自注意力和空间卷积。

消融实验

研究者将 VOLO-D1 模型扩展至 4 个不同的模型,即 VOLO-D2 到 VOLO-D5,具体的规格如上表 2 所示,相应的结果如下表 7 所示。结果表明,当增加训练模型大小和测试分辨率时,VOLO 模型都可以实现性能提升。

研究者还发现,VOLO 模型中 Outlooker 的数量对分类性能产生影响。下表 8 中,研究者在展示了不同数量的 Outlooker 在 VOLO 模型中的影响。

结果表明,在不使用 Outlooker 时,具有 16 个 transformer 的基线模型取得了 83.3% 的准确率。增加 Outlooker 的数量可以提升准确率,但使用 4 个 Outlooker 时即达到了性能饱和,之后增加再多的数量也无法带来任何性能增益。

下游语义分割任务上的性能

同时,该框架在下游任务上也取得了极大的提升,比如语义分割任务上,VOLO-d4 在 CityScapes 上实现 84.3 mIoU,在 ADE20k 上实现了 54.3 mIoU。

总体来说,实验表明 VOLO 在 ImageNet-1K 分类上达到了 87.1% 的 top-1 准确率,在无额外数据集的情况下,首次在 ImageNet 上超过 87% 准确率的模型。

同时将该框架用于下游任务,比如语义分割 (Semantic Segmentation) 上,在 Cityscapes 和 ADE20k 上也实现了非常高的性能表现,VOLO-D5 模型在 Cityscapes 上实现 84.3% mIoU,目前位居 Cityscapes validation 首位。

工作总结

这个工作提出了一个全新的视觉模型,并取得了 SOTA 的效果。首次在无额外数据集下,让 attention 主导的模型超越了 CNN 主导的模型精度。在证明了视觉 attention 的重要性的同时,为研究社区引入新的的模型框架和训练策略。

感兴趣的读者可以阅读英文原文,了解更多研究细节。

声明:文章收集于网络,版权归原作者所有,为传播信息而发,如有侵权,请联系小编删除,谢谢!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无需额外数据,首次实现ImageNet 87.1% 精度,颜水成团队开源VOLO 的相关文章

随机推荐

  • Hashpump实现哈希长度扩展攻击

    Hashpump实现哈希长度扩展攻击 RCEME 0x01 HASH长度拓展攻击 哈希长度拓展攻击的原理有点过于复杂了 这里直接copy其他大佬的描述了 长度扩展攻击 length extension attack 是指针对某些允许包含额外
  • MYSQL访问控制与安全管理

    用户账户管理 利用select语句查看mysql数据库的使用者帐号 select user from mysql user 1 创建用户帐号 语法格式 create user lt 用户名 gt identified by password
  • 在师生们框架下的Spring mvc编程错误

    在ssm框架下 Springmvc 编程 时 出现传值问题 从后台传到前台时可以使用 Resource HttpSession session 采用jsp中的参数名与control层响应的的参数名一致传参 RequestMapping va
  • 微信小程序开发:实现微信支付功能

    微信支付是一种便捷 安全 快速的支付方式 可以在微信中轻松完成支付 不需要用户输入过多的信息 只需要简单的几步即可完成 在微信小程序中 也可以集成微信支付功能 为用户提供更加完善的购买体验 下面将详细介绍微信小程序开发中如何实现微信支付功能
  • 如何提升 API-First 设计流程

    一个 API First 设计应该具有可复用性 互操作性 可修改性 用户友好性 安全性 高效性 务实性 并且重要的是 与组织目标保持一致 这些基本特征将确保 API 能够有效地为 API First 组织战略和开发模式做出贡献 在这种模式中
  • 1入门基础知识

    1 C 98关键字 面试 C 语言中一共有多少个关键字 在C 98中有63个关键字 在回答的时候一定要带上语言标准带上 2 命名空间 2 1 概念 实际就是一个新的作用域 用来解决命名冲突问题 2 2 定义方式 方式一 namespace
  • Java的安装以及配置

    Java安装及配置 一 Java安装 一 准备工作 1 在磁盘中新建两个文件夹 建议不要新建在系统盘中 我将其分别命名为JDK1 8 jre1 8 0 102 作为一会儿安装使用到的路径 2 下载好工具软件包 我的是64位的 可以从官网下载
  • c语言数学字符,C语言中涉及的数学问题

    数学函数如何用C语言来表示 但是这些文件的头应写为 include或者 include math h sin x sinx asin x arcsinx cos x cosx acos x arccosx tan x tanx atan x
  • 关于敏捷的一点感悟笔记

    此笔记写于大约二 三年前 现贴出存档 有点顿悟的感觉了 发挥团队的力量 让每个人主动计划 主动设计 主动发表意见 任何人可以发起讨论 任何人可以发起改进 而不是一个人设计 一个人分配任务 一个人设计思路 那样就不是团队 是包工头和工人的关系
  • 大神浅谈无人机飞控软件设计 系统性总结

    写在前面 深感自己对飞控软件 算法的知识点过于杂乱 很久没有进行系统的总结了 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 如内容有错误 欢迎指出 1 飞控软件的基本模块 无人机能够飞行主要是依靠传感
  • 使用flex布局,子元素怎么高度自适应?

    1 想用flex实现这种布局 2 各个子元素高度不固定 从上到下依次排列 请问可以怎么实现 附 我对父元素定义了下面的规则 display flex flex flow row wrap 对子元素用p标签放了一些文本 未设置高度 结果显示效
  • 如何实现自定义的DataSource

    有时候我们希望能自己写一个component 并可以像DataSet 那样可以在设计时可以显示出其中的collection 以及collection中的可绑定的属性 一下提供了一个简要的介绍 IListSource 如果你的componen
  • 微信小程序插件接入

    微信小程序插件接入 插件 是可被添加到小程序内直接使用的功能组件 开发者可以像开发小程序一样开发一个插件 供其他小程序使用 同时 小程序开发者可直接在小程序内使用插件 无需重复开发 为用户提供更丰富的服务 如需开发插件 请阅读开发插件部分
  • java异常处理throw new RuntimeException(e)

    1 java try catch 异常后还会继续执行吗 catch 中如果你没有再抛出异常 那么catch之后的代码是可以继续执行的 但是try中 报错的那一行代码之后 一直到try结束为止的这一段代码 是不会再执行的 代码1 public
  • 跨域 nginx反向代理proxy未添加pathRewrite导致的404问题

    跨域 nginx反向代理proxy未添加pathRewrite导致的404问题 pathRewrite是使用proxy进行代理时 对请求路径进行重定向以匹配到正确的请求地址 未添加pathWrite时 proxy csdn target h
  • ecshop 404设置方法

    ecshop是一款非常好的B2C开源程序 但SEO方面做的不足的地方不少 比如404 TITLE方面 今天分享下ecshop404设置方法 默认的ECSHOP也做了这方面的设置 它的设置是这样的 当某个商品或者商品类别不存在的时候 自动跳转
  • Java 知识点整理-14.File类

    应用Alt 对变量调用方法进行快速打印 选中要打印的内容 按Alt 选最后一个选项 方法介绍中 未明确指明对文件或目录进行操作 则两者皆可 目录 File类的概述 File类的构造方法 File类的创建功能 File类的重命名和删除功能 F
  • ssh服务及其免密配置

    ssh服务 1 ssh是什么 掌握原理 ssh gt secure shell 安全的shell 用来远程管理服务器 网络上传输的内容时进行了加密 ssh 是一个应用层的协议 openssh 是一个软件 底层使用ssh协议来远程管理服务器
  • php 实时显示日志 web,[PHP] php作为websocket的客户端实时读取推送日志文件

    首先要使用composer来下载一个第三方扩展就可以实现php的websocket客户端 直接在当前目录生成下composer json文件就可以了 composer require textalk websocket require ve
  • 无需额外数据,首次实现ImageNet 87.1% 精度,颜水成团队开源VOLO

    人工智能学习离不开实践的验证 推荐大家可以多在FlyAI AI竞赛服务平台多参加训练和竞赛 以此来提升自己的能力 FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台 每周免费提供项目开源算法样例 支持算法能力变现以及快