【CV论文阅读】 Fast RCNN + SGD笔记
Fast RCNN的结构:

先从这幅图解释FAST RCNN的结构。首先,FAST RCNN的输入是包含两部分,image以及region proposal(在论文中叫做region of interest,ROI)。Image经过深度网络(deep network)之后得到feature map,然后可以从feature map中找到ROI在其中的投射projection得到每个patch,但论文没有提及怎么在map中寻找对应的patch,估计可以通过位置关系找到(猜想,因为deep ConvNet 之后相对的位置是不变的)。
把每个patch经过ROI pooling layer,再经过一系列的full connected layer后,分别完成了两个任务的预估:一是类别的预测softmax,一个是bounding box的预测。
在softmax的预测输出是类别的概率分布,而bounding box 预测为每个类别都输出预测回归方程计算的四个参数
(如上篇总结《Rich feature hierarchies for accurate object detection and semantic segmentation》中学习的四个参数,但论文中好像直接就是代表中心坐标以及长宽)。
ROI pooling layer:
ROI pooling layer其实是一个max pooling layer。假设有两个超参数H、W,把输入的patch划分成H*W个小方格,假设投影的每个ROI的patch为h*w,则每个小子方格的大小没h/H*w/W,而在每个方格中,执行的是max pooling layer 的操作。
在这里有必要继续的讨论一下在这个ROI pooling layer怎样反向误差传播。
首先要明白的是,BP算法其实应用的就是导数的链式法则,很巧妙地解决了误差的传播问题。如下公式:

其中aj代表卷积层的输入,而如果经过一个激活函数之后,得到zj=h(aj),其实zj才是下一层的输入,而对k求和代表所有包含zj作为输入的神经元。因此,可以得到公式
,
而就是误差。
对应到pooling层,假设输入层的元素值xi,对应卷积层的i位置,
对应的是第r个ROI的layer,它经过ROI pooling层后在对应输出到j位置。而xi是子窗口中的最大值。把一般的求误差的公式对应到ROI pooling中,

其中i*(r,j)表示第r个ROI从第i的输入(如果是子窗口中的最大像素值)对应到输出的第j的位置。而sigma(r)是因为某个像素可能落在多个ROI中。
Mini-batch:
当使用pre-trained网络的参数去初始化Fast RCNN网络时,需要三个改变。第一,把最后一层的max pooling使用ROI pooling层去替代;第二、最后一层fc层以及softmax层用softmax层和bounding box预测层替代;第三,输入包含两种数据:image以及ROI。
batch就是完成一次训练的数据集,这里对参数进行tune,就是有监督训练对参数进行微调(使用的是SGD,随机梯度下降法)。mini batch是通过随机采样得到的,首先随机选择N张图片,然后每张图片随机采样R/N个ROI。论文采用R=128,N=2。
今天想明白了一个batch是怎么完成一次训练。我开始以为是一次输入一个batch的数据集,其实不是的,一次处理的依然是一张的图片,而在最后输出层计算这张图片的产生的loss,把batch里的图片全部输入到网络里,就产生了loss的和LOSS,这时可以使用这个LOSS去执行BP算法,微调网络中的参数。
同样的,当IOU至少是0.5的才有可能是带有类别标志的,而0.1到0.5的认为是背景,而低于0.1的act as a heuristic for hard example mining(这里我也想不明白)。
损失函数:
损失函数由两部分组成,分别是类别误差函数以及定位误差:

(@2016/8/17 : 训练时每个ROI输入时应该都是有label的,这取决于它与label的IOU,如上小节所述。估计训练时的样本只会有一个bounding box)
其中类别误差取类别概率的负对数作为误差函数
。而第二项定位误差,在真实类别u>=1时才有意义,u=0时表示背景。Bounding box的目标为v,如上文提到,它有四个参数
,于是定位误差为:
其中,
,而且
。
尺度不变性:
论文中实现尺度不变性是通过把图像固定。
随机梯度下降法:

@ 2016 /08/21 更新。
现在神经网络里用的SGD都是指min-batch SGD,找了一个例子from http://www.cnblogs.com/maybe2030/p/5089753.html#_label2

