InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions论文笔记

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

1. Motivation & Contributions

随着基于Transformer的语言大模型在NLP相关下游任务中取得优异性能,Vision Transformer也席卷了CV领域,成为基础视觉大模型研究和实践的首选。Swin V2、BeiT、CoAtNet等工作已经将ViT扩展到超过十亿参数规模,显著提升了CV分类、检测和分割等下游任务的性能,超越了CNN模型。但是,该论文提出如果CNN具备类似于ViT的算子和架构,并且在大量参数和海量数据情况下,其性能是可以与ViT相同甚至更好的。

作者认为CNN和ViT大模型性能存在差距的主要有两个原因:

  • ViTs的MHSA具有长程依赖和自适应空间聚合能力,从而可以在海量数据中学习到比CNN更强大鲁棒的特征表达。
  • 除MHSA外,ViT还包含不同于CNN的高级组件,如层归一化、前馈网络、GELU等。

基于此,该论文设计了一个新颖的基于可变性卷积CNN网络——InternImage,可以在大量参数和海量数据的情况下表现很好。如下图所示,动态稀疏可变性卷积既不像MHSA那样具有较高复杂度,也不像Local attention那样缺乏长程依赖,同时具有自适应的空间聚合能力。

在这里插入图片描述
该论文的主要贡献如下:

  • 提出一种新的CNN大模型——InternImage,首个参数达1B、训练数据达400M、取得与ViT相当甚至更优性能的CNN模型。证明对于大尺度模型研究,CNN同样是一个值得探索的方向。
  • 将长程依赖、自适应空域聚合引入到DCNv3,将CNN模型的大小和尺度进行扩展;并对模块定制化、堆叠规则以及缩放策略进行了探索。
  • 在图像分类、目标检测、语义分割以及实例分割等下游任务上验证了所提方案的有效性。其中,InternImage-B仅在ImageNet-1K训练即可取得84.9%的精度(比其他CNN至少高出1.1%);当在大量参数(1B)、海量数据(427M)条件下,InternImage-H取得了89.2%的性能;在COCO数据集上,InternImage-H以2.18B的参数量取得了65.4%mAP,比SwinV2-G高出2.3%,参数量少27% 。

2. DCN基础模块改进

(1)DCN V2

在提出DCN V3算子前,作者先回顾了一下传统卷积和多头自注意力机制这两种算子的区别,主要包括如下两点:

  • 长距离建模能力。普通的卷积聚合邻域内的信息,显然不具备全局建模的能力,尽管传统的CNN能够通过堆叠多个 3 × 3 3 \times 3 3×3的卷积增加模型的感受野,但是仍然不能像ViT那样进行全局的交互。
  • 自适应空间聚合能力。多头自注意力机制在聚合不同的tokens的时候,权重都是根据输入query的不同而动态变化的;而传统的CNN不管输入是什么,卷积核的参数都是静态不变的。

然后回过头看一下DCN V2算子,其恰好是具有上述两个特性的;对于给定输入 x ∈ R C × H × W \mathbf{x}\in \mathbb{R} ^{C\times H\times W} xRC×H×W和某像素 p 0 p_0 p0,DCN V2算子的输出如下:

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+\bigtriangleup p_k \right)} y(p0)=k=1Kwkmkx(p0+pk+pk)

其中, K K K表示采样点的个数、 w k \mathbf{w}_k wk为相应采样点的投影权重、 m k \mathbf{m}_k mk代表了相应采样点的调制标量、 △ p k \bigtriangleup p_k pk表示相应采样点的偏移量。

由这个表达式可以看出:

  • DCN V2算子可以通过偏移量来与局部或全局的交互,具有长距离建模的能力;
  • 由于调制标量 m k \mathbf{m}_k mk和偏移量 △ p k \bigtriangleup p_k pk都是可学习并且根据输入不同而变化的,所以DCN V2算子也具有类似于MHSA的自适应空间聚合能力。

因此,DCN V2算子具备MHSA算子的相关特性,有可能构成大规模的CNN基础模型。

(2)DCN V3

尽管DCN V2算子已经缩小了普通卷积算子和MHSA之间的差距,对于大规模的视觉基础模型来说,DCN V2算子仍然不是最优的选择,于是作者从三个方面对DCN V2进行改进,得到了IntenImage的主要算子——DCN V3。

  • 共享卷积权重。在DCN V2中,对于每一个采样点处的特征向量,都使用一个独立的投影权重。当采样点增多的时候,模型的参数和复杂度将会线性增加,不利于构建大规模的模型。在这里,作者借鉴了深度可分离卷积的思想来降低DCN算子的复杂度;具体地。对于point-wise,也就是不同的采样点向量,使用一个共享的权重 w w w来进行投影;而对于depth-wise,则直接使用算子中的调制标量 m k \mathbf{m}_k mk来代替。总体来说就是用同一个同权重对采样点进行投影,然后用一个位置感知的可学习系数对投影后的特征向量进行加权。
  • 引入多组机制。回顾多头自注意力机制中的“多头”思想,不同的head实际上能够提供在不同子空间的丰富的信息。因此,作者将DCN V3也进行分组,在每组中进行不同的偏移采样、采样向量投影、因子调制。相当于把原来的操作重复多次,增强了DCN V3算子的表达能力(确实应该这样设计,不然只有一个共享的投影权重的话,特征表达的确单一)。
  • 归一化调制标量。这个是因为在原始的DCN V2中,调制标量是用sigmoid进行处理的,对于 K K K个调制因子来说,其和并不是 1 1 1。作者指出,这样会导致训练不稳定的问题,因此作者改为了对 K K K个调制因子进行 s o f t m a x softmax softmax归一化,使得整个训练过程更为稳定。

