摘要:作者提出了一种网络结构RefineDet,既能取得比二阶段目标检检测算法更高的精度,也能保持与一阶段目标检测算法相当的效率。网络主要由ARM、ODM和TCB三个模块组成,,并且应用多任务损失函数来完成网络的端到端训练。
作者认为目前SOTA的二阶段目标检测算法有三个优点:
① using two-stage structure with sampling heuristics to handle class imbalance;
② using two-step cascade to regress the object box parameters;
③ using two-stage features to describe the objects
ARM模块主要包含两部分功能,第一部分是识别和去除negative anchors,以此来减少分类器的搜索空间。第二部分是粗略的调整目标框的位置和大小,为后续的网络回归提供更好的初始化。
ODM模块将ARM提供的精细的anchor作为网络的输入,进一步提高目标框回归和多标签分类的准确率。
这两个相互连接的模块(ARM和ODM)模仿了二阶段目标检测的结构,从而继承了上述三个优点,产生了高效率的精确检测结果。
TCB模块负责将ARM中的特征传输到ODM中,来预测物体的目标框位置、大小和类别标签
与SSD的结构相似,RefineDet基于一个前馈卷积网络生成固定数量的bbox和对应的分数,紧接着NMS来得到最终结果。
ARM模块是由在ImageNet上预训练的VGG-16和ResNet101两个基准网络,去除分类层和增加一些辅助结构构成的。ODM模块是由TCB模块的输出,紧跟预测层(3x3卷积)构成的。
TCB的引入是为了转换ARM中不同层的特征到ODM中。对于ARM模块,TCB仅仅与anchor相关的特征图进行连接。TCB的另一个功能是将高级语义特征添加到传输的特征中来集成大规模的上下文信息,以此来提高检测精度。
另外,为了匹配ARM和ODM中的特征图维度,作者使用了反卷积操作来增大高层特征图,并且将他们进行相加。最后再增加一个卷积层来确保特征的区分度。
目前一阶段的目标检测算法都依赖于不同尺度的特征图来预测物体的目标框位置和大小,这在一些具有挑战性的场景中准确率会比较欠缺,特别是对于小目标的检测。因此作者提出了两步级联回归的策略来回归出物体的目标框位置和大小。
首先使用ARM模块来调整anchor的位置和大小,为ODM模块的回归提供更好的初始化。作者将n个anchor boxes与特征图上规则划分的单元格相关联,每一个anchor box的初始位置相对于它对应的单元格是固定的。在每一个特征图的网格中,预测四个精细的anchor boxes与原本平铺的anchor的偏移量,和两个指出bbox中是否含有前景物体的置信度分数。
在获得精细的anchor boxes之后,将其送入ODM中对应的特征图当中 ,进一步生成物体的类别和目标框的位置的大小。ARM和ODM对应位置的特征图中有同样的维度。作者计算了c个类别的分数和4个正确的偏移量,对于每一个精细的anchor boxes都获得了c+4输出。
相比于SSD直接使用平铺的默认anchor boxes,RefineDet的做法可以获得更优的检测效果,特别是对于小物体的检测。
为了尽早抛弃分类良好的negative anchors,并且缓解类别不平衡的问题,作者设计了一个negative anchor过滤机制。在训练阶段,对于一个精细的anchor box,如果他的negative置信度分数大于一个预设值θ ,那它将会在ODM的训练过程中被抛弃。也就是说,在ODM的训练中,只会用到困难负样本和良好的正样本。 在推理阶段,如果一个精细的anchor box的 negative -confidence大于预设值 θ ,则在ODM模块的推理中被丢弃掉。
Randomly expand and crop the original training images with additional random photometric distortion and flipping to generate the training samples.
使用在ImageNet数据集上预训练的VGG-16和ResNet-101作为主干网络。通过重采样参数将VGG-16的 fc6 和 fc7 转换为conv_fc6 和 conv_fc7,因为conv4_3和conv5_3相比于其他层有着不同的特征图尺度,使用L2 normalization将conv4_3和conv5_3的特征缩放到10和8,然后通过反向传播来进行放缩尺度的学习。
另外,为了捕获高级语义特征信息和驱动多尺度的物体检测,作者在去除了全连接层的VGG-16的尾部加入两个额外的卷积层(conv6_1和conv6_2),在去除了全连接层的ResNet-101的尾部增加了一个额外的残差块(res6)。
为了检测不同尺度的物体,作者选择了四个特征层来进行预测,步长分别为8,16,32和64。每一个特征层都与一个特定尺度的anchor(尺度是对应层总步长的四倍)和三个横纵比(0.5,1.0和2.0)相联系。在训练阶段,anchor和真值之间的对应关系是根据交并比来确定的,首先匹配真值与anchor之间有着最大交并比的,其次匹配其余交并比大于0.5的anchor和真值框。
在匹配步骤完成后,大部分的anchor boxes都是负的,即使是ODM中,一些简单的负anchors都会被ARM提前抛弃掉。与SSD类似,作者使用了难例挖掘来缓解极端的前景-背景类别不平衡问题。挑选那些有着最高loss值得负的anchor boxes来使得负的和正的数量比值为3:1,而不是使用所有的负anchor或者随机挑选一部分负的anchor。
使用ImageNet预训练模型初始化网络,对于VGG-16版本的RefineDet,额外添加的层(i.e., conv6_1 和 conv6_2)使用 ”xavier“的方法来随机初始化网络参数。对于ResNet101版本的RefineDet,额外的残差块(i.e res6)则从零均值高斯分布(标准差为0.01)中提取参数。
设置训练的batchsize=32,使用SGD优化器来微调网络,动量=0.9,权值衰减为0.0005,初始学习率为0.001.
在推理阶段,ARM模块首先过滤掉负置信度大于预设值θ的常规平铺anchor,然后精调剩余的anchor的位置和大小。在那之后,ODM模块接管这些精调后的anchor,每幅图像输出最高置信度的400个检测框。最后使用阈值为0.45的的NMS进行后处理,保留200个高置信度的目标框。
为了证明负anchor的过滤是有效地,作者在训练和测试阶段的anchor置信度阈值都设置为1.0,RefineDet的其余部分保持不变,这样所有精细的anchor都会被送到ODM模块中检测。实验结果表明,移除negative anchor filtering会导致0.5%的map下降,原因是因为大部分这些分类良好的负anchor在训练阶段会被过滤掉,这会在一定程度上解决类别不平衡的问题。
为了验证两步回归方法的有效性,作者重新设计网络结构,直接使用常规平铺anchor的方式,而不是先使用ARM模块来对anchor进行初筛。实验结果表明,这带来了巨大的性能下降(2.2% map)。