论文链接: https://arxiv.org/pdf/1711.06897.pdf

摘要

对于目标检测,两阶段方法(faster rcnn)取得了最好的精确度,然而一阶段方法(SSD)非常的高效。在这篇文章中提出了一个一阶段检测器,称之为retinedet,继承了两种方法的优点,克服了他们的缺点,取得了比两阶段方法还好的精度,并且保留了一阶段方法的高效。RefineDet由两个内部连接的模块构成,分别为anchor refinement module(ARM)和object detection module(ODM)。具体的说,前者是为了(1)过滤负例,为分类减少搜索空间,(2)粗滤的调整anchors的位置和尺寸为后续的回归器提供更好的初始值。后者模块利用前者的微调过的anchors作为输入,进一步的优化anchors的归回值,和多分类的结果。与此同时,我们设计了一个transter connection block(TCB)将第一模块中的特征图转移到第二模块进行预测位置,尺寸和物体的类别标签。多任务损失函数使得我们可以end to end训练网络。实验在PASCAL VOC 2007, PASCAL VOC 2012, and MS COCO 证实RefineDet取得了最好的精度并且高效。代码链接https://github.com/sfzhang15/RefineDet

介绍

最近一些年,因为深度神经网络(DNN)目标检测取得了很大优化。目前主流的DNN检测器可以分为两类:(1)两阶段的方法(faster rcnn 等)(2)一阶段的(SSD,YOLO系列等)。在两阶段方法中,数量不多的候选目标框先被产生,然后他们进一步被分类和回归。两阶段方法取得了顶级的表现在几个挑战比赛中,包括PASCAL VOC 和MS COCO。
单阶段方法通过在位置、尺度和纵横比上定期密集采样来检测目标。主要的优势就是高效。然而,它的精确度通常没有两阶段方法高效,一个主要的原因就是类别不平衡问题,即正负样例不均衡。
一些最近的方法在一阶段方法中主要针对这个不平衡类别问题来优化检测精度。Kong等人提出RON使用对卷积特征映射先验约束,大大减少搜索空间。Lin等提出(Focal Loss)强调类别不平衡问题通过重塑标准的交叉熵损失加强在一系列稀疏难例训练并且减少权重在容易分类的样例上。Zhang等人( S 3 F D S^3FD S3FD)设计了一个最大限度标签机制减少因为类别不均衡造成的false positives(负例结果网络识别成正例)
在我们的观点,目前流行的两阶段方法,Faster R-CNN,R-FCN,和FPN等比一阶段方法有三个优点:

  1. 使用两阶段 抽样启发解决类别不均衡
  2. 使用两阶段逐级回归目标box参数
  3. 使用两阶段特征描述目标。
    在我们的工作中,设计一个新的目标检测框架,称之为RefineDet,继承了两阶段方法的优点并且克服他们的缺点。它优化了一阶段方法的结构通过使用两个内部链接模块anchor refinement module(ARM)和object detection module(ODM)。准确的说,ARM是为了(1)过滤负例,为分类减少搜索空间,(2)粗滤的调整anchors的位置和尺寸为后续的回归器提供更好的初始值。ODM块利用前者的微调过的anchors作为输入,进一步的优化anchors的归回值,和多分类的结果。如图一所示,两个内部模块模仿两阶段结构因此继承了他的三个优点产生精确的检测并且很高效。除此之外,我们设计了一个transter connection block(TCB)将第一模块中的特征图转移到第二模块进行预测位置,尺寸和物体的类别标签。多任务损失函数使得我们可以end to end训练网络。
    本方法在VOC 2007和2012数据集上使用VGG16达到了 85.6 85.6%和86.8% 85.6mAPs。同时它比之前的一阶段和两阶段方法的最好结果都好。RefineDet很高效,利用NVIDIA Titan X GPU输入尺寸 320 × 320 , 512 × 512 320\times320,512\times512 320×320,512×512分别跑出40.2FPS和24.1FPS。
    本文的主要贡献总结如下:
  • 提出了新的一阶段框架用来目标检测,有两个内部模块构成(ARM,ODM)。这导致比两阶段方法更好并且保留了一阶段方法的高效。
  • 为了保证雄安率,我们设计了TCB转移了ARM中的特征图解决更有挑战的任务,预测目标位置,尺寸和类别标签在ODM。
  • RefineDet取得了非常好的结果在目标检测上( PASCAL VOC 2007 ,PASCAL VOC 2012 and MS COCO )

