(CVPR-2023)InternImage:利用可变形卷积探索大规模视觉基础模型

news2024/10/7 12:18:33

InternImage:利用可变形卷积探索大规模视觉基础模型

Title:InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions

paper是上海AI Lab发表在CVPR 2023的工作

paper链接

Abstract

与近年来大规模视觉变换器(ViT)的巨大进步相比,基于卷积神经网络(CNN)的大规模模型仍处于早期状态。这项工作提出了一种新的基于 CNN 的大规模基础模型,称为 InternImage,它可以从增加参数和训练数据(如 ViT)中获得增益。与最近关注大密集核的CNN不同,InternImage以可变形卷积作为核心算子,使得我们的模型不仅具有检测和分割等下游任务所需的大有效感受野,而且还具有自适应空间聚合以输入和任务信息为条件。因此,所提出的 InternImage 减少了传统 CNN 的严格归纳偏置,并使从 ViT 等海量数据中学习具有大规模参数的更强、更鲁棒的模式成为可能。我们模型的有效性在 ImageNet、COCO 和 ADE20K 等具有挑战性的基准测试中得到了证明。值得一提的是,InternImage-H在COCO test-dev上取得了新纪录65.4 mAP,在ADE20K上取得了62.9 mIoU,超越了当前领先的CNN和ViT。

1. Introduction

随着Transformers在大规模语言模型中取得的显着成功[3-8],视觉Transformers(ViTs)[2, 9-15]也席卷了计算机视觉领域,并正在成为大规模语言模型研究和实践的首选。视觉基础模型。一些先驱者 [16-20] 尝试将 ViT 扩展到具有超过 10 亿个参数的大型模型,击败卷积神经网络 (CNN),并显着提升各种计算机视觉任务的性能极限,包括基本分类、检测和分割。虽然这些结果表明 CNN 在海量参数和数据时代不如 ViT,但我们认为,当配备类似的算子/架构级设计时,基于 CNN 的基础模型也可以实现与 ViT 相当甚至更好的性能,参数设置、海量数据。

为了弥合CNN和ViT之间的差距,我们首先从两个方面总结它们的差异:(1)从算子级别[9,21,22]来看,ViT的多头自注意力(MHSA)具有长程依赖性和自适应空间聚合(见图1(a))。受益于灵活的 MHSA,ViT 可以从海量数据中学习比 CNN 更强大、更稳健的表示。 (2)从架构角度来看[9,22,23],除了MHSA之外,ViT还包含一系列标准CNN中未包含的高级组件,例如层归一化(LN)[24]、前馈网络(FFN) ) [1]、GELU [25] 等。尽管最近的工作 [21,22] 做出了有意义的尝试,通过使用具有非常大内核(例如 31×31)的密集卷积将长程依赖性引入 CNN,如图所示如图1(c)所示,在性能和模型规模方面与最先进的大规模ViT[16,18-20,26]仍有相当大的差距。

图1.不同核心操作的比较。 (a) 显示了多头自注意力 (MHSA) [1] 的全局聚合,其计算和内存成本在需要高分辨率输入的下游任务中非常昂贵。 (b) 将 MHSA 的范围限制在局部窗口 [2] 以降低成本。 © 是具有非常大的内核的深度卷积,用于模拟长程依赖关系。 (d) 是可变形卷积,它与 MHSA 具有类似的有利特性,并且对于大规模模型来说足够有效。我们从它开始构建一个大规模的CNN。

在这项工作中,我们专注于设计一个基于 CNN 的基础模型,可以有效地扩展到大规模参数和数据。具体来说,我们从灵活的卷积变体——可变形卷积(DCN)开始[27, 28]。通过将其与一系列类似于 Transformer 的定制块级和架构级设计相结合,我们设计了一个全新的卷积骨干网络,称为 InternImage。如图1所示,与最近改进的具有非常大的内核(例如31×31 [22])的CNN不同,InternImage的核心算子是公共窗口大小为3×3的动态稀疏卷积,(1)其采样偏移量可以灵活地从给定数据中动态学习适当的感受野(可以是长程或短程); (2)根据输入数据自适应调整采样偏移和调制标量,可以实现类似ViTs的自适应空间聚合,减少规则卷积的过归纳偏差; (3)卷积窗口是常见的3×3,避免了大密集核带来的优化问题和昂贵的成本[22, 29]。

