上一篇有对R-CNN做出详解。地址:R-CNN详解
本文主要是描述SPPNet对R-CNN在速度上的一些改进。

R-CNN速度慢在哪里?


R-CNN慢就慢在要对每个候选区域进行卷积提取特征,上面R-CNN详解中提到选择搜索算法(selective search)会有2000个候选区域。由此可见这里面的卷积操作需要花费很多时间。

SPPNet的改进

●减少卷积运算
●防止图片变形

除了卷积运算多之外,R-CNN中候选区域的图片还需要变形,影响准确率。

SPPNet不同于R-CNN的第一个地方是先整张图片进行卷积运算,然后得到一个feature map(特征图)。然后每个候选区域与feature map映射,得到每个候选区域的特征向量。因为这些特征向量的大小都是不一样的,因此添加一个SSP(spatial pyramid pooling)层。SSP层可以接收任何大小的特征图输入,但是会输出固定大小的特征向量,然后再传递到全连接层。

候选区域与feature map映射过程

原图一方面是经过卷积得到一个feature map,另一方面是经过SS(选择性搜索)得到候选区域,现在要将候选区域与feature map进行映射:

映射是通过图中的坐标点来实现的,这里有个计算公式:
●左上角的点
x’=(X/S)+1
●右下角的点
x’=(X/S)-1
这里是S是所有stride(步长)的乘积,包括卷积,池化的步长。论文中设定的S为16。
论文地址
左上角的点坐标为(Xmin,Ymin),右下角的点坐标为(Xmax,Ymax)。所以计算上会有不一样。

SSP层

SSP层的任务是将任意大小的特征图转换成固定大小的特征向量。
假设原图输入是224x224,对于conv出来后的输出是13x13x256的,可以理解成有256个这样的Filter,每个Filter对应一张13x13的feature map。接着在这个特征图中找到每一个候选区域映射的区域,spp layer会将每一个候选区域分成1x1,2x2,4x4三张子图,对每个子图的每个区域作max pooling,得出的特征再连接到一起,就是(16+4+1)x256的特征向量,接着给全连接层做进一步处理,如下图:
子图的max pooling操作,以4X4为例:

划分了16张子图,取每张子图的max像素值。所以4x4会得出16个特征向量。加上2x2,1x1的一共就是21x256个特征向量。

总结

先来看完整的SPPNet结构图

SPPNet在R-CNN的基础上做出了改进,减少了卷积运算时间。但是训练依然很慢,特征依然需要写入磁盘,仍需要分阶段训练SVM,Bounding box回归器等。

END

SPPNet网络结构详解相关推荐

  1. AlexNet网络结构详解与代码复现

    参考内容来自up:3.1 AlexNet网络结构详解与花分类数据集下载_哔哩哔哩_bilibili up主的CSDN博客:太阳花的小绿豆的博客_CSDN博客-深度学习,软件安装,Tensorflow领 ...

  2. U-Net网络结构详解

    U-Net网络结构详解 U-Net网络结构是对称的,由于网络结构像U型,所以被命名为U-Net.整体而言,U-Net是一个Encoder-Decoder(编码器-解码器)的结构,这一点是与FCN的结构 ...

  3. pytorch图像分类篇:6. ResNet网络结构详解与迁移学习简介

    前言 最近在b站发现了一个非常好的 计算机视觉 + pytorch 的教程,相见恨晚,能让初学者少走很多弯路. 因此决定按着up给的教程路线:图像分类→目标检测→-一步步学习用pytorch实现深度学 ...

  4. 深度学习之目标检测(五)-- RetinaNet网络结构详解

    深度学习之目标检测(五)-- RetinaNet网络结构详解 深度学习之目标检测(五)RetinaNet网络结构详解 1. RetinaNet 1.1 backbone 部分 1.2 预测器部分 1. ...

  5. AlexNet网络结构详解(含各层维度大小计算过程)与PyTorch实现

    AlexNet网络结构详解(含各层维度大小计算过程)与PyTorch实现 1.AlexNet之前的思考 2.AlexNet网络结构 3.AlexNet网络结构的主要贡献 4.PyTorch实现     ...

  6. Fast R-CNN网络结构详解

    SPPNet 对R-CNN做出了改进,但是仍然存在网络之间不统一训练的问题.因此,Fast R-CNN就是解决这样的问题. 上两篇博文有详细解析R-CNN和SPPNet:R-CNN详解,SPPNet详 ...

  7. 基于CIFAR100的VGG网络结构详解

    基于CIFAR100的VGG网络详解 码字不易,点赞收藏 1 数据集概况 1.1 CIFAR100 cifar100包含20个大类,共100类,train集50000张图片,test集10000张图片 ...

  8. ResNet网络结构详解,网络搭建,迁移学习

    前言: 参考内容来自up:6.1 ResNet网络结构,BN以及迁移学习详解_哔哩哔哩_bilibili up的代码和ppt:https://github.com/WZMIAOMIAO/deep-le ...

  9. OSI七层网络结构详解

    OSI模型的分层结构 OSI(Open System Interconnection),开放式系统互联参考模型 ,它把网络协议从逻辑上分为了7层.这7层分别为:物理层.数据链路层.网络层.传输层.会话 ...

最新文章

  1. spring-cloud eureka注册发现
  2. vue中Router的封装以及使用
  3. iOS:图片相关(19-05-09更)
  4. Spring Boot 整合携程Apollo 配置中心
  5. java中的 BigDecimal 和 String 的相互转换
  6. Linux 基本操作命令
  7. paip.python错误解决4
  8. File.WriteAllText 写入TXT文件时不能正确换行只显示方块
  9. 2021安徽安全员B证考试多选练习题库
  10. 读《史蒂夫•乔布斯传》(七)
  11. 【项目管理】交付绩效域管理
  12. 美团四面 Java 岗,终获 offer,我是这么回答面试官的
  13. 南京地铁6号线双龙街出入口线区间盾构段开工
  14. 基于Thinkphp5+EasyWeChat+fastadmin微信小程序授权登录获取手机号微信公众号网页---联合授权登录
  15. Oracle Primavera Unifier文档管理器(Document Manager)
  16. 一个线上运营着3000+人的游戏,因为我不小心一个DROP DATABASE,全没了。 怎么办??跟我HOLD住!!!...
  17. 隐私公链Findora全景观察
  18. 什么是ElasticSearch?babe
  19. 【笔记-java】java工程师-入门必学
  20. matlab中电流调节器仿真模型,直流调速系统的matlab仿真(课程设计作业).docx

热门文章

  1. 涉密系统集成甲乙资质区别
  2. 暑期学习日记28:js逻辑
  3. 门面模式Facade
  4. python3手机版画图软件_python实现画图工具
  5. QLineEdit使用方法总结
  6. 为什么myisam查询比innodb快?
  7. MYSQL乐观锁实现
  8. 语雀批量导出MarkDown文件,指定知识库所有内容
  9. OC有符号16进制整形转10进制整形
  10. 在php中焦点事件,Js中的onblur和onfocus事件(图文教程)