2 相关工作

经典的目标检测器 早期的目标检测方法是基于滑动窗口,在密集的图像网格上应用手工制作的特征和分类器来查找对象。作为最成功的方法之一,Viola和Jones使用Haar特征图和AdaBoost训练一系列级联分类器用于人脸检测取得了令人满意的精度并且高效。DPM是另一种流行的方法,它使用多尺度可变形部件模型的混合物来表示高度可变的对象类,在PASVCAL VOC数据集保留顶尖的结果好多年。
两阶段方法 两阶段方法由两部分构成,第一部分(Selective Search,EdgeBoxes,DeepMask,RPN)生成一系列数量不多的候选框,第二步利用卷积网络确定目标的位置和类别标签。两阶段方法(R-CNN,SPPnet,Fast R-CNN,faster r-cnn)取得了杰出的效果在几个挑战数据集上。从那以后,多个有效的技巧被提出来了提升表现,像是架构图(R-FCN,ME R-CNN,Couplenet),训练策略(hard example mining,a-fast-rcnn),上下文推理(***inside-outside net,. Object detection via a multiregion and semantic segmentation-aware CNN model, Contextual priming and feedback for faster R-CNN. In ECCV, Gated bi-directional CNN for object detection)***,多层探索(A unified multi-scale deep convolutional neural network for fast object detection,Towards accurate region proposal generation and joint object detection,fpn,Beyond skip connections: Top-down modulation for object detection. )

一阶段方法 考虑高效性,一阶段方法吸引了更多的关注,Sermanet等人提出的OverFeat方法用于分类和定位和检测基于深度学习,是端到端的训练,从原始像素到最终类别。Redmon使用了一个单一前向神经网络直接预测类别和位置,称之为YOLO,这个方法是非常快的。在那以后,YOLOv2也被提出来了提升了YOLO在几个方面:(1)在所有卷积层后加了BN层,(2)使用高分辨率分类器,(3)使用带有anchor box的卷积层代替了全卷积层。Liu等人提出了SSD方法,SSD对不同层扩展了不同尺度的anchors在一卷积层内,并且强制每个层专注于预测一定规模的对象。DSSD将附加上下文引入到SSD通过反卷积提高精度。DSOD设计了一个有效的框架并且提出一些从零训练目标检测器的原则,遵循SSD的网络结构。为了提高精度,一些一阶段方法(RON,Focal Loss, S 3 F D S^3FD S3FD)意在强调类别不平衡问题通过设计损失函数或者分类策略。尽管一阶段方法取得很好的进程,他们的精度依然低于两阶段方法。

3 网络结构

参考figure 1中全面的网络结构。和SSD类似,refineDet基于一个向前卷积网络产生固定数量的bounding boxes并且表示这些框中存在不同类别对象的得分,然后进行非最大抑制以生成最终结果。RefineDet又两个内部结构模块,ARM和ODM。ARM一再移除负面anchors为分类器减少搜索空间,并且粗糙的调整位置和anchor尺寸为后续的回归提供更好的初始值,ODM意在回归精确目标位置并且预测多类别标签根据refined anchors。ARM构成通过移除分类层并且为两个基础结构(VGG-16,ResNet-101在ImageNet预训练的)添加一些附属结构。ODM是由TCBs的输出构成,后面接着预测层(3x3卷积核的卷积层),产生了目标类别的得分和相对于改进的锚盒坐标的形状偏移量。下面解释三个核心构建在RefineDet

  • TCB把ARM的特征图转移到ODM进行目标检测。
  • 两阶段级联回归,精确的回归目标的位置和尺寸
  • 负例过滤,尽早拒绝分类良好的负面锚,缓解失衡问题。(难样例挖掘)

