论文链接:https://arxiv.org/abs/1711.06897 
代码链接:https://github.com/sfzhang15/RefineDet

摘要

RefineDet是CVPR 2018的一篇论文,文中提出了一个新的single-shot检测器RefineDet,实现了比二阶段方法更高的准确率而且具有与一阶段方法相当的效率。RefineDet包括两个互连模型ARM(anchor refinement module)和ODM(object detection module):前者用于滤除negative anchors来减少分类器的搜索空间,粗略调整anchors的位置和大小给之后的回归器更好的初始化;后者利用前者的anchors进一步回归和预测类别。

网络结构

RefineDet的网络结构如图1所示。ARM类似于Faster R-CNN的RPN,用于去除negative anchors并粗略调整anchors的位置和尺寸;ODM类似于SSD结构,对refined anchors进行进一步回归和分类。这两个互连模块(其实算是两个SSD)模拟了两级结构。此外,文中还设计了transfer connection block(TCB)来进行特征转换,也就是将ARM输出的feature map转换成ODM的输入。

TCB结构如图2所示。TCB通过在传输的特征中添加高层特征来集成大尺度的context,采用反卷积放大高层feature map然后进行element-wise sum,并在求和后加入一个卷积层,以保证特征的可识别性。

得益于TCB的特征融合,使得ODM低层的feature map融合了高层的feature map的语义信息,并基于每层的feature map进行预测,最后对各层的预测结果进行综合,相比于SSD,该部分的优势在于融合了多个层次的feature map,可以有效提升对小目标的检测效果。

为了缓解anchors的不平衡问题,文中设计了negative anchors过滤机制,对于ARM中产生的refined anchor boxes,如果其负的置信度大于预设值,在训练ODM时就丢掉。相应地,在预测阶段,如果产生的refined anchor boxes的负置信度大于阈值,在ODM的检测过程中就丢掉。

训练和预测

采用随机缩放、随机裁剪、随机光照变化、随机翻转等策略进行数据扩增。

使用基于VGG-16和ResNet-101的backbone网络(其他的也可以),移除了网络中的分类层,添加了几个辅助层。以VGG-16为例,通过下采样参数将vgg-16的fc6和fc7转换为卷积层。由于conv4_3和conv5_3具有与其它层不同的特征尺度,因此我们采用L2归一化对conv4_3和conv5_3的特征范数缩放到10和8。在截断的VGG-16的末尾增加了两个额外的卷积层(即conv6_1和conv6_2),在截断的ResNet-101的末尾添加了一个额外的残差块(即res6)实现在多尺度上获取高层信息驱动目标检测。

选取4个feature layer(步长8、16、32、64)处理不同尺度的目标,每个layer和特定尺度(尺度是对应层步长的4倍)的anchors和宽高比(0.5,1.0,2.0)相关联。

通过ARM部分过滤掉一些负样本,之后采用SSD的hard negative mining策略使得正负样本的比例维持在1:3。

损失函数如下:

损失函数包括两部分:ARM和ODM。ARM损失包括二分类的交叉熵和Smooth L1。ODM损失则是Softmax损失和Smooth L1。

实验结果

实验数据集:PASCAL VOC 2007,PASCAL VOC 2012,MS COCO。

在PASCAL VOC数据集上,单尺度输入的检测结果mAP达到0.818(VOC 2007)、0.801(VOC 2012),比faster R-CNN、R-FCN等绝大多数两阶段方法效果都好;而且检测速度大大提升,320*320输入图像检测速度达到40.3fps,512*512的检测速度为24.1fps。

在MS COCO数据集上,多尺度输入的检测结果高达41.8%,不仅优于单阶段检测算法,比绝大多数两阶段算法都高。

RefineDet应该是目前单阶段目标检测算法中效果最好的,检测效果甚至超过大多数的两阶段算法,而且检测速度很快。

