美文网首页
通过知识蒸馏提高轻量深度估计

通过知识蒸馏提高轻量深度估计

作者: Valar_Morghulis | 来源:发表于2023-01-11 17:05 被阅读0次

Boosting Light-Weight Depth Estimation Via Knowledge Distillation

https://arxiv.org/abs/2105.06143

深度估计的高级性能是通过使用大型复杂的神经网络实现的。虽然性能仍在不断提高,但我们认为深度估计也必须有效,因为它是现实应用的初步要求。然而,快速深度估计往往会降低性能,因为模型的容量和精度之间存在权衡。在本文中,我们的目标是通过轻量级网络实现精确的深度估计。为此,我们首先介绍了一种高度紧凑的网络,它可以实时估计深度图。然后,我们开发了一个知识蒸馏范式,以进一步提高性能。我们观察到,许多场景在现实世界中具有相同的场景比例,产生了相似的深度直方图,因此它们具有潜在的价值,适用于开发更好的学习策略。因此,我们建议使用辅助的未标记/标记数据来改进知识蒸馏。通过广泛而严格的实验,我们表明,我们的方法仅用1%的参数就可以实现与最先进的方法相当的性能,并且在推理精度、计算效率和可推广性方面优于以前的轻量级方法。

一、 引言

作为深度传感器的一种经济且方便的替代方案,单目深度估计在障碍物回避[26]、同时定位和映射(SLAM)[40]、[11]、机器人导航[28]等方面有着广泛的应用,因此长期以来备受注意[17]、[15]、[20]、[8]。在过去几年中,由于深度学习的快速发展,它进一步取得了重大进展。

之前的大多数工作仅注意于估计精度的提高[10],[20],[16]。然而,深度估计必须在计算上高效且准确。这对于计算资源有限的机器人系统至关重要。尽管一些先前的工作已经尝试使用轻量级网络来提高计算效率[43],[30],但成本是推理精度的显著降低。据我们所知,目前还没有轻量级深度估计的工作能够达到与最先进的方法相同的水平或至少相当的性能。

在本文中,我们从推理精度和计算效率方面研究了单目深度估计。我们的目标是以最小的计算时间成本实现精度的最大提高。为此,我们首先引入了一个轻量级网络,其目标是模型压缩。与逐渐对中间特征进行上采样的传统编码器-解码器架构不同,我们首先将编码器多层提取的特征图压缩到每个尺度上固定的少量通道,然后将其上采样到相同的分辨率。然后将这些特征图连接起来并馈送到两个卷积层以产生最终的深度图。由于上述设计,基于MobileNetv2构建的网络只有1.7M个参数,因此与以前的方法相比,模型复杂度最小。

然后,我们考虑如何在使用轻量级网络时解决低推理精度问题。图像分类中的一个常见解决方案是使用知识蒸馏(KD)在大网络(即教师)的指导下促进小网络(即学生)。先前的研究倾向于引入复杂的策略来提高KD,例如提取中间特征[34]、多教师蒸馏[39]、[22]、对抗性蒸馏[41]。

我们考虑一种更直观的方式来使用辅助数据来促进KD。我们的动机有两个方面:首先,由于深度估计是从RGB空间到深度空间的非线性映射,KD以数据驱动的方式近似此函数。因此,我们拥有的有价值的数据越多,我们就可以更准确地估计映射。第二,与图像识别不同,没有相同类别的数据被认为是分布外数据,通常对KD有害。由于深度估计是一项回归任务,因此辅助数据很容易收集。例如,室内场景具有类似的结构和场景规模,如图2所示。

我们特别研究了两种情况,即标记和未标记数据。在标记的情况下,真值可以通过深度传感器获得,例如Kinect。在未标记的情况下,辅助数据可以在场景比例相似的场景中由视觉摄像机简单地收集。因此,在实际应用中,使用辅助数据提高性能对于深度估计更为实用。在本文中,我们建议针对这两个具体案例采取以下学习策略。

•当辅助数据未标记时,我们首先用原始标记集训练教师,然后用原始标记集合和辅助未标记集合应用KD。

•标记辅助数据时,我们首先对教师进行原始数据集和辅助数据集的组合训练。这将为我们提供一个更有歧视性的老师。然后应用KD以进一步提高学生的混合数据集。