TCB 链接ARM和ODM,我们介绍TCBs传递ARM中不同层的特征图到ODM需要的形式,以至于ODM可以共享ARM的特征图。我们仅在和anchors映射的特征图上使用TCBs。另一个功能是综合大尺度的内容通过将高层的特征图和转换过的特征图相加以提高检测精度。为了匹配他们之间的维度,我们使用反卷积操作扩大高层的特征图并且按像素相加。然后,我们增加一个卷积层在相加后确保检测特征的区别性。TCB的结构如下figure 2所示

两阶段级联回归 目前一阶段方法依赖一阶段方法基于带有不同尺度的不同特征层来预测物体的位置和尺寸,这是不精确的在一些有挑战的场景,尤其是小物体的检测。我们提出一个两阶段级联回归策略来回归物体的位置和尺寸。我们使用ARM首先调整anchors的位置和尺寸为ODM的回归操作提供更好的初始值。我们在特征图上的每个cell联系n个anchor boxes。每个anchor box的初始位置和他对应的cell是固定的。每个特征图cell,我们预测四个相对于原始的平铺anchors改进anchors的偏移,并且两个置信得分表示这些boxes中是否存在前景物体。因此,我们可以得到n个改进的anchor boxes在每一个特征图像素点。
在获得改进的anchor boxes以后,我们传递他们到ODM对应的特征图进一步进行物体分类和精确物体的位置和尺度,如figure 1所示。在ARM和ODM中对应的特征图有相同的尺度。我们计算对应的赶紧anchors boxesc类别得分和4个精确的偏移。为每一个改进后的产生c+4个输出完善检测任务。这个进程和在SSD中默认框的使用有点像是。然后,和SSD直接使用规则摊开的默认框用于检测不同。RefineDet使用两阶段策略,ARM产生改进的ahchor boxes,ODM利用这些改进的anchor boxes作为输入进一步检测,会得到更精确的结果,尤其是对一些小物体。
负面anchor过滤 尽早排除分类良好的负面anchors(iou很小的)缓解样例不均衡问题。我们设计一个负例anchors过滤器。尤其是在训练阶段,为了改进anchor box,如果负面置信度大于一个预设值θ(设θ=0.99),我们将废弃它在训练ODM时。我们仅仅通过改进改进难负例anchor boxes并且改进正例anchor boxes来训练ODM。与此同时,在前推阶段,如果一个改进anchor box有一个负面置信度大于θ,在ODM检测阶段会被废弃掉。

4 训练和前推

数据增强 我们使用几个数据增强的方式构建一个更健壮的模型来适应不同的物体。

  • 我们随机扩展和裁剪原始的训练图片用额外的随机光度失真。
  • 翻转产生训练样本
  • 参考SSD: single shot multibox detector.查看更多细节。
    骨干网络 我们使用VGG-16和ResNet-101作为主干网络在我们的RefineDet,这两个网络都在ILSVRC CLS-LOC数据集上进行微调。RefineDet可以工作在其他的网络中,像是Incep V2,Inception ResNet,我们把VGG16的fc6,fc7全连接层换成卷积层conv_fc6,和conv_fc7通过下采样参数。因为conv4_3,conv5_3由不同的特征图尺度和其他层相比,我们使用L2标准化去缩放特征图规范,conv4_3,conv5_4分别到10和8,然后在反向传播的过程中学习这个缩放。与此同时为了不会高层信息和多尺度目标检测,我们额外增加两个卷积层(conv6_1和conv6_2)在阶段的VGG-16后面和一个额外的residual block在阶段的ResNet101结尾。
    anchors设计和匹配为了解决不同尺度的物体,我们选择了四个特征层总的步长是8,16,32,64像素分别对应VGG16和ResNet101,与几种不同尺度的anchors相关联进行预测。每一个特征层联系一个特定的anchor尺度,和三个方向比例(0.5,1.0,2.0).我们遵循anchor设计规模尺度在不同的层上 S 3 S^3 S3FD: Single shot scale-invariant face detector. In ICCV,,确保了不同尺度的scale有相同的摊开面积在图像上。我们首先匹配每一个gt anchor和对应的iou最大的anchor,然后匹配gt box和anchors的iou>0.5的anchors作为正例。

