Fast R-CNN是在R-CNN的基础上进行的改进,大致框架是一致的。总体而言,Fast R-CNN相对于R-CNN而言,主要提出了三个改进策略:
1. 提出了RoIPooling,避免了对提取的region proposals进行缩放到224x224,然后经过pre-trained CNN进行检测的步骤,加速了整个网络的learning与inference过程,这个是巨大的改进,并且RoIPooling是可导的,因此使得整个网络可以实现end-to-end learning,这个可以认为是Fast R-CNN相对于R-CNN最大的改进之处。

2. 采用了Multi-task loss进行边框回归,这个在R-CNN中也有这方面的实验。

3. 利用了截断的奇异值分解(Truncated SVD for faster detection)加速了网络。
下图是Fast R-CNN的总体框图(以VGG16为骨干网)

这个图比较详细的表达了Fast R-CNN的结构以及操作,但是该图中有些细节是没有展示出来的,因此在这里我们指出这些细节,首先我们圈画部分,region proposals是通过相关算法实现的,原论文中并没有标明,提取的每一个region proposal都有一个对应的Ground-truth Bounding Box 和 Ground-truth class label。其中值得注意的是,这里的坐标均是对应原图像的,而不是输出的feature maps。因此,还需要把原图像的坐标系映射到feature maps上。这一点也很简单,比如采用的是pre-trained 网络模型为VGG16的话,RoIPooling替换掉最后一个max pooling层的话,则原图像要经过4个max pooling层,输出的feature maps是原图像的1/16,因此,将原图像对应的四元数组转换到feature maps上就是每个值都除以16,并量化到最接近的整数。这样我们就实现了将原图中region proposals 到特征图中的转换、接下来就是将region proposals框起来的那部分特征图输RoIPooling,得到固定大小的输出特征图,这里假设(原论文中分成了7x7)每一个框的被划分为6x6的网格大小,根据规则我们知道,从每一个框中挑选出一个最大值,作为输出,所以经过池化后,产生的特征图的大小为6x6,由于是按通道池化(最大池化)的,所以每一个ROI对应一个6x6x256的特征图,并且有P个类别,所以这些特征图组合之后,形成6x6x256xP的特征图,即为ROIPooling的层的输出,然后进行全连接,形成4096*P的特征图,这样我们就可以利用得到的特征图去进行线性回归和分类,这就是对本人fast RCNN的一个个人理解,也有可能存在欠缺。

Fast R-CNN 个人理解相关推荐

  1. Faster R CNN

    Faster R CNN 3 FASTER R-CNN 我们的Faster R CNN 由两个模块组成,第一个模块是 proposes regions 的全卷积网络,第二个是使用 proposed r ...

  2. R语言学习以及我对R语言的理解。

    关于对R语言的理解: 这里我讲一下自己对于R语言的理念,我不想重复那些已经被转播烂了的概念解释.发展历史.及其功能简介. R语言是统计学家开发的,出生之初就决定了它的使命是统计计算和数据可视化,这算是 ...

  3. 【目标检测】Receptive Field Block Net for Accurate and Fast Object Detection论文理解

    摘要   目标检测器现状:   (1)目前性能最好的目标检测器依赖于深度CNN骨干,如ResNet-101和Inception,拥有强大的特征表示,但承受着高计算成本.   (2)一些基于轻量级模型的 ...

  4. 【CNN】理解卷积神经网络中的通道 channel

    在深度学习的算法学习中,都会提到 channels 这个概念.在一般的深度学习框架的 conv2d 中,如 tensorflow .mxnet ,channels 都是必填的一个参数. channel ...

  5. python正则\\\d、\\\\d、r'\\d'的理解

    这串代码,是正则中当我想寻找字符串'\d'的时候可以使用的. c = re.compile('\\\d') s = c.search('\d') if s:print(s.group()) #这样可以 ...

  6. Bilinear CNN Model理解(附代码实现)

    第一次写博客,才刚开始学习深度学习,轻喷(有问题我会及时更正!!!) 个人理解: 在一些类内差异小.但影响因素较大的图像分类任务中,使用全局的CNN特征可能会缺少一些不变性,为了消除这些干扰因素,作者 ...

  7. 【Pytorch深度学习实践】B站up刘二大人之BasicCNN Advanced CNN -代码理解与实现(9/9)

    这是刘二大人系列课程笔记的 最后一个笔记了,介绍的是 BasicCNN 和 AdvancedCNN ,我做图像,所以后面的RNN我可能暂时不会花时间去了解了: 写在前面: 本节把基础个高级CNN放在一 ...

  8. 卷积层的主要作用_对卷积神经网络CNN的理解,一文读懂卷积神经网络。

    什么是神经网络? 神经网络ANN全称为(artificial neutral network),也就是人工神经网络,是一种仿人类神经网络原理构造的一种计算机模型. 主要由:输入,权重,激活函数来构成一 ...

  9. P R MAP简单理解,yolo中

    Precision(精确率.查准率):已识别的分类准确率 我的理解:正确分类的个数/所有识别出来的个数 Recall (召回率.查全率) 我的理解 :已经识别的个数 / 应该识别的个数 MAP@.5 ...

  10. CNN网络结构理解:感受野计算方法

    原文链接:http://www.cnblogs.com/objectDetect/p/5947169.html 1 感受野的概念 在卷积神经网络中,感受野的定义是 卷积神经网络每一层输出的特征图(fe ...

最新文章

  1. 怎么查电脑系统版本_程序员的bug解决不了怎么办?
  2. vue - 父子组件通信之$emit传多个参数
  3. 《白鹿原》金句摘抄(四)
  4. mysql 分库分表 建表,mysql 分库分表 建表MySQL常用操作
  5. 60-10-060-命令-kafka-run-class.sh
  6. 大学生网页设计作业的20款优秀HTML5制作工具
  7. [转]游戏多开的原理
  8. 揭露培训机构以招聘名义变相招生的欺诈套路!莫被骗!附上企业黑名单!
  9. 关于ROHDESCHWARZ公司电流探头EZ-17系数修正的说明
  10. 安卓眼球追踪_一问易答:非三星手机如何实现眼球追踪
  11. R语言使用lm函数构建线性回归模型、使用car包中的oulierTest函数识别样本数据中可能的离群值( identify possible outliers)
  12. AI绘图原理:让机器也拥有绘画的灵魂
  13. 虚幻四C++ 添加角色动画
  14. 共享打印机找不到网络路径的解决方法
  15. Asp.net Core使用Microsoft.Office.Interop.Word转换文档
  16. 驼峰命名法【规约与实践】
  17. 如何在 Java 中实现最小生成树算法
  18. python 返回绝对值
  19. BUUCTF WEB Havefun
  20. bzoj 1226 学校食堂

热门文章

  1. 启动万维网发布服务(W3SVC)
  2. [网络安全自学篇] 三.Burp Suite安装配置、Proxy基础用法及流量分析示例
  3. 【数据结构与算法】之深入解析“键盘行”的求解思路与算法示例
  4. G6 图可视化引擎——核心概念——节点/边/Combo——内置节点——Rect
  5. scp: /usr/java: Permission denied
  6. 《数据库原理与应用》(第三版)第11章 存储过程和触发器 基础 习题参考答案
  7. Netty实战 IM即时通讯系统(五)客户端启动流程
  8. ubuntu下超级用户和普通用户
  9. 【Linux】一步一步学Linux——ldd命令(251)
  10. 【Tiny4412】 编译dnw源码报错 /lib/modules/2.6.32-431.el6.x86_64/build/: No such file or directory