zoukankan      html  css  js  c++  java
  • 论文阅读 | RefineDet:SingleShot Refinement Neural Network for Object Detection

    论文链接: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应该是目前单阶段目标检测算法中效果最好的,检测效果甚至超过大多数的两阶段算法,而且检测速度很快。

  • 相关阅读:
    Asp.Net+Oracle+BootStrap+Jquery
    UML类图几种关系的总结
    PHP对象在内存堆栈中的分配
    php sprintf 详解
    微信错误代码45047:客服消息只能发送20条/个用户
    php利用array_search与array_column实现二维数组查找
    mvc 详解
    php中++i 与 i++ 的区分详解
    Git 别名多个命令 超实用
    php 对象继承
  • 原文地址:https://www.cnblogs.com/cieusy/p/10302025.html
Copyright © 2011-2022 走看看