【CV论文阅读】 Fast RCNN + SGD笔记的更多相关文章
- 【CV论文阅读】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
由RCNN到FAST RCNN一个很重要的进步是实现了多任务的训练,但是仍然使用Selective Search算法来获得ROI,而FASTER RCNN就是把获得ROI的步骤使用一个深度网络RPN来 ...
- 【CV论文阅读】Image Captioning 总结
初次接触Captioning的问题,第一印象就是Andrej Karpathy好聪明.主要从他的两篇文章开始入门,<Deep Fragment Embeddings for Bidirectio ...
- 【CV论文阅读】生成式对抗网络GAN
生成式对抗网络GAN 1. 基本GAN 在论文<Generative Adversarial Nets>提出的GAN是最原始的框架,可以看成极大极小博弈的过程,因此称为“对抗网络”.一般 ...
- 【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis of feature pooling in Visual Recognition
论文的关注点在于如何提高bounding box的定位,使用的是概率的预测形式,模型的基础是region proposal.论文提出一个locNet的深度网络,不在依赖于回归方程.论文中提到locne ...
- 【CV论文阅读】:Rich feature hierarchies for accurate object detection and semantic segmentation
R-CNN总结 不总结就没有积累 R-CNN的全称是 Regions with CNN features.它的主要基础是经典的AlexNet,使用AlexNet来提取每个region特征,而不再是传统 ...
- 【CV论文阅读】Deep Linear Discriminative Analysis, ICLR, 2016
DeepLDA 并不是把LDA模型整合到了Deep Network,而是利用LDA来指导模型的训练.从实验结果来看,使用DeepLDA模型最后投影的特征也是很discriminative 的,但是很遗 ...
- 【CV论文阅读】Unsupervised deep embedding for clustering analysis
Unsupervised deep embedding for clustering analysis 偶然发现这篇发在ICML2016的论文,它主要的关注点在于unsupervised deep e ...
- 【CV论文阅读】Detecting events and key actors in multi-person videos
论文主要介绍一种多人协作的视频事件识别的方法,使用attention模型+RNN网络,最近粗浅地学习了RNN网络,它比较适合用于处理序列的存在上下文作用的数据. NCAA Basketball数据集 ...
- 【CV论文阅读】Dynamic image networks for action recognition
论文的重点在于后面approximation部分. 在<Rank Pooling>的论文中提到,可以通过训练RankSVM获得参数向量d,来作为视频帧序列的representation.而 ...
随机推荐
- SimpleDataFormat详解
[转]SimpleDateFormat使用详解 public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方 ...
- 【转】数据倾斜是多么痛?spark作业/面试/调优必备秘籍
原博文出自于: http://sanwen.net/a/gqkotbo.html 感谢! 来源:数盟 调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性 ...
- 基于SOC方案的嵌入式开发-远程定时设备
Soc方案实现简单的定时开关灯 http://club.gizwits.com/forum.php?mod=viewthread&tid=7787&highlight=%E5%AE%9 ...
- Microsoft SQL Server学习(七)--函数视图
系统函数 视图 索引 1.系统函数 (1) ()数学函数 Abs() 绝对值 Floor() 向下取整 Ceiling() 向上取整 Sin() 返回指定角度(以弧度为单位)的三角正弦值 Pi() 圆 ...
- sql server nullif的使用技巧,除数为零的处理技巧
在sql server中做除法处理的时候,我们经常需要处理除数为零的情况,因为如果遇到这种情况的时候,sqlserver会抛出遇到以零作除数错误的异常,我们总不希望把这个异常显示给用户吧. 做个会报这 ...
- LR事务、集合点
事务(Transaction):为了衡量服务器的性能,我们需要定义事务.比如:我们在脚本中有一个数据查询操作,为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务,这样在运行测试脚本时,Lo ...
- First Project -用函数写的ATM+购物商城程序
作业需求:模拟实现一个ATM + 购物商城程序 额度15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠 ...
- 梦想CAD控件安卓选择集
在本示例中将使用构造选择集对被过滤对象进行过滤,该类封装了选择集及其处理函数,支持如下过滤条件. 参数类型 类型 RTDXF0 TEXT 文字 MTEXT 多行文字 CIRCLE 圆 ARC 圆弧 L ...
- ES6字符串模板
这里做个简单的拓展,之前做vue组件时,经常用到拼接字符串,换行时用到\,既费时又麻烦.这里介绍个ES6字符串模板方法 旧版拼接(各种换行拼接) Vue.component('obj-prop',{ ...
- java protostuff 序列化反序列化工具
protostuff是由谷歌开发的一个非常优秀的序列化反序列化工具 maven导入包: <dependency> <groupId>io.protostuff</grou ...