RefineDet文章总结:Single-Shot Refinement Neural Network for Object Detection

个人微信公众号:AI研习图书馆,欢迎关注~

深度学习知识及资源分享,学习交流,共同进步~

RefineDet算法系列文章

相关链接

  1. 论文地址
  2. 项目地址
  3. RefineDet文章翻译
  4. RefineDet训练代码解析
  5. RefineDet网络结构解析
  6. 目标检测-RefineDet实现详细步骤
  7. RefineDet论文总结
  8. 目标检测-RefineDet训练脚本解析
  9. 目标检测-RefineDet算法检测部分网络解析
  10. RefineDet:C++测试代码

RefineDet:Single-Shot Refinement Neural Network for Object Detection

论文链接:https://arxiv.org/pdf/1711.06897v1.pdf
代码链接:https://github.com/sfzhang15/RefineDet
文章来源:CVPR 2018

在目标检测领域:two-stage approach:高精度 one-stage approach:高准确率
本文的RefineDet,可以看做将Faster RCNN的two stages检测方法和one-stage方法的SSD结合了起来,在保证performance的情况下,取得了不错的速度。

当前基于 CNN 网络的目标检测可以分为两大类:1) the two-stage approach,2)the one-stage approach
1) the two-stage approach
首先是候选区域的提取,然后是目标的分类和回归,这类方法的检测精度要好于the one-stage approach
2)the one-stage approach
这类方法是通过 regular and dense sampling over locations, scales and aspect ratios,速度快,精度稍微差些,主要原因是 the class imbalance problem,即正负样本比例严重失调

本文提出一个目标检测框架 RefineDet, to inherit the merits of the two approaches (i.e., one-stage and two-stage approaches) and overcome their shortcomings

1. Introduction

目前,检测方法主要分为two stages和one stages,前者的准确度较高,后者的速度较快。Two stages的方法之所以准确度高和速度慢,是因为它采用了RPN机制,对候选框进行初步的筛选,提取RoI得到初步结果后,再通过第二阶段对其进行进一步的回归和分类。
作者就从这两种方法的区别当中得到了思路,他提出了一个one stage的方法,但是通过两个不同的模块来模仿faster rcnn的两个不同的阶段,从而在保证速度的前提下提高了检测效果。
主要的模型框架如下:
在这里插入图片描述
上面的模块是anchor refinement module,简称ARM,用于初步生成proposal,得到class-agnostic的候选框,对应的是faster rcnn的RPN阶段;下面的模块是object detection module,简称ODM,用于对上个模块的结果进行进一步的回归和分类,对应faster rcnn的R-CNN阶段……而提速的原因也很简单,没有从特征图中提取RoI特征并pooling的过程,而是直接把整个特征图进行了传递。作者把该网络称为RefineDet。

2.算法的主要贡献

  1. Anchor refinement module(ARM):(1)过滤掉negative anchors,以减少分类器的搜索空间,缓和正负样本不平衡问题(2)粗略调整anchors的位置和大小,为后续的回归提供更好的初始化。(类似于faster R-CNN 的RPN网络)
  2. Object detection module (ODM): 将refined anchors作为输入,进一步改善回归和预测多级标签。
  3. Transfer connection block(TCB),传输ARM的特征,同时融合深层和浅层特征,用于ODM中预测目标的位置,大小和类别标签。
  4. Multi-task loss function,使得能够端对端的训练整个网络。

3. 网络结构

算法网络结构主要分为三个模块,下面将逐一详细介绍。

(1)ARM

ARM:负责提取整个网络共享的特征,以及对anchor进行二分类和回归,并进行筛选。

该模块和RPN的思路类似,用于对物体进行初步的分类和回归,且分类不带类别信息(只区分前景和背景),主要作用如下:

  1. 过滤掉部分negative anchors,减少搜索空间;这个对结果的提升效果比较明显,作者认为two stages方法之所以效果好,很大一部分原因是因为RPN可以过滤掉极端样本,解决imbalance问题,得到比较好的采样结果
  2. 给ODM进一步的分类和回归提供一个比较原始的信息

大部分机制和SSD比较像,比如Anchor的匹配,overlap阈值选择为0.5。另外,从结构图中可以看到,和SSD类似,这也是一个multi scales的检测框架,作者会在每个scale的feature map上得到n个refined anchor boxes,并将这些boxes的信息传入下一个模块,在传入之前会进行过滤,如果一个refined anchor box的negative confidence,也就是背景类的预测分数大于某个预设的阈值(比如0.99),就排除它,不考虑使用它训练ODM模块,这就是作者说的过滤部分negative anchors的功能……相对的是,在inference的时候,如果refined anchor box的negativea confidence比阈值大,也会在ODM中排除它。

作者认为two stages的方法会大大提升检测效果,尤其是对小目标的物体。

(2)ODM

ODM:接检测器负责检测。
将refined anchors作为输入,进一步改善回归和预测多级标签。

(3)TCB

