1. 介绍
如今大多数的检测模型的backbone都需要在ImageNet预训练,才能达到一个较好的结果。但是如果是新设计的网络结构,就需要先在ImageNet预训练,这将会非常耗时。因此,作者提出是否能够跳过这个步骤,而不损失效果。
作者提出,假如我们拥有一个表现很好的检测模型,我们可以用它来监督其他检测网络。那么问题就是如何用一个好的检测模型,监督训练一个更加高效的网络,同时保持它的准确率。
大多数的检测算法,都会有个基于CNN的特征提取器,然后使用不同的方法来对特征进行解码,得到用于检测的数据。因此,大的模型和更加高效的模型的区别主要在于这个CNN特征提取器,也就是backbone。因此,作者认为,mimicking应该加在CNN输出的feature map上。
但是feature map通常维度很高,直接进行模仿很难收敛。考虑到特征提取是基于region或者proposal的,因此,需要从特征中提取对应区域来优化。
作者提出的模仿的方式,可以应对图片缩放,可以使用一种2阶段的流程来进一步提高performance。
3. Mimicking for Object Detection
3.1 Logits Mimic Learning
Mimicking的主要思想是通过大的模型的soft targets或者logits来训练一个小的神经网络。通常soft targets包含了大的模型学习得到的信息,是的小的模型能够近似地拟合这种大模型的知识。loss函数可以是L2:
3.2 Feature Map Mimic Learning
为了能够在检测任务中应用mimicking,作者采用的是feature map模仿。由于卷积出来的特征的维度都非常高,但是与此同时,图片上的物体却可能相对较少,因此直接模仿整个图片的feature map就不是特别合适,因此作者提出,仅仅模仿proposals的feature map。具体loss如下:
从公式可以看出,作者使用了模仿带来的L2 loss和原本的检测的loss,并用一个参数来控制相对大小。
为了减少特征数目带来的影响,作者又提出改用如下loss:
其中
3.3 Network Architecture and Implementation Details
框架如下图
训练的时候,大的网络是以及训练好的Faster R-CNN或者R-FCN,小的网络随机初始化,每次根据小的网络的RPN,从大的网络提取相应的feature map,作为小的网络的监督信息。最后再使用训练数据进行finetune。
3.4 Two-stage Mimic
finetune可能导致退化,结果变差,因此作者提出在2阶段也假如mimic loss。通过二阶段的mimic,就使得特征,proposal信息,以及分类信息都传递给了小网络。
3.5 Mimic over Scales
当输入尺寸减少时,通常会导致结果很差。作者通过在feature map后增加一层deconv,再按照前文提出的mimic方法进行训练。这种方式可以增加performance。