通过上述设计,所提出的 InternImage 可以有效地扩展到大参数大小,并从大规模训练数据中学习更强的表示,在广泛的视觉范围内实现与大规模 ViT [2,11,19]相当甚至更好的性能任务。总而言之,我们的主要贡献如下:
(1)我们提出了一种新的基于CNN的大规模基础模型——InternImage。据我们所知,它是第一个有效扩展到超过 10 亿个参数和 4 亿张训练图像的 CNN,并实现了与最先进的 ViT 相当甚至更好的性能,这表明卷积模型也是一个值得探索的领域对于大规模模型研究方向。

(2) 我们通过使用改进的 3×3 DCN 算子引入长程依赖和自适应空间聚合,成功地将 CNN 扩展到大规模设置,并探索以算子为中心的定制基本块、堆叠规则和缩放策略。这些设计有效地利用了算子,使我们的模型能够从大规模参数和数据中获得收益。

(3) 我们在图像分类、目标检测、实例和语义分割等代表性视觉任务上评估了所提出的模型,并通过将模型规模扩大到 3000 万来与最先进的 CNN 和大规模 ViT 进行比较到10亿,数据范围从100万到4亿。具体来说,我们具有不同参数大小的模型可以始终优于 ImageNet [30] 上的现有技术。仅在 ImageNet-1K 数据集上训练的 InternImageB 就达到了 84.9% 的 top-1 准确率,比基于 CNN 的同行 [21, 22] 至少高出 1.1 个百分点。在大规模参数(即 10 亿)和训练数据(即 4.27 亿)下,InternImage-H 的 top-1 准确率进一步提升至 89.6%,接近精心设计的 ViT [2, 19]和混合 ViT [20]。此外,在具有挑战性的下游基准 COCO [31] 上,我们最好的模型 InternImage-H 在 21.8 亿个参数下实现了最先进的 65.4% box mAP,比 SwinV2-G [16] 高 2.3 个点(65.4 vs 。63.1),参数减少了 27%,如图 2 所示。

图 2. 不同主干网 COCO 的性能比较。所提出的 InternImage-H 在 COCO 测试开发上达到了新纪录 65.4 box AP,显着优于最先进的 CNN 和大规模 ViT。

2. Related Work

视觉基础模型。在大规模数据集和计算资源可用后,卷积神经网络(CNN)成为视觉识别的主流。在AlexNet [32]的基础上,人们提出了许多更深、更有效的神经网络架构,例如VGG [33]、GoogleNet [34]、ResNet [35]、ResNeXt [36]、EfficientNet [37, 38]等除了架构设计之外,还制定了更复杂的卷积运算,例如深度卷积[39]和可变形卷积[27, 28]。通过考虑 Transformer 的先进设计,现代 CNN 通过在宏观/微观设计中发现更好的组件并引入具有长程依赖性 [21,22,40] 或动态权重 [41] 的改进卷积,在视觉任务中显示出有希望的性能。

近年来,新的视觉基础模型关注基于Transformer的架构。 ViT[9]是最具代表性的模型,由于全局感受野和动态空间聚合,它在视觉任务中取得了巨大成功。然而,ViT 中的全局注意力受到昂贵的计算/内存复杂性的影响,尤其是在大型特征图上,这限制了其在下游任务中的应用。为了解决这个问题,PVT [10, 11] 和 Linformer [42] 对下采样的键和值映射进行全局关注,DAT [43] 对值映射中的稀疏样本信息采用变形关注,而 HaloNet [44] 和 Swin Transformer [2] 开发了局部注意力机制,并使用haloing和移位操作在相邻局部区域之间传输信息。