难负例挖掘在匹配阶段,大多数的anchor boxes是负例,这些负例在ARM阶段被轻松排除了。和SSD相似,我们使用难负例挖掘缓解前后的背景比例不均衡问题。我们选择负例和正例比例为3:1,并且在选择负例过程中选择loss最大的前n个(也就是iou最大的前n个,这样的负例训练的网络有更强的区分正负样例能力。

损失函数 损失函数由两部分构成:ARM损失和ODM损失。对于ARM,我们设计一个两分类标签(区分是不是物体)对每一个anchor并且回归他的位置和尺寸得到改进的anchor,在那以后,我们传递改进的anchors置信度小于阀值的负例到ODM进一步预测目标类别精确目标位置和尺度。我们设计损失函数如下:

i i i是每个mini-batch的索引, l i ∗ l_i^* li∗​是anchor i i i真实类别的标签, g i ∗ g_i^* gi∗​是 i i i的真实位置和尺寸, p i , x i p_i,x_i pi​,xi​是anchor i i i预测有没有物体,并且在ARM阶段进行改进的box。 c i , t i c_i,t_i ci​,ti​是在ODM阶段预测的类别和对应的bounding box。 N a r m , N o d m N_{arm},N_{odm} Narm​,Nodm​分别是ARM和ODM阶段的正例anchors数量。 L b L_b Lb​是交叉熵二分类结果, L m L_m Lm​是多分类softmax loss置信度。和Fast R-CNN相似,我们使用L1正则项。 [ l i ∗ ≥ 1 ] [l_i^*\ge1] [li∗​≥1],当置信度是true输出1,否则为0. [ l i ∗ ≥ 1 ] L r [l_i^*\ge1]L_r [li∗​≥1]Lr​表明忽略负例的回归损失。

Optimizatio主干网络使用VGG-16,和ResNet101,使用预训练模型在 ILSVRC CLS-LOC结果。我们使用"xavier"方法碎金初始化参数vgg16和resnet101两个额外的卷积层(conv6_1,conv6_2),给额外的残差块用均值为0,标准差为0.01的高斯分布初始化。训练阶段默认batch-size 32,整个网络使用SGD优化器,设置0.9的动量,并且用0.0005的weight decay。设置初始学习率为0.001.针对不同的数据集采用不同的衰减率,在后面会进行描述。

Inference 在前推阶段,ARM首先过滤置信度小于阀值 θ \theta θ的负面样例。然后优化剩余anchors位置和尺寸。在那以后,ODM接收这些改进的anchors并且每个图片输出400高置信度的detections。我们使用非极大抑制每个类iou为0.45,并且保留top200高置信度的检测结果产生最后的检查结果。

5 实验

5.1 pascal voc2007

设置初始学习率0.001训练前80k轮,然后过20k下降为 1 0 − 4 10^{-4} 10−4,再过20k下降为 1 0 − 5 10^{-5} 10−5,使用的batch size=32训练阶段。
输入尺寸实验有两种(320x320)或者(512x512)

5.2 pascal voc2012

first 160k iterations:learning rate = 1 0 − 3 10^{-3} 10−3
another 40k : 1 0 − 4 10^{-4} 10−4
another 40k : 1 0 − 4 10^{-4} 10−4
input image size 320x320 or 512x512

5.3 MS COCO

first 280k iterations:learning rate = 1 0 − 3 10^{-3} 10−3
another 80k : 1 0 − 4 10^{-4} 10−4
another 40k : 1 0 − 5 10^{-5} 10−5
input image size 320x320 or 512x512

6 结论

在本文中,我们提出了一种一阶段改进神经网络检测器,有两种内部模块构成,ARM和ODM。ARM过滤负例,为分类减少搜索空间,粗滤的调整anchors的位置和尺寸为后续的回归器提供更好的初始值。ODM模块利用前者的微调过的anchors作为输入,进一步的优化anchors的归回值,和多分类的结果。整个网络是利用端到端的多任务训练方式。我们实验在PASCAL VOC 2007, PASCAL VOC 2012, 和 MS COCO数据集上证明了RefineDet有state-of-the-art检测精度并且高效。在未来,我们计划用RefineDet检测其他类别的物体,例如行人,车辆和脸,并且在RefineDet使用注意力机制进一步提升效果。

refinedet 翻译相关推荐

  1. 2018-1-3-这一年,谢谢自己

    layout title date author desc in_head post 这一年,谢谢自己 2018-01-03 09:30:02 +0800 南丞 这一年谢谢自己,给自己的一篇博客 &l ...

  2. A Survey of Deep Learning-based Object Detection论文翻译 + 阅读笔记

    A Survey of Deep Learning-based Object Detection论文翻译 + 阅读笔记 //2022.1.7 日下午16:00开始阅读 双阶段检测器示意图 单阶段检测器 ...

  3. 【翻译】Bridging the Gap Between Anchor-based and Anchor-free Detection

    [翻译与个人理解]Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sampl ...

  4. Object Detection in 20 Years A Survey-论文翻译(阅读笔记)

    Object Detection in 20 Years A Survey论文翻译(阅读笔记) 原文地址:[1905.05055] Object Detection in 20 Years: A Su ...

  5. ECCV2020 Piou Loss论文翻译

    ECCV2020 Piou Loss论文翻译 摘要 1. 介绍 2 相关工作 2.1 定向目标检测器 2.2 回归损失 3 Pixels-IoU (PIoU) Loss 4.Retail50K 数据集 ...

  6. Mysql函数group_concat、find_in_set 多值分隔字符字段进行数据库字段值翻译

    Mysql函数group_concat.find_in_set进行数据库字段值翻译 场景 配方表:记录包含的原料 sources表示原料,字段值之间用逗号分隔 原料表:对应原料id和原料名称 现需要查 ...

  7. “Attention is All You Need 翻译

    <p><img src="output_0_0.png" alt="png"></p> "Attention is ...

  8. 基于PyTorch的Seq2Seq翻译模型详细注释介绍(一)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qysh123/article/deta ...

  9. 全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning

    全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 摘要 人们越来越需要将机器学习应用到各种各样 ...

最新文章

  1. Ubuntu14.04下配置OpenGL及测试代码
  2. getOutputStream() has already been called for this response
  3. 手机游戏繁荣时代,团队的N条死路
  4. python基础-文件操作(10)
  5. JDBC批量Insert深度优化(有事务)
  6. Async/await 和 Promises 区别
  7. VirtualBox 4.3“不能为虚拟电脑 打开一个新任务”解决方案 - 转
  8. 语音识别与语义识别究竟有何区别?
  9. JavaScript Oriented[探究面向对象的JavaScript高级语言特性]
  10. ios android 宏,iOS常用宏定义
  11. zz android touch panel
  12. Ds1302 时钟芯片的使用
  13. 屏蔽不讲robots规则的国外垃圾蜘蛛
  14. 《管理学》第八章 领导
  15. 第三天 引用类型选择结构循环结构【悟空教程】
  16. WPS打开文档时显示“文档被其他程序占用,是否以只读的方式”打开解决方法
  17. 时间“照妖镜”のmanic time
  18. 有关监控的前5名最佳书籍
  19. OFGP 协议跨链解决方案
  20. python输出如何加单位_如何以十为单位写出数据输出

热门文章

  1. php车辆静电贴,怎样清除车窗玻璃上的贴纸 及汽车前挡标志静电贴使用方法
  2. matlab 模拟调制dsb,Matlab实现模拟调制与解调
  3. MySQL中 ACID 及他底层实现原理
  4. 微信小程序——template标签详解
  5. 操作系统(Operating System,OS)
  6. QT读取网卡列表多网卡绑定组播网卡
  7. Python二进制、八进制、十六进制数字的表示和转换
  8. C++ ——vector作为函数返回值用法
  9. vb.net excel操作:填充人事档案表并打印 中打印补充
  10. MySql触发器介绍及应用