MutualNet:通过从网络宽度和分辨率互学习的自适应ConvNet

MutualNet: Adaptive ConvNet via Mutual Learning from Network Width and Resolution



摘要

我们提出了宽度-分辨率互学习的方法(MutualNet),以训练可在动态资源约束下执行的网络,从而在运行时实现自适应的精度-效率的折衷。我们的方法使用不同的输入分辨率训练一组具有不同宽度(即一层中的通道数)的子网,以互学习每个子网的多尺度表示。 在不同的计算约束下,它比最先进的自适应网络US-Net始终能够获得更高的ImageNet top-1精度,并且比EfficientNet中最佳复合缩放的MobileNet高出1.5%。 我们方法的优越性还在COCO目标检测和实例分割以及迁移学习上得到了验证。令人惊讶的是,MutualNet的训练策略还可以提高单个网络的性能,在效率(GPU搜索时间:15000 vs. 0)和准确性(ImageNet:77.6%vs. 78.6%)方面,其性能均大大优于强大的AutoAugmentation。

1. 引言

深度神经网络已经胜过各种感知任务。 但是,深度网络通常需要大量的计算资源,这使得它们很难部署在移动设备和嵌入式系统上。 通过设计有效的卷积块或修剪不重要的网络连接来激励减少深度神经网络冗余的研究。 但是,这些工作忽略了计算成本由网络规模和输入尺度共同决定的事实。 仅专注于减小网络规模并不能实现最佳的精度-效率的权衡。 EfficientNet已经认识到平衡网络深度,宽度和分辨率的重要性。 但是它分别考虑网络规模和输入尺度。作者对不同的配置进行网格搜索,然后选择性能最佳的网格,而我们认为,应联合学习网络规模和输入尺度,以充分利用嵌入在不同配置中的信息。

阻止深度网络实际部署的另一个问题是,在实际应用中资源预算(例如电池状况)会有所不同,而传统网络只能在特定的约束条件下(例如FLOP)运行。 为了解决这个问题,提出的SlimNets训练一个单独的模型来满足运行时变化的资源预算。 它们仅减小网络宽度以满足较低的资源预算。 结果,随着计算资源的减少,模型的性能急剧下降。 在这里,我们提供一个具体的例子来说明在输入分辨率和网络宽度之间取得平衡以实现更好的精度-效率折衷的重要性。 具体来说,要在MobileNet v1骨干网上满足从13到569个MFLOP的动态资源约束,US-Net在给定一个 224 × 224 224×224 224×224输入的情况下需要 [ 0.05 , 1.0 ] × [0.05,1.0]× [0.05,1.0]×的网络宽度范围,同时在测试期间通过在 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128}中调整输入分辨率,可以使网络宽度为 [ 0.25 , 1.0 ] × [0.25,1.0]× [0.25,1.0]×,也可以满足次约束条件,我们将后一种模型称为US-Net+。如图1所示,只需在推理过程中将不同的分辨率与网络宽度结合起来,就可以比US-Net更好地进行精度-效率的权衡,而无需付出额外的努力。

在这里插入图片描述图1 US-Net+和US-Net的精度-FLOPs曲线。

受到上述现象的启发,我们提出了一种将网络宽度和输入分辨率都纳入统一学习框架的互学习方案。 如图2所示,我们的框架为不同的子网提供了不同的输入分辨率。 由于子网彼此共享权重,因此每个子网都可以学习其他子网共享的知识,这使它们可以从网络级别和输入级别捕获多尺度表示。表1提供了我们的框架与之前的工作之间的比较。 总而言之,我们做出以下贡献:

  • 我们强调输入分辨率对有效网络设计的重要性。之前的工作要么忽略它,要么独立于网络结构对待它。 相比之下,我们将网络宽度和输入分辨率统一嵌入互学习框架,以学习可在运行时实现自适应精度-效率折衷的深度神经网络(MutualNet)。
  • 我们进行了大量的实验,以证明MutualNet的有效性。 在各种约束条件下,它在各种网络结构,数据集和任务上均优于独立训练的网络和US-Net。 据我们所知,我们第一个在目标检测和实例分割上对任意约束自适应网络进行基准测试。
  • 我们进行了全面的消融研究,以分析提出的互学习计划。 我们进一步证明,我们的框架有望作为一种即插即用策略来提高单个网络的性能,该性能大大优于流行的性能提升方法,例如数据增强,SENet和知识蒸馏。
  • 所提出的框架是通用的训练方案,并且与模型无关。它可以应用于任何网络,而无需对结构进行任何调整。 这使其与其他最新技术兼容(例如,神经体系结构搜索(NAS),自动增强)。