使用辅助数据实际上可以改进轻量级深度估计。如图1所示,我们的方法可以在仅使用1%的参数的情况下实现与最先进的方法相当的性能,并且在很大程度上优于其他轻量级方法。我们进行了大量实验来评估我们方法的有效性,并通过实验确认:

•即使无法访问原始训练集,我们仍然可以使用足够的辅助未标记样本成功应用KD,只要它们具有与原始训练样本相似的场景比例。

•当将KD与原始训练集和辅助未标记集一起应用时,随着教师和学生之间的差距得到更好的填补,绩效提高非常显著。

•如果我们直接使用原始和辅助标记数据的混合数据集对其进行训练,则由于其容量较低,轻量级网络的改进是有限的。另一方面,两阶段学习策略,即训练更大的教师,然后应用KD更有效。

二、相关工作

A、 单目深度估计

在先前的研究中,通过惩罚预测和真值深度之间的像素损失,以监督学习方式解决了单目深度估计[8],[16]。类似于其他视觉任务,例如语义分割,不同的网络已经被不断地提出。从基本的编码器-解码器网络[20]开始,由跳连[16]、扩张卷积[10]、金字塔池化[27]等组成的网络显示出了先进的性能。也可以将其表述为符合多视图图像几何一致性的无监督学习问题[49],[47]。目前,无监督学习方法的性能仍然不如有监督学习方法。

有几种方法试图实时估计深度。在[43],[30]中,引入了基于MobileNet和MobileNet-v2的轻量级网络,用于快速深度估计。网络以传统的监督方式进行训练。此外,提出了一种具有递归模块的轻量级网络来解决无监督深度估计[23]。使用小型网络的方法在计算速度方面表现出优异的性能,然而,与建立在大型网络上的方法相比,精度往往会显著下降。

B、 使用辅助数据学习

为了提高基于学习的方法的性能,最近的趋势是利用额外标记的训练数据集。正如ImageNet上的图像识别所证明的[7],这种策略确实有效。与不使用额外数据的方法相比,这些方法[31]、[9]证明的前1精度大于5%。

该策略也用于深度估计。在[3]中,使用了六个辅助数据集来处理包括低光、反射表面、伪边缘等在内的困难情况,这证明了室内深度估计的优异性能。此外,一些方法使用多域数据集,例如室内和室外场景、合成和真实世界图像,以学习通用网络[33],[21],[46],[1]。然而,这些方法忽略了数据集之间的比例差异,只能估计归一化深度图。在本文中,我们专注于室内深度估计,旨在重建场景的真实尺度。

注意,在半监督学习的设置下,辅助未标记数据也通常用于图像识别[42],[44]。在图像识别中,必须仔细收集辅助数据,使其语义属性属于模型预测的范畴。由于深度估计被公式化为回归任务,因此在实际场景中更容易收集辅助数据。

C、 知识蒸馏

近年来,知识蒸馏得到了广泛的研究。最初建议将图像识别方面的知识从教师传授给学生[12]。通常,老师很大,学生相对较小。最近的研究试图更有效地改善KD。Mirzadeh等人建议在教师和学生之间使用辅助网络[29]。一些作品采用了中间特征来指导学生的学习[18],[24]。在[39],[22]中,提出了从多个教师中提炼的策略。改进KD的另一种方法是增加训练集,例如应用GAN生成更多数据[36],或在云上使用大量额外数据[45]。

一些工作还将KD应用于增强深度估计[32],[1]。与这些简单应用为图像识别而开发的KD现有方法的方法不同,我们建议利用辅助的未标记/标记数据来提高KD,这是基于对现实世界中许多场景具有相似场景尺度的观察。

三、 方法论

在本节中,我们首先给出了轻量级网络的详细信息。然后,我们提出了利用辅助数据应用KD的学习策略。

A、 轻型网络

以前的大多数工作都使用对称编码器来处理像素到像素的回归任务[20],[25],[14]。这种网络产生低的推理效率,因为它在计算过程中需要大量GPU存储器。如[2]所示,CNN内部存在高度冗余,多个过滤器倾向于捕获相同或相似的特征表示。为了推进轻量级深度估计的范围,在本文中,我们引入了一种极其紧凑的网络架构设计。

