目标检测论文解读9——R-FCN
背景
基于ResNet 101的Faster RCNN速度很慢,本文通过提出Position-sensitive score maps(位置敏感分值图)来给模型加速。
方法

首先分析一下,为什么基于ResNet 101的Faster R-CNN很慢?
其实主要的原因是ROI Pooling层后面的Conv5无法共享计算,每一个RoI都要计算一次,一次检测RoI可能有几百个,计算量巨大。
我们已经知道Conv层的作用是提取特征,那为什么不跟把Conv5放到RoI Pooling前面,让RoI映射到Conv5输出的feature map呢?
这是因为Conv5会使feature map进一步压缩,w*h变小,feature map小了,位置敏感性显然会降低,从而检测的结果不准。
于是,作者提出了一种兼顾速度和准度的结构。
观察上面的模型,我们可以看到,在RoI pooling层后面用来提取特征的Conv层都放到前面了,所以共享了计算,速度加快。
同时,作者提出一种Position-sensitive score maps的方法来解决位置信息丢失,大致是这样的。
原图片经过一系列的Conv层,输出一个channel为k*k*(C+1)的feature map,k=3,代表一张图片的九宫格各位置,C为类别数。可以看到feature map的每一个点,都是k*k*(C+1)-d的feature vector,其中包含了这个点在某位置且为某类的得分信息。
RPN提出的RoI,映射到feature map中,也被分为k*k个bin。
接下来,进行一次Position-sensitive RoI pooling(位置敏感池化)操作。步骤如下:找到一个左上角的bin,然后找到他所对应的(C+1)-d的类别得分信息,可以对w*h的bin的类别信息进行平均池化,得到一个(C+1)的类别信息;其他8个位置也按照同样步骤。
经过这一步,就能得到一个k*k*(C+1)的feature map,再对k*k个(C+1)的vector平均一次(论文用的方法),得到(C+1)的vector,softmax返回一个概率最大的类别就行了。
总结
可以看到,之所以作者的方法之所以位置精度高,主要是因为他把问题从给一个RoI分类转变成了给一个RoI的九个位置分类,从而提高了位置敏感度。
目标检测论文解读9——R-FCN的更多相关文章
- AAAI2019 | 基于区域分解集成的目标检测 论文解读
Object Detection based on Region Decomposition and Assembly AAAI2019 | 基于区域分解集成的目标检测 论文解读 作者 | 文永亮 学 ...
- 目标检测论文解读5——YOLO v1
背景 之前热门的目标检测方法都是two stage的,即分为region proposal和classification两个阶段,本文是对one stage方法的初次探索. 方法 首先看一下模型的网络 ...
- 目标检测论文解读1——Rich feature hierarchies for accurate object detection and semantic segmentation
背景 在2012 Imagenet LSVRC比赛中,Alexnet以15.3%的top-5 错误率轻松拔得头筹(第二名top-5错误率为26.2%).由此,ConvNet的潜力受到广泛认可,一炮而红 ...
- 目标检测论文解读10——DSSD
背景 SSD算法在检测小目标时精度并不高,本文是在在SSD的基础上做出一些改进,引入卷积层,能综合上下文信息,提高模型性能. 理解 Q1:DSSD和SSD的区别有哪些? (1)SSD是一层一层下采样, ...
- 目标检测论文解读13——FPN
引言 对于小目标通常需要用到多尺度检测,作者提出的FPN是一种快速且效果好的多尺度检测方法. 方法 a,b,c是之前的方法,其中a,c用到了多尺度检测的思想,但他们都存在明显的缺点. a方法:把每图片 ...
- 目标检测论文解读12——RetinaNet
引言 这篇论文深刻分析了one-stage的模型精度比two-stage更差的原因,并提出Focal Loss提高精度. 思路 在论文中,作者指出,造成one-stage模型精度差的原因主要是:正负样 ...
- 目标检测论文解读3——Fast R-CNN
背景 deep ConvNet兴起,VGG16应用在图像分类任务上表现良好,本文用VGG16来解决检测任务.SPP NET存在CNN层不能fine tuning的缺点,且之前的方法训练都是分为多个阶段 ...
- 目标检测论文解读11——Mask R-CNN
目的 让Faster R-CNN能做实例分割的任务. 方法 模型的结构图如下. 与Faster R-CNN相比,主要有两点变化. (1) 用RoI Align替代RoI Pool. 首先回顾一下RoI ...
- 目标检测论文解读6——SSD
背景 R-CNN系列算法检测速度不够快,YOLO v1检测准确率较低,而且无法检测到密集目标. 方法 SSD算法跟YOLO类似,都属于one stage的算法,即通过回归算法直接从原图得到预测结果,为 ...
随机推荐
- 初识xls文件的读写
# 开发人员 : llm#时间ccc:import xlrdimport xlwt def read_xls(): info = xlrd.open_workbook('pytest.xls') pr ...
- Centos7将本地源更换为网易源
百度搜索: 网易源 点击进入网易开源镜像站 1. 备份当前 repo 文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS- ...
- 快速挖pi币
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- JAVA开发者大会-Spring Cloud网关分享
新书购买:单本75折包邮
- 申请Github学生包(用学生证就行,免教育邮箱)
GitHub教育包的福利: 大名鼎鼎的JetBrains给学生教师的免费个人许可 https://education.github.com/pack/redeem/jetbrains 有Github学 ...
- 手撕代码:统计1到n二进制数中1出现的总次数
题目描述: 互娱手撕代码题. 统计从1到n这n个数的二进制表示中1出现的次数. 思路分析: 思路一:直接的做法是从1遍历到n,对于每个数和1做与操作,之后,对于这个数不断做右移操作,不断和1做与操作, ...
- mysql,字符串类型id,获取最大值
说明,这个id是字符串类型,但是实际值是一个整数,获取最大值的方法是: select max(cast(id as SIGNED)) from table 另外,mysql生成伪列的方法: SELEC ...
- axios源码入口以及公用方法
axios学习笔记(公用方法) 源码地址 找到入口文件 axios/lib/axios.js var utils = require('./utils'); var bind = require('. ...
- 如何解决aws解绑银行卡问题?
首先先来说明一下我自己的情况? 一年的免费使用 前提:没有开启任何的实例服务 先贴一条官方的解释 关于我小白一个.学校课程要求使用aws,注册之后在网络上看到一堆人踩坑,aws的扣费就是个坑! 预授权 ...
- scala中val和var的区别
1:内容是否可变:val修饰的是不可变的,var修饰是可变的 2:val修饰的变量在编译后类似于java中的中的变量被final修饰 3:lazy修饰符可以修饰变量,但是这个变量必须是val修饰的 p ...