一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种高效的动态图像分类方法与流程

2021-12-14 22:42:00 来源:中国专利 TAG:


1.本发明涉及图像信息处理技术领域,具体涉及一种高效的动态图像分类方法。


背景技术:

2.近年来深度卷积神经网络(cnns)在许多计算机视觉任务中取得了巨大的成功,如图像分类、目标检测、图像分割等。然而,cnns的卓越性能往往伴随着巨大的计算成本,这阻碍了它在资源受限的硬件设备上的部署。因此,人们提出了各种方法来提高cnn推理时的计算效率,包括轻量级模型、网络剪枝和权值量化。以往的方法大多是静态的,它们对所有测试样本使用固定的计算图。
3.最近,动态推理已经成为一种很有前途的替代方法,它可以根据每个输入样本动态地改变计算图,从而在线调整计算成本以满足不同的需求。动态推理方法通常由多个分支组成,每个分支对应一个子网络,它们通常具有不同的复杂性。当测试样本来临,动态方法将根据样本属性动态地选择适当的分支进行推理。具体来说,对于“简单”样本,具有小网络的相关分支可能足以获得正确的结果。相比之下,“困难”样本需要大网络相关的分支。由于大部分测试样本是“容易”的,这种动态过程避免了大型网络进行不必要的计算,从而大大降低了计算成本。同时,大型网络的利用保证了面对“困难”样本时的准确性。
4.基于上述讨论,我们可以得出结论,动态推理的效率很大程度上取决于一个假设,即小网络应该足够强大,能够正确地对“简单”的样本进行分类。但实际应用中样本量复杂多样时,会影响效率,而大型网络则有能力解决这一问题。


技术实现要素:

