模仿高效网络进行目标检测——知识蒸馏

摘要

链接:https://openaccess.thecvf.com/content_cvpr_2017/papers/Li_Mimicking_Very_Efficient_CVPR_2017_paper.pdf
当前的基于卷积神经网络(CNN)的目标检测器需要从预训练的ImageNet分类模型中初始化,这通常非常耗时。在本文中,我们提出了一种全卷积特征模仿框架来训练非常高效的基于CNN的检测器,这些检测器不需要ImageNet预训练,并且能够达到与大而慢的模型相竞争的性能。我们在训练中增加对大网络高级特征的监督,以帮助小网络更好地学习目标表示。更具体地说,我们对整个特征图中采样的特征执行了一种模仿方法,并使用一个转换层将小网络的特征映射到大网络相同的维度。在训练小网络时,我们优化了从两个网络特征图的相同区域采样的特征之间的相似性。我们在行人和常见目标检测任务上进行了广泛的实验,使用了VGG、Inception和ResNet。在Caltech和Pascal VOC上,我们展示了修改后的 2.5 × 2.5 \times 2.5×加速的Inception网络达到了与完整Inception网络相竞争的性能。我们的快速模型在Caltech上仅以轻微的性能下降为代价,在 1000 × 1500 1000 \times 1500 1000×1500的大输入上达到了80 FPS的帧率。

1、引言

目标检测是图像理解中的一个基本问题。它的目标是确定图像中对象的位置以及每个对象所属的类别。已经提出了许多基于深度卷积神经网络的目标检测方法,如Faster R-CNN[28]、R-FCN[6]和SSD[25]。与传统的DPM[12]等方法相比,这些基于CNN的框架在具有挑战性的数据集上取得了良好的性能。

自从开创性的工作R-CNN[14]以来,基于CNN的目标检测器需要预训练的ImageNet分类模型进行初始化以获得所需的性能。根据[22]中的实验,从头开始训练的Fast R-CNN[13]在Pascal VOC 2007上得到了40.4%的mAP(平均精度均值),而使用ImageNet预训练的AlexNet则得到了56.8%的mAP。由于这种现象,几乎所有的现代检测方法都只能训练那些在ImageNet上预训练过的网络,而不能从头开始训练网络以达到可比较的结果。结果是,我们只能使用为分类任务设计的网络,如AlexNet[23]、ZFNet[35]、VGGNet[30]和ResNet[17],这些网络并不一定是最适合检测的。由于这种限制,如果我们想要遍历不同的网络配置并找到更高效的网络,我们需要在ImageNet分类任务上预训练这些模型,然后在检测任务上进行微调。考虑到在多个GPU上训练一个ImageNet分类模型也需要数周的时间,这个过程非常昂贵。此外,在实验中我们发现,较小的网络在ImageNet分类任务上始终表现不佳,因此将它们微调用于检测也会导致较差的检测性能。

在本文中,我们希望训练更高效的目标检测网络,而无需ImageNet预训练。更重要的是,我们仍然需要实现与大型ImageNet预训练模型相竞争的性能。基本思想是,如果我们已经有一个在检测方面达到满意性能的网络,那么这个网络就可以用来监督其他网络进行检测训练。问题就变成了如何使用一个检测网络来监督一个更高效的网络,并保持其检测准确性。

类似的想法已经在标准的分类任务中使用过,如[18,2]。然而,我们发现它们对于这种更复杂的检测任务效果并不理想。主要问题在于如何从检测的真实标签以及来自不同网络的监督中添加监督信息,以及在哪里添加这些监督信息。

我们在目标检测中提出的模仿解决方案来自于对现代基于CNN的检测器的观察,包括Faster R-CNN[28]、R-FCN[6]、SSD[25]和YOLO[27]。它们都计算一个特征图,然后使用不同的方法从特征图中解码检测结果。因此,检测器实际上可以被分为联合训练的特征提取器和特征解码器。大型网络和更高效的网络之间的差异在于特征提取器。为此,我们的理念是在特征提取器生成的特征图上添加模仿监督;在最终的特征解码器上添加真实标签监督。对于模仿监督,我们在小网络生成的特征图之上定义了一个变换,生成一个新的特征。我们想要最小化这个新特征与大型网络生成的特征之间的欧几里得距离。

对于真实标签监督,它与原始检测器相同,例如Fast R-CNN中的联合分类和定位损失。在训练过程中,我们首先提取由大型网络生成的每个训练图像的特征图,然后使用这些特征图和检测注释来联合训练从小型网络初始化的检测器。一个问题是特征图的维度非常高,我们发现直接模仿特征图并不会如预期那样收敛。由于特征提取器是基于区域或候选区域的,我们从区域中采样特征进行优化,这导致了令人满意的结果。

