在介绍Fast R-CNN之前我们先介绍一下SPP Net

一、SPP Net

SPP:Spatial Pyramid Pooling(空间金字塔池化)

众所周知,CNN一般都含有卷积部分和全连接部分,其中,卷积层不需要固定尺寸的图像,而全连接层是需要固定大小的输入。

所以当全连接层面对各种尺寸的输入数据时,就需要对输入数据进行crop(crop就是从一个大图扣出网络输入大小的patch,比如227×227),或warp(把一个边界框bounding box的内容resize成227×227)等一系列操作以统一图片的尺寸大小,比如224*224(ImageNet)、32*32(LenNet)、96*96等。

所以,在R-CNN中,才会将每个Region Proposal缩放成(wrap)成统一的227x227并输入到CNN。

但warp/crop这种预处理,导致问题要么被拉伸变形,要么物体不全,限制了识别精确度。换句话说,一张16:9的图片硬是被resize成1:1,你说图片失真不?

二、SPP Net的特点

1. SPP不在限制输入图像的尺度,在最后一个卷积层,接入了金字塔池化,保证传到下一层全连接层的输入固定。

简言之,CNN原本只能固定输入,固定输出,CNN加上SPP之后,便能任意输入、固定输出。

ROI池化层一般跟在卷积层后面,此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出是固定维数的向量,然后给到全连接FC层。

2. 只对原图提取一次卷积特征,得到整张图的卷积特征feature map,然后找到每个候选框在feature map上的映射patch,将次patch作为每个候选框的卷积特征输入到SPP layer和之后的层,完成特征提取工作。节省了大量的时间,比R-CNN有100倍左右的提速

三、Fast R-CNN

Fast R-CNN就是在R-CNN的基础上采纳了SPP Net的方法,使得性能进一步提高。

与R-CNN相比,Fast R-CNN主要有两点不同:一是最后一个卷积层加入了ROI pooling layer,二是损失函数使用了多任务损失函数(multi-task loss),将边框回归Bounding Box Regression直接加入到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提取除外)

也就是说,R-CNN的处理流程是先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做box regression。而在Fast R-CNN中,把box regression与region分类合并成multi-task模型,实际实验也证明,这两个任务能够共享卷积特征,并相互促进。

原来的方法:许多候选框(比如2k个)-->CNN-->得到每个候选框的特征-->分类 + 回归

现在的方法:一张完整的图片-->CNN-->得到每个候选框的特征-->分类 + 回归

容易看出,提速的原因在于,不像R-CNN把每个候选区域给深度网络提特征,而是整张图提一次特征,再把候选框映射到conv5上,而SPP只需要计算一次特征,剩下的只需要在conv5层上操作就可以了。

性能上的提升也是明显的:

参考地址:

https://cloud.tencent.com/developer/news/281788

转载于:https://www.cnblogs.com/gezhuangzhuang/p/10460999.html

目标检测算法之Fast R-CNN算法详解相关推荐

  1. CNN目标检测(一):Faster RCNN详解

    ↑↑↑↑目录在这里↑↑↑↑↑ Faster RCNN github : https://github.com/rbgirshick/py-faster-rcnn Faster RCNN paper : ...

  2. [转]CNN目标检测(一):Faster RCNN详解

    https://blog.csdn.net/a8039974/article/details/77592389 Faster RCNN github : https://github.com/rbgi ...

  3. 目标检测:CenterNet论文解读及代码详解

    论文思想 当前anchor-based目标检测方法可分one-stage.two-stage两种.one-stage模型利用anchor机制得到大量的框,之后直接加入回归.分类分支对框进行分类与微调. ...

  4. Transformer | DETR目标检测中的位置编码position_encoding代码详解

    本文主要描述的是DETR论文中的position_encoding,详细DETR论文解析可参考 论文篇 | 2020-Facebook-DETR :利用Transformers端到端的目标检测=> ...

  5. 【目标检测】IoU(交并比)详解及代码实现

    1. IOU概述 IoU的全称为交并比(Intersection over Union),是目标检测中使用的一个概念,IoU计算的是"预测的边框"和"真实的边框" ...

  6. 目标检测特殊层:ROI Align层详解

    ROI Align 是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式, 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题.实验显示,在检测 ...

  7. 【目标检测-YOLO】YOLOv5-v6.0-网络架构详解(第二篇)

    参考:YOLOv5-5.0v-yaml 解析及模型构建(第二篇)_星魂非梦的博客-CSDN博客 前文:YOLOv5-v6.0-yolov5s网络架构详解(第一篇)_星魂非梦的博客-CSDN博客_yol ...

  8. 目标检测系列——开山之作RCNN原理详解

  9. 【目标检测算法-锚框公式推导及代码详解】

    目标检测算法-锚框公式推导及代码详解 0 沐神对锚框的宽高计算并未推导以及讲解 1 锚框宽高公式推导 1.1 基础概念 1.2 锚框宽高公式推导 1.3 图片验证计算 1.4 小结 2 代码详解 2. ...

  10. 目标检测的评价指标P,R,mAP

    目标检测的评价指标P,R,mAP 1 基本概念 1.1 IOU(Intersection over Union) 1.2 TP TN FP FN 2. 各种率 2.1 根据IOU计算Precision ...

最新文章

  1. HTML5一个浪漫的程序猿:3D旋转爱心表白神器思路源码视频
  2. Java-Web JSTL标签库、自定义标签库和MVC设计模式
  3. React ----- 路由懒加载的几种实现方案
  4. php 非阻塞mysql_php多进程中的阻塞与非阻塞操作实例分析
  5. Asp.Net就业课堂之模板控件
  6. 哈哈,终于想着注册博客了
  7. jmeter file upload 变量_通达OA上传漏洞之变量覆盖分析
  8. iOS 使用 Core Plot 绘制统计图表入门
  9. oracle主备机密码文件不同步,oracle主备同步问题
  10. 电子计算机解锁,全电子计算机联锁系统信号解锁模块的研究
  11. Hibernate HQL查询(2)
  12. JavaScript 简介第一课
  13. bug5-os.environ无效
  14. 面试问题——fread和read的区别
  15. 毕设:基于Spring Boot的旅游攻略网的设计与实现
  16. 华为第1书:《华为交换机学习指南》当当网预售中
  17. cf服务器人最多,玩家实测CF各大区在线人数排名 你的区排第几?
  18. 测试自己移动速度的软件,鼠标灵敏度测试检测工具 测试鼠标的灵敏度与移动速度...
  19. java计算机毕业设计学生成绩管理系统源程序+mysql+系统+lw文档+远程调试
  20. 都2021年了不会还有人用门禁卡吧!(手把手教你用手机代替门禁卡)

热门文章

  1. 计算机基础 课程简介,课程简介及计算机基础知识课件.ppt
  2. Linux统计单个文件统计
  3. 初级中级高级_初级职位,(半)高级职位
  4. shell命令之---sed
  5. C语言之指针与数组总结
  6. spring-cloud:利用eureka实现服务提供与调用示例
  7. android 8种对话框(Dialog)使用方法汇总
  8. 走进javascript——不起眼的基础,值和分号
  9. haproxy详细介绍
  10. 【转】OpenGL超级宝典笔记——纹理映射Mipmap