人工智能正在驱动新一轮的商业变革,而算法技术则是推进核心底层技术的重要力量。算法崛起时代,技术浪潮可谓一日千里,算法工程师也只有不断精进自身技术,才能与时俱进、驭浪前行。近日,奇点云算法工程师三角肌在目标检测算法领域又有新突破。算法
摘要网络
卷积神经网络对目标检测的精度有着显著的提高,而且随着卷积神经网络的深度加深,对目标检测精度提高也越大,可是也须要更多的浮点计算。许多研究者经过知识蒸馏的方法,经过把一个更深更大的教师网络中的知识转移到一个小的学生网络中,以提升学生网络在目标检测中的效果。而大部分知识蒸馏的方法都须要设计复杂的代价函数,而且多数针对两步目标检测算法,本文针对一步目标检测算法提出一个干净有效的知识蒸馏方案。将教师网络生成的特征层做为真实样本,学生网络生成的特征层作为假样本,并对二者作生成对抗训练,以提升学生网络在一步目标检测中的表现。架构
1 Introduction框架
近些年来,随着目标检测算法的发展,研究者们发现利用更深更大的卷积神经网络做为骨架,对目标检测算法的精度提高越大。而且随着目标检测算法的检测精度提高,使视觉检测算法逐渐从非关键性领域,走向关键性领域(好比无人驾驶和医疗等领域)。可是为了保证检测精度,不得不使用更大的卷积神经网络做为骨架,形成检测速度降低,计算设备成本增长。所以许多研究者在确保检测精度的前提下,提升检测速度提出了不少方法和总结,如经过深度分离卷积 [1,2],或者经过点群卷积(pointwise group convolution)和通道混洗(channel shuffle)[3, 4] 来下降卷积神经网络浮点运算次数的方法,在保证骨架网络精度和容量的状况下减小计算量。虽然得到可观的提速效果,可是这些方法须要精心设计和调整骨架网络。不少研究者认为更深的骨架网络虽然有着更大的网络容量,所以在图像分类、目标检测等任务上有着更优秀的表现。可是一些特定的任务并不须要这么大的容量,因此在保证卷积神经网络精度的状况和下,对卷积神经网络作压缩、量化、通道减枝等[5, 6, 7, 8, 9]。ide
另外一方面,有关于知识蒸馏的工做代表[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 Worksui
深度学习目标检测算法架构主要分为两种,一种是一步检测,好比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]的方法效果。