区域卷积神经网络(R-CNN,SPP-Net,Fast R-CNN,Faster R-CNN)
1 模型进化史
检测框架可分为两类:
- 两级式检测框架,包含一个用于区域提议的预处理步骤,使得整体流程是两级式的,如R-CNN系列
- 单级式检测框架,即无区域提议的框架,这是一种单独提出的方法,不会将检测提议分开,使得整个流程是单级式的,如YOLO系列
2 传统的目标检测
2.1 三个阶段
- 区域选择利用不同尺寸的滑动窗口框住图中的某一部分作为候选区域。
- 特征提取:提取候选区域相关的视觉特征。比如人脸检测常用的Harr特征;行人检测常用的HOG特征等。由于目标的形态多样性,光照变化多样性,背景多样性等因素使得设计一个鲁棒的特征并不是那么容易,然而提取特征的好坏直接影响到分类的准确性。
- 分类器:利用分类器进行识别,比如常用的SVM模型。
2.2 经典方法—DPM
- 传统的目标检测中,多尺度形变部件模型DPM(Deformable Part Model)表现比较优秀,连续获得VOC(Visual Object Class)2007到2009的检测冠军。
- DPM把物体看成了多个组成的部件(比如人脸的鼻子、嘴巴等),用部件间的关系来描述物体,这个特性非常符合自然界很多物体的非刚体特征。
- DPM可以看做是HOG+SVM的扩展,很好的继承了两者的优点,在人脸检测、行人检测等任务上取得了不错的效果,但是DPM相对复杂,检测速度也较慢,从而也出现了很多改进的方法。
2.3 主要问题
- 基于滑动窗口的区域选择策略没有针对性,时间复杂度高,窗口冗余。
- 手工设计的特征对于多样性的变化鲁棒性差。
3 R-CNN
3.1 检测流程
- 用selective search(选择性搜索)算法在图像中提取2000个左右的侯选框
- 把所有候选框缩放(wrap)成固定大小(227×227),并进行归一化后输入CNN(AlexNet)网络,提取特征
- 将提取到的CNN特征,fc7特征用SVM来分类,conv5特征用线性回归来微调边框位置与大小,其中每个类别单独训练一个边框回归器
- 非极大值值抑制(NMS)来滤除IOU较大的区域
3.2 模块划分
3.3 性能评价
- True Positive(TP):IOU ≥ \geq ≥ 0.5,即判断正确的样本
- False Positive(FP):IOU < < < 0.5,即判断错误的样本
- False Negative(FN):遗漏的GT区域
- 准确率(Precision):TP/(TP+FP),即算法找到的正样本的正确率(不考虑未找出的正样本)
- 召回率(Recall):TP/(TP+FN),即算法找回正样本的比例(不考虑识别错误的样本)
- mAP:所有类别的平均精度(AP)和除以类别数
3.4 问题
- 训练时间长(84h):Fine-tune(18h)+特征提取(63h)+SVM/Bbox训练(3h)
- 测试时间长:VGG一张图片耗时47s
- 占用磁盘空间大:卷积出来的特征数据还需要单独保存
4 SPP-Net
4.1 网络结构
4.2 主要贡献
- 结合空间金字塔池化(SPP)方法实现CNNs的对尺度输入
一般CNN后接全连接层或者分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp,而这些预处理会造成数据的丢失或几何的失真。SPP-Net将金字塔思想加入到CNN,替换掉conv5中pooling层,实现了数据的多尺度输入。在卷积层和全连接层之间加入了SPP layer,此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出尺度始终是固定的。
- 只对原图提取一次卷积特征
在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。所以SPP Net根据这个缺点做了优化:只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。节省了大量的计算时间,比R-CNN有一百倍左右的提速。
4.3 问题
- 继承R-CNN的剩余问题
1.需要存储大量特征
2.复杂的多阶段训练
3.训练时间仍然很长(25.5h):特征提取减少到5.5h - 带来新的问题
SPP层之前所有conv参数不能fine-tune,而对于一个新的任务,有必要对卷积层也进行微调。(分类的模型提取的特征更注重高层语义,而目标检测任务除了语义信息还需要目标的位置信息)
5 Fast R-CNN
5.1 网络结构
基础网络为VGG-16
5.2 检测流程
- 特征提取:以整张图片为输入利用CNN得到图片的特征层;
- region proposal:通过Selective Search等方法从原始图片提取区域候选框,并把这些候选框一一投影到最后的特征层;
- 区域归一化:针对特征层上的每个区域候选框进行RoI Pooling操作,得到固定大小的特征表示;
- 分类与回归:然后再通过两个全连接层,分别用softmax做多目标分类,用回归模型进行边框位置与大小微调。
5.3 主要贡献
- 用感兴趣池化层(ROI pooling layer)替换SPP-Net中的SPP层,使得conv层参数可以进行fine-tune
- 用softmax替代SVM分类,采用多任务损失函数(Multi-task loss),将分类loss和回归loss统一,不用再保存提取特征,减小存储压力,可以实现“end-to-end”的全参数训练
5.4 性能
- 相比于R-CNN,SPP-Net,速度显著提高
- mAP比R-CNN略有提高(注:SPP-Net的mAP下降了3%)
5.5 问题
- 选择性搜索提取候选框的方法非常耗时
6 Faster R-CNN (RPN+Fast R-CNN)
6.1 主要贡献
- 为解决Fast R-CNN的候选框提取的耗时问题,引用RPN网络来代替SS操作(将RPN网络放在最后一个conv层后面),得到量少质优的约300个候选框。
6.2 RPN结构
- RPN网络的前五层借用的是ZF网络,输出大小为 13 ∗ 13 ∗ 256 13*13*256 13∗13∗256
- 采用 3 ∗ 3 ∗ 256 3*3*256 3∗3∗256的256个卷积核,intermediate层输出256维的向量
- k=9(3种scales和3种aspect_ratio),所以cls layer就是18( 2 ∗ 9 : 2 2*9:2 2∗9:2对应前景和背景)个输出节点了,那么在256-d和cls layer之间使用一个 1 ∗ 1 ∗ 256 ∗ 18 1*1*256*18 1∗1∗256∗18的卷积核,就可以得到cls layer;reg layer的输出是36( 4 ∗ 9 : 4 4*9:4 4∗9:4对应x,y,w,h)个,所以对应的卷积核是 1 ∗ 1 ∗ 256 ∗ 36 1*1*256*36 1∗1∗256∗36,这样就可以得到reg layer的输出了。
6.3 检测流程
- 特征提取:同Fast R-CNN;
- region proposal:在最终的卷积特征层上通过RPN,每张图片大约300个建议窗口。
- 区域归一化:同fast R-CNN;RoI pooling层 。
- 分类与回归:进行目标分类,并做边框回归。 利用SoftMax Loss和Smooth L1 Loss对分类概率和边框回归(Bounding Box Regression)联合训练。为了让RPN的网络和Fast R-CNN网络实现卷积层的权值共享,其训练方法比较复杂
6.4 性能
- Faster R-CNN在保证精度不下降的情况下,速度显著提高。
7 算法结构对比
8 参考
https://blog.csdn.net/Angela_qin/article/details/80975050
https://www.cnblogs.com/skyfsm/p/6806246.html
区域卷积神经网络(R-CNN,SPP-Net,Fast R-CNN,Faster R-CNN)相关推荐
- DL之CNN:卷积神经网络算法应用之卷积神经网络实践技巧(DA/DP/WI/BN/H/O/R)、优化技术经验之详细攻略
DL之CNN:卷积神经网络算法应用之卷积神经网络实践技巧(DA/DP/WI/BN/Hyperparameter/Overfitting/Regularization).优化技术经验之详细攻略 目录 卷 ...
- 66.物体检测算法:区域卷积神经网络(R-CNN)系列
1. R-CNN ps:在计算机视觉中,深度学习之前,分类器用的是SVM 2. 兴趣区域(RoI)池化层 目的是为了让每个锚框都可以变成一个自己想要的形状. 3. Fast RCNN 具体步骤如下: ...
- 深度学习~卷积神经网络(CNN)概述
目录 1. 卷积神经网络的形成和演变 1.1 卷积神经网络结构 1.2 卷积神经网络的应用和影响 1.3 卷积神经网络的缺陷和视图 1.3.1 缺陷:可能错分 1.3.2 解决方法:视图 ...
- 第五章 卷积神经网络(CNN)
文章目录 5.1 卷积神经网络的组成层 5.2 卷积如何检测边缘信息? 5.3 卷积层中的几个基本参数? 5.3.1 卷积核大小 5.3.2 卷积核的步长 5.3.3 边缘填充 5.3.4 输入和输出 ...
- 基于pytorch使用实现CNN 如何使用pytorch构建CNN卷积神经网络
基于pytorch使用实现CNN 如何使用pytorch构建CNN卷积神经网络 所用工具 文件结构: 数据: 代码: 结果: 改进思路 拓展 本文是一个基于pytorch使用CNN在生物信息学上进行位 ...
- 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)
http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...
- 第15课:卷积神经网络(CNN)
之前的课程中,我们介绍的都是传统神经网络结构,也称为全连接层神经网络.传统神经网络在许多应用中都有着不错的表现和性能.但是在某些领域问题中,其性能受限,表现却并不完美.因此,本文我们将讨论一种新的神经 ...
- 卷积神经网络、比较MLPS和CNNS、滤波器、CNN各层的作用、在Pytorch可视化CNN
1.33.卷积神经网络 1.33.1.卷积 和 神经网络 1.33.1.1.比较MLPS和CNNS 1.33.1.2.计算机如何看图像? 1.33.1.3.建立自己的滤波器 1.33.2.完整的卷积神 ...
- cnn(卷积神经网络)比较系统的讲解
本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之 ...
最新文章
- python列表嵌套字典取值_我的 python 学习历程-Day05 字典/字典的嵌套
- 2020身高体重标准表儿童_男女孩最新身高标准表,你家孩子达标了吗?(附增高秘籍)...
- 有知其下落者的nanshan
- 中国电信与中国联通启动2.1GHz 5G主设备集采,规模24万站
- Single-page application
- java魔剑天使,血色天使魔剑官方版
- 5ecsgo启动失败2错误代码2_单机多实例--启动2个Elasticsearch Cluster
- 全国计算机等级考试一级试题免费,全国计算机等级考试一级试题
- EasiCSDeep:利用表面肌电信号识别颈椎病的深度学习模型
- JRebel激活教程
- 电脑、手机上那些让人用后欲罢不能的神器(附百度云链接)
- 学习spf记录引发的问题(一)
- VNC远程控制软件,五款用了都说好的VNC远程控制软件
- OpenCV python
- firefox flash插件
- 简笔画花边边框超简单_花边简笔画简单又漂亮 手抄报的边框图片大全
- Socket状态变迁图
- Android 之 打开相机 打开相册
- 手机蓝牙连接小票机/打印机,输入PIN码后确定键不亮的解决办法
- Ubuntu18.04 安装 Idea 2018.2 Ultimate
热门文章
- linux开机自动挂载硬盘命令,Linux系统开机自动挂载硬盘分区
- 实验3:二层直连式WLAN组网设计
- iqooneo3 如何不用vivo账号下载外部应用_不怕卡还不怕偷窥 iQOO Neo3这几个功能赶紧学起来!...
- Java语言之动画的简单入门学习
- 内网穿透实现外网访问内网SQL数据库(工具:花生壳)
- oracle中sql语句(+)符号代表连接
- 面试题的基本总结回顾(以以往面试过的问题做基本总结)
- 马云最新分析:未来3年投资四万从事这两大行业,一年后年入百万
- AD18:从原理图到PCB(一)
- 候选码、主码、全码、外码、主属性、主键、主关键字、非主属性