RefineDet算法详解

论文背景

论文全称:Single-ShotRefinementNeuralNetworkforObjectDetection
论文链接:https://arxiv.org/abs/1711.06897
论文日期:2018.1.3

对于目标检测算法,目前准确率最高的算法都是两阶段的算法,然而单一神经网络算法可以实现高效率,保证了检测速度。为了结合两者优势,本文提出了一个新型单一神经网络检测算法,既保证了准确率又保障了效率。
RefineDet包含两个连接模型,命名为提炼锚模型(ARM)与目标检测模型(ODM)。
前者旨在滤除负样本锚以减少分类器的搜索空间,以及粗略调整锚的位置和大小,以便为后续的回归器提供更好的初始化。
后者使用前者提炼的精确锚作为输入来进一步提高回归和对多类标签的预测。
在其中,本文设计了一个转换连接块,将前者的特征转化为后者中预测定位、尺寸、类别标签。使得整体算法是一个端到端的算法。

算法简介

算法提出背景

主流目标检测算法可被分为两类,一类是两阶段的目标检测;另一类是一阶段的目标检测。
两阶段的目标检测算法都是先提取稀疏的候选区域,然后进行分类与回归。
一阶段的目标检测算法是在整张图片中采用不同的尺寸与比例进行常规密集的采样。
目前两阶段的算法在准确率是表现优于一阶段的算法,最主要的原因是样本不平衡的问题

两阶段目标检测算法的优势:

  1. 使用采用启发式采样的两阶段结构来处理类不平衡;
  2. 使用级联的两步式结构来回归目标框参数;
  3. 使用两步特征来描述目标。

因此结合两阶段目标检测算法,本文提出了一个新型的算法。
在这里插入图片描述

图片仅显示了用于检测的层,灰青色的平行四边形表示与不同特征层相关联的精炼的锚框,星星代表精炼的锚框的中心,这些锚框在图像上没有常规的铺设。

实验结果

准确率:
RefineDet算法使用VGG16神经网络在VOC2007与2012数据集上准确率分别达到了85.8%和86.8% mAPs。
效率:
在 NVIDIA Titan X GPU上使用320×320和512×512尺寸的输入,速度分别达到了40.2 FPS和24.1 FPS。

本文贡献

  1. 引入了一种新型一阶目标检测框架;
  2. 为了确保有效性,我们设计TCB以传递ARM中的特征以处理更具挑战性的任务,即在ODM中预测准确的对象位置,尺寸和类别标签;
  3. RefineDet在通用数据集中取得了最新的成果。

算法细节

主要元素

  1. 使用TCB将ARM中的特征传递到ODM中;
  2. 使用两步的级联回归,对于不同位置尺寸的目标进行准确回归;
  3. 负样本锚过滤,删除良好分类的负样本锚来缓解不平衡样本问题。

TCB(Transfer Connection Block)

通过TCB,ARM与ODM可以共享特征;
通过添加高等级特征来传递特征使大规模的文本信息成为一个整体,从而提高检测精度。
在这里插入图片描述
为了匹配维度,我们使用逆卷积操作来使高层的特征图变大,然后使用像素级的方式相加, 然后,我们在求和之后添加卷积层以确保用于检测的特征的可辨别性。
ARM会精炼边界框,返回相对于对应单元格的四个偏移量和两个置信度分数。
浅层feature map(size较大的蓝色矩形块)融合了高层feature map的信息,然后预测bbox是基于每层feature map(每个蓝色矩形块)进行,最后将各层结果再整合到一起。而在SSD中浅层的feature map是直接拿来用的(并没有和高层的feature map融合),也就是对bbox的预测是在每一层上进行的,预测得到结果后再将各层结果整合在一起。

负样本过滤

在训练过程中,负样本中置信度大于0.99的丢弃,
在推测阶段,超过0.99的也有丢弃。

训练

数据增强

拉伸,裁剪,翻转。

锚的设计与匹配

为了处理不同大小的目标,我们选择了四个特征图层,对于VGG-16和ResNet1015,其总步幅大小为8,16,32和64像素,结合用于预测的几种不同尺度与比例的锚点。 每个特征层与一个特定尺度的锚(即,尺寸是相应层的总步幅尺寸的4倍)和三个纵横比(即,0.5,1.0和2.0)相关联。 我们按照[53]中不同层次的锚点尺度设计,确保不同尺度的锚点在图像上具有相同的平铺密度。 同时,在训练阶段,我们根据jaccard重叠确定锚点与地面实例框之间的对应关系,并据此对整个网络进行跟踪。 具体而言,我们首先将每个地面实况与具有最佳重叠分数的锚框匹配,然后将锚框与任何重叠高于0.5的地面实况相匹配。

Hard Negative Mining

与SSD相同,我们选择一些具有最高损失值的负锚箱,使得负数和正数之间的比率低于3:1,而不是使用所有负数锚或在训练中随机选择负锚。

损失函数

在这里插入图片描述
在ARM部分包含binary classification损失Lb和回归损失Lr;同理在ODM部分包含multi-class classification损失Lm和回归损失Lr。
Lb是交叉熵损失函数
Lm是softmax
Lr是L1损失函数
N是正样本的数量

优化

本文对基于RefineDet的VGG-16的额外添加的两层卷积层(例如conv6 1 and conv6 2)利用xaVier方法进行了初始化;
然后对于基于RefineDet的ResNet-101的额外的残差块(res6)进行归一化;
训练利用默认 batch size 设置为32;
微调使用0.9 momentum and 0.0005 weight decay的SGD;
初始化学习率为0.001.

推断

对于所有提炼的框,对于每张图片输出400个高置信度检测器,对于每个类别使用阈值为0.45的非极大值抑值,保留200个框。

猜你喜欢

转载自blog.csdn.net/woduitaodong2698/article/details/85258458