[论文链接]https://arxiv.org/abs/2202.09741
摘要
虽然一开始是被设计用于自然语言处理任务的,但是自注意力机制在多个计算机视觉领域掀起了风暴。然而,图像的二维特性给自注意力用于计算机视觉带来了三个挑战。(1)将图像视作一维序列忽视了它们的二维结构;(2)二次复杂度对于高分辨率图像来说太昂贵了;(3)它只捕获了空间适应性而忽略了通道适应性。本文我们提出了一种新颖的被叫做大核注意力(Large Kernel Attention,LKA)的线性注意力使得自注意力中的自适应和长期相关性有效的同时避免其缺点。此外,我们提出了一个基于LKA的神经网络,其被命名为Visual Attention Network(VAN)。尽管非常简单,但是VAN在多个任务中的表现超越了大小相似版本的ViTs和CNNs,包括图像分类、目标检测、语义分割、全景分割、姿态估计等。例如,VAN-B6在ImageNet基准上实现了87.8%的准确率同时在全景分割任务上实现了最先进的性能(58.2 PQ)。此外,VAN-B2在ADE20K基准的语义分割任务中,mIoU超过了SWIN-T 4% (50.1 vs. 46.1),在COCO数据集的目标检测任务中AP超过了2.6% (48.8 vs. 46.2)。这为社区提供了一种新颖的简单而强大的基线方法。代码可在https://github.com/Visual-Attention-Network获取。
1.序言
作为最基础的特征提取器,视觉主干在计算机视觉领域是一个基础的研究方向。在过去的十年间由于所具有得出色的特征提取性能,CNNs成为了不可获取得研究课题。在AlexNet重新开启了深度学习时代后,通过使用更深的网络、更高效的架构、更强的多尺度能力以及注意力机制,已经取得了一些突破,获得了更强大的视觉主干。由于平移不变性和共享滑动窗口策略,CNNs对于拥有任意大小输入的多种视觉任务固有的高效。更先进的视觉骨干网络通常会在各种任务中获得显著的性能提升,包括图像分类,目标检测,语义分割和姿态估计。
基于观察反应时间和沿生物途径估计的信号传递时间,认知心理学和神经科学研究人员认为,人类视觉系统只详细处理可能的刺激的一部分,而其余部分几乎未被处理。选择性注意对于处理视觉中复杂的组合方面是一个重要的机制。注意机制可以看作是一个基于输入特征的自适应选择过程。自从全注意网络被提出以来,自注意模型(又称Transformer)迅速成为自然语言处理领域的主流架构。
最近,Dosovitskiy等人通过将transformer主干引入计算机视觉,提出了ViT,在图片分类任务上超越了著名的CNNs。得益于其强大的建模能力基于transformer的视觉主干迅速占据了各种任务的排行榜,包括目标检测、语义分割等。
尽管取得了显著的成功,卷积运算和自关注仍然有其不足之处。卷积运算采用静态权重,缺乏自适应性,而这一点已被证明是至关重要的。又由于自注意最初是为一维NLP任务设计的,它将二维图像视为一维序列,这破坏了图像的关键的二维结构。由于它的二次计算和内存开销,处理高分辨率图像也很困难。此外,自注意是一种只考虑空间维度适应性而忽略通道维度适应性的特殊注意力,而这对于视觉任务来说也是重要的。
在本文中,我们提出了一种新的线性注意力机制,称为大核注意力(large kernel attention, LKA),它是为视觉任务量身定制的。LKA吸收了卷积和自关注的优点,包括局部结构信息、远程依赖和适应性。同时也避免了它们在通道维度上忽略自适应性的缺点。 基于LKA,我们提出了一种新的视觉主干称为视觉注意网络(VAN),显著优于众所周知的基于CNN和基于Transformer的主干。本文的贡献总结如下:
- 我们设计了一种新的线性注意机制计算机视觉的LKA,考虑了卷积和自关注的优点,同时避免了它们的缺点。在LKA的基础上,我们进一步引入了一种简单的视觉主干,称为VAN。
- 我们在大量的实验中表明,在图像分类、目标检测、语义分割、实例分割、姿态估计等各种任务上,VANs的表现优于相似水平的ViTs和CNNs。
2 相关工作
2.1 卷积神经网络
如何有效地计算强大的特征表示是计算机视觉中最基本的问题。卷积神经网络利用局部上下文信息和平移不变性,极大地提高了神经网络效果。自AlexNet以来,CNN迅速成为计算机视觉的主流框架。为了进一步提高可用性,研究者们在CNNs的深度和重量方面投入了大量的精力。我们的工作与MobileNet有相似之处,MobileNet将标准卷积解耦为两个部分,深度卷积和逐点卷积(也称为1 × 1卷积)。我们的方法将卷积分解为三个部分:深度卷积、深度和空洞卷积和逐点卷积。得益于这种分解,我们的方法更适合于有效地分解大核卷积。我们还在方法中引入了注意机制以获得自适应特性。
2.2 视觉注意力方法
注意力机制可以看作是一种根据输入特征进行自适应选择的过程,它在RAM中被引入到计算机视觉。它在许多视觉任务中提供了好处,如图像分类,目标检测和语义分割。计算机视觉中的注意力可分为通道注意力、空间注意力、时间注意力、分支注意力四种基本类别以及它们的结合如通道和空间注意力。每一种注意力在视觉任务中都有不同的效果。
起源于NLP的自注意力是一种特殊的注意力机制。由于其在捕获远程依赖性和适应性方面的有效性,使得它在计算机视觉中发挥着越来越重要的作用。各种深度自注意力网络(又称vision-transformer)在不同的视觉任务上取得了明显优于主流CNNs的性能,显示了基于注意力的模型的巨大潜力。然而,自我注意最初是为NLP设计的。在处理计算机视觉任务时,它有三个缺点。(1)它将图像视为一维序列,忽略了图像的二维结构。(2)对于高分辨率图像,二次复杂度过于昂贵。(3)它仅实现了空间适应性,而忽略了通道维度的适应性。对于视觉任务,不同的通道通常代表不同的对象。通道适应性对视觉任务也很重要。为了解决这些问题,我们提出了一种新的视觉注意力方法,即LKA。它包含了自注意力机制的优点,如适应性和长期依赖。此外,它还利用了卷积的优点,如利用局部上下文信息。
2.3 视觉MLPs
在CMMs出现之前,多层感知机(Multilayer Perceptrons, mlp)是一种流行的计算机视觉工具。但是,由于计算量大、效率低,使得长期以来MLP一直受到限制。最近的一些研究成功地将标准MLP解耦为空间MLP和通道MLP。这种分解大大减少了计算成本和参数量,从而释放出MLP的惊人性能。读者可参考最近的研究,以获得更全面的MLP综述。与我们的方法最相关的MLP是gMLP,它不仅分解了标准MLP,还引入了注意力机制。然而,gMLP有两个缺点。一方面,gMLP对输入大小比较敏感,只能处理固定大小的图像。另一方面,gMLP只考虑图像的全局信息,而忽略图像的局部结构。我们的方法可以充分利用它的优点,避免它的缺点。
3. 方法
3.1 大核注意力
注意机制可以看作是一种自适应选择过程,它可以根据输入特征选择有区别的特征,并自动忽略噪声响应。注意力机制的关键步骤是生成表示不同区域重要性的注意力映射。要做到这一点,我们应该了解不同特征之间的关系。
有 两种众所周知的方法来建立不同部分之间的关系。第一种是采用自注意机制获取远程依赖。自注意在计算机视觉中的应用有三个明显的缺点,在2.2节中已经列出。第二种是利用大核卷积构建相关性,生成注意力映射。但是这种方式也有明显的缺点。大核卷积带来了大量的计算开销和参数量。
为了克服上面列出的缺点并利用自关注和大核卷积的优点,我们提出分解一个大核卷积操作来捕获远程关系。如图2所示,大核卷积可以被分为三个部分:空间局部卷积(深度卷积)、空间远程卷积(深度扩张卷积)和通道卷积(1×1卷积)。具体来说,我们可以把
K
×
K
K \times K
K×K的卷积分解成
⌈
K
d
⌉
×
⌈
K
d
⌉
\lceil \frac Kd \rceil \times \lceil \frac Kd \rceil
⌈dK⌉×⌈dK⌉深度空洞卷积空洞为
d
\ d
d, 一个
(
2
d
−
1
)
×
(
2
d
−
1
)
(2d−1)×(2d−1)
(2d−1)×(2d−1)的深度卷积和一个1×1卷积。通过上述分解,我们可以以较小的计算成本和参数捕获远程关系。在获得远程关系后,我们可以估计一个点的重要性并生成注意力图。如图3(a)所示,LKA模块可以写成
其中,
F
∈
R
C
×
H
×
W
F \in \Bbb R^{C \times H \times W}
F∈RC×H×W是输入特征,
A
t
t
e
n
t
i
o
n
∈
R
C
×
H
×
W
Attention \in \Bbb R^{C \times H \times W}
Attention∈RC×H×W表示注意力图。注意力图中的值代表每个特征的重要程度。
⨂
\bigotimes
⨂表示点积。与常见的注意方法不同,LKA不需要像sigmoid和softmax那样额外的归一化函数,如表3所示。我们还认为,注意力方法的关键作用是基于输入特征自适应地调整输出,而不是标准化的注意力图。如表1所示,我们提出的LKA结合了卷积和自注意力的优点。同时考虑了局部上下文信息、大接受野、线性复杂性和动态过程。此外,LKA不仅实现了空间维度的自适应性,还实现了通道维度的自适应性。值得注意的是,在深度神经网络中,不同的通道通常表示不同的对象同时通道维度的适应性对视觉任务也很重要。
3.2 视觉注意力网络(VAN)
我们的VAN具有简单的层次结构,即输出空间分辨率递减的四个阶段序列,分别是
H
4
×
W
4
\frac H4 \times \frac W4
4H×4W,
H
8
×
W
8
\frac H8 \times \frac W8
8H×8W,
H
16
×
W
16
\frac H{16} \times \frac W{16}
16H×16W和
H
32
×
W
32
\frac H{32} \times \frac W{32}
32H×32W。其中,
H
H
H和
W
W
W表示输入图片的宽和高。随着分辨率的降低,输出通道的数量也在增加。输出通道
C
i
C_i
Ci变化如表5所示。
正如图4中所示在每个阶段,我们首先对输入进行下采样,使用步长来控制下采样率。下采样后,一个阶段中的所有其他层保持相同的输出大小,即空间分辨率和通道数量。然后,
L
L
L组批量归一化,1 × 1 卷积,GELU激活、大核注意力和前馈网络按顺序堆叠来提取特征。我们根据参数量和计算成本设计了VAN-B0、VAN-B1、VAN-B2、van - b3、VAN-B4、VAN-B5、VAN-B6七个架构。整个网络的细节如表5所示。
**复杂度分析。**我们给出了分解的参数量和浮点运算量。为了简化公式我们在计算过程中忽略了偏差带来的计算量。我们假设输入和输出特征具有相同大小的
H
×
W
×
C
H × W × C
H×W×C。参数量
P
(
K
,
d
)
P(K, d)
P(K,d)和FLOPs
F
(
K
,
d
)
F(K, d)
F(K,d)可表示为:
其中,
d
d
d表示空洞率,
K
K
K表示核大小。根据FLOPs和参数的计算公式,FLOPs和参数的预算节省率是相同的。
实现细节
我们默认采用
K
=
21
K = 21
K=21。当
K
=
21
K = 21
K=21时,公式(3)在
d
=
3
d = 3
d=3时取最小值,对应着
5
×
5
5 × 5
5×5的深度卷积和
7
×
7
7 × 7
7×7的空洞为3深度卷积。对于不同数量的通道数,具体参数如表2所示。结果表明,我们的分解方法在参数和FLOPs方面对大核卷积的分解具有明显的优势。
4. 实验
在本节中,定量和定性实验展示了所提出方法的有效性和高效率。我们在ImageNet-1K和ImageNet-22K图像分类数据集、COCO目标检测、实例分割、全景分割和姿态估计基准以及ADE20K语义分割数据集上进行了定量实验。此外,我们通过在ImageNet验证集上使用GradCAM将实验结果和类激活映射(CAM)可视化。实验是基于Pytorch和Jittor的。
4.1 图像分类
4.1.1 ImageNet-1K 实验
设置
我们在ImageNet-1K数据集上进行图像分类。它包含来自1000个不同类别的1.28M训练图像和50K验证图像。整个训练计划基本和[19]一致。我们采用随机裁剪、随机水平翻转、标签平滑、mixup、cutmix和随机擦除来增强训练数据。在训练过程中,我们使用动量=0.9,权重衰减=
5
×
1
0
−
2
5 \times10^{−2}
5×10−2的AdamW优化器训练了300个epoch,其中batchsize为1024。余弦调度和预热策略用于调整学习率(LR)。初始学习率设置为
5
×
1
0
−
4
5 \times 10^{−4}
5×10−4。 我们在注意力层中采用LayerScale的变体,用初值为
0.01的
x
o
u
t
=
x
+
d
i
a
g
(
λ
1
,
λ
2
,
…
λ
d
)
(
f
(
x
)
+
x
)
x_{out} = x + diag(λ_1, λ_2,… λ_d)(f(x) + x)
xout=x+diag(λ1,λ2,…λd)(f(x)+x)替换了
x
o
u
t
=
x
+
d
i
a
g
(
λ
1
,
λ
2
,
…
,
λ
d
)
f
(
x
)
x_{out} = x + diag(λ_1, λ_2,…,λ_d)f(x)
xout=x+diag(λ1,λ2,…,λd)f(x) ,获得比原始LayerScale更好的性能。指数移动平均(EMA)也被用于改进训练过程。在评估阶段,我们报告了在单一裁剪设置下ImageNet验证集的top-1精度。
消融实验
我们进行了消融实验以证明LKA的每个组成部分都是必不可少的。为了快速得到实验结果,我们选择VAN-B0作为基线模型。表3的实验结果表明LKA的所有部分对于提高性能都是必不可少的。
- DW-Conv
DW-Conv可以利用图像的局部上下文信息。如果没有它,分类性能将下降0.5% (74.9% vs. 75.4%)这显示了在图片处理过程中局部结构信息的重要性。 - DW-D-Conv
DW-D-Conv表示深度空洞卷积,它在LKA中起捕获远程依赖的作用。如果没有它,分类性能将下降1.3%(74.1%对75.4%),这证明了我们所认为的远距离依赖对视觉任务至关重要这一观点。 - Attention Mechanism
注意机制的引入可以看作是使网络实现了自适应特性。得益于此,VAN-B0实现了约1.1% (74.3% vs. 75.4%)的改进。此外,用加法运算代替注意力的准确率也不低。 - 1x1Conv
这里,1 × 1 Conv捕获通道维度上的关系。结合注意机制,引入通道维度的适应性。提高了0.8% (74.6% vs. 75.4%)证明了通道维度适应性的必要性。 - Sigmoid functions
Sigmoid函数是一种将注意力映射从0归一化到1的常用归一化函数。然而,在我们的实验中,我们发现其对于LKA模块是不必要的。没有sigmoid,我们的VAN-B0达到0.2%
(75.4% vs. 75.2%)的改进和更少的计算。
通过以上分析,我们发现我们提出的LKA可以利用本地信息,捕获远程依赖关系,并且在通道和空间维度上都具有自适应性。此外,实验结果还证明了这些特性对识别任务都是积极的。标准卷积虽然可以充分利用局部上下文信息,但忽略了远程依赖性和适应性。对于自注意,虽然它可以捕获远程依赖关系,并且具有空间维度上的适应性,但它忽略了局部信息和空间维度上的适应性。同时,我们也在表1中总结了上述讨论。
此外,我们还在表6中进行了消融研究,以分解不同大小的卷积核。我们可以发现分解21×21卷积比分解7×7卷积效果更好,这表明大内核对视觉任务至关重要。在分解一个较大的28×28卷积时,我们发现与分解一个21×21卷积相比,增益并不明显。因此,我们默认选择分解21×21卷积。
与现有方法的比较。
表7给出了VAN与其他MLP、CNN和VIT的比较。在参数量和计算成本相似的情况下,VAN优于常见的CNNs (ResNet、ResNeXt、ConvNeXt等)、ViT(DeiT、PVT、Swin-Transformer等)和MLP(MLP-Mixer、ResMLP、gMLP等)。我们在图6中直观地展示了我们的方法与相似水平的经典方法在不同任务上的比较,可以清楚地看出我们方法的改进。在下面的讨论中,我们将在每个类别中选择一个具有代表性的网络。
ConvNeXt是一种特殊的CNN,它吸收了ViTs的一些优点,如大的感受野(7×7卷积)和先进的训练策略(300次epoch,数据增强等)。VAN与ConvNeXt相比,由于VAN具有更大的感受野和适应能力VAN- b2比ConvNeXt-T提高了0.7%(82.8%对82.1%)。Swin - Transformer是一个著名的ViT变体,它采用了局部注意力和滑动窗口的方式。由于VAN对二维结构信息友好,具有更大的接受野,在通道维度上具有自适应性,VAN- b2比Swin - t高1.5% (82.8% vs. 81.3%)。对于MLP,我们选择gMPL。VAN-B2比gMLPS[72]高出3.2%(82.8%vs79.6%),这反映了局部的重要性。
吞吐量
我们测试了Swin-transformer和VAN在RTX 3090硬件环境下的吞吐量。结果如表4所示。此外,我们还绘制了准确度-吞吐量图,如图5所示VAN实现了比Swin-transformer更好的精度-吞吐量权衡。
4.1.2 可视化
类激活映射(Class activation mapping, CAM)是一种流行的可视化感兴趣区域(注意图)的工具。我们采用Grad-CAM来可视化VAN-B2模型产生的ImageNet验证集上的注意力。从图7的结果可以看出,VAN-B2可以清晰地聚焦到目标物体上。因此,可视化直观地证明了我们方法的有效性。此外,我们还比较了Swin - T、ConvNeXtT和VAN-B2产生的不同CAM。我们可以发现VANB2的激活区域更加准确。特别是当物体在图像中占主导地位时(最后3行),我们的方法具有明显的优势如图7所示,这表明它有能力获得长相关性。
4.1.3基于ImageNet-22K的预训练
设置
ImageNet-22K是一个大规模图像分类数据集,包含约14M张图像和21841个分类。继Swin-Transformer和ConvNeXt之后,我们在没有使用EMA的情况下预训练了90个epoch的VAN。batchsize设置为8196。其他训练细节与ImageNet-1 k相同。在ImageNet-22K上进行预训练后,我们在ImageNet-1K上对模型进行了30个epoch的微调。我们用224 × 224的输入预训练我们的模型然后分别以224 × 224和384× 384的输入微调我们的模型。
结果
我们比较了当前最先进的CNNs(例如:ConvNeXt , EFFNetV2)和Vit(例如:, Swin-Transformer,ViT和CoAtNet)。如表8所示,VAN在200M参数下达到87.8%的Top-1精度,在不同分辨率下超过了同级ViT、Swin -Transformer、EFFNetV2和ConvNeXt,证明了其较强的适应大规模预训练的能力。
4.2目标检测
设置
我们在COCO 2017基准上进行了目标检测和实例分割实验,其包含训练集118K张,验证集5K张。
MMDetection被用作实现检测模型的代码库。为了公平比较,我们采用了与Swin Transformer和PoolFormer相同的训练/验证策略。多种检测模型(如Mask R-CNN、RetinaNet、Cascade Mask R-CNN、Sparse R-CNN 等),以证明我们方法的有效性。所有骨干模型都是在ImageNet上进行预训练的。
结果
由表9和表10可以发现,在RetinaNet 1x和Mask R-CNN 1x的设置下,VAN的效果明显优于基于CNN的方法ResNet和基于transformer的方法PVT。此外,我们还在表11中比较了Swin-Transformer和ConvNeXt两种最先进的方法。结果表明,VAN在不同的检测方法(如Mask RCNN和Cascade Mask R-CNN)下都能达到最先进的性能。
4.3语义分割
设置
我们在ADE20K上进行了实验,ADE20K包含150个语义类别用于语义分割。它按照20000、2000和3000的比例划分数据分别用于训练、验证和测试。MMSEG被用作基本框架,两个著名的分割头Semantic FPN和UperNet用于评估我们的VAN主干。为了公平比较,我们采用了[98]和[15]两种训练/验证方案,验证集的定量结果分别见表12的上、下部分。所有骨干模型都在ImageNet-1K或ImageNet-22K上预训练。
结果
从表12的上半部分可以看出,在使用FPN的不同骨干网中,基于van的方法优于基于CNN (ResNet、ResNeXt)或基于Transformer的方法(PVT , PoolFormer , PVTv2)方法。例如,我们超越了四个PVTv2变体,分别调高了1.3 (B0), 0.4 (B1), 1.5(B2), 0.8 (B3) mIoU在相近参数量和FLOPs下。在表12的下半部分,与以往的基于CNN的方法和基于swin - transformer的方法相比,4种VAN变体在相近参数量和FLOPs的情况下也表现出优异的性能。例如,基于UperNet ,VAN-B2比ResNet-101和SwinT分别高5.2和4.0 mIoU。对于ImageNet-22K预训练模型,VAN的性能也优于Swin-Transformer和ConvNeXt,且计算开销更小,如表13所示。
4.4全景分割
设置
我们在COCO全景分割数据集上进行全景分割,选择Mask2Former作为分割头。为了公平比较,我们采用MMDetection中的默认设置,并采用Mask2Former相同的训练/验证方案。所有的骨干模型都在ImageNet-1K或ImageNet-22K上预训练。
结果
如表14所示,我们观察到VAN的表现在大和小模型上都更胜Swin-Transformer一筹。这里,VAN-B2超过Swin - T 1.7 PQ。此外,值得注意的是,VAN-B6达到了58.2 PQ,达到了全景分割任务的最先进的性能
4.5姿态估计
设置
我们在COCO人体姿态估计数据集上进行姿态估计实验,该数据集包含200K张带有17个关键点。模型在COCO train 2017数据集上进行训练,并在COCO val 2017数据集上进行测试。我们采用SimpleBaseline作为解码器部分,与Swin-Transformer和PVT相同。所有实验均基MMPose。
结果
实验结果见表15。对于256× 192的输入,VAN-B2超过Swin - T和PVT-S 2.5AP(74.9 vs. 72.4)和3.5AP (74.9 vs. 71.4),而计算量和参数量相似。此外,VAN-B2在更少的计算量和参数量情况下,在256 × 192大小输入时超过了Swin - B 2AP (74.9 vs. 72.9),在384 × 288输入时超过了1.8AP (76.7 vs. 74.9),除了基于Transformer的模型外,VAN-B2还超越了流行的基于CNN的模型HRNet-W32。
4.6细粒度分类
我们使用CUB-200数据集进行细粒度分类,该数据集是常用的细粒度分类基准,包含11788张属于鸟类的200个子类的图片。我们没有为这个任务设计特定的算法,只是把最后一个线性层替换为200个类别。我们基于mmclassification实现我们的模型。表16的结果显示,VAN-B4在没有任何特殊设计的情况下达到了91.3%的Top-1准确率算法,超过了DeiT和ViT-B。
4.7显著性检测
我们基于EDN进行显著性检测。我们用VAN替换主干,并在常见的显著性检测基准上进行实验,包括DUTS、DUT-O和PASCAL-S。表17的结果显示,VAN在所有数据集上都明显优于其他主ResNet和PVT。
5 讨论
最近,基于变Transformer的模型迅速征服了各种视觉排行榜。我们知道,自注意力只是一种特殊的注意机制。然而,人们逐渐默认了自注意力,忽略了潜在的注意方法。本文提出了一种新颖的注意力模块LKA和基于CNN的网络VAN。在视觉任务上超过了最先进的基于Transformer的方法。我们希望这篇论文能够促使人们重新思考自注意力是否具有不可替代性,以及哪种注意力更适合于视觉任务。
6未来的工作
在未来,我们将从以下几个方向继续完善VAN:
- 结构本身的不断改进在本文中,我们只展示了一个直观的结构。采用不同的内核大小、引入多尺度结构、使用多分支结构等都有很大的改进潜力。
- 大规模自监督学习与迁移学习 VAN自然的结合了CNNs和ViTs的优势。一方面,VAN可以利用图像的二维结构信息,另一方面,VAN可以根据输入图像动态调整输出,适合自监督学习和迁移学习。结合以上两点,我们认为VAN可以在图像自监督学习和迁移学习领域取得更好的表现。
- 更多应用领域 由于资源有限,我们只在视觉任务中表现优异。在NLP的TCN等其他领域,VANs是否也能表现出色,仍值得探索。我们期待看到VANs成为通用模型。
7总结
本文结合卷积和自注意力的优点,提出了一种新的视觉注意LKA算法。在LKA的基础上,我们构建了一个视觉主干VAN,在图像分类、目标检测、语义分割等视觉任务上达到了最先进的性能。在未来,我们将继续从第6节提到的方向改进这个框架。