本文提出的特征图模仿技术可以自然地扩展。第一个扩展是我们可以跨尺度进行模仿。在基于CNN的检测中,如果我们能将输入图像的宽度和高度减半,那么只需要1/4的计算量。然而,这通常会导致性能显著下降。我们展示了可以定义一个简单的变换来将特征图上采样到较大尺度,然后模仿变换后的特征图。另一个扩展是我们可以将模仿技术扩展为一个两阶段过程,以进一步提高性能。
在这里插入图片描述

我们在Caltech行人检测和Pascal VOC目标检测任务上进行了实验,使用了R-FCN和Faster R-CNN。在Caltech和Pascal VOC上,我们都展示了模仿模型展示出了比从ImageNet预训练模型微调得到的模型更好的性能。如表1所示,参数只有1/4的模型达到了与完整Inception网络相似的性能,而更快的模型在Caltech检测任务上实现了4.5倍的加速和16倍的压缩,仅有微小的性能下降。

2、相关工作

相关工作包括最近基于CNN的目标检测、网络模仿和网络训练,以及网络加速。

一个开创性的基于CNN的目标检测方法是RCNN [14],它使用微调后的CNN从对象提议中提取特征,并使用SVM进行分类。空间金字塔池化 [16] 和Fast R-CNN [13] 在共享特征图的顶部提取特征,以加速R-CNN。Faster R-CNN [28] 通过在共享特征图中预测区域提议并对提议进行分类来进一步改进。最近的工作R-FCN [6] 提出了位置敏感得分图来共享更多计算。R-CNN系列将目标检测视为两步问题,包括区域提议生成和区域分类。最近,已经提出了一阶段方法,如YOLO和SSD。所有这些方法都需要计算特征图,这是计算中最耗时的部分。我们提出的模仿技术在Faster R-CNN和R-FCN上进行了验证,但可以自然地扩展到SSD、YOLO和其他基于CNN特征图的方法。

网络模仿或蒸馏是最近引入的模型加速和压缩方法,由[18,2]等人提出,旨在训练一个更紧凑的模型,使其能够从大型模型的输出中学习。[29] 通过实现更深的学生模型和从教师网络学习的中间表示中的提示来进一步改进这种方法。然而,据我们所知,所有这些模仿工作都仅在简单的分类任务上进行了验证 [18,2,29,33]。在本文中,我们展示了如何将模仿技术扩展到更具挑战性的目标检测任务中,并如何使用它来训练更高效的目标检测器。
已经有一些工作被提出来以提供更好的初始化或替代ImageNet预训练。[22] 设置网络的权重,以便网络中的所有单元以大致相同的速率进行训练,以避免梯度消失或爆炸。[1]和[8]从视频中学习无监督的表示,而[8]使用空间上下文作为训练的监督信号来源。这些方法比从头开始随机训练表现得更好,但它们与ImageNet预训练的方法之间仍然存在很大的性能差距。最近的工作[19]详细分析了ImageNet特征。

我们的工作也与网络加速相关。[7, 20, 24]通过线性分解加速CNN的单层,而[38]考虑了非线性近似。[34]使用量化来加速卷积操作。[15]结合了剪枝、量化和霍夫曼编码来压缩参数。[31,10,5,26]提出了使用二进制权重来近似网络。这些方法加速或压缩了给定的网络,但并没有改变网络结构本身。我们在本文中提出的模仿技术与这些方法正交,并且可以结合起来以实现进一步的加速。

3、对象检测的模仿学习

3.1、Logits 模仿学习

模仿学习的主要思想是从大型模型或大型模型集合的软目标或logits(softmax之前的预测)中训练一个小型神经网络。这些携带大型复杂模型学习到的有用信息的软目标,使得小型网络能够近似大型网络的复杂函数。如[2]所述,我们想要小型网络优化的目标损失函数是logits回归,并给出训练数据 { ( x ( 1 ) , z ( 1 ) ) , … , ( x ( T ) , z ( T ) ) } \left\{\left(x^{(1)}, z^{(1)}\right), \ldots,\left(x^{(T)}, z^{(T)}\right)\right\} {(x(1),z(1)),,(x(T),z(T))} L 2 \mathrm{L} 2 L2损失:

L ( W ) = 1 2 T ∑ t ∥ g ( x ( t ) ; W ) − z ( t ) ∥ 2 2 , \mathcal{L}(W)=\frac{1}{2 T} \sum_{t}\left\|g\left(x^{(t)} ; W\right)-z^{(t)}\right\|_{2}^{2}, L(W)=2T1t g(x(t);W)z(t) 22,