拟建网络如图3所示。核心组件是四个特征融合和压缩层(FFC)。FFC层用于有效地融合特征图。它由通道式注意机制和卷积层组成。具体而言,给定由卷积块(例如残差块)提取的一组特征图,我们首先应用通道注意[13]来自动将权重赋予它们。然后,它们由5×5卷积层融合。为了降低模型的复杂性,这些特征图被压缩为固定数量的通道(16个通道)。对于用编码器在多尺度上提取的特征,我们在每个尺度上应用FFC。然后,对输出的特征图进行上采样,使其大小分别为×2、4、8和16。最后,将它们连接并馈送到两个5×5卷积层(图3中表示为conv)中,以生成最终的深度图。

我们分别使用ResNet-34和MobileNet-v2作为教师和学生的骨干网络。因此,教师和学生的参数分别为21.9M和1.7M。表中给出了模型参数的详细信息。我

B、 KD与辅助数据的应用

1) 标准KD:我们考虑一个经典的知识蒸馏,在一个标记集合X上有一个训练有素的老师。对学生训练的监督来自对真值深度的损失和教师网络的估计。这里,我们使用Nt和Ns分别表示教师和学生网络。那么,训练学生的损失是:

其中gi表示xi的真值,L是两个深度图之间的误差度量。

我们采用[16]中提出的误差度量,其中使用三个损失的总和:

其中ldepth=1 n Pn i=1 F(ei),lgrad=1 n Pn i=1(F(⑪x(ei))+F(⇔y(ei))),lnormal=1 n Pn i=2(1−cosθi),其中F(ei)=ln(ei+0.5);ei=kyi−yûik1;yi和yûi是两个深度图;θi是根据它们计算的曲面法线之间的角度。

2) 使用辅助数据学习:我们假设辅助数据对于KD深度估计是有效的,只要它具有相似的场景尺度。我们进行了初步实验来验证我们的假设。具体而言,给定在NYU-v2数据集上训练的教师网络,我们使用跨域数据集执行KD。

为此,我们选择了ImageNet和ScanNet,前者是分发外数据集,后者也是室内数据集。如图4所示,我们可以看到,使用ScanNet进行KD的结果略好于原始结果,如果使用ImageNet进行KD,则精度下降15.5%。实验细节见第IV-A1节。

这个初步实验的结果很好地支持了我们的假设,即即使不访问原始训练数据,使用具有相似场景尺度的未标记数据仍然可以成功地执行KD以进行深度估计。这也表明,将KD与原始数据集以及辅助数据一起应用,可以更好地填补师生之间的差距。由此,可以进一步提高轻型网络的性能。具体来说,我们考虑使用辅助数据的两种情况。

a) 辅助未标记数据的使用:教师使用原始标记集X(表示为Nt)进行训练。我们可以访问X以及辅助未标记集U

在KD过程中。然后,学生的损失公式为:

b) 辅助标记数据的使用:在这种情况下,辅助数据U 0被完全标记。教师是在混合数据集上训练的,即XûU0,它将比仅在X上训练的教师具有高度的辨别力。然后通过KD使用混合数据学习学生:

四、 实验

A、 实验设置

我们使用NYU-v2数据集[35]进行所有实验。该数据集由各种室内场景组成,并在之前的大多数研究中使用。我们使用标准程序进行预处理[8],[20],[25]。具体而言,使用了464个场景的官方分割,即249个场景用于训练,215个场景用于测试。这将产生大约50K的图像对和640×480像素大小的深度图。然后使用双线性插值将图像大小调整为320×240像素,然后裁剪其中心部分304×228像素,这些像素用作网络的输入。深度图的大小调整为152×114像素。对于测试,在之前的研究之后,我们使用了654个样本的相同子集。辅助数据取自ScanNet数据集[6]。我们从1513个场景中随机选择204K张图像。

1) 实施细节:对于教师网络,我们使用基于ResNet-34构建的网络。对于学生网络,我们使用MobileNet-v2作为编码器。教师和学生都接受了20个时代的训练。用于计算L的参数λ设置为0.1。网络中的编码器模块由ImageNet数据集预处理的模型初始化[7]。网络中的其他层被随机初始化。我们使用初始学习率为0.0001的Adam优化器,每5个时期将其降低到10%。我们设置β1=0.9,β2=0.999,并使用0.0001的重量衰减。

B、 定量评估

