论文地址:Single-Shot Refinement Neural Network for Object Detection

项目地址:RefineDet

0x01 Abstract

当前的目标检测网络主要分为两大类:

  • single-stage:SSD、YOLO、YOLO9000
  • two-stage:Faster RCNN 、 R-FCN、Mask R-CNN

single-stage通过对位置,比例和长宽进行规则和密度采样来检测对象。two-stage首先选取目标区域,然后对目标分类。single-stage方法速度快,但是检测精度比two-stage低。

因此作者提出了RefineDet方法,同行继承了two-stagesingle-stage两者的优点。它有两个模块构成,一个是anchor细化模块(ARM)一个是目标检测模块(ODM)。


RefineDet论文笔记

ARM模块用来减小分类器的搜索空间,粗略地描述anchor的位置和大小。通过连接模块(TCB)将ARM中的特征,传输给ODM模块,以获取更加准确的目标位置和大小。

其实这里我们可以知道,这个网络的好处就是将那个原来two-stage的串行结构转化成了并行结构。很不错的思想!!!

0x02 网络结构

和SSD一样,RefineDet采用前馈网络,该网络产生固定数量的框,并且区分框中的不同类别对象,最后非极大值抑制输出最终结果。

RefineDet有两个互相连接的模块ARM和ODM组成。这两个模块之间通过TCB模块连接


RefineDet论文笔记

而且这里的TCB是将不同层次的ARM特征转化为ODM,它这里有一个回传的操作,将高层次的特征通过去卷机操作(实际是一种转置卷积),使特征图之间的尺寸匹配,然后与低层次的特征相加。

针对小目标的识别,作者这里采用了两步级联回归。在ARM中先调整anchor的位置和大小,然后用这种粗略的操作作为ODM的输入,最后ODM再进一步检测和识别物体,这种做法会有更加精确的检测结果。

single-stage精度落后于two-stage的一个主要原因是类别不平衡问题。为了解决这种问题,作者采用了Negative anchor过滤。在训练阶段,针对ARM中的anchor,如果negative confidence大于一个阈值θθ=0.99),那么在训练ODM时将它舍弃。也就是通过hard Negative anchor和ARM anchor来训练ODM。

RefineDet的损失函数由两部分组成,即ARM中的损失和ODM中的损失。损失函数定义为

L({pi},{xi},{ci},{ti})=1Narm(iLb(pi,[li1])+
i[li1]Lr(xi,gi)+1Nodm(iLm(ci,li)+i[li1]Lr(ti,gi))

其中i表示一个batch中的第几个anchor,li表示anchor_i的ground truth的类别 ,gi表示anchor_i的ground truth位置和大小,pib表示置信度,xi表示ARM中anchor的坐标。ci表示预测类别,ti表示ODM中的预测框坐标信息。NarmNodm分别表示ARM和ODM中的positive anchor数量。Lb表示二值分类损失(有目标\没有目标),Lm表示多类别损失,Lr表示回归损失。[li1]就表示如果negative confidence大于一个阈值θ,那么返回1,否则返回0。如果Narm=0,设置Lb(pi,[li1])=0Lr(xi,gi)=0;如果Nodm=0,那么设置Lm(ci,li)=0Lr(ti,gi)=0

0x03 训练结果


RefineDet论文笔记


RefineDet论文笔记

相关文章:

  • 2021-10-17
  • 2021-09-10
  • 2021-06-28
  • 2021-08-26
  • 2021-04-15
猜你喜欢
  • 2021-10-14
  • 2021-08-26
  • 2021-07-09
  • 2021-11-03
  • 2021-08-19
  • 2022-12-23
  • 2021-12-19
相关资源
相似解决方案