https://zhuanlan.zhihu.com/p/21412911

rcnn需要固定图片的大小,fast rcnn不需要

rcnn,sppnet,fast rcnn,ohem,faster rcnn,rfcn都属于基于region proposal(候选区域)的目标检测方法,即预先找出图中目标可能出现的位置。

fast rcnn:在特征提取层的最后一层卷积后加入roi pooling layer,损失函数使用多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练。

     1.ROI pooling layer实际上是SPP-NET的一个精简版,SPP-NET对每个proposal使用了不同大小的金字塔映射,而roi pooling layer只需要下采样到一个7x7的特征图。对于VGG16网络conv5_3有512个特征图,这样所有region proposal对应了一个7*7*512维度的特征向量作为全连接层的输入。

     2.R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程是端到端的(除去region proposal提取阶段)。没有真正实现端到端训练。

     fast rcnn中一个batch是两张图片,每张图片64个region proposal,即一个batch里是128个region proposal。选择16个(即1/4)作为正例,选择48个(即3/4)作为负例。正例是iou大于等于0.5的框,负例是iou大于等于0.1,小于0.5的框。

faster rcnn:之前的网络都是单独生成的region proposal,faster rcnn利用了cnn网络来生成region proposal,这样就真正实现了端到端。在region proposal + CNN分类的这种目标检测框架中,region proposal质量好坏直接影响到目标检测任务的精度。如果找到一种方法只提取几百个或者更少的高质量的预选窗口,而且召回率很高,这不但能加快目标检测速度,还能提高目标检测的性能(假阳例少)。RPN(Region Proposal Networks)网络应运而生。

       RPN的核心思想是使用卷积神经网络直接产生region proposal,使用的方法本质上就是滑动窗口。RPN的设计比较巧妙,RPN只需在最后的卷积层上滑动一遍,因为anchor机制和边框回归可以得到多尺度多长宽比的region proposal。RPN机制生成的roi,跨越图像边界的都要忽略掉。

       RPN网络实际上就是在特征提取层最后一层之后再加一层卷积层,并且这一层是一个3x3的卷积。之后再生成只是这一层后面加了label loss和.....  这个到底怎么训练的

      faster rcnn训练的2个阶段(6个过程):1.rpn网络训练  2.利用rpn网络提取region proposal  3.利用生成的region proposal训练fast rcnn网络

                          4.rpn网络训练,但这个时候特征提取层的参数固定了,只训练后面的层的参数  5.利用rpn网络提取region proposal

                          6.特征提取层参数固定,利用新生成的region proposal去训练fast rcnn网络

      在1,3中都是利用imagenet预训练模型进行参数初始化,1,3,4,6中rpn网络后面的卷积层和fast rcnn后面的全连接层都是利用高斯分布进行初始化

ohem:将所有的region proposal拿来训练,一个batch大小为2048,map高于fast rcnn原来的情况。ohem方法和fast rcnn一样,一个batch128个region proposal,但这128个是按照loss由大到小排列,并且经过nms处理后选出的前128个大的region proposal。ohem取消了正负样本在mini-batch里的ratio(原Fast-RCNN的ratio为1:3)。

     训练过程:1.将原图的所有props扔到RoINet1,计算它们的loss(这里有两个loss:cls和det);

          2.根据loss从高到低排序,以及利用NMS,来选出前K个props(K由论文里的N和B参数决定)

            为什么要用NMS? 显然对于那些高度overlap的props经RoI的投影后,

         其在feature maps上的位置和大小是差不多一样的,容易导致loss double counting问题

           ohem中的nms和之前的有点不一样,ohem是按照loss大小排列,但之前的是按照这个框的概率值进行排列。

         3.将选出的K个props(可以理解成hard examples)扔到RoINet2,这时的RoINet2和Fast RCNN的RoINet一样,计算K个props的loss,并回传梯度/残差给                        ConvNet,来更新整个网络

rcnn,sppnet,fast rcnn,ohem,faster rcnn,rfcn的更多相关文章

  1. Object Detection(RCNN, SPPNet, Fast RCNN, Faster RCNN, YOLO v1)

    RCNN -> SPPNet -> Fast-RCNN -> Faster-RCNN -> FPN YOLO v1-v3 Reference RCNN: Rich featur ...

  2. 从R-CNN到FAST-RCNN再到Faster R-CNN

    (Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks)   R-CNN: (1)输入测试图像: ...

  3. object detection技术演进:RCNN、Fast RCNN、Faster RCNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

  4. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

  5. 目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    看到一篇循序渐进讲R-CNN.Fast R-CNN.Faster R-CNN演进的博文,写得非常好,摘入于此,方便查找和阅读. object detection,就是在给定的图片中精确找到物体所在位置 ...

  6. RCNN,fast R-CNN,faster R-CNN

    转自:https://www.cnblogs.com/skyfsm/p/6806246.html object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别. ...

  7. (转)基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

  8. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN

    基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...

  9. R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN

    最近在看 Mask R-CNN, 这个分割算法是基于 Faster R-CNN 的,决定看一下这个 R-CNN 系列论文,好好理一下 R-CNN 2014 1. 论文 Rich feature hie ...

随机推荐

  1. HTML5学习笔记(一)相关概率

    HTML5的设计目的是为了在移动设备上支持多媒体. 声明:<!DOCTYPE html> 注意:对于中文网页需要使用 <meta charset="utf-8"& ...

  2. zookeeper原理与实践(一)----zookeeper的基本功能

    我们现在围绕两个问题来学习zookeeper: 什么是zookeeper? zookeeper基础知识 什么是zookeeper: zookeeper是hadoop下面的一个子项目,是一个分布式协调服 ...

  3. exporting

    exporting: { buttons: { contextButton: { menuItems: [{ text: '导出png图片 100宽度', onclick: function () { ...

  4. 使用Xilinx SDSoc在Xilinx zcu102开发板上编程HelloWorld

    关于Xilinx SDSoc的介绍我就不再复述了,我理解的也不一定准确,可以阅读官方文档了解SDSoc,你可以把它理解为一个集成开发环境 (IDE),通过SDSoc我们能够简单快速的对Xilinx的开 ...

  5. 漫画:深入浅出 ES 模块

    本文来自网易云社区. 本文翻译自:ES modules: A cartoon deep-dive ES 模块为 JavaScript 提供了官方标准化的模块系统.然而,这中间经历了一些时间 —— 近 ...

  6. OVN架构翻译

    概述 ovn-controller是OVN在虚拟机上的agent,北向连接OVN的南向数据库,学习OVN的配置和状态,并使用虚拟机的状态来填充PN表以及Binding表的Chassis列:南向连接op ...

  7. ue4 tags 与 cast

    父类设置tags,子类默认自动添加这个tags 子类可以强行删除父类的tags,这时如果把子类cast为父类,一样找不到这个tags 综上,要找到一个actor的tags,那么这个actor上就一定要 ...

  8. 纯CSS,多个半圆以中心点旋转

    效果图: html代码: <div style=" background:#000; position: relative; width:300px; height:300px;&qu ...

  9. 剑指Offer的学习笔记(C#篇)-- 栈的压入、弹出序列

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

  10. java基础第九篇之final和内部类等

    final关键字:final:最终,终极 final:作用:修饰类,变量,方法.成员变量的访问 1.final修饰变量: final修饰局部变量: 把这个局部变量 变成一个厂里,这个厂里只能被赋值一次 ...