在这里插入图片描述
图2:我们建议的MutualNet的训练过程。 网络宽度范围为 [ 0.25 , 1.0 ] × [0.25,1.0]× [0.251.0]×,输入分辨率选自 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128}。 这样可以在MobileNet v1主干上实现 [ 13 , 569 ] [13,569] [13,569]个MFLOP的计算范围。 我们遵循三明治法则对4个网络进行采样,即上限全宽网络( 1.0 × 1.0× 1.0×),下限宽网络( 0.25 × 0.25× 0.25×)和两个随机宽度比 α 1 , α 2 ∈ ( 0.25 , 1 ) \alpha_{1}, \alpha_{2} \in(0.25,1) α1,α2(0.25,1)。 对于全网络,我们一致选择 224 × 224 224×224 224×224分辨率。 对于其他三个子网,我们随机选择其输入分辨率。 完整网络使用真值标签进行了优化。 通过预测整个网络来优化子网。 权重在不同的网络之间共享,以促进互学习。 CE:交叉熵损失。 KL:Kullback-Leerer散度损失。

2. 相关工作

轻量级网络。 最近,人们对设计轻量级网络产生了浓厚的兴趣。 MobileNet将标准的 3 × 3 3×3 3×3卷积分解为 3 × 3 3×3 3×3深度卷积和 1 × 1 1×1 1×1点卷积,从而将计算成本降低了数倍。 ShuffleNet将 1 × 1 1×1 1×1卷积分为组卷积,以进一步提高计算效率。 MobileNet v2为低复杂度网络提出了反向残差和线性块。 ShiftNet引入了零触发器移位操作以降低计算成本。 最近的工作也将神经结构搜索方法应用于搜索有效的网络。 但是,他们都没有考虑到实际应用中在运行期间变化的资源约束。 为了满足不同的资源预算,这些方法需要部署多个模型并在它们之间切换,这是不可扩展的。

自适应神经网络。 为了满足实际应用中的动态约束,MSDNet提出了一种多尺度,从粗到细的密集网框架。 它具有多个分类器,可以进行早期预测以满足不断变化的资源需求。 NestedNet使用嵌套的稀疏网络,该网络由多个级别组成,以支持嵌套学习。 S-Net引入了4-width框架,将不同的复杂性整合到一个网络中,并提出了可切换的BN以进行瘦身训练。 利用知识蒸馏来训练多出口网络。 但是,这些方法只能在有限的约束条件下执行。 US-Net可以立即调整运行时网络的宽度,以进行任意的精度-效率权衡。 但是,随着预算下限的降低,其性能会大大降低。 提出了逐步缩小以从训练有素的大型网络中微调子网的方法,但是训练过程复杂且昂贵。

多尺度表示学习。 在各种任务中都探索了多尺度表示的有效性。 FPN融合金字塔特征用于目标检测和分割。提出了一种多网格卷积,以在整个尺度空间上传递消息。 HRNet设计了一种多分支结构,以跨不同的分辨率交换信息。 然而,这些工作诉诸于对并行化不友好的多分支融合结构。我们的方法没有修改网络结构,并且学习的多尺度表示不仅来自图像尺度,而且来自网络尺度。

3. 方法

3.1 预备知识

三明治法则。 US-Net训练了一个在任何资源限制下都可执行的网络。 解决方案是随机采样几个网络宽度进行训练,并累积其梯度进行优化。 但是,子网的性能受最小宽度(例如 0.25 0.25 0.25倍)和最大宽度(例如 1.0 1.0 1.0倍)的限制。 因此,引入了三明治法则以对最小宽度和最大宽度以及每次训练迭代的两个随机宽度进行采样。