5.针对上述技术背景提到的不足,本发明的目的在于提供一种高效的动态图像分类方法。
6.本发明的目的可以通过以下技术方案实现:1、一种高效的动态图像分类方法,其特征在于,包括如下步骤:步骤1、将所有的原始自然图像裁剪成固定大小的块,然后输入到初始层中转换成不同分辨率的特征,作为每条分支的输入;步骤2、将不同特征输入到提出的交叉融合模块中,利用交叉融合模块促进不同分辨率特征之间的协作,多个这样的模块构成网络msnet;步骤3、利用提出的自适应蒸馏模块对网络进行训练,将高分辨率分支中最后一个分类器的识别能力转移到其它分类器;步骤4、在验证集上确定阈值,在两种不同分类场景下对网络进行验证。
7.2、根据权利要求1所述的一种高效的动态图像分类方法,其特征在于,所述步骤1将所有的自然图像裁剪成固定尺寸,使用裁剪后的图像作为输入,对于输入图像,首先采用初始层沿垂直方向提取不同分辨率的特征,初始层由多个跨步卷积组成,然后分别使用提取的特征沿水平方向构造不同深度的分支,每个分支将对特征图做下采样直到最低的分辨
率。
8.3、根据权利要求1所述的一种高效的动态图像分类方法,其特征在于,所述步骤2的交叉融合模块中,假设表示第条分支上第层的卷积特征,,,表示第条分支上卷积层的数量,b表示msnet中分支的数量,对应从初始层中学习到的特征,是在输入图像上通过一个常规卷积得到的,,是在基础上通过步幅为2的跨步卷积得到的,在初始层中得到的基本特征被同时送入一系列的交叉融合模块,以提取更高层次的特征,交叉融合模块分为两种,分别是上下聚合模块和单向聚合模块;对于第一种聚合模块,尝试将互补信息从第条分支转移到第条分支上,其中,采用三种不同类型的卷积算子,包括常规卷积,跨步卷积和,其中由一个常规卷积和上采样操作组成,以为例,聚合过程表示为:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)其中是分支上的第层的互补特征:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)公式(2)中,在与特征连接之前,需先将的卷积结果乘以
“‑
1”,在跨步卷积的帮助下,和之间的相似信息被抑制,互补的特征被确保从转移到;msnet的每个分支都存在过渡层,在过渡层中特征图的大小将被下采样两次,使得跨分支融合更具挑战,此时过渡层更需要的是保留特征,因此以上下聚合模块为基础设计单向聚合模块,该模块同时利用中上一层和当前层特征的特性来增强中的特征,过渡层通过以下公式定义:
ꢀꢀꢀꢀꢀꢀꢀ
(3)4、根据权利要求1所述的一种高效的动态图像分类方法,其特征在于,所述自适应蒸馏模块的自适应蒸馏损失,假设从底部的分支到顶部分支的分类器按顺序表示为,其中表示总的分类器数量,对于一个训练样本,第个分类器预测结果用表示,对应标签,分类损失可被构建为,其中是常用的交叉熵损失;作为最后一个分类器,优于其它分类器的预测结果,蒸馏模块将其作为教
师来提高的分类结果,关于的原始蒸馏损失表示为,其中表示相对熵;低分辨率分支比高分辨率分支需要更多的指导,这些信息被并纳入蒸馏损失中,因此通过引入分支不确定性来构造自适应蒸馏损失,具体来说与第个分类器并行,,设计一个辅助输出分支来学习第个分支的不确定性值,将自适应损失构造为:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)在上式中,为第个分支的一个权重,第二项是一个正则化项,可防止增大,通过学习,蒸馏模块能够自适应地为不同的分支分配合适的权重;每个样本的最终损失是分类损失、传统蒸馏损失和自适应蒸馏损失的组合,定义如下:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)设定和,实验表明,这两个项为模型带来了良好的正则化。
9.5、根据权利要求1所述的一种高效的动态图像分类方法,其特征在于,所述步骤4的验证评估方法采用两种分类场景进行评估:(1)预算批次分类,网络需要在给定的计算预算内对一组测试样本进行分类;(2)任意时刻的预测,强制网络在任何给定时间点输出预测;对于(1),阈值以执行动态推理,对于(2),所有测试样本按顺序处理。
10.msnet可通过改变阈值,在线调整其计算成本。假设模型的第个分类器产生一个预测结果,然后将中的最大一项与一个预定义的阈值比较。则测试过程停止,并将作为最终的预测输出。
11.上述阈值的获取过程如下,假设在第个分类器获得最终预测的概率为,相应的计算成本为。然后每个样本的平均计算成本表示为。在预算批次分类设置中,模型需要在给定的计算预算内对一组测试样本进行分类,从而产生约束。解这个约束得到,并在验证集上确定阈值。该方法中定义,其中是一个标准化常数以确保,并且是要求解的停止概率。
12.本发明的有益效果:1、在两种分类场景设置下,本发明方法的计算效率始终比多尺度密集网络(msdnet)、分辨率自适应网络(ranet)、带中间分类器的残差网络()、带中间分
类器的密集网络()、不同大小的残差网络集合(ensemble of resnets)、不同大小的密集网络集合(ensemble of densenet)、googlenet、宽残差网络(wideresnet)的计算效率高;2、通过交叉融合模块和自适应蒸馏模块促进网络内不同分辨率特征之间的协作,使在低分辨率分支被视为“困难”的样本变得不再困难。此外,我们通过设置阈值使得本发明可以动态地停止推理,有效地提高了计算效率。
附图说明
13.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;图1是本发明的基本流程图;图2是发明提出的msnet基本框架;图3是两种交叉融合模块;图4是预算批次分类(budgeted batch classification)场景下对比的结果;图5是任意时刻预测(anytime prediction)场景下对比的结果。
具体实施方式
14.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
15.图1为本发明的基本流程图,其中的虚线模块不执行,本发明提供了一种高效的动态图像分类方法,在各个阶段始终保持不同分辨率特征之间的协作,使得原本在早期被视为“困难”的样本不再困难,进而逐阶段对自然图像进行分类,能够在分类性能和计算成本之间实现较好的权衡。
16.本发明的思路是充分利用不同阶段中不同分辨率特征之间的协作,以此来提升各个分辨率分支的计算效率,将最深处的分类器学习能力转移给其它分类器,提高早期分类精确度。
17.本发明方法的基本框架如图2所示,具体包括以下步骤:步骤1)、将所有的原始自然图像裁剪成固定大小的块,并输入到初始层中转换成不同分辨率的特征,作为每条分支的输入;由于不同自然图像的空间分辨率是不一样的,为了方便训练网络,本发明将所有的自然图像裁剪成固定尺寸,使用裁剪后的图像块作为输入。对于输入图像,首先采用初始层沿垂直方向提取不同分辨率的特征,初始层由多个跨步卷积组成。例如图2展示了四种分辨率的结构,从顶部的高分辨率到底部的低分辨率特征。然后分别使用提取的特征沿水平方向构造不同深度的分支,每个分支将对特征图做下采样直到最低的分辨率。接下来我们将介绍交叉融合模块如何处理不同分辨率的特征。
18.步骤2)、将不同的特征输入到提出的交叉融合模块中,利用交叉融合模块促进不
同分辨率特征之间的协作,多个这样的模块构成网络msnet;假设表示第条分支上第层的卷积特征,,,在这里表示第条分支上卷积层的数量,b表示msnet中分支的数量。对应从初始层中学习到的特征,具体地说,是在输入图像上通过一个常规卷积()得到的,,是在基础上通过步幅为2的跨步卷积()得到的。在初始层中得到的基本特征被同时送入一系列的交叉融合模块,以提取更高层次的特征。交叉融合模块分为两种,分别是上下聚合模块和单向聚合模块,如图3(a)和(b)所示。
19.对于第一种聚合模块,尝试将互补信息从第条分支转移到第条分支上,其中。为实现这一目标,采用了三种不同类型的卷积算子,包括,和,其中由一个和上采样操作组成。以为例,聚合过程可以表示为:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)其中是分支上的第层的互补特征,可以写成:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)在公式(2)中,与特征连接之前,将的卷积结果乘以
“‑
1”。在的帮助下,和之间的相似信息将被抑制。大部分互补的特征被确保从转移到。
20.和densenet一样,msnet的每个分支都存在过渡层。与其它卷积层相比,在过渡层中特征图的大小将被下采样两次,使得跨分支融合更具挑战。此时,过渡层更需要的是保留大部分特征而不是抑制特征,因此上下聚合模块在这里并不那么有效。针对这一问题,以上下聚合模块为基础设计了单向聚合模块。该模块同时利用了中上一层和当前层特征的特性来增强中的特征。过渡层可以通过以下公式定义:
ꢀꢀꢀꢀ
(3)步骤3)、利用提出的自适应蒸馏模块对网络进行训练,将高分辨率分支中最后一个分类器的识别能力转移到其它分类器;在本步骤中,将详细介绍用于网络训练的自适应蒸馏损失。假设从底部的分支到顶部分支的分类器按顺序表示为,其中表示总的分类器数量。对于一个训练样本,第个分类器预测结果可以用表示。当我们有对应的标签,分
类损失通常可被构建为,其中是常用的交叉熵损失。
21.作为最后一个分类器,一般优于其它分类器的预测结果。蒸馏模块尝试将其作为教师来提高的分类结果。的原始蒸馏损失可以表示为,其中表示相对熵。
22.不同分支所需要的指导是不同的。低分辨率分支可能比高分辨率分支需要更多的指导。这些信息应被考虑并纳入蒸馏损失中,因此通过引入分支不确定性来构造自适应蒸馏损失。与第个分类器并行,,可设计一个辅助输出分支来学习第个分支的不确定性值。因此,自适应损失构造为:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)式中可被视为第个分支的一个权重。如果输入是一个简单的样本,应该接近,一个相对较大的权重是合适的。相反,如果是“困难”样本,这个权重应该较小。公式(4)中第二项是一个正则化项,可防止变得很大。综上所述,通过学习,蒸馏模块能够自适应地为不同的分支分配合适的权重。在测试期间,不再需要辅助分支,因此不会影响实际测试效率。
23.每个样本的最终损失是分类损失、传统蒸馏损失和自适应蒸馏损失的组合,定义如下:
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)这里,设定和,实验表明,这两个项为模型带来了良好的正则化。
24.步骤4)、在验证集上确定阈值,在两种不同分类场景下对网络进行验证。
25.可通过两种分类场景对方法进行评估:(1)预算批次分类,网络需要在给定的计算预算内对一组测试样本进行分类;(2)任意时刻的预测,强制网络在任何给定时间点输出预测。这两种设置可应对大多数情况,对于(1),阈值以执行动态推理,而对于(2),所有测试样本按顺序处理。
26.msnet的一个突出优点是通过改变阈值,可以根据实际需求在线调整其计算成本。假设模型的第个分类器产生一个预测结果,然后将中的最大一项,即与一个预定义的阈值比较。如果则测试过程停止,并将作为最终的预测输出。
27.上述阈值获取方法如下:假设在第个分类器获得最终预测的概率为,相应的计算成本为。每个样本的平均计算成本表示为。在预算批次分类设置中,模型
需要在给定的计算预算内对一组测试样本进行分类,从而产生约束。我们可以解这个约束得到,并在验证集上确定阈值。指定,其中是一个标准化常数以确保,并且是要求解的停止概率。
28.进行实际应用:实施例一将本发明所提供的技术方案应用在预算批次分类场景中。在该场景下,网络需要在给定的计算预算内对一组测试样本进行分类,在验证集上估计阈值以执行动态推理。在三种数据集上对网络进行评估,第一个数据集是cifar

