热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GridRCNN解读:商汤最新目标检测算法

点击我爱计算机视觉标星,更快获取CVML新技术GridR-CNN是商汤科技最新发表于arXiv的一篇目标检测的论文,对FasterR-CNN架构的目标坐标回归部分进行了替换,取得了

点击我爱计算机视觉标星,更快获取CVML新技术



Grid R-CNN是商汤科技最新发表于arXiv的一篇目标检测的论文,对Faster R-CNN架构的目标坐标回归部分进行了替换,取得了更加精确的定位精度,是最近非常值得一读的论文。

今天就跟大家一起来细品此文妙处。

一、作者信息

该文所有作者均来自商汤科技:

该文直取Grid(网格)修饰R-CNN,意即将目标检测中位置定位转化为目标区域网格点的定位。

二、算法思想

如下图所示:

在目前的R-CNN目标检测算法中,目标的2个点(比如左上和右下)就能表征其位置,将目标的定位看为回归问题,即将ROI特征flatten成向量,后接几个全连接层回归目标的坐标偏移量和宽高。

作者认为,这种处理方式没能很好的利用特征的空间信息。

作者希望利用全卷积网络的精确定位能力计算目标位置,将2个目标点的回归问题,转化为目标区域网格点(Grid Points)的定位问题。目标区域的网格点位置是全卷积网络的监督信息,因为是直接将目标区域等分,是可以直接计算的。网络推断时,计算heatmap的极值,即为求得的网格点(Grid Points)。

上图展示了使用3*3网格点的情况。

三、算法流程

作者改造的是Faster R-CNN的目标定位部分,其算法流程如下:

前半部分与Faster R-CNN相同,在得到目标候选区域和ROI特征后,分类部分进行目标分类,而定位部分接全卷积网络,其监督信息来自根据目标位置计算得到的网格监督信息。

流程图中作者特别标出了特征融合模块(feature fusion module),其意在使用网格中相邻网格点的位置相关性,融合特征使得定位更加精确。

以下针对其中关键步骤进行详细说明。

3.1 网格引导定位

将目标区域划为网格,目标的定位即转化为网格点的定位。

训练时,ROI特征(14*14大小)通过8个3*3空洞卷积,再通过两个反卷积把尺寸扩大(56*56),再通过一个卷积生成与网格点相关的 heatmaps(9 个点就是 9 张图,后文实验也使用了4个点的情况)。监督信息是每一个点所处位置的交叉十字形状的5个点的位置。最后再接sigmoid函数,在heapmaps上得到概率图。

推断时,将heapmaps极值的位置映射回原图,即得到了网格点的位置。

读到这里,读者可能会有一个疑问,即计算得到的网格点组成的形状是方方正正的,而Heapmaps极值得到的网格点未必组合在一起是方方正正的,不好确定目标区域。

作者的方法是对原本应该具有相同x或者y坐标的网格点的坐标进行平均。

到此,即得到了目标位置。

3.2 网格点特征融合

很显然,网格点之间具有内在的联系,相邻网格点之间可以相互校正位置提高定位精度。

为此,作者设计了网格点特征融合的机制。

首先,在计算网格点heapmaps时,每个网格点使用不同的滤波器组,防止它们之间共用特征以至相互影响。

然后在每个网格点的Heapmap出来后,将相邻网格点的Heapmaps经过卷积滤波与其相加,形成新的heapmap。

作者将距离特定网格点最近的相邻网格点(1个单位网格长度)组成的网格点集合的特征融合称为一阶特征融合,次近的相邻网格点(2个单位网格长度)组成的网格点集合的特征融合称为二阶特征融合。下图中(a)(b)分别展示了此融合过程。

3.3 扩展区域映射

这一步主要是为了应对在实际使用中,RPN 给出的 proposal并不总是将完整物体包含在内。如下图:

图中白色的实线框表示 RPN 给出的候选框,它没有完全包含所有的网格点。

而作者指出,简单的扩大候选框的大小,不会带来提升,甚至降低对小物体检测的精度(后面有实验验证)。

作者认为heatmap的感受野其实是很大的,并不限于候选框内,所以就干脆直接将heatmap对应的区域看成候选框覆盖的区域两倍大(如图中虚线围起来的区域)。

这么做的好处是,只需简单修改网格引导定位中的位置映射公式。即

四、实验结果

作者首先研究了算法中网格点数对精度的影响。如下图:

相比回归的方法,Grid R-CNN精度更高,而且随着点数增加精度也在提高。

比较AP0.5和AP0.75发现,精度提升主要来自高IoU阈值的情况。

其次,作者实验了网格点特征融合策略对性能的影响。如下图:

可见该文提出的特征融合策略是有效的,而且二阶特征融合更加有效。

然后,作者实验了扩展区域映射对精度的影响。如下图:

可见,直接扩大候选框区域的方法伤害了精度,而本文提出的扩展区域映射(extended region mapping)的方法则使精度有较大的提高(1.2个AP)。