内部蒸馏。 知识蒸馏是将知识从教师网络转移到学生网络的一种有效方法。 遵循三明治法则,由于每次迭代都对最大的网络进行采样,因此自然而然地使用最大的网络(由地面真值标签监督)作为老师来指导较小的子网进行学习。 与使用地面真值标签训练所有子网相比,这提供了更好的性能。

批归一化(BN)的后统计信息。 US-Net提出,每个子网都需要有自己的BN统计信息(均值和方差),但这不足以存储所有子网的统计信息。 因此,US-Net在训练后收集所需子网的BN统计信息。 实验结果表明,有2,000个样本足以获得准确的BN统计数据。

3.2 重新思考高效的网络设计

传统卷积的计算成本为 C 1 × C 2 × K × K × H × W C_1×C_2×K×K×H×W C1×C2×K×K×H×W,其中 C 1 C_1 C1 C 2 C_2 C2为输入和输出通道数, K K K为卷积核大小, H H H W W W为输出特征图大小。 以前的大多数工作只着重于降低 C 1 × C 2 C_1×C_2 C1×C2。 最广泛使用的组卷积将标准卷积分解为组,以将计算量减少为 C 1 × ( C 2 / g ) × K × K × H × W C_1×(C_2/g)×K×K×H×W C1×(C2/g)×K×K×H×W,其中 g g g是组数。 g g g越大,计算量越少,但会导致更高的内存访问成本(MAC),从而使网络在实际应用中效率低下。 剪枝方法也只考虑减少结构冗余。

在我们的方法中,由于以上原因,我们将注意力转移到减小 H × W H×W H×W上,即降低输入分辨率。 首先,如图1所示,宽度和分辨率之间的平衡实现了更好的精度-效率折衷。 其次,对输入分辨率进行下采样并不一定会损害性能。有时甚至会提高性能。 较低的图像分辨率可以通过减少对冗余细节的关注来产生更好的检测精度。 第三,不同的分辨率包含不同的信息。 较低分辨率的图像可能包含更多的全局结构,而高分辨率的图像可能包含更多的细粒度图案。 在以前的工作中,从不同尺寸的图像和特征中学习多尺度表示已被证明是有效的。 但是这些方法诉诸于对并行化不友好的多分支结构。 基于这些现象,我们提出了一个互学习的框架,以同时考虑网络规模和输入分辨率,以实现有效的网络精度-效率的权衡。

3.3 互学习框架

三明治法则和互学习。 如3.2节所述,不同的分辨率包含不同的信息。 我们希望利用此属性来学习可靠的表示形式和更好的宽度-分辨率权衡。 US-Net中的三明治法则可以看作是一种互学习的方案,其中协作学习一组网络。 由于子网彼彼此共享权重并共同进行优化,因此它们可以相互传递知识。 较大的网络可以利用较小网络提取的特征。 同样,较小的网络可以受益于较大网络的较强表示能力。 鉴于此,我们为每个子网提供了不同的输入分辨率。 通过共享知识,每个子网都可以捕获多尺度表示。

