【CV论文阅读】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
由RCNN到FAST RCNN一个很重要的进步是实现了多任务的训练,但是仍然使用Selective Search算法来获得ROI,而FASTER RCNN就是把获得ROI的步骤使用一个深度网络RPN来实现。一个FASTER RCNN可以看作是一个RPN + FAST RCNN的组合,两者通过共享CONV LAYERS组合在一起。
RPN网络
一张图片先经过CONV LAYERS得到feature map,图片的大小是任意的。然后,使用一个小的滑动网络,它与feature map的一个n*n的小窗口全连接。在论文中,n会取值3(但不知道是否指的是n*n个像素的窗口),虽然小窗口不大,但实际上由于feature map经过pooling和convolution,映射回输入图像会有一个很大的感受野。通过这个滑动的小网络提取ROI并映射到一个低纬度的特征向量,用于回归和分类(两个1*1的convolution layer)。

对于滑动的n*n的窗口,在每个位置都会预测k个regional proposal,称为anchor。每个anchor都以窗口为中心,它们有不同的尺度以及宽高比,论文中去k = 9,即3种尺度与3种宽高比。映射得到的低维特征向量,输入到两个box回归层与softmax(二分类,即logistic,用于预测窗口中有或者没有物体的概率)。例如一个VGGnet,它映射到的低维特征为512维,由于k = 9,而且回归层和分类层都是1*1的,因此输出层的参数有512 * (4 + 2) * 9个。如果feature map的大小为W * H,则总共会有W * H * k个anchors。
(n*n应该是一个卷积层,而VGG最后会有512个通道,每个anchor都会映射到低维的特征,而这低维的特征应该与通道数相关。。。。猜测, 额,这里的映射到低维的特征与anchor的关系确实有点模糊……)
论文中实现的不同尺度以及宽高比的anchor,而不需要多尺度的image或者filter。
RPN的损失函数
学习一个RPN的网络也是一个多任务的学习过程,是一个通过参数迁移后对网络进行fine tune的有监督过程,需要标示正类与负类。正例样本有两种(1)与一个ground truth的IOU最高的anchor(2)与任意一个ground truth的IOU高于0.7的anchor。于是,类似于FAST RCNN的定义,LOSS函数为:

其中
为1如果anchor的正样例,否则为0。
表示anchor里是一个object的概率。而
即是FAST RCNN中smooth函数的定义。
是一个平衡因子,具体设置可以参考论文,它与Ncls和Nreg有关。
训练RPN
RPN的训练使用的是BP算法,权值更新使用随机梯度下降法实现。Mini_batch的抽样从单一的图片中选择anchor,尽量是的正例和负例的比是1:1。RPN权值的初始使用高斯分布初始化。
RPN与FAST RCNN的共享