其中 W W W是神经网络的权重, g ( x ( t ) ; W ) g\left(x^{(t)} ; W\right) g(x(t);W)是模型对第 t t t个训练数据的预测。通过模仿大型模型的logits,大型复杂模型学习到的知识可以转移到小型快速模型中,从而使其能够达到与大型模型一样准确的结果。

据我们所知,模仿方法作为一种模型加速和压缩技术,仅被应用于分类任务[2,18]。我们想要将这一思想扩展到对象检测任务中,以训练小型快速的目标检测器。不同于分类任务中的单类别分数预测,目标检测网络通常预测整个图像的对象分数和对象位置。一个直观的想法是训练小型网络以匹配大型网络的两个输出。我们的实验表明,在目标检测框架中,通过这种简单的logits匹配方法很难将知识转移到小型模型中。模仿模型在仅由真实标签监督的训练数据上的表现,比从ImageNet预训练模型微调得到的模型更差。

3.2、特征图模仿学习

最近先进的目标检测算法[28, 25, 27]都是全卷积网络,这些网络将整张图像一次性通过深度卷积网络进行前向传播,然后在特征图上提取候选窗口的特征。在目标检测中,特征至关重要,因为物体的分数和位置都是基于特征图进行预测的。因此,在两个检测网络之间模仿输出特征图更为合理。

我们提出了一种特征图模仿方法,旨在训练小型模型来模仿大型模型在统一的全卷积网络目标检测流程中的特征图激活。这些特征来自神经网络的最后一个卷积层,不仅包含了响应强度的信息,还包含了它们的空间位置信息[16]。但与分类网络中softmax之前的logits不同,其维度与类别数量相关,全卷积网络的特征依赖于输入大小和网络架构,是高维度的。对于一个典型的 600 × 1000 600 \times 1000 600×1000 Pascal VOC图像通过VGG16模型后,网络的输出是一个维度达到百万级的特征。直接在这两个高维输出特征图之间进行回归是困难的。我们的实验结果表明,模型在训练过程中难以收敛。此外,特征图包含了整个图像的响应信息。在只包含少数对象或对象尺度都很小的图像中,特征图上的大部分区域只会有较弱的响应。如果我们直接在整个特征图上进行全局模仿学习,对象的对应关系信息可能会被忽略或降低。对于全卷积网络目标检测器来说,与全局上下文特征相比,对象所在局部区域的特征包含了更多对于目标检测具有代表性的信息。

因此,我们提出了一种新的全卷积网络特征模仿方法,通过模仿从提案区域中采样的特征来解决全卷积特征图的高维回归问题。基于提案采样的特征模仿方法还可以使小型网络更加关注从大型模型中学习感兴趣区域的特征,而不是全局上下文特征。通过使用空间金字塔池化[16],可以从小型网络和大型网络的特征图中根据不同比例和大小的边界框来采样局部区域特征。然后,通过后续的变换层[29],将小型网络特征图上的采样特征回归到与大型模型相同的维度。小型网络意图最小化的损失函数定义为

L ( W ) = λ 1 L m ( W ) + L g t ( W ) , L m ( W ) = 1 2 N ∑ i ∥ u ( i ) − r ( v ( i ) ) ∥ 2 2 , L g t ( W ) = L d s ( W ) + λ 2 L r e g ( W ) , \begin{array}{c} \mathcal{L}(W)=\lambda_{1} \mathcal{L}_{m}(W)+\mathcal{L}_{g t}(W), \\ \mathcal{L}_{m}(W)=\frac{1}{2 N} \sum_{i}\left\|u^{(i)}-r\left(v^{(i)}\right)\right\|_{2}^{2}, \\ \mathcal{L}_{g t}(W)=\mathcal{L}_{d s}(W)+\lambda_{2} \mathcal{L}_{r e g}(W), \end{array} L(W)=λ1Lm(W)+Lgt(W),Lm(W)=2N1i u(i)r(v(i)) 22,Lgt(W)=Lds(W)+λ2Lreg(W),

其中, L m \mathcal{L}_{m} Lm 是特征模仿的 L 2 \mathrm{L} 2 L2损失, L g t \mathcal{L}_{g t} Lgt 是[13]中描述的区域提案网络的分类和回归损失函数, λ 1 \lambda_{1} λ1 λ 2 \lambda_{2} λ2 是损失权重平衡参数。 N N N 是我们采样的提案总数, u ( i ) u^{(i)} u(i) 是基于第 i th  i^{\text {th }} ith  个提案,通过空间金字塔池化从大型模型的特征图中采样的特征。 v ( i ) v^{(i)} v(i) 是小型网络的采样输出特征, r r r 是将 v ( i ) v^{(i)} v(i) 变换到与 u ( i ) u^{(i)} u(i) 相同维度的回归函数。通过优化这个损失函数,小型网络可以在真实标签和来自大型模型的额外监督下进行训练。
关于模仿损失的一个潜在问题是,在训练过程中,其值可能会变得很大,因此必须在特征监督和真实标签的监督之间仔细设置平衡权重参数,以更好地优化网络。此外,空间金字塔池化在进行池化过程中可能会导致信息丢失。

