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. Mui使用jquery并且使用点击跳转新窗口

    网上好多朋友是这样做的: 全局插入了js代码 mui('body').on('tap', 'a', function () { document.location.href = this.href; ...

  2. git初使用的心得

    转到Java方向后,版本控制工具也开始以git为主了.由于之前不怎么使用bash,所以目前还是以ui工具,比如sourcetree为主导,但一些简单的操作命令,已经能够快速地使用.sourcetree ...

  3. 业余开发Android App的架构演变

    闲暇之余,开发了一款休闲类app,虽然用户量不多,但确实花了不少心血在这上面.然而,开发出来的结果,与之前想好的架构,还是有不少区别. 下面,记录下这款app架构的演变: 最初,只想写个app,能与机 ...

  4. 梦想CAD控件COM接口搜索图面上的文字

    点击此处下载演示实例 主要用到函数说明: _DMxDrawX::NewSelectionSet 实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数. _DMxDrawX::NewResbuf ...

  5. Python自学-1-基本概念问题

    C语言适合开发那些追求运行速度.充分发挥硬件性能的程序. Python是用来编写应用程序的高级编程语言. Python提供了 第三方库 & 基础代码库(覆盖了网络.文件.GUI.数据库.文本等 ...

  6. 【原】CentOS release 6.2 安装mysql

     1.  yum update升级以后的系统版本为 [root@yl-web yl]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (C ...

  7. 2n皇后 - 回溯

    题目地址:http://www.51cpc.com/web/problem.php?id=1172 Summarize: 1. 递归回溯: 2. 先扫完一种皇后,再扫描另一种: 3. 循环输入: 4. ...

  8. python_ 学习笔记(hello world)

    python中的循环语句 循环语句均可以尾随一个else语句块,该块再条件为false后执行一次 如果使用break跳出则不执行. for it in [1,2,3,4]: print(it,end= ...

  9. svn汉化包安装无效的解决办法

    下载svn汉化包要和对应的svn客户端版本对应,否则安装无效, 在安装前要想将svn安装目录下的languages目录下的文件全部删除 还有一点要注意的是 汉化包安装要放在svn安装目录下进行安装,它 ...

  10. CCF201703-1 分蛋糕 java(100分)

    试题编号: 201703-1 试题名称: 分蛋糕 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别 ...