由上图可以看出,RPN与FAST RCNN共享conv layer层以及feature map。论文中训练这个网络提供了几种方法:
(1)交替训练。首先训练RPN,得到proposal之后去训练FAST RCNN。得到的NETWORK又去训练RPN。迭代交替
(2)把两者近似的融合训练。如上图,中间层输出proposal去训练FAST RCNN。后向传播时,对于共享层像平常一样更新,把来自RPN的loss和FAST RCNN的loss结合。而对于proposal 的box坐标预测的梯度,直接忽略,因而得到一个近似的解。但实际上,proposal层的网络权值也是会更新的。
论文中采取一种新的不同于上述的方法:
(1)用imagenet模型初始化,独立训练一个RPN网络。
(2)仍然使用imagenet初始化,利用第一步得到的proposal作为输入训练一个FAST RCNN网络,此时参数完全不共享。
(3)用(2)得到的参数初始化RPN的网络,把RPN与FAST RCNN共享的卷积层的学习率设为0,仅更新RPN特有的网络层,重新训练,此时网络共享共有的卷积层。
(4)固定共享的层,加入FAST RCNN,fine tune它特有的网络。
细节:
对于每个anchor的三种scale为128*128,256*256,512*512,,三种宽高比1:1,1:2,2:1。
对于一些RPN的proposal,采用非极大值抑制的办法选择过滤一部分,减少冗余。
【CV论文阅读】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: Towards Real-Time Object Detection with Region Proposal Networks 标题翻译:基于区域提议(Regi ...
- [论文理解] 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 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: Towards Real-Time Object Detection with Region Proposal Networks(CVPR 2016)
论文源址:https://arxiv.org/abs/1506.01497 tensorflow代码:https://github.com/endernewton/tf-faster-rcnn 室友对 ...
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks论文理解
一.创新点和解决的问题 创新点 设计Region Proposal Networks[RPN],利用CNN卷积操作后的特征图生成region proposals,代替了Selective Search ...
- 目标检测(四)Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
作者:Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun SPPnet.Fast R-CNN等目标检测算法已经大幅降低了目标检测网络的运行时间. ...
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(理解)
0 - 背景 R-CNN中检测步骤分成很多步骤,fast-RCNN便基于此进行改进,将region proposals的特征提取融合成共享卷积层问题,但是,fast-RCNN仍然采用了selectiv ...
- Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
将 RCN 中下面 3 个独立模块整合在一起,减少计算量: CNN:提取图像特征 SVM:目标分类识别 Regression 模型:定位 不对每个候选区域独立通过 CN 提取特征,将整个图像通过 CN ...
- 论文阅读笔记三十五:R-FCN:Object Detection via Region-based Fully Convolutional Networks(CVPR2016)
论文源址:https://arxiv.org/abs/1605.06409 开源代码:https://github.com/PureDiors/pytorch_RFCN 摘要 提出了基于区域的全卷积网 ...
随机推荐
- JS获取到时间转换成字符串类型
JS获取到时间格式为:/Date(1479279579047)/ 提供一个函数可将其转换为“yyyy-MM-dd”和“yyyy-MM-dd hh:mm:ss” //时间日期转换成string func ...
- Modbus通讯协议简介
Modbus协议简介 Modbus协议最初由Modicon公司开发出来,此协议支持传统的RS-232.RS-422.RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用Mod ...
- linux环境mxnet 安装
环境ubuntu 16.04 1.安装依赖项: sudo update && sudo apt-get install -y build-essential git libatlas- ...
- Spark学习之键值对(pair RDD)操作(3)
Spark学习之键值对(pair RDD)操作(3) 1. 我们通常从一个RDD中提取某些字段(如代表事件时间.用户ID或者其他标识符的字段),并使用这些字段为pair RDD操作中的键. 2. 创建 ...
- Python批量生成用户名
写在最前 平时在工作中尤其是在做压测的时候难免需要一些用户名和密码,写个简单的Python小脚本批量生成一些 代码示例 import random,string #生成大小字母和数字一起的大字符串 a ...
- Microsoft SQL Server学习(七)--函数视图
系统函数 视图 索引 1.系统函数 (1) ()数学函数 Abs() 绝对值 Floor() 向下取整 Ceiling() 向上取整 Sin() 返回指定角度(以弧度为单位)的三角正弦值 Pi() 圆 ...
- [Windows Server 2012] 更改服务器密码
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★[护卫神·V课堂]是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:更改服务器 ...
- putty源码阅读----plink
一直对ssh协议的各种客户端实现比较入迷,遍寻了很多ssh协议实现也用了很多的库,发现依赖太多 putty是最纯洁依赖第三方几乎为0的客户端实现,先从plink处开始入手. 1.putty目录 才刚开 ...
- 【Linux】 JDK安装及配置 (linux-tar.gz版)
安装环境:Linux(CentOS 7 64位 版) JDK安装:tar.gz为解压后就可以使用的版本,这里使用jdk-8u211-linux-x64.tar.gz版,安装到/usr/java/(us ...
- Redis系列(六)--为什么这么快?
Redis作为一个基于key-value的NoSQL数据库,最显著的特点存取速度非常快,官方说可以达到10W OPS,但是Redis为何这么快? 1.开发语言 Redis使用C语言进行编写的,而Uni ...