因此,我们进一步改进了模仿目标损失函数,通过实现区域提案中提取的特征的L2损失,并在计算损失时进行归一化。之后,训练过程变得更加稳定,我们可以简单地将平衡权重设置为1。新的模仿损失函数定义如下:

L m ( W ) = 1 2 N ∑ i 1 m i ∥ u ( i ) − r ( v ( i ) ) ∥ 2 2 , \mathcal{L}_{m}(W)=\frac{1}{2 N} \sum_{i} \frac{1}{m_{i}}\left\|u^{(i)}-r\left(v^{(i)}\right)\right\|_{2}^{2}, Lm(W)=2N1imi1 u(i)r(v(i)) 22,

其中, m i m_{i} mi 是通过第 i th  i^{\text {th }} ith  个区域提案提取的特征的维度。与方程(3)中将特征提取并池化到相同维度不同,这里的特征直接从特征图中提取,并且每个区域提案的特征维度都是不同的。

3.3、网络架构和实现细节

我们在最先进的目标检测框架Faster-RCNN[28]和R-FCN[6]上集成了特征图模仿方法。训练过程可以分为两个阶段。第一阶段是使用特征模仿方法训练一个区域提案网络(Region Proposal Network,RPN)。RPN本身可以看作是一个有效的提案生成器,同时也是一个单类别目标检测器。对于一般的目标检测任务,我们可以首先训练RPN,然后在第二阶段在其基础上联合微调Faster-RCNN网络或R-FCN网络。
在这里插入图片描述

特征模仿训练的框架如图1所示。一个大型的Faster-RCNN或R-FCN网络通过常规方式训练,通过训练数据上的真实标签监督来优化softmax损失和平滑的L1损失。特征模仿架构包含两个网络。大型网络使用预训练好的检测网络的权重进行初始化,并在训练过程中固定其层。小型网络则随机初始化。在小型网络的末尾添加一个区域提案网络来生成目标提案。最初,整个图像会同时通过两个网络以产生两个不同的特征图。给定小型网络上RPN生成的提案区域,采样器将在大型网络和小型网络的特征图上提取提案区域的特征。整个框架通过方程(5)定义的损失进行端到端的训练。在我们的训练中,所有损失权重( λ 1 \lambda_{1} λ1 λ 2 \lambda_{2} λ2)都设置为1。

在第二阶段,我们从训练数据集上的区域提案网络微调一个Faster R-CNN或R-FCN检测网络,并随机初始化所有新添加的层。推理过程与原始的Faster-RCNN或R-FCN相同,没有增加任何参数。我们的实现使用了Caffe[21]。

3.4、两阶段模仿

在第二阶段仅通过真实标签的监督进行微调可能会降低在第一阶段通过模仿学到的特征。Faster-RCNN或R-FCN检测器的预测可以被视为一个分类任务。因此,我们可以在检测流程的第二阶段添加逻辑匹配监督,以进一步将大型检测模型的知识转移到小型模型上。此外,通过两阶段模仿,不仅可以将与提案相关的信息传递给小型网络,还可以将大型模型学到的类别分类信息传递给小型网络。来自大型模型的更丰富信息可以进一步帮助小型网络模仿大型模型。我们可以简单地从模仿的区域提案网络微调检测网络,并添加预测的分类逻辑和边界框回归值的L2回归损失。实验结果表明,两阶段模仿在第二阶段微调模仿的RPN模型的基础上,进一步提高了小型网络的性能。

3.5. 跨尺度的模仿

我们进一步扩展了特征图模仿,以改善在减小输入大小时的检测性能。除了网络复杂度之外,输入图像尺度也是目标检测框架速度的一个关键因素。目标检测器在小尺度对象上的表现较差[9]。在Caltech数据集上的实验表明,在 480 × 640 480 \times 640 480×640像素上训练和测试的检测器远不如在 1000 × 1500 1000 \times 1500 1000×1500像素上训练和测试的检测器。虽然提出了多尺度测试[13]、层次特征融合[3]和空洞算法[4]等技术来提高小目标的检测性能,但在推理时间上也会带来较大的时间成本增加。

检测中小尺度性能下降的主要原因是,在卷积网络下采样后,小目标的特征在最终的特征图中变得非常小。特征模仿本质上是通过特征回归训练,以实现两个特征图之间的某种激活相似性。我们可以简单地在最终的特征图上添加一个反卷积层来放大特征图,然后模仿大输入网络的特征图以提高性能。
在这里插入图片描述

