SPPNet网络模型
上篇文章详细阐述了R-CNN网络模型,本篇本章本来准备阐述Fast-RCNN模型的,介于SPP-Net模型有许多技巧性的技术可以在不同模型上使用,所以本篇详细分析下SPP-Net
SPPNet论文:https://arxiv.org/abs/1406.4729
SPPNet论文翻译:https://blog.csdn.net/mengduanhonglou/article/details/78470682
一、概述
SPP-Net(Spatial Pyramid Pooling)金字塔池化网络,该模型在(ILSVRC)2014物体分类比赛排名第三(top-5:8.06),前两名分别是GoogleNet(top-5:6.66)和VGG(top-5:7.32),物体检测排名第二,相对于RCNN只是提高很小的准确率,但是训练以及测试时间提高了很多(24-102倍),SPP-Net和R-CNN的基本逻辑是一样。
【SPP-Net 不仅能应用到物体检测,在物体分类、语义分割等模型上都能使用,单纯的说SPP-Net并不是一个网络模型,它提供了网络修缮的技巧,SPP(图像金字塔池化)改变了固化图片尺寸与提取特征的之间的顺序,适配多尺度。作者何凯明,曾经的去雾算法,这次的SPP,后面的残差网络以及Mask R-CNN都很值得好好研究。何凯明博客】
二、SPP-Net网络模型
SPP-Net物体检测系统由四个模块构成:
- 卷积神经网络提取特征,在此用的ZF-5的5蹭卷积网络;产生类别无关的候选检测区域集合,大约2000个;
- 将候选框区域映射到特征图中;
- 然后通过spp将其池化到固定大小;
- 通过训练的指定类别的线性SVM分类器以及拟合边框回归。
1、提取特征ZFNet 与 区域推荐(region proposal)
ZFNet ILSVRC2013分类任务的冠军,使用反卷积对CNN的中间特征图进行了可视化分析,通过分析特征行为找到了提升模型的方法,微调Alexnet就提升了表现。相对于Alexnet来说,将11*11的卷积核变成了7*7的,步长从4变成2,【通过可视化发现第一层的卷积核对最终的结果影响更大。】
区域推荐(region proposal)选择搜素法(Selective Search):就是对图像利用分割算法产生许多小的子区域,然后根据这些子区域之间的相似性(主要是颜色、纹理、大小等)进行区域合并,不断的迭代这个操作,每次迭代过程中对这些合并的子区域做外切矩形,最后形成候选框。优点:可以包含大小的疑似物体,合并区域相似性指标多样,提高了准确度;缺点:算法较复杂【和上一篇文章R-CNN一样,在此就不放图了】
2、推荐区域映射到特征图
RCNN是在原图上生成推荐区域,然后将候选区域重定义到固定大小放入特征提取网络,而SPP-Net则是将原图进行了一次卷积操作,在conv5提取到的特征图上将在原图上的推荐区域映射到上面。也就是说SPP-Net只进行了一次卷积操作,这也就是SPP-Net可以做到比R-CNN快很多倍的主要原因。
上图第一行,是一些分类网络固化图片尺寸的方法,剪切(容易丢失物体信息)、缩放(容易丢失物体位置信息);
第二行:R-CNN的操作流程,在卷积层之前固化图片尺寸;第三行:SPP-Net的操作流程,先提取特征然后经过spp。
在分析推荐区域到特征图的映射关系的之前,我们先了解一个概念和一个公式。
感受野:就是指某一层输出的结果或者像素点对应的上一层的区域大小。比如一个3*3的卷积核会将3*3的区域换算成一个点。那这个点的感受野就是3*3的区域。
卷积输出大小公式:(N:输出大小;W:输入大小;F:卷积核大小;P:padding像素数;S:步长)
下面我们借助图片就说说,推荐区域是如何映射到特征图上的。
SPP-Net通过选择搜索算法在原图上产生2000个候选区域,然后将候选区域的两个对角点映射到特征图上对应区域的对角点,因为特征图相对于原图来说尺寸发生了变化,变化的逻辑是通过上面的公式变化而来。网络的conv层和pooling层因为padding的存在不改变图像尺寸的大小,但是pooling层的步长stride为2,因为是级联的所以经过多少次池化操作原始图片就缩小池化步长累积大小倍数,因此:
对应的(x3,y3)(x4,y4)的坐标都可以计算出来了,分别在后面+1和-1是为了保证候选框在特征图内部。
3、金字塔池化(Spatial Pyramid Pooling)
R-CNN目标检测以及带有全连接网络的分类模型都必须将图片先固化到指定尺寸,这是因为有全连接层(FC)的存在,卷积操作和池化操作对图片的尺寸没有需求,因为卷积层保存的是卷积核的参数,这个卷积核的参数是N*K*K(N:卷积核个数;N:卷积核的尺寸)和图片的尺寸没有关系,池化层是下采样图片,没有参数,而全连接层需要将256或者128通道数的三维特征数据拉到一个二维平面,这个二维平面的尺寸在每个全连接层是固定的,所以导致了众多带有全连接的分类网络需要固定尺寸的图片用来训练和测试。
SPP-layer层的存在就是为了在接下来的fc之前将候选框包裹的特征图固化到一定尺寸,在PASCAL VOC 2007数据集上总共有20个物体,加上一个背景,总共21类,如何将任意尺寸的特征图固化成(21*256)呢。根据pooling规则,每个pooling window对应一个输出,所以最终pooling后特征的个数由window来决定,如上图所以作者通过3个并列操作实现21*256的输出。第一个操作将特征图上框选4*4总计16个区域,分别求取每个区域最大值,这样生成4*4总计16*256维度的特征向量;同理将该特征图分别框选2*2以及1*1(特征图本图)的最大区域,最后将4*4、2*2、1*1拼接成21*256的特征向量就满足了后面fc网络输入尺寸。
4、SVM分类和拟合边框回归
SVM是用来分类的,事先对每一个类都训练一个线性分类器,然后对每个region proposal通过CNN前向传播计算出的特征进行分类打分。注:SVM是一个很经典的分类算法,也是SVM一度将人们的视线从卷积神经网络拉到SVM传统机器学习分类算法。预训练、正样例、负样例判定阈值以及多级操作这个和RCNN基本一致,在此不做过多介绍。
三、创新与挑战
1、创新
- 共享卷积计算,相对于RCNN区域的重复特征计算,SPP对原图进行一次特征计算,节省了很多时间;
- 设计了可以处理任意尺度的图像结构,相对于RCNN在提取特征之前固化尺度可能导致的物体信息丢失、物体位置信息丢失,将尺度固化放在全连接之前保准了图像数据的完整性。这个模块可以结合众多的分类网络,提高其性能。
- 多层次池化提升准确度,多尺寸训练提升准确度。
2、挑战
- SPP和RCNN一样训练过程是多级流水线,训练特征提取网络、SVM分类网络以及边框回归网络;
- 提出的微调算法不能更新在空间金字塔池之前的卷积层。这种限制(固定的卷积层)限制了深层网络的精度。
总结 :SPPNet相对来说,创新点即是惊艳的地方,共享卷积和金字塔池化操作。共享卷积缩短了几十倍的时间,任意尺度保留了数据的原始信息,并且这个技巧可以优化所有用到FC的网络模型。性能没能大幅提升是因为网络的主体结构依然和RCNN基本一致,增加的是技巧性的东西。当然这些想法都是站在现在这个这个时间点思考的,结合当时的环境以及目标检测的发展状况,何凯明真的很厉害,而SPP-Net还只是他在目标检测的一个开始,后面的的残差网络、Mask Rcnn更是惊艳。
SPPNet网络模型相关推荐
- 算法了解:RCNN、SPP-Net、Fast-RCNN、Faster-RCNN
强烈推荐视频: 非常严谨,非常美观,非常清楚(重点和细节全讲了,观看人数多,有指正). RCNN理论合集:https://www.bilibili.com/video/BV1af4y1m7iL?fro ...
- 目标检测 RCNN, SPPNet, Fast RCNN, Faster RCNN 总结
RCNN CVPR 2014 Rich feature hierarchies for accurate object detection and semantic segmentation http ...
- 目标检测之RCNN,SPP-NET,Fast-RCNN,Faster-RCNN
转载自http://lanbing510.info/2017/08/24/RCNN-FastRCNN-FasterRCNN.html 写在前面 在深度学习出现之前,传统的目标检测方法大概分为区域选择( ...
- 同r做一个窗口_目标检测(Object Detection):R-CNN/SPPnet/R-FCN/Yolo/SSD
这篇文章我是Survey目标检测(Object Detection)系列论文的一个总结. 包括R-CNN系列.SPP-net.R-FCN.YOLO系列.SSD.DenseBox等. 基本概念 目标识别 ...
- 深度学习网络模型实战
目录 学习资料总结: 一.各类网络模型论文: 二.经典网络模型介绍: 1.LeNet-5 代码实战 代码实战: 2.AlexNet Alexnet代码实现: 3.Inception网络 4.残差网络( ...
- 目标检测(六)--SPPNet
空间金字塔池化 空间金字塔池化层简介: 在对图片进行卷积操作的时候,卷积核的大小是不会发生变化的额,反向调节的权重仅仅是数值会发生变化.但是,但是,但是,输入的图片的大小你是否可以控制呢?哈哈,我们的 ...
- 神经网络模型训练简记(二)
神经网络模型训练简记(二) 内容简述 三.机器视觉网络模型分类及简介 3.2目标检测 3.2.1RCNN 3.2.2SPPNet 3.2.3Fast RCNN 3.2.4Faster RCNN 3.2 ...
- 卷积神经网络模型研究
文章目录 会议期刊 卷积层之间是否应该使用dropout? 图像分类.目标检测.图像分割的区别 分割网络 分类网络 模型可解释性.可视化 类激活图 FCN 代码 NIN (Network in Net ...
- R-CNN、SPPNet、Fast R-CNN、Faster R-CNN
目录 1.R-CNN 1.1 目标检测-Overfeat模型 1.2 完整R-CNN结构 1.2.1 特征向量训练分类器SVM 1.2.2 非最大抑制(NMS) 1.2.3 修正候选区域 2.R-CN ...
最新文章
- 剑指offer(60-67题)详解
- string转换为bigdecimal_java如何将String转换为Int
- LeetCode MySQL 1543. Fix Product Name Format(trim去空格+upper/lower大小写)
- rn 跳转至html5,ReactNative-从RN端跳转到原生界面
- Qt工作笔记-对Qt工作线程的进一步理解
- Yahoo团队:网站性能优化的35条黄金准则
- .netFramework 升级NetCore 问题汇总及解决方案
- 培养一个数据人才需要多少年?
- c++ 数字后加f_电工电子学 | 数字集成电路
- 《凤凰项目》读书笔记
- 房价会象汽车电脑一样下降
- EndNote简明教程(三分钟上手EndNote)
- 芯片设计五部曲之二 | 图灵艺术家——数字IC
- 【移动应用开发】实验2Android UI
- 【PyCharm中PIL/Pillow的安装】
- html首页我的待办,我的待办.html
- 关于SAP的用户出口 SAP的用户功能增强
- POS--权益证明机制
- B2B从销售到深度协作
- 京东数科七层负载 | HTTPS硬件加速 (Freescale加速卡篇)
热门文章
- Window10 OpenCV3.4.7 CMake3.18.0 QT5.5.0 编译配置及调用
- Grafana安装以及对接Gnocchi
- vm虚拟机安装debian NAT模式 桥接模式 究竟是什么意思
- 对计算机制图论述作文,计算机绘图学习心得体会.docx
- Mysql -- 数据库查询有结果,但是程序查询结果集为空
- Canny算子实现边缘特征提取
- 这家大数据创业公司要教西雅图妹子们如何穿衣
- 企业级VUE前端项目执行流程总结
- JavaScript学习(六)——表格的动态添加与删除
- 30个打发时间的可爱网站~(太喜欢了…