计算机视觉研究院专栏

作者:Edison_G

对于目标检测的方法按照处理流程可以分为:two-stage和one-stage方法; 两者在处理速度和准确率上各有千秋。Refinement Neural Network致力于将两者的优点结合起来, 弥补两者的缺点, 即:获得比two-stage方法更好的准确率,并且具有与one-stage媲美的效率。

长按扫描二维码关注我们

一、简要

研究者提出了一个单阶段检测框架,该框架解决了多尺度目标检测和类不平衡的问题。没有设计更深层的网络,而是引入了一种简单而有效的特征丰富化方案来生成多尺度的上下文特征。进一步引入了一种级联的优化(精炼)方案,该方案首先将多尺度的上下文特征注入到一阶段检测器的预测层中,以增强其进行多尺度检测的判别能力。其次,级联精炼方案通过细化anchors和丰富的特征以改善分类和回归来解决类不平衡问题。对于MS COCO测试上的320×320输入,新的检测器在单尺度推理的情况下以33.2的COCO AP达到了最先进的一阶段检测精度,操作是在一个Titan XP GPU上以21毫秒运行的 。对于MS COCO测试上的512×512输入,与最佳的单阶段结果相比,就COCO AP而言,新方法获得了一个明显的增加(增加了1.6%)。

二、背景

先看下:Single-Shot Refinement Neural Network for Object Detection

RefineDet的框架结构与SSD有点类似, 总工作流程如下:

  • 网络通过前馈生成固定数量的bounding box和分数;分数代表了这些box中某些类别的可能性;

  • 使用non-maximum suppression产生最终的结果。

从结构上看,RefineDet主要由两个内部链接的模块组成:anchor强化模块(anchor refinement module, ARM)和物体检测模块(object detection module,ODM)。TCB模块是用于连接ARM和ODM的一个模块。

在今天分享的这项工作中,研究者区分了标准SSD检测器实现最高精度同时保持其高速度的两个主要障碍。首先,标准的SSD难以应对大尺度变化。这可能是由于SSD预测层中的上下文信息固定所致。现有方法通过例如在更深的主干网络模型上添加上下文信息和特征金字塔表示来解决该问题。大多数方法采用自顶向下的金字塔表示,其中先对深层的低分辨率特征图进行上采样,然后与浅层的高分辨率特征图结合以注入高级语义信息。尽管这样的特征金字塔表示有助于解决大尺度变化的问题,但性能仍然远远不能令人满意。

第二个关键问题是在训练SSD检测器期间遇到的前景类-背景类不平衡问题。该问题的现有解决方案包括,例如,在稀疏的难例集上进行训练,同时对经过良好分类的示例对其损失进行打折(down-weights),另外还有整合两阶段anchor优化策略,以通过消除负例的anchors来减少分类器的搜索空间。尽管取得了成功,但由于这些特征与优化的anchors无法很好地对齐,所以有工作采用了自上而下的特征金字塔表示法,并且仅对anchors进行了优化。在这项工作中,研究者寻求一种替代方法来共同解决多尺度目标检测和类不平衡的问题,从而在不牺牲其高速度的情况下提高SSD的准确性。

三、相关工作

目标检测是一个具有挑战性的计算机视觉问题。基于卷积神经网络的目标检测器在最近几年展示了杰出的性能。今天说的框架着重于一阶段目标检测器,该检测器通常比其两阶段目标检测器更快。在现有的单阶段方法中,SSD已显示出可在实时操作时提供出色的性能。它使用多尺度表示来检测金字塔层次结构中的对象。在这样的层次结构中,浅层有助于预测较小的对象,而较深的层则有助于检测较大的对象。新方法基于标准SSD,因为它具有卓越的准确性和高速度。

一阶段检测器难以准确地检测出具有明显尺度变化的物体。此外,SSD检测器还存在类不平衡的问题。新提出的方法不需要任何特征化的图像金字塔或自上而下的金字塔结构,而是专注于捕获多尺度上下文信息。而且包括一个专门的模块来解决类不平衡问题。

