APP下载

基于知识蒸馏的目标检测分析

2022-05-26张国鹏陈学斌

软件导刊 2022年5期
关键词:深度目标算法

张国鹏,陈学斌,马 征

(1.华北理工大学理学院,河北 唐山 063210;2.河北省数据科学与应用重点实验室;3.唐山市数据科学重点实验室,河北 唐山 063000)

0 引言

近年来,深度学习已成为人工智能领域许多研究课题的基础,包括计算机视觉[1]、强化学习[2]及自然语言处理等。例如,在数百万幅图像识别的基础上训练一个ResNet模型只需不到10min 的时间[3],训练一个强大的语言理解的BERT 模型则不超过1.5h[4],大规模深度模型已取得了巨大成功。目标检测[1]是计算机视觉领域的一个重要分支,其利用机器对现有物体进行精确识别,主要任务是将研究目标的位置及其分类相联合来确定目标物体,该过程还需结合图像处理技术及机器学习方面的算法,以选择需要的目标图像。目标分类主要判断输入图像是否为所需类别,目标定位则负责识别目标物体位置,一般采用范围较广的矩形框来实现。近年来,大量国内外研究人员对目标检测领域开展了深入研究与探索。目前,目标检测被广泛应用于人脸识别、行人跟踪、车牌识别、车辆自动驾驶等领域。由于视野变窄、背景模糊、姿势扭曲等原因容易导致目标物体不精确,使检测目标成为具有挑战性的任务。在许多不同实验中,深度网络模型取得了良好效果,但在实际应用中,其会受到时间与空间方面的限制。因为深度网络模型一般是更深、更大的模型,导致所需运算量很大,其大量参数也会占用许多存储空间。即使借助图形处理器(Graphics Processing Unit,GPU)进行加速[5],在时间上也依然无法满足许多应用场景的需求。

随着深度学习技术的发展,越来越多研究人员发现使用卷积神经网络对研究物体进行目标检测,准确度可获得较大程度提升[6]。卷积神经网络具有提取高层特征的能力,可提高特征表达能力,并将特征提取、特征选择与特征分类集成到同一模型中。然而,深度学习网络模型具有更深层次的结构与更高的计算复杂性,且存储网络模型所需的空间非常大,导致其无法在资源有限的设备上有效地工作。如果一个参数较少、重建效果较差的轻量网络尽最大程度地去学习一个参数较多、重建效果好的深度神经网络,则既节省了相应算力及空间,又有效提高了轻量网络目标检测的准确性与精度。因此,在不影响深度网络模型效果的前提下,现有的各种模型压缩与加速技术受到人们欢迎。压缩网络模型[7]是一个重要的研究问题,自2015 年Hinton 等[8]提出知识蒸馏(Knowledge Distilling,KD)后,知识蒸馏成为模型压缩与加速的代表类型,大量研究人员开始对图像分类领域的知识蒸馏展开研究,但针对目标检测的研究依然较少;2017 年,Chen 等[9]将知识蒸馏引入Faster-RCNN 检测网络中,对特征提取层以及分类损失与回归损失同时展开蒸馏,提升了二阶段目标检测模型的精度;2019 年,管文杰[10]将知识蒸馏引入Cascade R-CNN,并将Cascade R-CNN 二、三阶段检测器回归分类结果作为“软目标”加入损失函数中进行蒸馏,可达到与四阶段检测相当的精度。因此,基于知识蒸馏的目标检测得到了人们的广泛关注,也成为当前的研究热点之一。

1 知识蒸馏

1.1 知识蒸馏基本结构

2015 年Hinton 等[8]在文章《Distilling the Knowledge in a Neural Network》中首次提出知识蒸馏(KD)的概念。知识蒸馏作为一种典型的模型压缩方法,可将复杂、性能较好的教师网络学到的知识传递给精简、低复杂度的学生网络,使学生网络获得接近教师网络的精度。知识蒸馏方法由3 个关键组件组成:知识、蒸馏算法与师生架构[11]。师生架构如图1所示。

在知识蒸馏中,知识类型、提炼策略与师生结构对学生网络的学习起着至关重要的作用,普通的知识蒸馏使用一个大深度模型网络作为教师网络。知识蒸馏方法使精

Flg.1 Architecture between teachers and students图1 师生架构