模型训练。 在图2中,我们提供一个示例来说明我们的框架。我们训练一个网络,其宽度范围从 0.25 × 0.25× 0.25× 1.0 × 1.0× 1.0×。 首先我们遵循三明治法则,对四个子网即最大( 1.0 × 1.0× 1.0×),最小( 0.25 × 0.25× 0.25×)和两个随机宽度比 α 1 , α 2 ∈ ( 0.25 , 1 ) \alpha_{1}, \alpha_{2} \in(0.25,1) α1,α2(0.25,1)进行采样。然后,与使用 224 × 224 224×224 224×224输入的传统ImageNet训练不同,我们将输入图像的大小调整为四个分辨率 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128},并将其输入到不同的子网中。我们将一个子网的权重表示为 W 0 : w W_{0:w} W0:w,其中 w ∈ ( 0 , 1 ] w\in(0,1] w(0,1]是子网的宽度,而 0 : w 0:w 0:w表示子网采用每层的前 w × 100 % w×100% w×100权重。 I R = r I_{R=r} IR=r代表一个 r × r r×r r×r的输入图像。然后, N ( W 0 : w , I R = r ) N(W_{0:w},I_{R=r}) N(W0:w,IR=r表示一个子网的输出,其宽度为 w w w,输入分辨率为 r × r r×r r×r。 对于最大的子网(即图2中的完整网络),我们始终以最高分辨率( 224 × 224 224×224 224×224)和地面真值标签 y y y对其进行训练。 整个网络的损失是
l o s s f u l l =  CrossEntropy  ( N ( W 0 : 1 , I R = 224 ) , y ) (1) loss_{full}=\text { CrossEntropy }\left(N\left(W_{0: 1}, I_{R=224}\right), y\right)\tag{1} lossfull= CrossEntropy (N(W0:1,IR=224),y)(1)
对于其他子网,我们从 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128}中随机选择一个输入分辨率,并将其与全网络的输出一起训练。 第 i i i个子网的损耗为
loss ⁡ s u b i = KLD ⁡ i v ( N ( W 0 : w i , I R = r i ) , N ( W 0 : 1 , I R = 224 ) ) (2) \operatorname{loss}_{s u b_{i}}=\operatorname{KLD}iv\left(N\left(W_{0: w_{i}}, I_{R=r_{i}}\right), N\left(W_{0: 1}, I_{R=224}\right)\right)\tag {2} losssubi=KLDiv(N(W0:wi,IR=ri),N(W0:1,IR=224))(2)
其中 KLD ⁡ i v \operatorname{KLD}iv KLDiv是Kullback-Leibler散度。 总损失是全网和子网的总和,即
loss ⁡ = loss ⁡ full + ∑ i = 1 3 loss ⁡ sub i (3) \operatorname{loss}=\operatorname{loss}_{\text {full}}+\sum_{i=1}^{3} \operatorname{loss}_{\text {sub}_{i}}\tag{3} loss=lossfull+i=13losssubi(3)
以最高分辨率训练整个网络的原因是,最高分辨率包含更多细节。 而且,全网络具有最强的学习能力,可以从图像数据中捕获判别性信息。

从宽度和分辨率中互学习。 在这一部分中,我们解释了为什么提出的框架可以互学习不同的宽度和分辨率。 为了便于演示,在此示例中,我们仅考虑两个网络宽度 0.4 × 0.4× 0.4× 0.8 × 0.8× 0.8×,以及两个分辨率128和192。 如图3所示,子网 0.4 × 0.4× 0.4×选择输入分辨率128,子网 0.8 × 0.8× 0.8×选择输入分辨率192。然后我们可以定义子网 0.4 × 0.4× 0.4× 0.8 × 0.8× 0.8×的梯度分别为 ∂ l W 0 : 0.4 , I R = 128 ∂ W 0 : 0.4 \frac{\partial l_{W_{0: 0.4}, I_{R}=128}}{\partial W_{0: 0.4}} W0:0.4lW0:0.4,IR=128 ∂ l W 0 : 0.8 , I R = 192 ∂ W 0 : 0.8 \frac{\partial l_{W_{0: 0.8}, I_{R}=192}}{\partial W_{0: 0.8}} W0:0.8lW0:0.8,IR=192。 由于子网 0.8 × 0.8× 0.8× 0.4 × 0.4× 0.4×共享权重,我们可以将其梯度分解为
∂ l W 0 : 0.8 , I R = 192 ∂ W 0 : 0.8 = ∂ l W 0 : 0.8 , I R = 192 ∂ W 0 : 0.4 ⊕ ∂ l W 0 : 0.8 , I R = 192 ∂ W 0.4 : 0.8 (4) \frac{\partial l_{W_{0: 0.8}, I_{R}=192}}{\partial W_{0: 0.8}}=\frac{\partial l_{W_{0: 0.8}, I_{R=192}}}{\partial W_{0: 0.4}} \oplus \frac{\partial l_{W_{0: 0.8}, I_{R=192}}}{\partial W_{0.4: 0.8}}\tag{4} W0:0.8lW0:0.8,IR=192=W0:0.4lW0:0.8,IR=192W0.4:0.8lW0:0.8,IR=192(4)
其中⊕是向量串联。 由于两个子网的梯度是在训练期间累积的,因此总梯度的计算公式为
∂ L ∂ W = ∂ l W 0 : 0.4 , I R = 128 ∂ W 0 : 0.4 + ∂ l W 0 : 0.8 , I R = 192 ∂ W 0 : 0.8 = ∂ l W 0 : 0.4 , I R = 128 ∂ W 0 : 0.4 + ( ∂ l W 0 : 0.8 , I R = 192 ∂ W 0 : 0.4 ⊕ ∂ l W 0 : 0.8 , I R = 192 ∂ W 0.4 : 0.8 ) = ∂ l W 0 : 0.4 , I R = 128 + ∂ l W 0 : 0.8 , I R = 192 ∂ W 0 : 0.4 ⊕ ∂ l W 0 : 0.8 , I R = 192 ∂ W 0.4 : 0.8 (5) \begin{aligned} \frac{\partial L}{\partial W}&=\frac{\partial l_{W_{0: 0.4}, I_{R=128}}}{\partial W_{0: 0.4}}+\frac{\partial l_{W_{0: 0.8}, I_{R=192}}}{\partial W_{0: 0.8}}\\ &=\frac{\partial l_{W_{0: 0.4}, I_{R=128}}}{\partial W_{0: 0.4}}+\left(\frac{\partial l_{W_{0: 0.8}, I_{R=192}}}{\partial W_{0: 0.4}} \oplus \frac{\partial l_{W_{0: 0.8}, I_{R=192}}}{\partial W_{0.4: 0.8}}\right)\\ &=\frac{\partial l_{W_{0: 0.4}, I_{R=128}}+\partial l_{W_{0: 0.8}, I_{R=192}}}{\partial W_{0: 0.4}} \oplus \frac{\partial l_{W_{0: 0.8}, I_{R=192}}}{\partial W_{0.4: 0.8}} \end{aligned}\tag{5} WL=W0:0.4lW0:0.4,IR=128+W0:0.8lW0:0.8,IR=192=W0:0.4lW0:0.4,IR=128+(W0:0.4lW0:0.8,IR=192W0.4:0.8lW0:0.8,IR=192)=W0:0.4lW0:0.4,IR=128+lW0:0.8,IR=192W0.4:0.8lW0:0.8,IR=192(5)
在这里插入图片描述
图3:从网络宽度和输入分辨率互学习的示意图。

