Single-Shot Refinement Neural Network for Object Detection

论文地址:https://arxiv.org/pdf/1711.06897.pdf

代码地址:https://github.com/sfzhang15/RefineDet


摘要

继承单阶段和二阶段模型优点,叫做RefineDet。

RefineDet由两个内部相互连接的模块组成,即,Anchor Refinement Module(ARM)和Object Detection Module(ODM)。

ARM主要用于过滤掉neg anchors,这样就缩小减少分类器的搜寻空间;并且调整anchor的大小和位置来为之后的回归提供更好的初始化值。ORM主要用于将ARM得到的refined之后的anchor进一步提升回归效果以及预测多分类类别。除了这两个模块之外,作者还涉及了一个Transfer Connection Block(TCB)来将ARM中的特征传输到ODM中来预测目标的位置、大小和类别。同样地,运用了多任务损失函数。


Introduction

单阶段方法通过有规律并密集取样来实现目标检测,它的主要优点是高效,但是准确率不高,原因主要是因为正负样本不平衡问题的存在。二阶段算法主要有三个优点:通过带有sampling heuristic 的二阶段结构来处理样本不平衡问题;用两阶段级联对目标框参数进行回归;用两阶段特征来描述目标。两阶段模型的第一阶段产生的候选目标框是稀疏的。



Related Work

Classical Object Detectors: Haar feature, AdaBoost, DPM

Two-Stage Approach: R-CNN, SPPnet, Fast R-CNN, Faster R-CNN

One-stage Approach: OverFeat, YOLO, YOLOv2, SSD, DSSD


Network Architecture

ARM主要是通过移除两个基础网络,比如在ImageNet上预训练好的VGG-16和ResNet-101,它们的一些分类层,并添加一些辅助层构成的。

Transfer Connection Block (TCB)

TCB除了连接ARM和ODM之间的作用之外,还有另一个用处就是用来将高层特征加入到待传输特征中来整合large-scale context的方式来提升检测的准确性。


为了匹配它们之间的维度,对高层特征运用下采样,然后再将两种特征进行element-wise相加,加完之后为了确保检测特征的唯一性,再加上了一个卷积层。

Two-Step Cascaded Regression

RefineDet运用了一个两阶段级联回归策略来对目标位置和大小进行回归。即,用ARM首先对anchor的位置和大小进行调整,这样就可以为ODM中的回归提供更好的初始化值。特别地,对于特征图上的每一个规律划分的cell都分配给它n个anchor boxes。每一个anchor box相对于它对应的cell的初始位置都是固定的。对于每张特征图上的cell,会预测refined anchor boxes相对于原始tiled anchors的四个offsets以及两个置信分。因此对于特征图上的每个cell,都可以得到n个refined anchor boxes。

ARM中得到的refined anchor boxes之后会输入到ODM送进行进一步的目标分类以及输出更精确的目标位置和大小。对于每个refined anchor box会计算c种类别得分,以及4个精确的offsets(相对于refined anchor boxes)。这一过程同SSD中单的default boxes类似。但是区别在于SSD中直接使用regularly tiled default boxes进行检测,而RefineDet则用的是ARM生成的refined anchor boxes,随后再输入到ODM中得到进一步更为精确的检测结果,这种策略在检测小目标上效果更好。

Negative Anchor Filtering

作者设计了一个negtive anchor过滤机制。特别地,再训练过程中,对于一个refined anchor box,如果它的negtive置信度大于预先设定的阈值/theta,那这个refined anchor box将会在ODM训练过程中被丢掉。因此作者只用那些refined hard negative anchor boxes 以及 refined positive anchor boxes来训练ODM。


Training and Inference

Data Augmentation

expand, crop, flipping

BackBone Network

VGG-16, ResNet-101, Inception V2, Inception ResNet, ResNeXt-101

Anchors Design and Matching

为了处理不同大小目标的问题,作者设计了四中特征层,它们的步长分别为8,16,32,64,除此之外用不同大小的anchor进行预测。每一个特征层都对应着某种大小的anchors(即,anchor大小是对应特征层步长的16分之一倍,0.5,1.0,2.0)。作者用S3FD中设计不同特征层的anchor大小一样的设计原理,确保一张图上所有不同大小的anchor有相同大小的tiling density。同时,在训练阶段,anchor和gt box之间的对应取决于它们之间的jaccard overlap。

Hard Negative Mining

Loss Function

损失函数由两部分组成,即ARM部分的损失和ODM部分的损失。

在ARM模块中,每一个anchor进行一个二分类(即是否为检测目标),然后同时对其坐标和大小进行回归得到refined anchor box,随后ODM将refined anchor box进行进一步的分类和回归。


其中,

i为一个mini-batch中anchor的下标;

l_i*表示anchor的真实类别标签;

g_i*表示anchor的真实位置和大小;

p_i表示anchor是目标的置信度;

x_i表示refined anchor的坐标;

c_i表示预测目标类别;

t_i表示预测bbox的坐标;

N_arm表示ARM中的positive anchors的数量;

N_odm表示ODM中的positive anchors的数量;

L_b表示二分类的交叉熵或者log_loss;

L_m表示多分类的softmax损失函数;

L_r表示smooth L1损失函数;

需要注意的是negative anchors的回归损失是不计算在内的;当N_arm为0时,认为L_b和L_r都为0;同样的,当N_od为0时,认为L_b和L_r都为0。

Optimization

Inference

在inference阶段,ARM首先过滤掉那些置信度高于阈值的negative anchors,然后对剩下的anchors的位置和大小进行refine。之后,ODM将这些refined anchors进行进一步处理,每张图片输出置信度排名前400的检测结果。最后,对每种类别用非极大抑制,设置jaccard overlap阈值为0.45,对每张图片保留置信度前200的检测结果作为最终结果。

猜你喜欢

转载自blog.csdn.net/weixin_40516558/article/details/80829253