如图2所示,图像通过一个步长为16的网络传递,生成一个特征图;同一图像尺寸减半后通过步长为8的网络传递,生成一个类似大小的特征图。然后我们在训练过程中对这两个特征图执行特征图模仿方法。我们的实验表明,给定小尺度的输入,模仿方法可以显著提高检测器的性能。

4、实验

我们在Caltech行人检测基准[9]和PASCAL VOC 2007对象检测基准[11]上全面评估了我们的方法。

4.1、在Caltech上的实验

在Caltech上,我们使用[37]提供的新注释的 10 × 10 \times 10×训练数据训练我们的模型,并选择仅包含训练数据集中真实边界框的图像,总共有约 9 k 9\mathrm{k} 9k张图像。标准测试集包含4024帧,用于在新注释下的合理评估设置下进行评估。我们遵循[37],使用的评估指标是每图假阳性(FPPI)在 [ 1 0 − 2 , 1 0 0 ] \left[10^{-2}, 10^{0}\right] [102,100]范围内的对数平均漏检率(表示为 M R − 2 M R_{-2} MR2)和在 [ 1 0 − 4 , 1 0 0 ] \left[10^{-4}, 10^{0}\right] [104,100]范围内的对数平均漏检率(表示为 M R − 4 M R_{-4} MR4)。

在模仿学习流程中,小网络的性能直接取决于大模型。因此,在实验中训练一个高性能的大模型是很重要的。我们实现了区域提案网络(Region Proposal Network)和R-FCN检测框架,并基于GoogLeNet Inception网络架构[32]在Caltech上取得了具有竞争力的检测结果。

在Caltech数据集上使用原始图像大小 640 × 480 640 \times 480 640×480像素来联合训练Region Proposal Network(RPN)和R-FCN检测网络,很难达到当前最先进方法[36]的性能。该方法的 M R − 2 M R_{-2} MR2仅为 14.64 % 14.64\% 14.64%。考虑到Caltech数据集中大多数行人的高度都低于80像素,这对检测器来说是一个相当大的挑战,我们将图像重新缩放,使其较短的边为1000像素。我们在单尺度图像上训练和测试RPN和R-FCN网络。对于RPN锚点,我们使用2种长宽比 2 : 1 , 3 : 1 2:1, 3:1 2:1,3:1和3种尺度,框的面积分别为 4 2 , 8 2 , 1 6 2 4^{2}, 8^{2}, 16^{2} 42,82,162。RPN和R-FCN网络在预训练的ImageNet分类模型上联合训练,这是标准做法。我们微调Inception网络的所有层,并且所有新层都按照[28]中的描述进行随机初始化。我们在前 30 k 30\mathrm{k} 30k个mini-batches中使用0.001的学习率,在接下来的 10 k 10\mathrm{k} 10k个mini-batches中使用0.0001的学习率。动量设置为0.9,权重衰减为0.0005。如表2所示,最终的检测结果为 M R − 2 = 7.15 % M R_{-2}=7.15\% MR2=7.15%。Region Proposal Network可以视为单类别检测器,因此我们在实验中也报告了RPN独立运行的性能。
在这里插入图片描述

考虑到我们不是要考察哪种网络架构在对象检测任务上表现更好,而是想研究特征模仿方法是否可以提高小网络的性能。因此,我们在实验中使用了简单设计的小网络结构。我们在实验中使用的小网络是修改过的Inception网络。 1 / n 1/n 1/n-Inception网络表示与Inception网络具有相同深度的网络,但其每个卷积层仅包含Inception网络滤波器数量的 1 / n 1/n 1/n。我们在实验中模仿的特征图是Inception-4d层的输出。不同R-FCN网络的测试时间列在表3中。
在这里插入图片描述

首先,我们评估了第3.1节和第3.2节中提到的朴素logits模仿和整个特征图回归模仿方法。在对象检测中的朴素logits模仿是优化两个区域提案网络之间的软目标和预测回归值之间的L2损失。整个特征图回归则是将小网络训练为两个高维特征的回归问题。logits模仿和整个特征图回归模仿的结果如表4所示。与大型模型相比,模仿的模型在性能上有很大的下降。小网络很难通过简单的logits匹配或全局特征回归来模仿大型模型。
在这里插入图片描述

接下来,我们按照第3.3节中描述的基于提案采样的特征图模仿方法架构,在Caltech数据集上端到端地训练 1 / 2 1/2 1/2-Inception网络。在第一阶段,我们使用 1 / 2 1/2 1/2-Inception网络来模仿由预训练的Inception RPN特征图提取的特征,这些特征是由 1 / 2 1/2 1/2-Inception网络在训练过程中生成的区域提案提取的。我们在两个网络的特征图上使用128个RoI(感兴趣区域)来采样特征,RoI中正样本和负样本的比例为1:1。Inception RPN和模仿的 1 / 2 1/2 1/2-Inception RPN的结果对比如表5所示。模仿模型仅使用 1 / 4 1/4 1/4的参数就达到了与大型模型相当的性能,但速度快了 2.5 2.5 2.5倍。