首先,从多分支ResNeXT架构中引入了一种特征增强的方案,该方案产生了多尺度的上下文特征,以利用上下文信息增强标准的SSD特征。其次引入了级联的优化方案,在这种方案中,同时使用了边界框回归和二元(binary)分类来优化特征。二元分类(目标类别预测)用于生成突出显示可疑目标位置的objecness图。在特征优化期间,仅位置偏移用于特征与优化(anchors)的对齐,而比例偏移则被忽略。

为了解决训练阶段类别不平衡的问题,RetinaNet引入了focal loss来降低简单样本的贡献。RefineDet提出了一个两步anchor优化模块,通过删除几个负anchors来减少分类器的搜索空间。另外,anchor优化模块粗略地调整anchor的位置。与RefineDet不同,新框架的级联优化方案通过首先将多尺度上下文信息注入到标准SSD预测层中来利用增强的特征。此外,级联优化去除了几个负anchors ,不仅细化了anchor的位置,还细化了特征。

四、新框架

新检测框架由三部分组成:标准SSD层,特征增强(丰富)(FE)方案和级联优化方案。FE方案包含一个多尺度上下文特征模块(MSCF)以解决尺度变化。FE方案产生了多尺度的上下文特征,以提高标准SSD预测层的判别能力。级联优化方案同时利用了多尺度上下文和标准SSD特征,并解决了类不平衡问题。级联优化方案通过分别在两个级联模块(即物体性模块(OM)和特征导向的优化模块(FGRM))中执行框回归和分类来优化anchor和特征。物体性模块(OM)对对象与背景进行二进制分类,并进行初始框回归。然后,FGRM模块重新优化特征和anchor位置,以预测最终的多类别分类和边界框位置。

Feature Enrichment Scheme

在标准SSD框架中,特征的提取是从深度卷积网络主干中通过卷积和最大池操作的重复过程执行的。尽管保留了一定程度的语义信息,但它们仍然丢失了可能有助于区分对象区域和背景区域的低级特征信息。此外,在每个预测层的恒定感受野仅捕获固定的上下文信息。在这项工作中,引入了一种特征增强(FE)方案来捕获多尺度上下文信息。首先通过简单的池化操作对输入图像进行下采样,以使其尺寸与第一个SSD预测层的尺寸相匹配。然后,将经过下采样的图像通过我们的多尺度上下文特征(MSCF)模块。

Multi-scale Contextual Features Module

提出的MSCF模块在上图(b)中以蓝色虚线框突出显示。它是一个简单的模块,包含多个卷积运算,并产生多尺度的上下文特征。MSCF模块的结构受到多分支ResNeXT体系结构的启发,是拆分,转换和聚合策略的一种操作。MSCF模块将下采样后的图像作为输入,并输出上下文增强的多尺度特征。下采样的图像首先通过大小为3×3和1×1的两个连续卷积层,从而产生初始特征投影。然后,将这些特征投影通过1×1卷积层切成三个低维分支。为了捕获多尺度上下文信息,我们对不同的分支采用三个膨胀卷积,膨胀率分别设置为1、2和4。膨胀卷积的运算将初始特征投影转换为上下文增强的特征集。然后,这些变换后的特征通过级联运算进行聚合,然后传递给1×1卷积进行运算。MSCF的输出用于我们的级联优化方案的对象性模块(OM)中。

Cascaded Refinement Scheme

优化方案由两个级联模块组成:对象性模块和特征导向的优化模块(FGRM),如上图(a)所示。对象性模块通过多尺度上下文信息增强了SSD的特征,并标识了可能的物体位置(客观性)。使用多尺度上下文信息增强特征可以提高对于小目标的性能,而FGRM使用对象性预测来解决类不平衡问题。

物体性模块Objectness Module