论文阅读 | RefineDet:Single-Shot Refinement Neural Network for Object Detection的更多相关文章

  1. 论文阅读笔记五十七:FCOS: Fully Convolutional One-Stage Object Detection(CVPR2019)

    论文原址:https://arxiv.org/abs/1904.01355 github: tinyurl.com/FCOSv1 摘要 本文提出了一个基于全卷积的单阶段检测网络,类似于语义分割,针对每 ...

  2. 论文阅读笔记六十三:DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling(CVPR2017)

    论文原址:https://arxiv.org/abs/1703.10295 github:https://github.com/lachlants/denet 摘要 本文重新定义了目标检测,将其定义为 ...

  3. 三维目标检测论文阅读:Deep Continuous Fusion for Multi-Sensor 3D Object Detection

    题目:Deep Continuous Fusion for Multi-Sensor 3D Object Detection 来自:Uber: Ming Liang Note: 没有代码,主要看思想吧 ...

  4. 论文阅读 | Towards a Robust Deep Neural Network in Text Domain A Survey

    摘要 这篇文章主要总结文本中的对抗样本,包括器中的攻击方法和防御方法,比较它们的优缺点. 最后给出这个领域的挑战和发展方向. 1 介绍 对抗样本有两个核心:一是扰动足够小:二是可以成功欺骗网络. 所有 ...

  5. 【CV论文阅读】:Rich feature hierarchies for accurate object detection and semantic segmentation

    R-CNN总结 不总结就没有积累 R-CNN的全称是 Regions with CNN features.它的主要基础是经典的AlexNet,使用AlexNet来提取每个region特征,而不再是传统 ...

  6. 梳理检测论文-Refinement Neural Network

    Single-Shot Refinement Neural Network for Object Detection 目录 1. motivation 2. RefineDet 解析(Network ...

  7. Parallel Feature Pyramid Network for Object Detection

    Parallel Feature Pyramid Network for Object Detection ECCV2018 总结: 文章借鉴了SPP的思想并通过MSCA(multi-scale co ...

  8. 论文笔记 SSD: Single Shot MultiBox Detector

    转载自:https://zhuanlan.zhihu.com/p/33544892 前言 目标检测近年来已经取得了很重要的进展,主流的算法主要分为两个类型(参考RefineDet):(1)two-st ...

  9. 【论文阅读】DSDNet Deep Structured self-Driving Network

    前言引用 [2] DSDNet Deep Structured self-Driving Network Wenyuan Zeng, Shenlong Wang, Renjie Liao, Yun C ...

随机推荐

  1. Eclipse Failed to get the required ADT version number from SDK

    之前本人的AndroidStudio和Eclipse使用的是同一个SDK,然后使用AndroidStudio的 SDK Manager对SDK进行了update,再打开Eclipse就报了“Eclip ...

  2. 做个简单的Redis监控(源码分享)[转载]

    Redis监控 Redis 是目前应用广泛的NoSQL,我做的项目中大部分都是与Redis打交道,发现身边的朋友也更多人在用,相对于memcached 来说,它的优势也确实是可圈可点.在随着业务,数据 ...

  3. java上转型之instanceof--避免引用类型强制转化出错

    Object obj="hello"; 上面的obj是什么类型? object?NO!String?NO? 答案:编译阶段是Object类型,而在运行阶段是String类型.实际上 ...

  4. Java 栈与堆简介

    一.前言 长久以来,一直被Java的内存分配问题,堆和栈问题困扰好久,面试的时候也非常心虚,这几天好好通过看书和技术博客来整理了一下,希望能找到我自己的理解方式. 二.内存 内存分物理内存和虚拟内存, ...

  5. OpenSSH免密码登录SSH2

    SSH2免密码登录OpenSSHhttp://blog.csdn.net/aquester/article/details/23836299 两个SSH2间免密码登录http://blog.csdn. ...

  6. [Selenium With C#基础教程] Lesson-06 单选按钮

    作者:Surpassme 来源:http://www.jianshu.com/p/08ee1929875f 声明:本文为原创文章,如需转载请在文章页面明显位置给出原文链接,谢谢. 单选按钮通常用在需要 ...

  7. C#中使用多线程访问Winform中控件的若干问题

    我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial  ...

  8. 领域模型驱动设计(Domain Driven Design)入门概述 -----DDD 解释

    软件开发要干什么: 反映真实世界要自动化的业务流程 解决现实问题 领域Domain Domain特指软件关注的领域 在不能充分了解业务领域的情况下是不可能做出一个好的软件 领域建模 领域模型驱动设计 ...

  9. 关于super关键字与继承

    super它只是一个限定词,当用super引用时,它也是引用当前对象本身,只是super只是限定了访问当前对象从父类那里继承得到成员变量或方法. import java.util.Date; publ ...

  10. .net 有参属性 index (索引)

    public class IndexTempte { public ArrayList nameList = new ArrayList(); public string this[int index ...