损失函数为:简、低复杂度的学生模型仍可以具有较强的学习能力,在降低参数量且加快速度的同时也保持较高准确率。例如,在检测猫、狗及青蛙等几种不同种类动物时,真实的标签是“狗”,但是存在一个学习能力强且较复杂的网络给3 个标签“猫”、“狗”及“青蛙”分别赋予一定比重,也称为概率,表示软化标签,即软目标。相反,真正的标签是独热编码(One-hot),也即硬目标,教师网络的软化标签可为学生网络提供更多信息,从而更有效地训练学生网络,提高其泛化能力。软化后的标签在类别向量中以概率形式存在,错误类别向量的概率值是介于0~1 之间的一个微小实数,在蒸馏过程中对交叉熵的影响很小。另外对于标签软化方面,Hinton 提出在原来的输入数据经过softmax 层软化时加入超参数T(温度),以辅助提高软化效果。函数qi可生成每个类别的预测概率。具体函数如下:

式中,zi表示第i 类的输入数据,qi表示第i类经过softmax 输出的软目标。

另外,Hinton 等通过实验证明了超参数T对于软化的影响效果,如果T 值过大,会产生均匀的概率分布,如果T值过小则很容易提高错误分类的概率,因此一般情况下T值取1。

1.2 知识蒸馏过程

对于同一个数据集的输入,教师网络与学生网络经过softmax 层会产生软化标签,学生网络则利用真实标签及教师与学生网络分别产生的软化标签作为交叉熵损失函数的输入进行权重优化学习。知识蒸馏的最初目的是为了将源网络的知识转移到另一个较小的神经网络。图2 表示知识蒸馏过程中的损失函数计算过程,可了解到软化标签的交叉熵加权系数越大,将导致学生网络在训练过程中对教师网络过度依赖,所以在训练后期要适时降低软化标签比重,利用真实数据帮助学生网络进行判别。教师网络的推理性能通常优于学生网络,且模型没有具体的容量限制,因此教师网络的推理精度越高,将越有利于学生网络的学习。

Flg.2 Knowledge distillation process图2 知识蒸馏过程

式中,Lloss为软目标与硬目标所对应交叉熵的加权平均;λ为权重参数,用于保持真实损失与蒸馏损失的平衡;L(hard)为真实损失;L(soft)为蒸馏损失。

训练步骤如下:①先用真实数据集训练复杂的教师网络;②采用超参数T 对训练好的教师网络进行前向传播获得软标签;③在超参数值T=1 和T=t 两种情况下分别让学生网络获得两种不同的软化输出,加权计算两种交叉熵损失,以训练学生网络;④最后采用训练好的学生网络预测类别。

综上,采用软化标签的知识蒸馏方法一方面可压缩模型,另一方面增强了模型泛化能力。

1.3 知识蒸馏研究进展

利用知识蒸馏方法可压缩更深、更大的模型,从而有效降低计算成本,目前主要用于具有Softmax 损失函数的分类任务。近年来,许多研究将知识蒸馏用于目标检测与语义分割,因为用蒸馏技术压缩模型的过程就像人类学习一样,在这一过程的启发下,将现有知识蒸馏技术逐渐扩展到教师与学生的互助学习、辅助学习、终身学习及自学上。大多数知识蒸馏研究都关注于压缩深度神经网络,使产生的精简学生网络可被更好地用于语音识别及人脸识别等实际应用中,另外知识蒸馏中的知识转移可拓展到对抗攻击、数据加强以及数据隐私与安全保障等其他任务中。蒸馏知识压缩模型的动机实际上是将知识转移思想进一步应用于训练数据压缩,即数据蒸馏,将知识从大型数据集转移到小型数据集,从而减轻深度模型的负担。

最近几项研究是在教师与学生模型的关联中,通过离线蒸馏或在线蒸馏以及自我知识蒸馏方法进一步改善网络模型之间的知识转移过程。

1.3.1 离线蒸馏

以前大多数知识蒸馏方法都可以脱机工作。在常见的离线知识蒸馏中,往往采用两阶段训练模式先对教师模型进行训练,再通过蒸馏方法指导学生模型进行训练。一般而言,对于离线蒸馏知识的提取,如果要取得较好成果,需要满足以下条件:高质量的预先训练好的教师模型、师生差异以及足够的监督信息。特别是离线知识蒸馏方法在很大程度上依赖于固定的预训练教师模型,固定的教师网络与学生网络之间巨大的能力差距给知识转移带来了巨大挑战。为了使这种差距的影响可忽略不计,Mirzadeh等[12]引入多步知识蒸馏方法,并采用中间网络,类似于教师助手。离线蒸馏方法通常使用单向知识转移与两阶段训练模式,这些方法都不能完全解决由于能力差距而造成的知识转移的阻碍,因为其在一定程度上也依赖于预先训练好的教师模型。

1.3.2 在线蒸馏