物体性模块首先通过逐元素乘法运算在conv4_3的MCSF模块中注入多尺度上下文信息,从而增强了SSD的特征。然后,引入了一个自下而上的金字塔特征层次结构,以将增强的特征传播到后续的SSD预测层,如上图(a)所示。物体性模块使用步长为2(D)的3×3卷积运算,并投影前一层的特征以与当前层的空间分辨率和通道数匹配。然后,通过在每个预测层上的投影特征和SSD特征之间执行逐元素乘法来获得增强的特征。最后,增强的特征用于在每个预测层x上执行二元分类(C1x)和初始框回归(B1x)。x = 1,2、3和4对应于四个预测层。

来自PASCAL VOC数据集的示例图像以及来自标准SSD(第二列),多尺度上下文特征(第三列)和增强的特征(第四列)的相应fc7层特征图。这些示例表明,通过将多尺度上下文特征注入到标准SSD特征中而获得的增强的特征有助于更好地从背景中区分目标区域。

五、实验及可视化

PASCAL VOC 2007测试集上的测试结果

新框架采用在ImageNet上进行预训练的VGG-16作为主干架构。对两个数据集使用相同的设置进行模型初始化和优化。采用warming up策略,将前5个epochs的初始学习速率设置为从10-6到4×10-3。然后,对于150和200 epoch的PASCAL VOC 2007数据集以及90、120和140 epoch的MS COCO数据集,将学习率逐渐降低10倍。

对于这两个数据集,权重衰减设置为0.0005,动量设置为0.9,批大小(batch size)为32。在实验中,分别为PASCAL VOC 2007和MS COCO数据集执行了250和160个epoch。除了VGG-16,还对MS COCO数据集使用更强大的ResNet-101主干进行了实验。对于ResNet-101,在截断的ResNet-101主干的末尾添加了两个额外的卷积层(即res6 1,res6 2)。利用四个预测层(res3,res4,res5,res6 2)进行检测。

MS COCO test-dev2015的测试结果

对于所有80个COCO对象类别,在RefineDet(左侧)和新的检测器(右侧)之间进行了误差分析。为了公平比较,两种方法都使用相同的主干(VGG)和输入大小(320×320)进行分析。在此,每个子图像中的图都显示了一系列精确的召回曲线。这些曲线是使用不同的设置计算的。此外,图例中还显示了AUC曲线。

比较在PASCAL VOC 2007和MS COCO minival set数据集上将提出的特征增强和级联的优化方案集成到基准SSD框架中的比较。对于所有实验,主干为VGG16,输入为320×320。最终方法在两个数据集上都比基线SSD的性能有大幅度提高。

注:本文大部分摘自于CSDN博主——「To_1_oT」的原创,在此感谢To_1_oT的付出!更多试验分析请单击“阅读原文”。

计算机视觉研究院学习群等你加入!

计算机视觉研究院主要涉及深度学习领域,主要致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点就是,我们要着重”研究“。之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习惯!

扫码关注

计算机视觉研究院

公众号ID|ComputerVisionGzq

学习群|扫码在主页获取加入方式

源码获取|回复“EFGR”获取论文