10,包含50000张训练图像和10000张测试图像,每张图像的大小是,对象总数是10。第二个数据集是cifar

100,它与第一个数据集具有相同数量的训练和测试图像,但有100类对象。我们从训练集中提取5000张图像来构建两个数据集的验证集,并使用它们来寻找动态推理的阈值。第三个数据集是imagenet,对于这个数据集,我们使用的训练图像和测试图像的数量分别是120万和50000,有1000种对象需要分类。为了寻找不同预算下的阈值,我们从训练集中提取50000张图像来建立一个验证集。
29.利用本发明可以促进网络内不同分辨率特征之间的协作,使得早期被视为“困难”的样本变得不再困难。此外,我们通过设置阈值使得本发明可以动态地停止推理,有效地提高了计算效率。
30.为了验证本发明的有效性,分类结果分别与多尺度密集网络(msdnet)、分辨率自适应网络(ranet)、带中间分类器的残差网络()、带中间分类器的密集网络()、不同深度的残差网络集合(ensemble of resnets)、不同深度的密集网络集合(ensemble of densenet)、googlenet、宽残差网络(wideresnet)进行对比。首先,对原始图像进行裁剪,并输入到初始层中转换成不同分辨率的特征;紧接着,本发明设计了一个交叉融合模块促进不同分辨率特征之间的协作;最后,利用自适应蒸馏模块对网络进行训练。此外,通过设置阈值,本发明可以根据样本的属性动态地停止推理。
31.本实施例的分类过程具体如下:1、利用一个初始层得到输入图片的不同分辨率的特征:对于cifar数据集,首先在图像四边用零填充四个像素,然后对填充后的图像进行随机裁剪,生成的样本,以0.5的概率水平翻转图像,最后每个样本通道减去通道均值再除以标准差进行归一化。对于imagenet数据集,我们将图像随机裁剪成大小作为训练集,在测试期间,首先将测试图像重新缩放到,然后裁剪一个大小的中心子图像进行测试。请注意,在cifar数据集上初始层产生3种分辨率的特征,而对于imagenet,则产生4种分辨率的特征。
32.2、将上一步产生的特征输入到提出的交叉融合模块中,多个这样的模块构成网络msnet,用于高效地推理:这里,不同数据集上msnet的参数设置如下:在cifar