以上三个点都是根据论文理解而来,因为现在作者还没有公布InternImage模型代码,无法查看具体的实现细节。综上所述,完整的DCN V3算子可以表示如下:

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}_{gk}\mathbf{x}_g\left( p_0+p_k+\bigtriangleup p_{gk} \right)}} y(p0)=g=1Gk=1Kwgmgkxg(p0+pk+pgk)

其中, G G G表示group的数量。 w g \mathbf{w}_g wg每组内共享投影权重, m g k \mathbf{m}_{gk} mgk表示第 g g g组第 k k k个采样点的归一化后的调制因子。如此一来 ,新设计的DCN V3算子弥补了传统卷积在长程依赖和自适应空间聚合方面的不足,同时使得可变性卷积算子更加适用于视觉大模型;在实现了稀疏全局建模的同时,又适当的保留了CNN的归纳偏置,可以说是在计算量和准确度之间进行了更好的权衡。

3. InternImage模型架构

在这里插入图片描述

(1)基础模块

与传统CNN中广泛使用的瓶颈结构不同,采用了更接近ViTs的基础模块,配备了更先进的组件,包括GELU、层归一化(LN)和前馈网络(FFN),这些都被证明在各种视觉任务中更有效率。基础模块的细节如上图所示,其中核心算子是DCNv3,通过将输入特征通过一个轻量级的可分离卷积来预测采样偏置和调制尺度。对于其他组件,遵循与普通Transformer相同的设计。

(2)叠加规则

为了明确区块堆叠过程,提出两条模块堆叠规则,其中第一条规则是后三个阶段的通道数 C i C_i Ci由第一阶段的通道数 C 1 C_1 C1 决定,即 C i = 2 i − 1 C 1 C_i=2^{i-1}C_1 Ci=2i1C1;第二条规则是各模块组号与各阶段的通道数对应,即 G i = C i / C ′ G_i=C_i/C' Gi=Ci/C;第三,堆叠模式固定为“AABA”,即第1、2和4阶段的模块堆叠数是相同的,并且不大于第3阶段 L 1 ≤ L 3 L_1 \le L_3 L1L3。由此选择将参数量为30M级别的模型作为基础,其具体参数为:Steam输出通道数 C 1 C_1 C1为64;分组数为每个阶段输入通道数的1/16,第1、2、4阶段的模块堆叠数 L 1 L_1 L1为4,第3阶段的模块堆叠数 L 3 L_3 L3 为18,模型参数为30M。

(3)模型缩放规则

基于上述约束条件下的最优模型,规范化了网络模型的两个缩放维度:即深度D(模块堆叠数)和宽度C(通道数),利用限制因子和沿着复合系数对深度和宽度进行缩放,即 D ′ = α ϕ D D'=\alpha^{\phi}D D=αϕD C 1 ′ = β ϕ C 1 C_1^{'}=\beta^{\phi}C_1 C1=βϕC1,其中 α β 1.99 ≈ 2 \alpha\beta^{1.99}\approx 2 αβ1.992,根据实验其最佳设置为 α = 1.09 α=1.09 α=1.09 β = 1.36 β=1.36 β=1.36

按照此规则,构建了不同模型尺度的模型,即InternImage-T、S、B、L、XL、H。具体参数为:
在这里插入图片描述

4. 实验结果

(1)图像分类

通过使用427M的公共数据集合:Laion-400M,YFCC15M,CC12M,InternImage-H在ImageNet-1K的精度达到了89.6%。并在近期研发中InternImage分类模型在ImageNet-1K上的精度已经达到90.1%。

在这里插入图片描述

(2)目标检测

以最大规模的InternImage-H为骨干网络,以DINO作为基础检测框架,在Objects365数据集上进行预训练,然后在COCO数据集上进行微调。该模型在目标检测任务中达到了65.4%的最优结果,突破了COCO目标检测的性能边界。
在这里插入图片描述

(3)语义分割

在语义分割上,InternImage-H同样取得了很好的性能,结合Mask2Former在ADE20K上取得了当前最高62.9%。
在这里插入图片描述

参考

猜你喜欢

转载自blog.csdn.net/xijuezhu8128/article/details/132454783