在第二阶段,我们根据第一阶段训练的Region Proposal Network微调R-FCN网络。由于RPN层在第一阶段已经训练得足够好,所以RPN层的学习率被设置为新添加层的 1 / 10 1/10 1/10。在R-FCN中,RoI的输出大小被设置为 7 × 7 7 \times 7 7×7。第二阶段微调的结果可以在表6中找到。模仿+微调网络在 M R − 2 M R_{-2} MR2指标上达到了与大型网络相似的性能,甚至在 M R − 4 M R_{-4} MR4指标上获得了更好的性能。
在这里插入图片描述

为了比较特征模仿方法与直接使用真实标签监督在训练数据集上训练模型的传统方法,我们从零开始训练了一个 1 / 2 1/2 1/2-Inception R-FCN。如[14]所述,在ImageNet分类任务上预训练的模型进行微调后的性能,通常比从头开始训练的模型性能更好。因此,我们还在ImageNet数据集上预训练了一个 1 / 2 1/2 1/2-Inception网络,并从预训练模型微调R-FCN检测网络。结果如表6和图3所示。结果显示,通过特征模仿学习训练的模型在 M R − 2 M R_{-2} MR2 M R − 4 M R_{-4} MR4指标上均表现出优于从头开始训练的模型和从ImageNet预训练模型微调后的模型。
在这里插入图片描述

我们进一步在不同的较小网络上进行了实验。表7的实验结果证明了特征模仿方法通常可以提高不同小网络的性能。模仿模型与从头开始训练的模型之间存在较大的性能差距。像 1 / 4 1/4 1/4-Inception和 1 / 8 1/8 1/8-Inception这样的小型网络在ImageNet数据集上很难训练。通过特征模仿来训练小型网络更为高效。 1 / 4 1/4 1/4-Inception网络,其参数量约为Inception网络的 1 / 16 1/16 1/16,但仍能达到与大型网络相当的性能。
在这里插入图片描述

我们还训练了另一个基于VGG网络的大型R-FCN检测器和基于ResNet网络的Faster R-CNN模型,以评估特征模仿方法的泛化能力。表8和表14的结果表明,特征模仿方法可以帮助训练一个小型网络来模仿一个具有完全不同网络架构的大型模型。模仿的 1 / 2 1/2 1/2-Inception模型在性能上与大型模型相似,但在推理时快了 10 10 10倍。同时,对于相同的小型网络,大型模型的性能对于模仿学习也很重要。从Inception模型模仿的模型性能优于从VGG模型模仿的模型,因为Inception模型在性能上优于VGG模型。
在这里插入图片描述

除了从第一阶段得到的模仿模型微调R-FCN之外,我们还在训练过程中同时使用真实标签和大型网络的logits来监督小型网络的R-FCN训练。实验证明,两阶段模仿学习在表9中进一步提高了小型模型的性能。
在这里插入图片描述

输入图像的大小对于目标检测器的性能至关重要。如表10所示,当输入图像大小为 480 × 640 480 \times 640 480×640时,Inception R-FCN模型在Caltech上的 M R − 2 M R_{-2} MR2仅为 14.64 % 14.64\% 14.64%。仅仅在最终特征图的顶部添加一个反卷积层并不能带来任何性能提升。我们在具有较大输入的网络的特征和具有较小输入但在特征图顶部添加了反卷积层进行上采样的网络的特征上实施了特征图模仿方法。实验结果表明, M R − 2 M R_{-2} MR2有了显著的下降,而时间成本仅略有增加( 3.5 ms 3.5 \text{~ms} 3.5 ms)。

4.2、在PASCAL VOC上的实验

为了评估我们的特征模仿学习方法在不同检测框架和更复杂的常见目标检测任务上的性能,在本节中,我们介绍了基于Faster R-CNN框架的PASCAL VOC[11]常见目标检测基准的模仿学习方法。实验结果表明,我们的特征模仿方法可以很好地泛化到不同的检测框架和目标检测任务上。

