热门标签 | 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日)



长按关注我爱计算机视觉

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



推荐阅读
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Go语言实现堆排序的详细教程
    本文主要介绍了Go语言实现堆排序的详细教程,包括大根堆的定义和完全二叉树的概念。通过图解和算法描述,详细介绍了堆排序的实现过程。堆排序是一种效率很高的排序算法,时间复杂度为O(nlgn)。阅读本文大约需要15分钟。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
author-avatar
好开心6327
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有