作者又在主流的目标检测数据库上与state-of-the-art进行了比较。

下图展示了在Pascal VOC数据集上,相比R-FCN、FPN,使用相同骨干网的情况下,精度取得了极大的提升!

在COCO minival数据集上的实验,同样取得了较大幅度精度提升。

在COCO test-dev数据集上也实现了一骑绝尘!如下图:

与Faster R-CNN相比,发现精度提升主要来自高IoU阈值的部分,如下图所示。

所以作者猜测,Grid定位分支也许轻微影响了分类的分支。

下图是一些目标的定位示例(请点击大图查看):

作者最后列出了Grid R-CNN对各目标类别的精度增益,发现那些矩形和长方形目标(例如键盘,笔记本电脑,叉子,火车和冰箱)往往获得更大的精度增益,而具有圆形性质的物体(例如运动球,飞盘,碗,钟和杯子)则性能下降或获得较小的增益。

五、总结

该文反思了目标检测中的定位问题,提出以覆盖目标的网格点作为监督信息使用全卷积网络定位网格点的方法,大幅提高了目标定位精度。值得研究目标检测的朋友学习~

文中没有提及推断速度、代码是否会开源,希望有进一步的消息出来。

目标定位的方法还有什么可挖掘的吗?

你认为Grid R-CNN会成为Faster R-CNN那样的传世经典吗?

欢迎留言。

论文网址:

https://arxiv.org/abs/1811.12030

在“我爱计算机视觉”微信公众号对话界面回复“grid”,即可收到该论文百度云下载地址。

加入目标检测专业群

加入52CV-目标检测专业讨论群,扫码添加52CV君(your-word)拉你入群:

请务必注明:目标检测

喜欢在QQ交流的童鞋,可以加52CV官方QQ群:928997753。

(不会时时在线,如果没能及时通过验证还请见谅)

目标检测是计算机视觉研究的热点,52CV曾报道多篇相关博文,详见:

"我爱计算机视觉"精华文章分类汇总(2018年12月13日)



长按关注我爱计算机视觉

【点赞与转发】就是一种鼓励



推荐阅读
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
  • 揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节
    揭秘腾讯云CynosDB计算层设计优化背后的不为人知的故事与技术细节 ... [详细]
  • openGauss行存储核心架构及其页面组织详解
    行存储的核心架构和页面组织是实现DML操作、可见性判断及多种管理功能的基础。作为基于磁盘的存储引擎,行存储在设计上采用了段页式结构,以优化数据的存储和访问效率。这种设计不仅确保了数据的高效存储,还为行存储的各种高级功能提供了坚实的技术支持。 ... [详细]
  • Redis 是一个高性能的开源键值存储系统,支持多种数据结构。本文将详细介绍 Redis 中的六种底层数据结构及其在对象系统中的应用,包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象。通过12张图解,帮助读者全面理解 Redis 的数据结构和对象系统。 ... [详细]
  • 自动驾驶中的9种传感器融合算法
    来源丨AI修炼之路在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程。该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性、冗余性以及最终的 ... [详细]
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • 本文探讨了SSD购买后是否需要进行4K对齐的问题,并详细解释了4K对齐的原理及其重要性。通过对比机械硬盘与固态硬盘的结构,文章深入分析了4K对齐对SSD性能的影响,并提供了具体的对齐方法。 ... [详细]
  • LeetCode 实战:寻找三数之和为零的组合
    给定一个包含 n 个整数的数组,判断该数组中是否存在三个元素 a、b、c,使得 a + b + c = 0。找出所有满足条件且不重复的三元组。 ... [详细]
  • 阿里面试题解析:分库分表后的无限扩容瓶颈与解决方案
    本文探讨了在分布式系统中,分库分表后的无限扩容问题及其解决方案。通过分析不同阶段的服务架构演变,提出了单元化作为解决数据库连接数过多的有效方法。 ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 深入浅析JVM垃圾回收机制与收集器概述
    本文基于《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》的阅读心得进行整理,详细探讨了JVM的垃圾回收机制及其各类收集器的特点与应用场景。通过分析不同垃圾收集器的工作原理和性能表现,帮助读者深入了解JVM内存管理的核心技术,为优化Java应用程序提供实用指导。 ... [详细]
  • 本项目在Java Maven框架下,利用POI库实现了Excel数据的高效导入与导出功能。通过优化数据处理流程,提升了数据操作的性能和稳定性。项目已发布至GitHub,当前最新版本为0.0.5。该项目不仅适用于小型应用,也可扩展用于大型企业级系统,提供了灵活的数据管理解决方案。GitHub地址:https://github.com/83945105/holygrail,Maven坐标:`com.github.83945105:holygrail:0.0.5`。 ... [详细]
author-avatar
好开心6327
这个家伙很懒,什么也没留下!
RankList | 热门文章