遵循[28]中的方法,对于PASCAL VOC 2007测试集,我们使用VOC 2007中的 5 k 5 \text{k} 5k张trainval图像和VOC 2012中的 16 k 16 \text{k} 16k张trainval图像进行训练(07+12)。训练Faster R-CNN的超参数与[28]中相同。我们在训练数据集上联合训练一个区域提案网络(Region Proposal Network, RPN)和Fast R-CNN模型作为我们想要模仿的大型模型。由于篇幅限制,我们只报告了实验的mAP(平均精度均值)。更详细的结果可以在附录中找到。我们基于Inception网络架构训练的大型模型在VOC 2007测试集上达到了 75.7 % mAP 75.7\% \text{mAP} 75.7%mAP。在模仿训练过程中,我们首先在第一阶段从大型模型中模仿一个小型RPN,然后在第二阶段从这个预训练模型微调Faster R-CNN,或者使用两阶段模仿技术来训练常见目标检测模型。
在这里插入图片描述

在PASCAL VOC上的模仿实验与Caltech类似,只不过PASCAL VOC是一个常见的目标检测任务。在第一阶段我们模仿的区域提案网络(Region Proposal Network, RPN)只能预测与类别无关的提案,因此我们通过每幅图像最多给出的300个提案的召回率来评估使用模仿方法训练的RPN的性能。为了更全面的评估,我们还报告了当将IoU阈值设置为0.7时真正例的召回率。我们期望更严格的评估可以用于不同提案模型之间更好的性能比较。第二阶段训练的对象检测器则使用mAP(平均精度均值)进行评估。第一阶段模仿的RPN模型达到了与大型模型相似的召回率,并且优于从头开始训练或从ImageNet预训练模型微调得到的模型(如表11所示)。
在这里插入图片描述

在第二阶段,我们基于第一阶段训练的RPN模型微调了一个Faster R-CNN。基于 1 / 2 1/2 1/2-Inception的Faster R-CNN模型性能优于从ImageNet预训练模型微调得到的模型,并且远胜于从头开始训练的模型。结果如表12所示。

我们进一步对更小的模型进行了实验。在ImageNet分类任务上训练小型模型是困难的。因此,我们将使用模仿方法训练的模型与在训练数据集上从头开始训练的模型进行了比较。使用模仿方法训练的模型远胜于从头开始训练的模型,如表13所示。此外,实验还表明,两阶段模仿可以进一步提高模仿方法的性能。
在这里插入图片描述

我们还在表15中展示了在提取器不同位置进行模仿的实验。结果表明,模仿最后一个共享特征图是最好的选择。

5、结论

在本文中,我们提出了一种特征模仿方法来进一步将模仿方法扩展到目标检测任务中。通过大型网络特征的监督,我们可以从头开始训练网络,实现比从ImageNet预训练模型微调更好的性能。此外,我们的方法使得训练出与大型模型一样准确但更快、更紧凑的检测模型成为可能。在Caltech和PASCAL VOC上的实验中,通过模仿训练得到的参数仅为大型Inception模型 1 / 4 1/4 1/4、速度提升 2.5 2.5 2.5倍的模型,实现了与大型模型相似的性能。基于特征图的模仿方法有可能扩展到其他基于全卷积网络的任务中,如语义分割,这将是未来的工作方向。

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

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

相关文章

Java整合ELK实现日志收集 之 Elasticsearch、Logstash、Kibana

简介 Logstash:用于收集并处理日志,将日志信息存储到Elasticsearch里面 Elasticsearch:用于存储收集到的日志信息 Kibana:通过Web端的可视化界面来查看日志(数据可视化) Logstash 是免费且开放的服务器端数…

AI办公自动化:用kimi批量将word文档部分文件名保存到Excel中

文件夹中有很多个word文档,现在只要英文部分的文件名,保存到一个Excel文件中。 可以在kimi中输入提示词: 你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下: 打开文件夹:…

数据集002:眼疾识别数据集 (含数据集下载链接)

说明 病理性近视(Pathologic Myopia,PM)的医疗类数据集,包含1200个受试者的眼底视网膜图片,训练、验证和测试数据集各400张。 说明: 如今近视已经成为困扰人们健康的一项全球性负担,在近视人…

斯坦福2024人工智能指数报告 1

《人工智能指数报告》由斯坦福大学、AI指数指导委员会及业内众多大佬Raymond Perrault、Erik Brynjolfsson 、James Manyika、Jack Clark等人员和组织合著,旨在追踪、整理、提炼并可视化与人工智能(AI)相关各类数据,该报告已被大多…

RedHat9 | DNS剖析-建立子域并进行区域委派

一、实验环境 1、委派DNS服务器 域名空间由多个域构成,DNS提供了将域名空间划分为1个或多个区域的方法,这样使得管理更加方便。在域的规模增大后,可以为域添加附加域,上级域为父域,下级域为子域,下列案例…

韩顺平0基础学Java——第11天

p234-249 又一个月了,时间过得好快啊,希望支棱起来 可变参数 public int sum(int ... nums){ } 这个nums是数组 细节: 1可变参数可以为0个,或任意个 2可变参数的实参可以为数组 3可变参数的本质就是数组 4可变参数可以和普通…

