Startdt AI提出:使用生成对抗网络用于One-Stage目标检测的知识蒸馏方法

卷积神经网络对目标检测的精度有着显著的提升,并且随着卷积神经网络的深度加深,对目标检测精度提升也越大,但是也需要更多的浮点计算。

摘要

卷积神经网络目标检测的精度有着显著的提升,并且随着卷积神经网络的深度加深,对目标检测精度提升也越大,但是也需要更多的浮点计算。许多研究者通过知识蒸馏的方法,通过把一个更深更大的教师网络中的知识转移到一个小的学生网络中,以提高学生网络在目标检测中的效果。而大部分知识蒸馏的方法都需要设计复杂的代价函数,并且多数针对两步目标检测算法,本文针对一步目标检测算法提出一个干净有效的知识蒸馏方案。将教师网络生成的特征层作为真实样本,学生网络生成的特征层做为假样本,并对两者做生成对抗训练,以提高学生网络在一步目标检测中的表现。

1 Introduction

近些年来,随着目标检测算法的发展,研究者们发现利用更深更大的卷积神经网络作为骨架,对目标检测算法的精度提升越大。并且随着目标检测算法的检测精度提升,使视觉检测算法逐渐从非关键性领域,走向关键性领域(比如无人驾驶和医疗等领域)。但是为了保证检测精度,不得不使用更大的卷积神经网络作为骨架,造成检测速度下降,计算设备成本增加。因此许多研究者在确保检测精度的前提下,提高检测速度提出了很多方法和总结,如通过深度分离卷积 [1,2],或者通过点群卷积(pointwise group convolution)和通道混洗(channel shuffle)[3, 4] 来降低卷积神经网络浮点运算次数的方法,在保证骨架网络精度和容量的情况下减少计算量。虽然获得可观的提速效果,但是这些方法需要精心设计和调整骨架网络。很多研究者认为更深的骨架网络虽然有着更大的网络容量,因此在图像分类目标检测等任务上有着更优秀的表现。但是一些特定的任务并不需要这么大的容量,所以在保证卷积神经网络精度的情况和下,对卷积神经网络做压缩、量化、通道减枝等[5, 6, 7, 8, 9]。

另一方面,有关于知识蒸馏的工作表明[10, 11, 12, 13],使用一个更深更大的模型,并且在充分训练完毕后作为teacher net,然后再选取一个比较浅的模型作为student net,最后使用teacher net输出的结果或者中间结果作为soft label结合真实样本的true label同时训练student net,可以极大的提升student net在特定任务上的表现。但是大部分这些方法都需要设计非常复杂的代价函数和训练方式,并且这些方法多用于图像分类和两步目标检测等,极少用于一步目标检测。因此,我们需要一个更加简单而有效,并且可以适用于一步目标检测知识蒸馏方式。本文提出一种简单而有效知识蒸馏神经网络架构,并且可以明显的提升student net在一步目标检测网络的表现。和常规的知识蒸馏方式不同的是,我们参考对抗生成的神经网络架构[14],将重型目标检测神经网络和轻型目标检测神经网络的骨架分别拆分出来作为teacher net和student net,然后把teacher net 生成的feature map作为真实样本,而student net则作为生成器,并把student net生成的feature map作为假样本,最后根据真实样本和假样本设计一个神经网络作为判别器,做生成对抗训练。

我们的贡献主要有两点:

1 提出一种不需要设计复杂的代价函数的网络架构,并且可以适用于一步目标检测

2 利用对抗生成网络架构,避免复杂的知识迁移设计,让student net自动的从teacher net中获取暗知识。

2 Related Works

深度学习目标检测算法架构主要分为两种,一种是一步检测,比如Liu W等人提出的SSD[15],直接通过通过卷积神经网络回归出物体的位置和类别,另一种是二步检测,如girshick等人提出的fast rcnn[16],以及后来Faster-RCNN [17] and R-FCN [18]等,首先通过卷积神经网络回归候选框,最后根据候选框再次识别每个候选框的类别,并回归出正确的位置。

网络裁剪,许多研究者认为深度神经网络被过度参数化,并且有很多冗余的神经元和连接,He Y等人认为[8],cnn每层神经元都是稀疏的,利用lasso regression回归找出cnn每层最有代表性的神经元重构该层的输出。Zhuang Z等人[9]认为layer-by-layer进行通道剪枝会影响cnn的鉴别能力,所以通过在fine-tune和剪枝阶段加入辅助loss,来保留cnn每层的鉴别能力。

网络量化, Wu J等人[20]通过k-means聚类算法加速和压缩模型的卷积层和全连接层,通过减小每层输出响应的估计误差可实现更好的量化结果,并提出一种有效的训练方案抑制量化后的多层累积误差 。Jacob B[21]等人提出将weights和inputs量化为uint8 bias量化为unit32同时训练期间前向时候采用量化,反向修正误差不量化,以确保cnn表现的情况下提高inference速度。