目标检测 | 丰富特征导向Refinement Network用于目标检测(附github源码)相关推荐

  1. 实用目标检测器 | 性能超YoloV5,推理耗时不变(附github源码)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 计算机视觉研究院专栏 作者:Edison_G 对PP-YOLO的一次升级,从PP-YOLO出发,通过增 ...

  2. 深度学习目标检测系列:一文弄懂YOLO算法|附Python源码

    在之前的文章中,介绍了计算机视觉领域中目标检测的相关方法--RCNN系列算法原理,以及Faster RCNN的实现.这些算法面临的一个问题,不是端到端的模型,几个构件拼凑在一起组成整个检测系统,操作起 ...

  3. python目标识别算法_深度学习目标检测系列:一文弄懂YOLO算法|附Python源码

    摘要: 本文是目标检测系列文章--YOLO算法,介绍其基本原理及实现细节,并用python实现,方便读者上手体验目标检测的乐趣. 在之前的文章中,介绍了计算机视觉领域中目标检测的相关方法--RCNN系 ...

  4. 【Matlab水果识别】苹果质量检测及分级系统(带面板)【含GUI源码 1613期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]苹果质量检测及分级系统(带面板)[含GUI源码 1613期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1 ...

  5. 干货 | 基于特征的图像配准用于缺陷检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 特征提取 基于特征的图像配准,具有非常广泛的应用,大致流程可以如下 ...

  6. CVPR2020最全整理:分方向论文下载,Github源码、论文解读等[计算机视觉][目标检测]

    CVPR2020在2月24日公布了所有接受论文ID,相关报道:1470篇!CVPR2020结果出炉,你中了吗?(附部分论文链接/开源代码/解读).自论文ID公布以来,许多开发者都分享了自己的优秀工作. ...

  7. 深度学习目标检测系列:faster RCNN实现|附python源码

    目标检测一直是计算机视觉中比较热门的研究领域,有一些常用且成熟的算法得到业内公认水平,比如RCNN系列算法.SSD以及YOLO等.如果你是从事这一行业的话,你会使用哪种算法进行目标检测任务呢?在我寻求 ...

  8. python实现目标检测源代码包_深度学习目标检测系列:faster RCNN实现|附python源码...

    摘要: 本文在讲述RCNN系列算法基本原理基础上,使用keras实现faster RCNN算法,在细胞检测任务上表现优异,可动手操作一下. 目标检测一直是计算机视觉中比较热门的研究领域,有一些常用且成 ...

  9. 使用OpenCV进行人脸检测和戴墨镜特效实战(附Python源码)

     需要源码和图片请点赞关注收藏后评论区留言私信~~~ 人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术,也是计算机视觉重点发展的技术.机器学习算法诞生之后,计算机可以通过摄像头等输入设备自 ...

  10. OpenCV检测眼睛、猫脸、行人、车牌实战(附Python源码)

    需要源码和资源请点赞关注收藏后评论区留言私信~~~ OpenCV提供的级联分类器除了可以识别人脸之外,还可以识别其他一些具有明显特征的物体,如眼睛.行人等,下面介绍几个OpenCV自带的级联分类器的用 ...

最新文章

  1. 基于点云的3D障碍物检测
  2. case when的判断顺序_CASE 表达式
  3. Django 视图的FBV 与 CBV
  4. centos7 和centos 6的一些区别
  5. 二级c语言评分标准一样吗,计算机二级评分严格吗 步骤错了有分吗
  6. K8s 集群搭建过程中遇到的问题的解决方法
  7. RHive的安装和用法
  8. Python爬虫 ---(1)爬虫基础知识
  9. 团队开发-CodePlex的工作模式和团队协作开发
  10. I00001 杨辉三角
  11. python打印右对齐_python右对齐的实例方法
  12. 图像增强之直方图均衡化
  13. CAD坐标怎么输入?CAD坐标标注教程
  14. 前端性能分析探索-天眼浏览器监控
  15. RadioButton 修改图片大小的方式
  16. 股票振幅榜查询易语言代码
  17. 安卓开发实现俄罗斯方块游戏
  18. 海淘 亚马逊 冻结账号 怎么办?
  19. 前端面试题——2021最新企业面试题
  20. http://blog.csdn.net/cs_lht?viewmode=contents

热门文章

  1. html修改网站图标,分享内容,分享图标等
  2. 垃圾短信分类java_有了这个神器,快速告别垃圾短信邮件
  3. 【译文】四十二种谬误(二)
  4. VR技术在数据中心3D机房中的应用(下)
  5. java计算两个时间为天数_java计算两个时间相差天数的方法汇总
  6. Hbase性能测试及优化过程记
  7. excel计算一年第几周
  8. java怎么给文件加密_java中如何给文件加密
  9. 卡莱特led显示屏调试教程_如何使用卡莱特软件点亮LED电子显示屏
  10. PTA 习题3.6 一元多项式的乘法与加法运算