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笔记的更多相关文章

  1. 【CV论文阅读】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    由RCNN到FAST RCNN一个很重要的进步是实现了多任务的训练,但是仍然使用Selective Search算法来获得ROI,而FASTER RCNN就是把获得ROI的步骤使用一个深度网络RPN来 ...

  2. 【CV论文阅读】Image Captioning 总结

    初次接触Captioning的问题,第一印象就是Andrej Karpathy好聪明.主要从他的两篇文章开始入门,<Deep Fragment Embeddings for Bidirectio ...

  3. 【CV论文阅读】生成式对抗网络GAN

    生成式对抗网络GAN 1.  基本GAN 在论文<Generative Adversarial Nets>提出的GAN是最原始的框架,可以看成极大极小博弈的过程,因此称为“对抗网络”.一般 ...

  4. 【CV论文阅读】+【搬运工】LocNet: Improving Localization Accuracy for Object Detection + A Theoretical analysis of feature pooling in Visual Recognition

    论文的关注点在于如何提高bounding box的定位,使用的是概率的预测形式,模型的基础是region proposal.论文提出一个locNet的深度网络,不在依赖于回归方程.论文中提到locne ...

  5. 【CV论文阅读】:Rich feature hierarchies for accurate object detection and semantic segmentation

    R-CNN总结 不总结就没有积累 R-CNN的全称是 Regions with CNN features.它的主要基础是经典的AlexNet,使用AlexNet来提取每个region特征,而不再是传统 ...

  6. 【CV论文阅读】Deep Linear Discriminative Analysis, ICLR, 2016

    DeepLDA 并不是把LDA模型整合到了Deep Network,而是利用LDA来指导模型的训练.从实验结果来看,使用DeepLDA模型最后投影的特征也是很discriminative 的,但是很遗 ...

  7. 【CV论文阅读】Unsupervised deep embedding for clustering analysis

    Unsupervised deep embedding for clustering analysis 偶然发现这篇发在ICML2016的论文,它主要的关注点在于unsupervised deep e ...

  8. 【CV论文阅读】Detecting events and key actors in multi-person videos

    论文主要介绍一种多人协作的视频事件识别的方法,使用attention模型+RNN网络,最近粗浅地学习了RNN网络,它比较适合用于处理序列的存在上下文作用的数据. NCAA Basketball数据集 ...

  9. 【CV论文阅读】Dynamic image networks for action recognition

    论文的重点在于后面approximation部分. 在<Rank Pooling>的论文中提到,可以通过训练RankSVM获得参数向量d,来作为视频帧序列的representation.而 ...

随机推荐

  1. Django--知识补充

    自定义标签或过滤器 渲染变量的方法(过滤器:修改数据或格式转换) {{ var | add }} {{ var | date:"Y-m" }} {{ var | safe }} 渲 ...

  2. python--12、数据库进阶

    SQL语句关键词: #再次不做过多介绍 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及. #示例中department为部门表 ...

  3. 动态调用链接库(dll) 续

    20141118 最近一周做了一个关于仓库管理,拣货任务分配的模块,其中涉及到刷卡自动打印领取任务的功能点. 技术点: C#调用C++.delphi的动态链接库.动态链接库的调用方法不同.效果也不相同 ...

  4. IT项目为什么失败 --美国IT项目管理硕士笔记(一)

    IT项目为什么失败 什么是项目   项目可以被看作任何一系列的活动和任务.这些活动和任务有一个特定目标需要在特定要求下完成,并有一个明确的开始结束日期和资金限制(如果有).项目需要消耗人力或非人力资源 ...

  5. parsley之验证属性设置

    parsley.js添加表单验证功能,直接在html元素中添加对应属性: Name API Description Required #2.0必填 required HTML5 data-parsle ...

  6. 模式匹配第四弹:if case,guard case,for case

    2016-06-06 7388 作者:Olivier Halligon,原文链接,原文日期:2016-05-16 译者:walkingway:校对:Cee:定稿:numbbbbb 现在我们来重新回顾下 ...

  7. 通过acdbblockreference 获得块名

    AcDbBlockReference *pBlkRef = AcDbBlockReference::cast(ent.object());     AcDbObjectId pBlkTblRecId; ...

  8. 第3章 从Flux到Redux

    第3章 从Flux到Redux 3.1 Flux 单向数据流,React是用来替换Jquery的,Flux是以替换Backbone.js.Ember.js等MVC框架为主的. actionTypes. ...

  9. 「 Luogu P1231 」 教辅的组成

    题目大意 有 $\text{N1}$ 本书 $\text{N2}$本练习册 $\text{N3}$本答案,一本书只能和一本练习册和一本答案配对.给你一些书和练习册,书和答案的可能的配对关系.问你最多可 ...

  10. <SpringMvc>入门三 参数绑定

    1.get请求 <%--请求参数的绑定--%> <%--get请求参数--%> <a href="/param/testParam1?username=tom& ...