大型模型。扩展模型是提高特征表示质量的重要策略,在自然语言处理(NLP)领域已得到充分研究[45]。受到 NLP 领域成功的启发,Zhai 等人[19]首先将 ViT 扩展到 20 亿个参数。 Liu等人[16]将分层结构Swin Transformer扩展为具有30亿个参数的更深更广的模型。一些研究人员通过结合不同级别的 ViT 和 CNN 的优点,开发了大规模混合 ViT [20, 46]。最近,BEiT-3 [17] 使用多模态预训练进一步探索了基于 ViT 的更强的大规模参数表示。这些方法显着提高了基本视觉任务的上限。然而,基于 CNN 的大规模模型的研究在参数总数和性能方面落后于基于 Transformer 的架构。尽管新提出的 CNN [21,22,40,47]通过使用具有非常大的内核或递归门控内核的卷积引入了长程依赖性,但与最先进的 ViT 仍然存在相当大的差距。在这项工作中,我们的目标是开发一种基于 CNN 的基础模型,可以有效地扩展到与 ViT 相当的大规模。

3. Proposed Method

为了设计基于 CNN 的大规模基础模型,我们从灵活的卷积变体,即可变形卷积 v2 (DCNv2) [28] 开始,并在此基础上进行一些调整,以更好地适应大规模基础模型的要求。然后,我们通过将调整后的卷积算子与现代骨干网中使用的高级块设计相结合来构建基本块 [16, 19]。最后,我们探索基于 DCN 的块的堆叠和缩放原理,以构建可以从海量数据中学习强表示的大规模卷积模型。

3.1. Deformable Convolution v3


卷积与 MHSA。之前的工作 [21,22,48] 广泛讨论了 CNN 和 ViT 之间的差异。在决定InternImage的核心算子之前,我们首先总结一下规则卷积和MHSA的主要区别。

(1) 远程依赖。尽管人们早就认识到,具有大有效感受野(长程依赖性)的模型通常在下游视觉任务上表现更好[49-51],但 CNN [33,35] 事实上的有效感受野堆叠了 3× 3个规则卷积比较小。即使模型非常深,基于 CNN 的模型仍然无法获取像 ViT 那样的远程依赖关系,这限制了其性能。

(2)自适应空间聚合。与权重由输入动态调节的 MHSA 相比,规则卷积 [52] 是一种具有静态权重和强归纳偏置的算子,例如 2D 局部性、邻域结构、平移等价性等。凭借高归纳特性,模型由与 ViT 相比,规则卷积可能收敛得更快并且需要更少的训练数据,但它也限制了 CNN 从网络规模数据中学习更通用、更稳健的模式。补充材料中详细介绍了更多稳健性实验。

重新审视 DCNv2。 弥合卷积和 MHSA 之间差距的一种直接方法是将长程依赖性和自适应空间聚合引入到常规卷积中。 让我们从 DCNv2 [28] 开始,它是常规卷积的一般变体。 给定输入 x ∈ R C × H × W \mathbf{x} \in \mathbb{R}^{C \times H \times W} xRC×H×W 和当前像素 p 0 p_0 p0,DCNv2 可以表示为:
y ( p 0 ) = ∑ k = 1 K w k m k x ( p 0 + p k + Δ p k ) , \mathbf{y}\left(p_0\right)=\sum_{k=1}^K \mathbf{w}_k \mathbf{m}_k \mathbf{x}\left(p_0+p_k+\Delta p_k\right ), y(p0)=k=1Kwkmkx(p0+pk+Δpk),
其中 K K K表示采样点总数, k k k枚举采样点。 w k ∈ R C × C \mathbf{w}_k \in \mathbb{R}^{C \times C} wkRC×C表示第 k k k个采样点的投影权重, m k ∈ R \mathbf{m}_k \in \mathbb{R } mkR表示第 k k k个采样点的调制标量,通过sigmoid函数进行归一化。 p k p_k pk 表示预定义网格采样的第 k k k 个位置 { ( − 1 , − 1 ) , ( − 1 , 0 ) , … , ( 0 , + 1 ) , … , ( + 1 , + 1 ) } \{(-1,-1),(-1,0), \ldots,(0,+1), \ldots,( +1,+1)\} {(1,1),(1,0),,(0,+1),,(+1,+1)} 与常规卷积相同, Δ p k \Delta p_k Δpk 是对应于第 k k k 个网格采样位置的偏移量。 从方程中我们看到,(1)对于长程依赖,采样偏移 Δ p k \Delta p_k Δpk是灵活的,能够与短程或长程特征交互; (2) 对于自适应空间聚合,采样偏移 Δ p k \Delta p_k Δpk 和调制标量 m k \mathbf{m}_k mk 都是可学习的,并由输入 x \mathbf{x} x 调节。 由此可见,DCNv2 与 M H S A M H S A MHSA 具有相似的有利特性,这促使我们在此算子的基础上开发基于 CNN 的大规模基础模型。