为了简单起见,我们使用X、U和U 0分别表示NYUv2、未标记的ScanNet和标记的ScanNet。在X和XÜU上训练的教师分别表示为Nt(X)和Ns(XûU)。类似地,在整个论文中,在X、XûU和XûU0上训练的学生分别表示为Ns(X)、Ns(XûU)和Ns(YûU 0)。

1) 没有KD的表现:我们首先用纯监督学习来量化教师和学生网络。我们分别对X和混合数据集XûU0进行了实验。结果如图5(a)所示。很明显,通过使用更多标记样本进行训练,可以提高成绩,因为教师分别从0.845提高到0.874,学生分别从0.802提高到0.825。另一方面,教师和学生之间的表现差距很大,例如0.845对0.802和0.874对0.825。

2) KD的性能:我们进行了几个实验来验证所提出的方法。我们首先分别在X和X⑪U0上训练教师网络Nt(X)和Nt(XûU0)。然后,我们在以下四种不同的环境中对学生进行训练:

1) 给定原始集合上的训练有素的教师,我们将KD应用于原始训练集合,即Nt(X)→ Ns(X)。

2) 给定原始集合上经过训练的教师,我们将KD应用于辅助未标记集合,即Nt(X)→ Ns(U)。

3) 给定原始集合上的训练教师,我们将KD应用于原始训练集合和辅助未标记集合,即Nt(X)→ Ns(X∈U)的一个函数。

4) 给定原始训练集和辅助标记集上的训练教师,我们将KD应用于混合标记集,即Nt(XûU0)→ Ns(XûU0)的函数。

结果如图所示。5(b),当将标准KD设置为1)时,我们可以看到教师和学生之间的表现差距很大,表现从0.845下降到0.808。一个有趣的观察是,与标准KD相比,仅使用辅助未标记数据(即设置2)时,性能甚至更好。正如预期的那样,它们的组合(即设置3)会显著提高性能。

如图5所示,5(a)Ns(XûU0),当辅助数据被标记时,轻量级网络可以通过监督学习来改进,但由于小网络的容量低,改进受到限制。它的性能不如用KD训练的具有辅助未标记数据的结果,即图5(b)中Ns(XûU)的结果。另一方面,我们可以学习更准确的教师,因此,通过应用KD也可以进一步改进轻量级网络,如图5(b)的Ns(XûU0)所示。

C、 与先前方法的比较。

a) 与大型网络的比较:

与建立在大型网络上的方法的比较如表II所示。以前建立在不同骨干网络上的方法(即从ResNet-50到SeNet-154)证明了精度提高的明显趋势。如图所示,当使用辅助未标记数据时,我们的方法与[48]、[16]相当,甚至优于[10]、[20],只有1.7M个参数。

当比较使用额外标记数据的方法时,表II所示的最佳性能是[3],其中该方法使用六个辅助数据集进行训练。额外训练数据总数为120K。注意,[3]中使用的辅助数据是仔细收集的,以处理深度估计的困难情况,例如伪边缘和反射表面。我们方法的额外数据是从ScanNet数据集1中随机选择的。

b) 与轻量级网络的比较:我们将所提出的方法与两种先前的轻量级深度估计方法进行了比较,包括传统的编码器网络,即快速深度[43],语义和深度的联合学习,即联合深度[30]。定量结果如表III所示。可以看出,即使只有大约一半的参数,我们的方法仍以显著的优势优于其他两种方法。我们的方法Ns(XûU)的δ1精度为83.7%,分别比联合深度和快速深度高4.7%和6.2%。当对辅助数据进行标记时,改进更为显著,因为Ns(XûU0)的精度为85.5%,提高了6.5%和8%。定性比较如图6所示,其中我们方法的估计深度图更准确,细节更精细。

我们还比较了从输入图像推断深度图的GPU时间。我们使用带有Intel(R)Xeon(R)CPU E5-2690 v3和GT1080Ti GPU卡的计算机。对于其他两种方法,我们使用官方实现来计算计算时间。实验结果表明,我们的方法仅使用11ms的GPU时间来推断深度图,这比关节深度快得多。另一方面,Fastdepth以降低精度为代价实现了最小的推理速度。这是三种方法中精度最差的。

D、 改变辅助数据数量的影响