10和cifar

100数据集上,
msnet有3个分支,深度分别为30,18,8,基本特征的大小为。初始特征通道数分别为12,24和48,通道增长率分别为6,12和24。每个分支中的分类器数目为。对于imagenet,msnet包含4个分支,它们的深度分别为28,18,10,4。上一步中的初始特征大小为。初始特征通道数分别为32,64,128和256,通道增长率分别为16,32,64和128。分类器数目为,当分支有多个分类器时,在两个相邻的分类器之间使用两个卷积层。注意,在过渡层之后,增长率将被放大两倍。
33.3、利用提出的自适应蒸馏模块对网络进行训练,并在预算批次分类场景下对网络进行验证:本发明使用自适应蒸馏模块中的公式(5)来计算分类损失,并反向传播来训练网络。我们使用动量为0.9、权值衰减为0.0001的随机梯度下降优化器来训练msnet。cifar和imagenet数据集的批次大小分别设置为128和256。对于cifar数据集,我们使用余弦学习率曲线对网络进行300个epoch的重新训练,初始学习率为0.1,对于imagenet数据集,使用相同的训练方法,但是epoch设置为150。
34.为了验证本发明方法的效果,我们获取不同计算预算下的阈值,将本发明与多尺度密集网络(msdnet)、分辨率自适应网络(ranet)、带中间分类器的残差网络()、带中间分类器的密集网络()、不同深度的残差网络集合(ensemble of resnets)、不同深度的密集网络集合(ensemble of densenet)、googlenet、宽残差网络(wideresnet)进行比较。
35.预算批次分类结果如图4所示,我们用黑色曲线绘制了msnet在每个预算下的最佳验证精度。从图中可以看出,和其他方法相比,本发明在计算量相同的情况下,可以获得更好的分类精度。例如,在cifar

10上,在获得相同的性能时,本发明通常比其它方法少2倍多的计算量。此外,我们的方法的计算成本可以精确地调整,以实现在给定预算下的最佳性能。以上结论可以证明,本发明可以在分类精度和计算成本之间取得最佳的折衷。
36.实施例二将本发明所提供的技术方案应用在任意时刻预测场景中。在该场景下,网络可以在任意时刻被迫输出一个预测,我们假设所有测试样本是按顺序输出的,在该场景下无需寻找阈值,依次验证每个分类器的性能。在三种数据集上对网络进行了评估。第一个数据集是cifar

10,包含50000张训练图像和10000张测试图像,每张图像的大小是,对象总数是10。第二个数据集是cifar