因此,子网 0.4 × 0.4× 0.4×的梯度为 ∂ l W 0 : 0.4 , I R = 128 + ∂ l W 0 : 0.8 , I R = 192 ∂ W 0 : 0.4 \frac{\partial l_{W_{0: 0.4}, I_{R=128}}+\partial l_{W_{0: 0.8}, I_{R=192}}}{\partial W_{0: 0.4}} W0:0.4lW0:0.4,IR=128+lW0:0.8,IR=192,它由两部分组成。 第一部分是从本身 ( 0 : 0.4 × ) (0:0.4×) (0:0.4×)导出的,输入分辨率为128。 第二部分来自具有192输入分辨率的子网 0.8 × 0.8× 0.8×(即 0 : 0.4 × 0:0.4× 0:0.4×部分)。 因此,子网能够从不同的输入分辨率和网络规模捕获多尺度表示。 由于网络宽度是随机抽样的,因此每个子网都可以在我们的框架中学习多尺度表示。

模型推断。 训练后的模型可以在各种宽度分辨率配置下执行。 目标是在特定资源限制下找到最佳配置。 一种简单的方法是通过查询表。 例如,在MobileNet v1中,我们以 0.05 × 0.05× 0.05×的步长采样从 0.25 × 0.25× 0.25× 1.0 × 1.0× 1.0×的网络宽度,并以 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128}采样网络分辨率。 我们在验证集上测试所有这些宽度分辨率配置,并在给定约束(FLOPs或等待时间)下选择最佳配置。 由于没有重新训练,所以整个过程是一劳永逸的。

4. 实验

在本节中,我们首先介绍ImageNet分类的结果,以说明MutualNet的有效性。 接下来,我们进行广泛的消融研究,以分析相互学习方案。 最后,我们使用MutualNet迁移学习数据集和COCO目标检测和实例分割,以证明其鲁棒性和泛化能力。

4.1 ImageNet分类评估