转移连接块。为了在ARM和ODM之间进行链接,我们引入了TCB,将ARM中不同层的特征图转换为ODM所需的形式,以便ODM可以共享ARM的功能。 值得注意的是,在ARM中,我们仅在与锚点关联的要素图上使用TCB。 TCB的另一个功能是通过向传输的特征添加高级特征来集成大尺寸的上下文内容[13,27],以提高检测精度。 为了匹配它们之间的尺寸,我们使用解卷积操作来放大高层特征图并以元素方式对它们求和。 然后,我们在求和之后添加卷积层以确保用于检测的特征的可辨别性。 TCB的体系结构如图所示。

两步级联回归

当前的一阶段方法依赖于基于具有不同尺度的各种特征层的一步回归来预测对象的位置和大小,这在一些具有挑战性的情况下是相当不准确的,尤其是对于小对象。 为此,我们提出了一个两步级联回归策略来回归对象的位置和大小。 也就是说,我们使用ARM首先调整锚点的位置和大小,以便为ODM中的回归提供更好的初始化。 具体而言,我们将n个锚框与特征图上的每个规则划分的单元格相关联。 每个锚盒相对于其相应单元的初始位置是固定的。 在每个特征映射单元格中,我们预测相对于原始平铺锚点的重新定义的锚定框的四个偏移量和两个表示这些框中前景对象存在的置信度分数。 因此,我们可以在每个特征映射单元格中生成n个重新定义的锚定框。

获得重新定义的锚箱后,我们将它们传递给ODM中相应的特征图,以进一步生成对象类别和准确的对象位置和大小,如图1所示.ARM和ODM中相应的特征图具有相同的维度。 我们计算c类分数和相对于重新定义的锚箱的四个精确的物体偏移量,为每个重新定义的锚箱产生c + 4个输出以完成检测任务。 此过程类似于SSD [30]中使用的默认框。 然而,与SSD [30]直接使用规则平铺的默认框进行检测相比,RefineDet使用两步策略,即ARM生成重新定义的锚盒,ODM将重新定义的锚盒作为输入进行进一步检测, 导致更准确的检测结果,特别是对于小物体检测。

负锚过滤

Negative Anchor Filtering:为了尽早丢弃分类好的负锚并减轻不平衡问题,我们设计了一种负锚定滤波机制。 具体来说,在训练阶段,对于一个改进的锚箱,如果它的负面信度大于预设的阈值θ(即,根据经验设定θ= 0.99),我们将在训练ODM时丢弃。也就是说,我们只通过重新设定的hard负锚箱和重新定义的正锚箱来训练ODM。 同时,在推理阶段,如果为重新定义的锚箱分配负信度大于θ,则它将在ODM中被丢弃以进行检测。

生成的negative anchor太多了,再ARM阶段先过滤掉一些(一种难例挖掘的方法)ratio between the negatives and positives below 3 : 1。

One-stage精度落后于two-stage的一个主要原因是类别不平衡(前景和背景)问题。(Focal Loss就是为了解决这个问题而来,但RefineDet采用了难例挖掘的方式)为了解决这种问题,作者采用了negative anchor过滤。在训练阶段,针对ARM中的anchor,如果negative confidence大于一个阈值θ(θ=0.99,经验值),那么在训练ODM时将它舍弃。也就是通过hard negative anchor和refined anchor来训练ODM。 与此同时,在预测阶段,如果refined anchor box负样本置信度大于θ,则在ODM进行检测时丢弃。

Loss function

与Faster R-CNN的损失函数相似,端对端训练。
在这里插入图片描述
包含两部分,ARM的Loss和ODM的Loss。ARM即包含了二分类和定位尺寸回归(类似于RPN),用于生成refined anchors。ODM则对每一个refined anchors进行分类和位置(大小)回归(类似于Fast R-CNN)。

4.实验结果

试验对应项目已经开源,在本文篇首已给出项目地址,后续会写一篇实现教程,记录复现过程,为芸芸众生采坑,欢迎查阅。试验不用不说,按照项目,皆可复现,再次不再赘述。
在这里插入图片描述
在这里插入图片描述

5.文章总结

在本文中,作者提出了单次细化神经基于网络的检测器,包括两个相互连接的模块,即ARM和ODM。旨在过滤掉负面锚点以减少搜索空间用于分类器,还可以粗略调整位置和锚的大小,以便为后续的操作提供更好的初始化回归器,而ODM将精化的锚点作为前ARM的输入以回归准确对象位置和大小并预测相应的多类标签。整个网络在端到端进行培训。作者进行了几次实验在PASCAL VOC 2007,PASCAL VOC 2012和MS COCO数据集证明RefineDet实现了高效的最新检测精度。

6.研究方向

总体来说,这是一篇不错的改进文章,给我们提高了目标检测研究的一些新思路,值得借鉴,推陈出新,发文不止!未来,大家可以考虑使用RefineDet来检测一些其他特定种类的物体,例如行人,车辆等,并在RefineDet中引入注意机制以进一步提高性能。

您的支持,是我不断创作的最大动力~

可以关注我的个人微信公众号:AI研习图书馆

交流学习,共同进步~

欢迎点赞,关注,留言交流~

深度学习,乐此不疲~

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI研习图书馆

您的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值