知识蒸馏是一种压缩模型并确保准确的一种方法。hinton 等人提出[2]将teacher net输出的结果作为soft label,并提倡使用温度交叉熵而不是L2损失。romero 等人[19]认为需要更多的unlabeled data让student net去mimic才能使student net经可能的接近teacher net,Chen G[12]等人在优化2步目标检测网络分别将teacher net的中间feature map 以及rpn/rcnn的暗知识提取出来让student net去mimic。其他研究者也有将teacher net的attention信息给student网络,如Zagoruyko S[22]等人提出spatial-attention,将teacher net的热力信息传递给student net。Yim J等人[23]将teacher net层与层之间的关系作为student网络mimic的目标。但是他们设计的的知识蒸馏都是要设计非常复杂的loss function,和复杂的暗知识的提取方式,并且这些方法多是在两步目标检测算法中很少用于一步目标检测中。为了能用一个简单有效的知识蒸馏的方式,我们参考生成对抗网络的架构方式[14]将教师网络生成的特征层作为真实样本,学生网络生成的特征层做为假样本,并对两者做生成对抗训练,以提高学生网络在一步目标检测中的表现。

3 Method

在本文中,我们采用一步目标检测算法SSD[15]作为我们的目标检测算法,SSD目标检测算法结构主要分成两部分,1)骨架网络,作为特征提取器。2)Head,在骨架网络提取的特征上,检测出目标的类别和位置。为了能获取更好的知识蒸馏效果,合理利用这个两个部分至关重要。

3.1 Overall Structure

fig 1为我们算法模型的整体结构,我们首先使用一个容量更大的SSD模型,在充分训练后将该SSD模型拆分成骨架网络和SSD-Head,其中骨架网络作为teacher net,然后再挑选一个容量较小的CNN作为student net。我们把teacher net生成的多个feature map作为true sample,而student net生成的多个feature map作为fake sample,并且将true sample和fake sample送入D Net中相对应的每个判别网络(fig 2)中,同时把fake sample输入到SSD-Head中。

3.2 Training Process

(1)

公式1中的N代表batchsize的大小,D代表判别网络,Teacher和Student分别代表teacher net和student net, θt、θs、θd分别代表teacher net、student net 和D Net模块中每个判别网络的weights。Lconf表示SSD中分类的损失函数,Lloc表示SSD中边界框的损失函数

4 Experiment

在本章节,我们将在PASCAL VOC中做实验来验证我们的方法,包含20个类别。并且我们的方法训练的硬件为two NVIDIA GTX 1080Ti GPUs。训练所用的软件框架为gluoncv。

4.1 Training and testing data

由于时间的关系,我们训练使用的数据集Pascal Voc 2012trainval和Pascal Voc 2007 trainval sets,测试数据集为Pascal Voc 2007 test sets。该数据集包含检测物体的类别和位置信息。评估标准按照Pascal Voc竞赛所约定的,通过iou=0.5时的mAP来评估模型检测精度。而coco数据集上,使用coco 2017 trainset作为训练集,coco 2017 test作为测试集。

4.2 Results

我们将原生的SSD和在不同的Teacher net下知识蒸馏SSD做比较,最高可以提升student net 2.8mAP。不过有趣的是,当teacher net为ResNet101,student net为ResNet18时,提升的效果反而不如ResNet50。而在coco上使用resnet50作为teacher net,moblinet作为student net,提升Moblient-SSD 4个mAP。

Table 1. Different student nets are not used GAN-knowledge distillation and the use of a GAN-knowledge distillation in different teacher net test results.

目前已经将该方法使用在faster rcnn上,考虑到时间,目前仅仅在pascal voc 2007上进行测试,coco正在训练。

Table 2. moblienetv1 use GAN-knowledge distillation in coco.

Table 3. Teacher net为骨架网络为ResNet101的faster rcnn,且使用Pascal Voc 2007 trainval作为训练集,在Pascal Voc 2007 test测试集上mAP为74.8+。第一行和第二行使用GAN Knowledge Distillation[1]方法,第三行为cvpr2019的 Distilling Object Detectors with Fine-grained Feature Imitation[2]的方法效果。

奇点云 | StartDT
奇点云 | StartDT

数据智能是未来商业的源动力,奇点云打造的AI驱动的数据中台,基于大数据计算平台、自主研发的视觉计算技术和覆盖多场景的智能终端。帮助企业实现数据采集自动化、数据处理智能化、数据资产私有化、数据应用敏捷化,加快企业创新步伐,实现数据生命周期管理,将数据智能应用到企业经营的各个环节,降低成本,提高效率,协同企业跨越数据智能大规模应用的奇点,让商业更智能。

入门知识蒸馏目标检测生成对抗网络算法
7
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

生成对抗网络技术

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

知识蒸馏技术

Hinton 的工作引入了知识蒸馏压缩框架,即通过遵循“学生-教师”的范式减少深度网络的训练量,这种“学生-教师”的范式,即通过软化“教师”的输出而惩罚“学生”。为了完成这一点,学生学要训练以预测教师的输出,即真实的分类标签。这种方法十分简单,但它同样在各种图像分类任务中表现出较好的结果。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

聚类技术

将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法。聚类分析起源于分类学,但是聚类不等于分类。聚类与分类的不同在于,聚类所要求划分的类是未知的。聚类分析内容非常丰富,有系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

推荐文章
暂无评论
暂无评论~