与传统两阶段离线蒸馏法不同,当前研究越来越关注在线蒸馏方法。目前研究者提出的几种在线知识蒸馏法是在多个神经网络相互协作配合的前提下进行的,在训练过程中每一个网络都有选择权去充当学生模型,剩下的网络作为教师网络。为提高泛化能力,利用Soft Logits 的集合对深度互学习进行扩展,利用在线蒸馏训练大规模的分布式神经网络,并提出一种在线蒸馏的变体,即共蒸馏[13]。采用并行共蒸馏方法对具有相同体系结构的多个模型进行训练,并通过传递来自其他模型的知识对其中任何一个模型进行训练。近年来,人们提出一种在线对抗知识蒸馏方法,该方法可利用分类概率与特征图中的知识,同时利用鉴别器训练多个网络[14]。在线蒸馏是一种具有高效并行计算能力的单阶段端到端训练方案。

1.3.3 自我蒸馏

在自我蒸馏中,教师和学生模型采用相同网络,这可视为在线蒸馏的特殊情况。具体而言,Zhang 等[15]提出一种新的自蒸馏方法,将来自网络较深部分的知识蒸馏为浅层部分,网络早期知识被转移到后期,以便支持同一时期的监督训练过程网络。为进一步减少对于提前退出的推理时间,Phuong 等[16]提出基于蒸馏的训练方案,让提前退出层尝试在训练过程中模仿后续退出层的输出。Hahn等[17]提出一种新的自我蒸馏方法,使自己的知识由预测概率而不是传统的软目标概率组成。这些预测概率由训练模型的特征表示进行定义,反映了特征嵌入空间中数据的相似性。

2 基于知识蒸馏的目标检测算法

2.1 目标检测算法种类

目标检测的发展过程大致经历了两个关键时期,分别称为基于传统方法的目标检测周期与基于深度学习的目标检测周期[18]。早在2013 年之前,由于计算能力不足,深度学习尚未显示其优势,传统检测算法是基于人工设计的滤波器。2013 年之后,由于GPU 的发展,计算能力迅速提高,使得深度学习检测模型的效果明显超过了手动设计的检测模型,原因是人工设计的特征类似于灵长类视觉皮层提取的浅层特征,而深度神经网络可提取更高级别与更抽象的深度图像特征。因此,基于深度学习的目标检测模型开始迅速发展。目标检测算法分类如图3所示。

Flg.3 Object detection algorithms classification图3 目标检测算法分类

深度网络在提取高层特征与表达特征方面具有出色的性能,因此有必要找到一种有效的检测算法框架。大多数具有代表性的检测算法都试图在许多方面改进网络体系结构,根据检测步骤,其可分为基于回归的一阶段框架(One-stage)与基于候选区域的两阶段框架(Two-stage)。两阶段框架从选择候选区域的预处理阶段开始,然后对候选区域进行分类与定位,从而将检测过程分为两个阶段。One-stage 框架是一种不单独选择候选区域的方法,整个检测过程是一个阶段。检测算法时间轴如图4 所示。检测算法在PASCAL VOC 2012 上的mAP 对比如表1所示[19]。

Table 1 Comparison of mAP of detection algorithms in PASCAL VOC 2012表1 检测算法在PASCAL VOC 2012上的mAP 对比

2.2 基于知识蒸馏的目标检测

本文重点讨论基于深度学习的目标检测以及如何将知识蒸馏的模型压缩方法运用于One-Two-stage 框架中。深度学习模型属于分层结构,在模型的不同级别上提取不同特征,且从低到高逐层进行特征提取。Chen 等[9]提出对Two-Stage 中的Faster R-CNN 进行蒸馏,其中教师网络与学生网络使用相同的检测框架,但学生网络会选择轻量级的特征提取网络。将图片分别输入到教师网络和学生网络,并且在分类结果和回归结果上生成不同的输出。通过测量教师网络输出与学生网络输出之间的差距,构造蒸馏损失。将蒸馏损失加入到实际检测到的损失中,则构成了总损失。计算公式如式(3):

Flg.4 Detection algorithms'timeline图4 检测算法时间轴

式中,LLoss为总损失,L(hard)为真实损失,L(soft)为蒸馏损失。s为学生网络,T 为真实标签,t 为教师网络,λ为权重参数,用于保持真实损失与蒸馏损失的平衡。

然而,二阶段目标检测器因参数较多,占用了大量存储空间,即使对一个小网络进行蒸馏后也是如此,因此很难部署到移动设备上。之后有研究者提出基于信息图特征提取层与特征融合层的知识蒸馏体系结构。在之前的操作中计算损失时,引入信息图作为监督信号,为知识蒸馏过程提供指导,最后通过反向传播算法更新学生网络权值。