Golang | Leetcode Golang题解之第113题路径总和II

题目: 题解: type pair struct {node *TreeNodeleft int }func pathSum(root *TreeNode, targetSum int) (ans [][]int) {if root nil {return}parent : map[*TreeNode]*TreeNode{}getPath : func(node *TreeNode) (path []int) {for ; node ! nil; no…

冯喜运:5.27黄金暴跌大阴后出现“暂定符”今日黄金原油操作策略

【黄金消息面分析】:金价虽然有大阴线暴跌,但依然属于超买后的调整而非熊市,对中长线投资者来说只是市场洗牌。因此,在出现企稳迹象之后,随时关注反弹时机的启动。未来几日,黄金空头可能在进一步发力之前需…

【数据结构与算法 经典例题】相交链表

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:数据结构与算法刷题系列(C语言) 期待您的关注 目录 一、问题描述 二、解题思路 方法一:双循环对比法 方…

LangChain llamaindex

LangChain 参考: 全流程 | Windows 系统本地部署开源模型阿里通义千问 QWEN 1.5,结合 LangChain-Chatchat 框架和向量数据库 FAISS、Milvus - 知乎

redis数据操作相关命令

1.list操作 1.1 rpush rpush:新的元素添加到list最右边 #从右边依次往List添加1,2,3 RPUSH name 1 RPUSH name 2 RPUSH name 3#查看列表:返回 1,2,3 LRANGE name 0 -1结果如下: 1.2 lpush lpush:新加的元素在list最左边 #从…

ElasticSearch学习篇12_《检索技术核心20讲》基础篇

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243 课程分为基础篇、进阶篇、系统案例篇 主要记录企业课程学习过程课程大纲关键点,以文档形式记录笔记。 内容 检索技术:它是更底层的通用技术&#xff0c…

GVM: Golang多版本管理利器

本文介绍了 Go Version Manager 的功能和使用方法,介绍了如何通过 GVM 在系统上安装和管理多个 Go 语言版本。原文: GVM: Go Version Manager, for Golang manage multiple versions Go 版本管理器(GVM,Go Version Manager)是一款…

Django框架css文件能正常加载,但是css样式不生效

最近运行一个Django项目,能正常启动运行,css文件也能够正常加载,但是css样式却没有正常渲染。 解决办法: 1、打开注册表:winR 2、找到:计算机\HKEY_CLASSES_ROOT\.css 修改:Content Type 值&…

llamaindex rag agent 检索文档进行分析

两个 pdf 分别是两个电商公司的财报之类的,像分析这两家公司的盈利情况,利用 llamaindex 的 rag 检索盈利的部分,来对比 使用 tongyi,如果指定,默认是 openai 了 # 加载电商财报数据 from llama_index.core import S…

C++ | Leetcode C++题解之第113题路径总和II

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> ret;unordered_map<TreeNode*, TreeNode*> parent;void getPath(TreeNode* node) {vector<int> tmp;while (node ! nullptr) {tmp.emplace_back(node->val);node …

mysql中单表查询方法

大家好。我们知道&#xff0c;mysql有一个查询优化器的模块。当我们用sql语句查询表中记录时&#xff0c;会对这条查询语句进行语法解析&#xff0c;然后就会交给查询优化器来进行优化&#xff0c;优化后生成一个执行计划&#xff0c;这个执行计划表明了应该使用哪些索引进行查…

Android 10.0 锁屏页面弹窗功能实现

1.前言 在10.0的系统rom产品定制化开发中,在定制化开发中,需要在锁屏页面弹窗功能,当收到某些信息的时候,需要添加 悬浮窗锁屏页面也同样需要弹窗功能,接下来就分析下相关功能,然后实现功能 2.锁屏页面弹窗功能实现的核心类 frameworks\base\core\java\android\view\Wi…

用c++用4个凸函数(觉得啥好用用啥)去测试adam,rmsprop,adagrad算法的性能(谁先找到最优点)

为了测试 Adam、RMSProp 和 Adagrad 算法的性能&#xff0c;你可以使用四个凸函数进行实验。以下是一些常用的凸函数示例&#xff1a; Rosenbrock 函数&#xff1a; Booth 函数&#xff1a; Himmelblau 函数&#xff1a; Beale 函数&#xff1a; 你可以选择其中一个或多…

生命在于学习——Python人工智能原理(1.2)

一、人工智能的基本知识 6、新一代人工智能驱动因素 &#xff08;1&#xff09;数据量爆发性增长。 &#xff08;2&#xff09;计算能力大幅提升 &#xff08;3&#xff09;深度学习等算法发展 &#xff08;4&#xff09;移动AI创新应用牵引 7、人工智能关键技术 &#x…