100,它与第一个数据集具有相同数量的训练和测试图像,但有100类对象。我们从训练集中提取5000张图像来构建两个数据集的验证集。第三个数据集是imagenet,对于这个数据集,我们使用的训练图像和测试图像的数量分别是120万和50000,有1000种对象需要分类。我们从训练集中提取50000张图像来建立一个验证集。
37.利用本发明可以促进网络内不同分辨率特征之间的协作,使得在早期被视为“困难”的样本变得不再困难,有效地提高了计算效率。
38.为了验证本发明的有效性,分类结果分别与多尺度密集网络(msdnet)、分辨率自适应网络(ranet)、带中间分类器的残差网络()、带中间分类器的密集网络(
)、不同深度的残差网络集合(ensemble of resnets)、不同深度的密集网络集合(ensemble of densenet)、googlenet、宽残差网络(wideresnet)进行对比。首先,对原始图像进行裁剪,并输入到初始层中转换成不同分辨率的特征;紧接着,本发明设计了一个交叉融合模块促进不同分辨率特征之间的协作;最后,利用自适应蒸馏模块对网络进行训练。
39.本实施例的分类过程具体如下:1、利用一个初始层得到输入图片的不同分辨率的特征:对于cifar数据集,首先在图像四边用零填充四个像素,然后对填充后的图像进行随机裁剪,生成的样本,以0.5的概率水平翻转图像,最后每个样本通道减去通道均值再除以标准差进行归一化。对于imagenet数据集,我们将图像随机裁剪成大小作为训练集,在测试期间,首先将测试图像重新缩放到,然后裁剪一个大小的中心子图像进行测试。请注意,在cifar数据集上初始层产生3种分辨率的特征,而对于imagenet,则产生4种分辨率的特征。
40.2、将上一步产生的特征输入到提出的交叉融合模块中,多个这样的模块构成网络msnet,用于高效地推理:这里,不同数据集上msnet的参数设置如下:在cifar

10和cifar

100数据集上,msnet有3个分支,深度分别为30,18,8,基本特征的大小为。初始特征通道数分别为12,24和48,通道增长率分别为6,12和24。每个分支中的分类器数目为。对于imagenet,msnet包含4个分支,它们的深度分别为28,18,10,4。上一步中的初始特征大小为。初始特征通道数分别为32,64,128和256,通道增长率分别为16,32,64和128。分类器数目为,当分支有多个分类器时,在两个相邻的分类器之间使用两个卷积层。注意,在过渡层之后,增长率将被放大两倍。
41.3、利用提出的自适应蒸馏模块对网络进行训练,并在任意时刻预测场景下对网络进行验证:本发明使用自适应蒸馏模块中的公式(5)来计算分类损失,并反向传播来训练网络。我们使用动量为0.9、权值衰减为0.0001的随机梯度下降优化器来训练msnet。cifar和imagenet数据集的批次大小分别设置为128和256。另外,对于cifar数据集,我们使用余弦学习率曲线对网络进行300个epoch的重新训练,初始学习率为0.1,对于imagenet数据集,使用相同的训练方法,但是epoch设置为150。
42.为了验证本发明方法的效果,我们将本发明与多尺度密集网络(msdnet)、分辨率自适应网络(ranet)、带中间分类器的残差网络()、带中间分类器的密集网络()、不同深度的残差网络集合(ensemble of resnets)、不同深度的密集网络集合(ensemble of densenet)进行比较。
43.任意时刻预测的结果如图5所示,我们用黑色圆点绘制了msnet中每个分类器的准
确率和计算成本。例如,图中折线的7个黑色圆点分别表示网络内7个分类器的性能。从图中可以看出,和其他方法相比,由于不同分辨率之间的协同作用,本发明在所有数据集上,都能获得比其它方法更好的表现,msnet的精度比基线高约4

6%。特别是在imagenet数据集上,早期分类器的性能获得了约10%的性能增益,这可能归因于高分辨率分支的帮助。以上结论可以证明,无论是早期还是后期分类器,本发明都可以获得最佳的精度。
44.有益效果如下:在两种分类场景设置下,本发明方法的计算效率始终比多尺度密集网络(msdnet)、分辨率自适应网络(ranet)、带中间分类器的残差网络()、带中间分类器的密集网络()、不同大小的残差网络集合(ensemble of resnets)、不同大小的密集网络集合(ensemble of densenet)、googlenet、宽残差网络(wideresnet)的计算效率高;通过交叉融合模块和自适应蒸馏模块促进网络内不同分辨率特征之间的协作,使在低分辨率分支被视为“困难”的样本变得不再困难。此外,我们通过设置阈值使得本发明可以动态地停止推理,有效地提高了计算效率。
45.在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
46.以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献