为 Vision Foundation 模型扩展 DCNv2。在通常的实践中,DCNv2通常用作常规卷积的扩展,加载常规卷积的预训练权重并进行微调以获得更好的性能,这并不完全适合需要从头开始训练的大规模视觉基础模型。在这项工作中,为了解决这个问题,我们从以下几个方面扩展了DCNv2:

(1)在卷积神经元之间共享权重。与常规卷积类似,原始DCNv2中的不同卷积神经元具有独立的线性投影权重,因此其参数和内存复杂度与采样点总数呈线性关系,这显着限制了模型的效率,尤其是在大规模模型中。为了解决这个问题,我们借鉴了可分离卷积[53]的想法,并将原始卷积权重 wk 分离为深度部分和逐点部分,其中深度部分由原始位置感知调制标量 mk 负责,逐点部分是采样点之间共享的投影权重w。

(2)引入多组机制。多组(头)设计首先出现在组卷积[32]中,并广泛应用于transformer的MHSA[1]中,并与自适应空间聚合一起工作,以有效地从不同位置的不同表示子空间中学习更丰富的信息。受此启发,我们将空间聚合过程分为G组,每个组都有单独的采样偏移量 Δ p g k \Delta p_{g k} Δpgk和调制尺度 m g k \mathbf{m}_{g k} mgk,因此单个卷积层上的不同组可以具有不同的空间聚合模式,从而为下游提供更强的特征任务。

(3)沿采样点归一化调制标量。原始 DCNv2 中的调制标量通过 sigmoid 函数按元素归一化。因此,每个调制标量都在[0, 1]范围内,并且所有样本点的调制标量之和不稳定,在0到K之间变化。这导致大规模训练时DCNv2层的梯度不稳定参数和数据。为了缓解不稳定问题,我们将沿样本点的逐元素 sigmoid 归一化更改为 softmax 归一化。这样,调制标量之和被限制为1,使得不同尺度下模型的训练过程更加稳定。

结合上述修改,扩展的 DCNv2(标记为 DCNv3)可以表示为等式: (2)。
y ( p 0 ) = ∑ g = 1 G ∑ k = 1 K w g m g k x g ( p 0 + p k + Δ p g k ) , \mathbf{y}\left(p_0\right)=\sum_{g=1}^G \sum_{k=1}^K \mathbf{w}_g \mathbf{m}_{g k} \mathbf{x }_g\left(p_0+p_k+\Delta p_{g k}\right), y(p0)=g=1Gk=1Kwgmgkxg(p0+pk+Δpgk),
其中 G G G表示聚合组的总数。 对于第 g g g 组, w g ∈ R C × C ′ 、 m g k ∈ R \mathbf{w}_g \in \mathbb{R}^{C \times C^{\prime}}、\mathbf{m}_{g k} \in \mathbb{ R} wgRC×CmgkR表示组的位置无关投影权重,其中 C ′ = C / G C^{\prime}=C / G C=C/G表示组维度。 m g k ∈ R \mathbf{m}_{g k} \in \mathbb{R} mgkR 表示第 g g g 组中第 k k k 个采样点的调制标量,由 softmax 函数沿维度 K 归一化。 x g ∈ R C ′ × H × W K 归一化 。 \mathbf{x}_g \in \mathbb{R}^{C^{\prime} \times H \times W} K归一化。xgRC×H×W 表示切片的输入特征图。 Δ p g k \Delta p_{g k} Δpgk是第 g g g组中网格采样位置 p k p_k pk对应的偏移量。

