Fast RCNN论文阅读笔记
1.Introduction
1.1 RCNN 和SPPnet
RCNN有几个显著的问题:1.训练的时候是多阶段的训练,分别分三个阶段训练卷积层、SVM、边框回归矩阵。2.训练很耗时。3.目标定位非常慢。它慢主要是因为它没有共享计算,而SPPnet通过共享计算比RCNN快了很多,SPPnet对整张图片做一次卷积提取特征,对比RCNN对每个区域提案单独卷积就快了很多。但是SPPnet也有不足的地方,它和RCNN一样是多阶段训练,并且它的微调无法更新前面的网络。
1.2 fast RCNN的贡献
四个优点:1.比RCNN和SPPnet更高的检测精度。2.训练过程是单阶段的,使用多任务损失函数。3.训练的时候可以更新所有的网络层。4.不需要用硬盘来存储特征缓存。
2.Fast RCNN的架构和训练
2个输入,一是一张完整的图片,二是划定的区域提案。经过ROI pooling和全连接层之后又有两个输出,一是softmax的分类结果(所有类别+背景类),二是边框回归值。
2.1ROI pooling层
使用最大池化将任意大小的感兴趣区域映射到一个固定大小H*W,H和W是提前设定好的超参数,每一个ROI使用一个长度为4的元组来描述它的位置,包括左上角坐标和长宽。ROI pooling是SPPnet的一个变种。过滤器的窗口大小和步长的计算和SPPnet里描述的一样。
2.2预训练网络的初始化
选用了3种预训练好的ImageNet,并对它们进行了三个改变来形成fast RCNN。1.将最后一个最大池化层替换成设定好适应全连接层的H和W的ROI池化。2.最后一层全连接层换成两个并行的结构,一是用于分类的全连接层,二是使目标定位变得准确的边框回归结构。3.可以接受两个输入,一是图片二是该图片的ROI。
2.3对检测的微调
Fast RCNN使用反向传播算法更新所有隐藏层的权重。SPPnet不能更新金字塔池化层后面的网络的权重的原因:根本原因是训练的时候样本来自不同的图片导致了SPP层的低效率,这是由它的训练过程导致的(RCNN也是这样)。这会导致每一个ROI都有一个很大的感受野,通常是跨越整张图片的,前传需要处理整个感受野,所以训练的时候的输入是巨大的。
RCNN和SPPnet是对R个来自不同图片的ROI进行随机梯度下降计算,而Fast RCNN是对来自N张图片,每张图片取N/R个ROI进行处理。这样的处理方法可能导致较低的训练融合速度,因为来自一张图片的ROI是有关联的,但是用N=2和R=128实验时得出了比较好的结果。
多任务损失函数
Fast RCNN有两个输出,一个是经过了softmax层的全连接层的输出,即每个ROI是这K+1种类别的概率p。第二个输出是对每一个概率的边框回归值。
u是GT框的种类,v是GT框的位置。
小批样本
每个SGD的mini batch来自于随机的两张图片(N=2),每张图片取64个ROI(N/R),像RCNN一样取25%个IOU超过0.5的ROI为正样本,它们的u>=1,再取等量IOU在0.1到0.5之间的ROI表示背景样本,u=0。
在ROI层之后的反向传播
超参数SCD
将分类模块和边框回归模块使用中心化高斯分布使他们的标准差为分别为0.01和0.001,偏移量为0.所有网络层的单层权重学习率为1,偏差学习率为2,全局学习率为0.001 。
2.4尺度不变性
用两种方法达到了再目标检测中的尺度不变性:1.使用brute force 。将图片预先处理成固定大小。2.使用图片金字塔。
因为GPU容量的限制多尺度训练只在小网络上。
3.将fast RCNN用于检测
4.主要结果
5.设计评估
5.1多任务训练带来的提升
从该对比试验可以看出多任务训练是可以带来mAP的提升的
5.2为了达到尺度不变应该用brute force还是finesse
BF算法是单尺度的,图片金字塔算法是多尺度的。试验中单尺度限制边长为600,多尺度选了5个尺度分别是{480,576,688,864,1200}。
结果表明多尺度的训练并没有比单尺度的训练提升很多mAP。通过这个试验为平衡网络的速度与精度所需要做出的取舍带来了灵感。
5.3是否需要很多的训练数据
Zhu Xiangxin 发现当mAP达到一定数值的时候就饱和了,再增多数据它也不怎么提升,作者做了个和Zhu相似的实验,发现用fast RCNN,当数据量提升之后带来的mAP的提升还是很可观的(66.1%→68.8% 和 65.7%→68.4%)。
5.4SVMs会比softmax表现更好吗
那当然是softmax好一点啦。
5.5区域提案越多越好吗
两种划分RP的方法,一种是稀疏的划分一种是紧密的。
并不是越多越好,多到一定程度反而使mAP下降。
有些部分还没读懂所以没写上去 等之后学明白了再补上去
Fast RCNN论文阅读笔记的更多相关文章
- Fast R-CNN论文阅读笔记
论文地址:Fast R-CNN R-CNN的缺陷 (1)训练是一个多级的流水线.R-CNN首先在候选目标上微调一个卷积神经网络,使用log loss.然后使用SVMs充当目标分类器,以取代softma ...
- Fast R-CNN论文阅读摘要
论文链接: https://arxiv.org/pdf/1504.08083.pdf 代码下载: https://github.com/rbgirshick/fast-rcnn Abstract Co ...
- RCNN论文阅读笔记
一摘要: 两个主要工作:1将cnn和自上而下的区域提案结合进行定位和对象分割:2当训练数据稀缺时,先预训练然后微调. rccn工作分为四步:1输入一张图片 2用selective search算法对每 ...
- [论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximati
[论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximation 本文结构 解决问题 主要贡献 主要 ...
- 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center
作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...
- 论文阅读笔记 Word Embeddings A Survey
论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...
- 论文阅读笔记 Improved Word Representation Learning with Sememes
论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...
- [置顶]
人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)
这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...
随机推荐
- Go_Channel详解
一 channel介绍 单纯地将函数并发执行是没有意义的.函数与函数间需要交换数据才能体现并发执行函数的意义. 虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问 ...
- 《基于Apache Flink的流处理》读书笔记
前段时间详细地阅读了 <Apache Flink的流处理> 这本书,作者是 Fabian Hueske&Vasiliki Kalavri,国内崔星灿翻译的,这本书非常详细.全面得介 ...
- 01-MySQL8主从详解
主从原理 master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日志中:slave服务器会在一定时间间隔内对master二进制日志进行探测其是 ...
- 代码块及final关键字的使用
1.代码块的作用:用来初始化类.对象 2.代码块如果有修饰的话,只能使用static. 3.分类:静态代码块 vs 非静态代码块 4.静态代码块 内部可以有输出语句 随着类的加载而执行,而且只执行一次 ...
- 9. RabbitMQ系列之消息发布确认
Publisher Confirms发布确认是用于实现可靠发布的RabbitMQ扩展. 我们将使用发布确认来确保已发布的消息已安全到达代理.我们将介绍几种使用publisher确认的策略,并解释其优缺 ...
- java中的栈(利用数组实现栈)
java中的栈(利用数组实现栈) 常见的数据结构:https://blog.csdn.net/weixin_43304253/article/details/119764275 栈的介绍 1.栈的英文 ...
- Spring 深入——IoC 容器 02
IoC容器的实现学习--02 目录 IoC容器的实现学习--02 回顾 IoC 容器的初始化过程: BeanDefinition 的 Resource 定位 小结: 回顾 前面学习了 IoC 模式的核 ...
- idea如何生成jar包
最近在研究RMI反序列化命令执行的漏洞,让我这个java新手吃尽了苦头,能多学习一些是一些吧. 记录一下写好的java文件生成jar包的过程. 环境: Win10,jdk1.7, idea2016.2 ...
- 学习ASP.NET Core Blazor编程系列十——路由(中)
学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...
- day02-实现01
实现01 1.实现任务阶段1 编写mytomcat,该服务器能给浏览器返回"你好,我是服务器!"的简单信息. 根据之前的tomcat框架整体分析,我们将浏览器发送请求,tomcat ...