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. 【C++】智能指针简述(六):智能指针总结及补充

    本文我们主要来总结一下前文介绍过的智能指针相关原理及实现,顺便补充一下前文未提到的shared_ptr删除器部分的内容. 总结: 1.智能指针,通过RAII机制,构造对象时完成资源的初始化,析构对象时 ...

  2. Linux基础之操作系统

    一.什么是操作系统 简单来说,操作系统就是一个协调.管理和控制计算机硬件资源和软件资源的控制程序. 二.操作系统存在的意义 究根结底,我们日常对计算机的管理是对计算机硬件的管理.经过近百年的时间,现代 ...

  3. javascript按钮点击事件问题

    今天弄了个小测试,结果发现了点问题. 就是有一个按钮的点击事件,页面加载时候没反应,只有F12启用开发人员工具的时候才有反应.后来反复测试发现名字起的不太合理 function onclick(){ ...

  4. 【sqli-labs】 对于less34 less36的宽字节注入的一点深入

    1.AddSlashes() 首先来观察一下是如何通过构造吃掉转义字符的 先将less 34的网页编码换成gbk 加上一些输出 echo "Before addslashes(): &quo ...

  5. CAD把当前图形保为一个jpg文件(com接口Delphi语言)

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 procedure TForm2.Button1Click(Sender: TObje ...

  6. java虚拟机(六)--垃圾收集器和内存分配策略

    目前没有完美的收集器,不同的厂商.版本的虚拟机提供的垃圾收集器会有很大的差别,用户根据自己应用特点和要求组合出各个年代所使用 的收集器.基于jdk1.7Update14之后的虚拟机. HotSpot的 ...

  7. 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"

    14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误" One of the configured ...

  8. 基于APE物理引擎的管线容积率计算方法

    容积率一般应用在房地产开发中,是指用地范围内地上总建筑面积与项目总用地面积的比值,这个参数是衡量建设用地使用强度的一项非常重要的指标.在其他行业,容积率的计算也非常重要,如产品利用率.管道使用率等等. ...

  9. Listview异步加载图片之优化篇

    在APP应用中,listview的异步加载图片方式能够带来很好的用户体验,同时也是考量程序性能的一个重要指标.关于listview的异步加载,网上其实很多示例了,中心思想都差不多,不过很多版本或是有b ...

  10. Storm 开箱笔记

    目录 Storm 开箱 1. 什么是 Storm 2. Hello World(WordCountTopology) 3. 常用API 4. 基本概念 5. 流分组策略 6. 并行度 7. Acker ...