总的来说,DCNv3作为DCN系列的扩展,具有以下三个优点:(1)该算子弥补了规则卷积在长程依赖和自适应空间聚合方面的不足; (2) 与常见的 MHSA 和密切相关的可变形注意力等基于注意力的算子相比 [43, 54],该算子继承了卷积的归纳偏置,使得我们的模型在训练数据更少和训练时间更短的情况下更加高效; (3) 该算子基于稀疏采样,比以前的方法(例如 MHSA [1] 和重参数化大内核 [22])具有更高的计算和内存效率。 此外,由于稀疏采样,DCNv3只需要一个 3 × 3 3\times 3 3×3内核来学习长程依赖关系,这更容易优化,并避免了额外的辅助技术,例如在大型内核中使用的重参数化[22]。

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

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

相关文章

【Vue】入门及生命周期(前后端分离)

目录 一、Vue简介 1、Vue.js是什么 2、库和框架的区别 2.1 库(Library) 2.2 框架(Framework) 3、MVVM的介绍 二、Vue入门 1、Vue快速入门 2、Vue的优势 三、Vue事件 四、Vue生命周期 1、实例 一、Vue简介 1、Vue.js是什么 Vue是一款流行的构建用户界面(UI)的[渐进式…

vue3-admin-element安装

1、直接点此链接进入下载 https://gitee.com/hu-snail/vue3-admin-element-template 2、下载完毕之后是个压缩包,解压 然后直接可以运行到vscode或HBuilder中 3、下载依赖:我使用的npm下载 npm i npm i serve启动 运行:npm run serve …

【力扣】三角形最小路径和

目录 题目 例子 示例 1: 示例 2: 前言 思路 思想 代码 调用的函数 主函数 所有代码 力扣提交的代码 运行结果 小结 题目 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结…

分布式事务基础理论

基础概念 什么是事务 什么是事务?举个生活中的例子:你去小卖铺买东西,“一手交钱,一手交货”就是一个事务的例子,交钱和交货必 须全部成功,事务才算成功,任一个活动失败,事务将撤销…

BUU 加固题 AWDP Fix 持续更新中

BUU Ezsql 首先连接上ssh。输入账号密码。 到/var/www/html目录下&#xff0c;源码在里面。 主要是看index.php文件。 <?php error_reporting(0); include dbConnect.php; $username $_GET[username]; $password $_GET[password]; if (isset($_GET[username]) &&am…

shared library

原文、 shared library compatible vs incompatible compatible library 函数的工作场景没有变化 所有的函数对全局变量和返回参数产生相同的影响所有的函数继续返回相同的结果值提升性能 fix bugs 没有api 被删除可以有新的api加入 export 的结构体没有变化 违反以上各条的…

c++八股day2-虚函数表和虚函数表指针的创建时机

虚函数表和虚函数表指针的创建时机。 背景&#xff1a;用来实现多态&#xff08;包括静态多态和动态多态&#xff09;&#xff0c;多态的原理就是虚函数表和虚函数表指针 虚函数表的创建时机&#xff1a; a.什么时候生成的&#xff1f;编译器编译的时候声生成的&#xff0c;…

筑梦未来,与“EYE”同行——蔡司镜片X肇庆爱尔眼科医院走进石群小学

不知不觉&#xff0c;蔡司光学这项传递护眼理念、营造公益氛围的助童活动已步入第十个年头。从一开始的“孤军奋战”&#xff0c;到现如今拥有汇聚眼视光领域同行的社会号召力&#xff0c;品牌为青少年近视管理方案绘就了清晰的发展蓝图&#xff0c;旨在用蔡司镜片帮助广大青少…

Java(运算符+循环)万字超详细介绍 (囊括了按位,异或,for,while等基础和疑难知识)

【本节目标1】熟练掌握运算符 【本章目标2】熟练掌握循环 万字讲解&#xff0c;十分详细&#xff0c;有大量&#xff08;简单&#xff09;代码帮助理解和大量的&#xff08;简单&#xff09;举例与总结。 1.运算符 1.什么是运算符 计算机最基本的用途之一就是执行数学运算…

shopee——排序模型AUC还能涨吗?

文章目录 CBMRMultiCBMRSample Weight Assignment多任务推荐模型 CBMR MultiCBMR Sample Weight Assignment Click-aware Structure Transfer with Sample Weight Assignment for Post-Click Conversion Rate Estimation 每个用户的top-k 邻居每个商品的top-k 邻居平滑处理并构…

Windows【工具 04】WinSW官网使用说明及实例分享(将exe和jar注册成服务)实现服务器重启后的服务自动重启

官方Github&#xff1b;官方下载地址。没有Git加速的话很难下载&#xff0c;分享一下发布日期为2023.01.29的当前最新稳定版v2.12.0网盘连接。 包含文件&#xff1a; WinSW-x64.exesample-minimal.xmlsample-allOptions.xml 链接&#xff1a;https://pan.baidu.com/s/1sN3hL5H…

02_elasticsearch 核心概念

02_elasticsearch 核心概念 1、lucene和elasticsearch的前世今生2、elasticsearch的核心概念 1、lucene和elasticsearch的前世今生 1、lucene和elasticsearch的前世今生 lucene&#xff1a;最先进、功能最强大的搜索库。但是直接基于lucene开发&#xff0c;非常复杂&#xff…

Idea安装webservice插件

打开Idea的settings菜单&#xff0c;选择Plugins&#xff0c;模糊搜索"Web Ser"&#xff0c;安装以下3个红框内插件&#xff1a; 安装好以上3个插件后&#xff0c;就可以根据需求生成webservice客户端或者webservice服务端了。

【C语言】进阶——指针

目录 ①(●◡●)前言 1.字符指针 ✌字符指针和数组笔试题 2.指针数组 和数组指针 &#x1f44a;指针数组 &#x1f44a;数组指针 &#x1f44a;&数组名和数组名 3.数组传参和指针传参 &#x1f44a;一维数组传参 &#x1f44a;二维数组传参 &#x1f44a;一级…

Gmail邮箱注册情况及最新动态

在中国大陆地区&#xff0c;对于是否可以注册Gmail邮箱一直存在一定的限制和讨论。准确来说&#xff0c;中国大陆地区的用户目前无法直接访问和注册Gmail邮箱。由于某些政策和技术原因&#xff0c;中国政府对于一些外国的网站和服务实施了网络封锁与限制。因此&#xff0c;中国…

聊聊Go语言的向前兼容性和toolchain规则

Go语言在发展演进过程中一直十分注重向后兼容性(backward compatibility)&#xff0c;在Go 1.0版本发布[1]之初就发布了Go1兼容性承诺[2]&#xff0c;简单来说就是保证使用新版本Go(比如Go 1.21版本[3])可以正常编译和运行老版本的Go代码(比如使用Go 1.18版本[4]语法编写的go代…

Docker实战技巧(一):Kubernetes基础操作实战

Kubernetes定位在Saas层,重点解决了微服务大规模部署时的服务编排问题 1、关闭防火墙并设置开机禁用   systemctl stop firewalld   systemctl disable firewalld 2、配置repo   cd /etc/yum.repos.d/   下载Docker repo   wget https://mirrors.aliyun.com/docker-…

torch.nn.Parameter()函数

引言 在很多经典网络结构中都有nn.Parameter()这个函数&#xff0c;故对其进行了解 pytorch官方介绍&#xff1a; 语法结构&#xff1a; torch.nn.parameter.Parameter(dataNone, requires_gradTrue) """ data (Tensor) – parameter tensor. —— 输入得是…

聊聊Spring事务同步器TransactionSynchronization

在一些业务场景中可能我们需要去对某一个spring事务的生命周期进行监控&#xff0c;比如在这个事务提交&#xff0c;回滚&#xff0c;被挂起的时候&#xff0c;我们想要去执行一些自定义的操作&#xff0c;这怎么去做呢&#xff1f;其实spring作为一个高扩展性的框架&#xff0…

中秋特辑:Java事件监听实现一个猜灯谜小游戏

众所周知&#xff0c;JavaSwing是Java中关于窗口开发的一个工具包&#xff0c;可以开发一些窗口程序&#xff0c;然后由于工具包的一些限制&#xff0c;导致Java在窗口开发商并没有太多优势&#xff08;当然也有一些第三方的工具包也很好用&#xff09;&#xff0c;不过&#x…