目标检测——R-FCN算法解读

论文:R-FCN: Object Detection via Region-based Fully Convolutional Networks
作者:Jifeng Dai, Yi Li, Kaiming He and Jian Sun
链接:https://arxiv.org/pdf/1605.06409v2.pdf
代码:https://github.com/daijifeng001/r-fcn

文章目录

  • 1、算法概述
  • 2、R-FCN细节
  • 3、实验结果

1、算法概述

之前基于区域的目标检测方法,像Fast/Faster R-CNN虽然在提取区域特征这部分做了共享,但基于子区域的分类和回归部分,还没有达到计算共享,几百个候选框,依然需要做几百次分类和回归操作,这大大消耗了推理时间。本文所提基于区域的检测器是全部采用卷积操作,几乎所有的计算都是在整个图像上共享的,为了实现所有操作共享这一目的,作者提出了位置敏感的分数图来解决图像分类中的平移不变性(translation-invariance)和目标检测中的平移敏感(translation-variance)之间的矛盾。作者以ResNet101作为主干,在VOC 2007测试集上能达到 83.6%的mAP。推理时间为每张图片170ms,是Faster R-CNN的2.5到20倍。

2、R-FCN细节

先说之前的基于区域候选框的目标检测算法,它们可看作以RoI pooling层为切入点将整个网络分为两个子网络(subnetworks),前部分子网络为RoI Pooling之前的共享计算的全卷积子网络,后一部分为RoI-wise的子网络(全连接层),它们不共享计算。这主要是由于前期采用的经典分类网络就是卷积+全连接这样的设计结构造成的。现在例如ResNets和GoogLeNets都被设计成了全卷积网络,类比到目标检测网络,是不是也可以将后部分的RoI-wise子网络层替换成全卷积网络?

要想分类得比较准,那就要网络学习到平移不变性,即目标从图像左边平移到右边,该目标的类别还是一样,即对位置不敏感;但对于回归任务,又要网络学习到平移可变性,让网络对位置敏感,这样才能保证网络对于目标从图像左边平移到右边后能正确预测到平移后目标的位置。要同时满足这两点,Faster RCNN通过插入RoI Pooling层实现了,但RoI Pooling带有位置截断属性,经过RoI截取后,RoI对目标的感受野也被截断了,相同的目标经过RoI Pooling层后可能得到不同的类别。结合网络越深能提取到越高层特征的特性,若RoI pooling越靠近网络前部,则会导致分类不准确,若RoI Pooling约靠近网络后部,则会导致回归不准确。

由于卷积神经网络擅长提取图像特征,但是对特征所处的位置不太敏感,所以作者在网络中增加了位置敏感因素,使得全卷积网络对目标的位置具有敏感特性。R-FCN的整体结构如下:
在这里插入图片描述
在这里插入图片描述
可以看到R-FCN,主体结构还是和Faster R-CNN大体上类似的,只是RoI Pooling这里做了一些变化,另外R-FCN也将Faster R-CNN的RoI-wise部分全部换成了卷积操作,使得基于区域的分类/回归任务都可以共享计算。对比效果如下表:
在这里插入图片描述

  • Backbone architecture
    R-FCN主干网络采用ResNet-101,它包含前面100层的卷积层加global average pooling层和1000类的fc层,作者只用了前面100层卷积层作为提取特征,最后一个卷积层输出是2048维,作者用了一个随机初始化的1024维的1x1卷积层作了降维处理,然后用了k*k(C+1)通道的卷积层用来生成分数图。
  • Position-sensitive score maps & Position-sensitive RoI pooling
    为了显式地将位置信息编码到每个RoI中,作者通过网格将每个RoI矩形划分为k * k个网络格子。对于w * h的RoI区域,每个网格大小为w/k * h/k。作者通过最后一个卷积层将每个类别映射成k * k个分数图。对第(i,j)个网络(0<=i,j<=k-1),定义一个位置敏感RoI池化操作为:
    在这里插入图片描述
  • 分类
    对该RoI每类的所有相对空间位置的分数取平均或者投票得到
    在这里插入图片描述
    然后通过softmax做分类
    在这里插入图片描述
  • Bounding-box回归
    也是采用类似分类的方法,通过最后一个卷积层使得每个RoI产生4k2维向量,经过投票后,用Fast R-CNN的参数化得到1个4维向量(tx,ty,tw,th)。

3、实验结果

作者在VOC2007,VOC2012上测试结果如下:
在这里插入图片描述
可以看到,在mAP指标上,相对于Faster R-CNN,没有掉点,但是在推理速度上提升很大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/265805.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue每个页面的缓存数据