我们进行了消融研究,以量化轻量级网络,同时改变辅助数据的数量。具体来说,我们使用在原始标记集合上训练的教师,并将KD应用于从U中提取的不同数量的辅助未标记样本。在我们的实验中,我们对11.6K、22.0K、40.2K、67.6K、153.0K和204.2K样本进行了评估。

结果如图8所示。通常,我们使用的辅助数据越多,我们可以应用的KD越好,当辅助样本达到一定数量时,不会有更多的改进。

E、 跨数据集评估

为了衡量轻量级模型的泛化性能,我们对SUNRGBD[37]和TUM[38]数据集进行了跨数据集评估。在这两个数据集上,我们直接应用Ns(XûU)和Ns(XûU0),而无需任何微调。请注意,Ns(XûU0)和其他方法之间的比较是不公平的,因为它使用了辅助标记数据。尽管如此,我们仍然在这里展示它,以向社区提供实验支持,这可能是以数据驱动的方式提高KD的最有效和可靠的方法。每个数据集的结果如下所示。

1) SUNRGBD的结果:SUNRGBD数据集通常用于测试先前工作中的泛化性能[19]。结果如表所示。其中最佳和次最佳结果分别以红色和蓝色显示。我们的方法证明了最低的RMSE和REL误差。δ1的节理深度最好,REL的节理深度次之。

2) TUM结果:我们选择了五个序列,包括fr1/360、fr1/desk、fr1/desk2、fr1/rpy和fr1/xyz作为[5]。实验结果如表V所示。深度精度由δ1测量。可以看出,我们的方法在很大程度上优于其他方法,显示出令人满意的泛化性能。联合深度和快速深度的平均精度(δ1的平均值)分别为0.494和0.369,而我们的方法Ns(XÜU)和Ns(XÜU0)的平均值分别为0.530和0.781。预测点云和真值之间的定性比较如图7所示。

五、 结论

在本文中,我们从推理精度和计算效率方面重新审视了单目深度估计。我们指出,固有的困难在于精度和模型容量之间的权衡。我们的方法首先引入了一个轻量级网络,目标是使用更少的参数。然后,通过对两个具体案例的研究,即应用知识蒸馏时的辅助未标记/标记数据,我们定量地表明,使用具有相似场景尺度的辅助训练数据对改进轻量级网络是有效的。结果,我们的方法与构建在只有大约1%参数的大型网络上的方法相比,获得了相当的性能,并大大优于其他轻量级方法。

相关文章

  • 【技术博客】通过量化知识来解释知识蒸馏

    【技术博客】****通过量化知识来解释知识蒸馏 知识蒸馏介绍 知识蒸馏(Knowledge Distillatio...

  • 深度学习-知识蒸馏

    出于计算资源的限制或效率的要求,深度学习模型在部署推断时往往需要进行压缩,模型蒸馏是其中一种常见方法。将原始数据集...

  • 知识蒸馏

    知识蒸馏(Knowledge Distillation): 知识蒸馏即将知识从「教师」模型迁移到「学生」模型,执行...

  • 第8季 第2周 139原韵 《好好学习》第一章 知识管理与认知优

    本章核心内容:“通过管理知识,提高认知深度,从而改变行为模式。” 作者提出”知识管理“和”认知优势“概念,对其基本...

  • 什么是深度思考?

    今天探讨的问题是什么是深度思考,如何通过深度思考提高深度认知呢? 在这个知识大爆炸时代,每个人都可以轻而易举的接触...

  • 知识蒸馏

    最近在实验用MobilenetV3在分类数据集上的效果,想起了Hinton之前搞过的知识蒸馏模型来训练小网络。简而...

  • 知识蒸馏

    知识蒸馏是什么?一份入门随笔 - LinT的文章 - 知乎https://zhuanlan.zhihu.com/p...

  • 知识蒸馏

    一、简介 https://zhuanlan.zhihu.com/p/258721998[https://zhuan...

  • 深度学习 | 训练网络trick——知识蒸馏

    1.原理介绍 知识蒸馏论文地址 Hinton的文章《Distilling the Knowledge in a N...

  • 如何提高自己的人生境界?

    一、通过日常言行反省来提高自己的道德底线和水 平 二、通过大量阅读来扩充自己的知识面和量 三、通过每天做事...

网友评论

      本文标题:通过知识蒸馏提高轻量深度估计

      本文链接:https://www.haomeiwen.com/subject/qkzbcdtx.html