我们在ImageNet数据集上将MutualNet与US-Net和经过独立训练的网络进行比较。 我们在两种流行的轻量级结构上评估我们的框架,即MobileNet v1和MobileNet v2。 这两个网络也分别代表非残差和残差结构。

实施细节。 我们将在相同的动态FLOPs约束条件下与US-Net进行比较(在MobileNet v1上为 [ 13 , 569 ] [13,569] [13569]MFLOPs,在MobileNet v2上为 [ 57 , 300 ] [57,300] [57300] MFLOPs)。 US-Net基于 224 × 224 224×224 224×224的输入分辨率,在MobileNet v1上使用 [ 0.05 , 1.0 ] × [0.05,1.0]× [0.05,1.0]×宽度,在MobileNet v2上使用 [ 0.35 , 1.0 ] × [0.35,1.0]× [0.35,1.0]×宽度。 为了满足相同的动态约束,我们的方法使用了 [ 0.25 , 1.0 ] × [0.25,1.0]× [0.25,1.0]×宽度比例的MobileNet v1和 [ 0.7 , 1.0 ] × [0.7,1.0]× [0.7,1.0]×的MobileNet v2,降采样的输入分辨率 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128}。 由于输入分辨率较低,我们的方法能够使用比US-Net更高的宽度下限(即 0.25 × 0.25× 0.25× 0.7 × 0.7× 0.7×)。 其他训练设置与US-Net相同。

与US-Net的比较。 我们首先将我们的框架与MobileNet v1和MobileNet v2主干上的US-Net进行比较。 精度-FLOPs曲线如图4所示。我们可以看到,我们的框架在MobileNet v1和MobileNet v2主干网上始终优于US-Net。 具体而言,我们以较小的计算成本实现了重大改进。 这是因为我们的框架同时考虑了网络宽度和输入分辨率,并且可以在两者之间找到更好的平衡。 例如,如果资源限制为150 MFLOPs,则US-Net必须将宽度减小到 0.5 × 0.5× 0.5×(因为其恒定的输入分辨率为224),而我们的MutualNet可以通过一个平衡配置来满足此预算( 0.7 × − 160 0.7×-160 0.7×160),从而获得更高的精度(如图4(a)的表格中列出的65.6%(我们的)和62.9%(US-Net)。 另一方面,我们的框架能够学习多尺度表示,从而进一步提高每个子网的性能。 我们可以看到,即使对于相同的配置(例如 1.0 × − 224 1.0×-224 1.0×224),我们的方法也明显优于US-Net,即MobileNet v1的72.4%(我们的)与71.7%(US-Net),而MobileNet v2则为72.9%(我们的)与71.5%(US-Net)(图4)。
在这里插入图片描述
图4:我们提出的MutualNet和US-Net的精度-FLOPs曲线。 (a)基于MobileNet v1主干。 (b)基于MobileNet v2主干。

与独立训练网络的比较。 分别对不同比例的MobileNets进行了训练。 作者将宽度和分辨率视为独立因素,因此无法利用不同配置中包含的信息。 我们在图5中比较了MutualNet和经过独立训练的MobileNet在不同宽度分辨率配置下的性能。对于MobileNet v1,宽度选自 { 1.0 × , 0.75 × , 0.5 × , 0.25 × } \{1.0×,0.75×,0.5×,0.25×\} {1.0×,0.75×,0.5×,0.25×} ,分辨率从 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128}中选择,总共有16种配置。 类似地,MobileNet v2从 { 1.0 × , 0.75 × , 0.5 × , 0.35 × } \{1.0×,0.75×,0.5×,0.35×\} {1.0×,0.75×,0.5×,0.35×} { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128}中选择配置。 从图5,我们的框架始终可以胜过MobileNets。 即使对于相同的宽度-分辨率配置(尽管可能不是MutualNet在该特定约束条件下找到的最佳配置),MutualNet仍可以实现更好的性能。 这表明MutualNet不仅可以找到更好的宽度分辨率平衡,而且可以通过互学习方案学习更强大的表示形式。

在这里插入图片描述
图5:我们的MutualNet和独立训练的MobileNet的Accuracy-FLOPs曲线。 (a)是MobileNet v1主干。 (b)是MobileNet v2主干。 不同的MobileNets配置的结果取自论文。

相关文章
相关标签/搜索