一个缓存页面的数组 一个用于每个页面的高度缓存 cacheList 缓存页面的 tableScroll 缓存高度 在组件中使用该方法

MySQL8.0.35 安装配置教程(保姆级,包含图文讲解,环境变量的配置)适合小白

文章目录 MySQL安装教程一.下载MySQL二、安装MySQL三、配置环境变量 MySQL安装教程 一.下载MySQL MySQL下载页面链接&#xff1a;https://dev.mysql.com/downloads/installer/ 选择你要下载的版本号。 本文章是8.0.35版本  这里我们无需注册&#xff0c;只需要点下载就好…

树根研习社|数据为王,洞察“工业数据采集”背后的价值与实践

一、工业数据采集是什么&#xff1f; 数据采集是将各种信息传感设备通过网络结合起来&#xff0c;实现任何时间、任何地点&#xff0c;人、机、物的互联互通。数据采集的主要的作用是&#xff1a; “翻译官”&#xff1a;不同程序语言的设备数据通过协议解析“翻译”为上层系…

深入Redis过程-持久化

目录 redis实现持久化 RDB 触发机制-定期方法 定期-手动触发 save bgsave 定期-自动触发 AOF 开启AOF功能 刷新缓冲区策略 重写机制 混合持久化 Redis事务 事务相关的命令 MULTI EXEC DISCARD WATCH redis实现持久化 RDB RDB叫做Redis数据备份文件&#xf…

函数的栈帧

我们每次在调用函数的时候&#xff0c;都说会进行传参。每次创建函数&#xff0c;或者进行递归的时候&#xff0c;也会说会进行压栈。 那么&#xff0c;今天我们就来具体看看函数到底是如何进行压栈&#xff0c;传参的操作。 什么是栈&#xff1f; 首先我们要知道&#xff0c;…

SpringBoot中MyBatis-Flex的集成和使用

一、MyBatis-Flex 是什么​ MyBatis-Flex是一个基于MyBatis的数据访问框架&#xff0c;专门为Flex应用程序而设计的。它提供了一种灵活而高效的方式来处理Flex应用程序中的数据访问&#xff0c;可以轻松地连接到各种数据源&#xff0c;并提供了一些方便的工具和功能&#xff0c…

联邦蒸馏中的分布式知识一致性 | TIST 2024

联邦蒸馏中的分布式知识一致性 | TIST 2024 联邦学习是一种隐私保护的分布式机器学习范式&#xff0c;服务器可以在不汇集客户端私有数据的前提下联合训练机器学习模型。通信约束和系统异构是联邦学习面临的两大严峻挑战。为同时解决上述两个问题&#xff0c;联邦蒸馏技术被提…

Global IIIumination(GI)全局光照原理(一)3D空间全局光照

文章目录 一、Global IIIumination&#xff08;GI&#xff09;全局光照基本概念二、主流的全局光照方法&#xff1a;三、Reflective shadow maps&#xff08;RSM&#xff09;反射阴影贴图 全局光照四、Light Propagation Volumes (LPV)光线传播体积 全局光照1.第一步&#xff0…

2、快速搞定Kafka术语

快速搞定Kafka术语 Kafka 服务端3层消息架构 Kafka 客户端Broker 如何持久化数据小结 Kafka 服务端 3层消息架构 第 1 层是主题层&#xff0c;每个主题可以配置 M 个分区&#xff0c;而每个分区又可以配置 N 个副本。第 2 层是分区层&#xff0c;每个分区的 N 个副本中只能有…

说一些你不知道的知识——接口测试的测试要点

接口测试的测试要点&#xff0c;你知道都有哪些吗&#xff1f; 接口测试是软件测试中的重要组成部分&#xff0c;它的目的是评估接口的质量和可靠性&#xff0c;以保证系统的正常运行。在进行接口测试时&#xff0c;必须要考虑到以下几个方面&#xff1a; 测试用例的编写 测试…

【Linux】进程通信之命名管道mkfifo

1.认识命名管道 匿名管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作&#xff0c;它经常被称为命名管道。命名管道是一种特殊类型的文件 2.在命…

智能工厂的信息化建设

为大家介绍一个通过数字孪生技术建设智能工厂信息化建设的案例&#xff0c;看看我们是如何通过易知微EasyV数字孪生可视化大屏来为企业进行数字化转型。 易知微-EasyV数字孪生|智慧城市园区工厂水利双碳|三维地图数据可视化大屏​easyv.cloud/​编辑https://link.zhihu.com/?…