Yim 等[20]将教师网络层与层之间的关系作为学生网络学习的目标。然而,其知识蒸馏需要设计非常复杂的损失函数,且这些方法大多用于两阶段目标检测,很少用于单阶段目标检测。然而,为了获得一个简单、有效的知识蒸馏方法,Wang 等[21]参考生成的对抗网络架构,将教师网络与学生网络生成的特征图分别作为真样本和假样本。其设计一个神经网络作为鉴别器,利用真样本和假样本进行生成对抗训练,使学生网络分布与教师网络分布相吻合。通过无监督学习进行交互式训练,可使整个训练过程简单、高效,大大提高了学生网络在单阶段目标检测中的性能。最后其对不同教师网络下现有SSD 算法与基于GAN 知识蒸馏的SSD 算法进行比较,发现采用第二种方法时,学生网络在PASCAL VOC 数据集上的平均类别精度(mAP)提升了2.8%。另外其使用此方法进行两阶段目标检测实验,例如Faster-RCNN,分别以ResNet50、ResNet101为参考网络,前者作为学生网络,后者作为教师网络,利用PASCAL VOC 2007 数据集作为训练集进行实验对比。此外,其将检测结果与Wang 等[22]提出方法得到的结果进行比较,在PASCAL VOC 2007 测试集中的平均类别精度(mAP)为73.8%。

Mehta 等[23]将知识蒸馏应用于单阶段检测模型中,通过类FPN 结构对学生网络结构进行优化,并添加无标记数据集进行训练。在蒸馏过程中利用FM-NMS 对冗余框进行过滤,在tine-YOLOv2 基础上将平均类别精度(mAP)提高了14%。2020 年,张彤彤等[24]将知识蒸馏方法应用于目标检测网络的特征提取网络中,提高了浅层特征提取网络的性能。结果表明,经过知识蒸馏后的浅层特征提取网络的检测准确率相比无教师网络指导下的检测准确率提高了11.7%。2021 年,李姜楠等[25]将知识蒸馏应用于目标检测类型,通过引入信息图提炼监控信号,加强了学生对教师网络关键知识的学习。采用YOLOV3 作为检测模型,在不改变学生网络结构的情况下,平均类别精度提高了9.3%。根据知识蒸馏架构,在tiny_yolov3 基础上进行了比较实验,结果如表2所示。

虽然基于知识蒸馏的目标检测取得了一定进展,但仍存在一些需要解决的问题。为改善现有目标检测知识蒸馏框架的局限性问题,Li等[26]提出一种新的在线知识蒸馏方法,称为FFSD,其包括两个关键组成部分:特征融合与自提取,FFSD 将学生分成学生领袖和普通学生群体,然后特征融合模块将来自普通学生群体的特征图拼接转换成融合的特征图,融合的特征图用于帮助学生领袖的学习。为使学生领袖能够在特征融合过程中获得更多信息,设计一种多样性增强策略以增加学生之间的多样性。另外增加了一种自蒸馏模块,将较深层次的特征图转换成较浅层次的特征图,然后鼓励较浅层次的特征图模仿较深层次转换后的特征图,从而增强了模型泛化能力。由于师生能力差距的缩小可促进知识转移,Zhang 等[27]提出一种进化的知识蒸馏方法以提高教师的知识转移效率,其中教师是进行在线学习的,并不断转移中间知识,以动态监督学生的网络学习。在相应的师生模块之间引入一些简单的引导模块对,提高了中间知识表示效率,从而实现有效的学生网络学习。通过大量实验证明了该方法的有效性,以及其在低分辨率和少样本的目标检测中具有良好的适应性。

Table 2 Comparison of knowledge distillation results表2 知识蒸馏结果比较

3 结语

本文对基于知识蒸馏的目标检测进行详细介绍,首先回顾目标检测研究现状及存在的问题,以及基于知识蒸馏方法解决此问题的可能行,引入知识蒸馏后不仅可简化网络,还可节省相应的算力及空间;其次,介绍了知识蒸馏的基本结构、研究过程与进展以便于读者深入理解;最后对当前基于知识蒸馏的目标检测主要研究方法进行分析与论述,并结合当前研究现状分析了不同蒸馏算法的改进。如果知识蒸馏损耗和精度评估方法之间存在不匹配,可能会导致老师模型和学生模型的能力相差较大。受到最近关于生成对抗网络训练的启发,对抗训练可很好地促进师生交互,使两者的分布相吻合,从而实现有效的学生网络学习,也值得作更深入的探讨。之后希望将知识蒸馏用于数据隐私与安全保障、网络特征检测等方面,使其可应用于对存储空间与参数量有一定限制的嵌入式设备中。

猜你喜欢

深度目标算法
深度理解一元一次方程
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
深度观察
深度观察
进位加法的两种算法
深度观察
一种改进的整周模糊度去相关算法
新目标七年级(下)Unit 3练习(一)
新目标七年级(下)Unit 4练习(一)