理解Faster-RCNN 中的Anchor
先上图看一下Faster R-CNN操作流程:


图片说明:Faster R-CNN=Fast R-CNN+RPN,其中Fast R-CNN结构不变;RPN负责生成proposals,配合最后一层的feature map,使用ROI Pooling,生成fixed length的feature vector。我们详细讨论一下RPN的操作过程

图片说明,红框只是一个滑窗的操作过程,注意这里的anchor是原图像像素空间,而不是feature map上的。这样
anchor是RPN的核心:
假设我们现在得到的feature map为W * H * C(13 * 13 * 256就是feature map的width=13,height=13,channel=256),我们如何产生网络需要的proposals呢?我们在feature map使用滑动窗口的操作方式(stride=1,padding=1),当前滑窗的中心在原像素空间的映射点称为anchor,以此anchor为中心,生成k(paper中default k=9, 3 scales and 3 aspect ratios)个proposals。
在此feature map滑动一个mini-network,这个network输入是3 * 3 * 256,经过3 * 3 * 256 * 256的卷积,得到1 * 1 * 256的低维向量;接下来进行分类:①Classification:经过1 * 1 * 256 * 18的卷积核,得到1 * 1 * 18的feature vector,分别代表9个proposals的是/不是Object的概率(这里有一个疑惑,为什么要生成一对?生成一个是Object的概率不就好了?也许是为了设计方便?);②Regression:经过1 * 1 * 256 * 36的卷积核,得到1 * 1 * 36的feature vector,分别代表9个proposals的(center_x,center_y,w,d)。
上述操作只是一个3 * 3的滑动窗口的操作过程,实际操作过程中,必须将13 * 13的feature map均执行一边;于是在RPN中,产生了两个损失函数:①Classification loss②Regression loss。
这样的话,通过滑动窗口和anchor机制,我们就可以找到固定比例、一定大小的proposals:①物体大小不同导致的proposal被覆盖②物体aspects ratios不同导致proposals也被覆盖
由上可知,NRP可以代替Selective Search产生proposals,而且最关键的一点是RPN 更快
ROI pooling V.S. SSP Pooling
ROI是只有一层的
SSP Pooling:ROI Pooling将proposal在feature map上的对应区域分为W * H 份,每一份取Max/Avg 将其放到固定位置
SSP Pooling是将proposal分为(4 * 4 / 2 * 2 / 1 * 1份,然后进行拼接,得到fixed length=21的feature vector)
对于Faster-RCNN的解读:https://zhuanlan.zhihu.com/p/31426458
理解Faster-RCNN 中的Anchor的更多相关文章
- [论文理解] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 简介 Faster R-CNN是很经典的t ...
- 对faster rcnn 中rpn层的理解
1.介绍 图为faster rcnn的rpn层,接自conv5-3 图为faster rcnn 论文中关于RPN层的结构示意图 2 关于anchor: 一般是在最末层的 feature map 上再用 ...
- 一个门外汉的理解 ~ Faster R-CNN
首先放R-CNN的原理图 显然R-CNN的整过过程大致上划分为四步: 1.输入图片 2.生成候选窗口 3.对局部窗口进行特征提取(CNN) 4.分类(Classify regions) 而R-CNN的 ...
- 理解Faster R-CNN
首先放R-CNN的原理图 显然R-CNN的整过过程大致上划分为四步: 1.输入图片 2.生成候选窗口 3.对局部窗口进行特征提取(CNN) 4.分类(Classify regions) 而R-CNN的 ...
- tensorflow object detection faster r-cnn 中keep_aspect_ratio_resizer是什么意思
如果小伙伴的英语能力强可以直接阅读这里:https://stackoverflow.com/questions/45137835/what-the-impact-of-different-dimens ...
- 原 CNN--卷积神经网络从R-CNN到Faster R-CNN的理解(CIFAR10分类代码)
1. 什么是CNN 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Netwo ...
- Object Detection(RCNN, SPPNet, Fast RCNN, Faster RCNN, YOLO v1)
RCNN -> SPPNet -> Fast-RCNN -> Faster-RCNN -> FPN YOLO v1-v3 Reference RCNN: Rich featur ...
- 目标检测 1 : 目标检测中的Anchor详解
咸鱼了半年,年底了,把这半年做的关于目标的检测的内容总结下. 本文主要有两部分: 目标检测中的边框表示 Anchor相关的问题,R-CNN,SSD,YOLO 中的anchor 目标检测中的边框表示 目 ...
- Faster RCNN代码理解(Python)
转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ...
- Faster rcnn代码理解(4)
上一篇我们说完了AnchorTargetLayer层,然后我将Faster rcnn中的其他层看了,这里把ROIPoolingLayer层说一下: 我先说一下它的实现原理:RPN生成的roi区域大小是 ...
随机推荐
- 2.2 SVN的简单使用
1.打开SVN服务器 选中Repositories→右键→Create new Repositories 选中Test2→右键→Copy URL to Clipboard 打开记事本粘贴地址:http ...
- 优化系列 | DELETE子查询改写优化
0.导读 有个采用子查询的DELETE执行得非常慢,改写成SELECT后执行却很快,最后把这个子查询DELETE改写成JOIN优化过程 1.问题描述 朋友遇到一个怪事,一个用子查询的DELETE,执行 ...
- POJ 1966
求的是无向图的点连通度.开始便想到网络流,既然选的是点,当然就要拆点加边了.但无论如何也不敢往枚举源汇点的方向想,因为网络流复习度很高.看看网上大牛的,都是枚举,再看数据,原来N才50个点,枚举无压力 ...
- 301 和 302 对 SEO 的影响
网站优化中,经常会面临网站链接修改或改变的事情,其中一个解决办法就是使用网站跳转的方式,处理变化的链接,下面讲述301和302跳转对SEO的影响. 301(永久移动) 请求的网页已被永久移动到新位置. ...
- Linux 查看负载
top iostat -x 1 10 free uptime cat /proc/cpuinfo cat /proc/meminfo src lsof 1,查看磁盘 df -h 2,查看内存大小 f ...
- B1567 [JSOI2008]Blue Mary的战役地图 二分答案+hash
一开始以为是dp,后来看了一下标签...二分答案?之前也想过,但是没往下想,然后之后的算法就顺理成章,先求出第一个地图的所有子矩阵的hash值,然后求第二个,在上一个地图例二分查找,然后就没了. 算法 ...
- div向右偏移设置 css让div靠右移一定距离
转自:https://www.thinkcss.com/shili/1372.shtml div对象盒子向右偏移设置,使用css让div靠右一定距离-div向右移教程实例篇 div向右偏移一定距离,可 ...
- hiho一下第76周《Suzhou Adventure》
我是菜鸡,我是菜鸡,我是菜鸡....重要的事说三遍 算是第一次做树形dp的题吧,不太难.. 园林构成一棵树,root为1,Hi从root出发,有k个园林必须玩,每个园林游玩后会得到权值w[i],最多玩 ...
- 利用阿里云加速Docker For Windows
1.进入阿里云的容器镜像服务,找到镜像中心的镜像加速器. https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2.进入Docker ...
- Blender插件之操作器(Operator)实战
前言 在Blender中, 操作器(Operator)是它的核心. 用户通过各种操作器来创建和操作场景中的物体. 操作器对象继承自 class bpy.types.Operator(bpy_struc ...