目标检测——SPPNet算法解读

论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
作者:Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun
链接:https://arxiv.org/abs/1406.4729

目录

  • 1、算法概述
  • 2、Deep Networks with Spatial Pyramid Pooling
    • 2.1 SPP Layer
    • 2.2 网络训练
  • 3、实验结果
    • 3.1 分类
    • 3.2 检测
  • 4、创新点和不足

1、算法概述

之前的工作,神经网络都要求固定尺寸的输入,比如:224x224,这就限制了输入图像的宽高比,当对于其他任意尺寸图像时,基本都是通过裁剪或直接拉伸的方式变换到固定尺寸。但是裁剪有可能不能完全包含目标,直接拉伸也会造成目标的形变及失真,这都会造成识别精度下降。
在这里插入图片描述
为什么卷积神经网络需要固定尺寸的输入?CNN由两部分组成:卷积层和全连接层,实际上卷积层不需要固定尺寸的输入,它可以对任意尺寸的图像生成任意尺寸的特征图;而全连接层根据其定义来看才需要固定尺寸的输入。全连接层通常在CNN的深层阶段,所以本文作者提出空间金字塔池化(SPP, Spatial Pyramid Pooling)层用于固定CNN中最后一层卷积层的输出,使得全连接层的输入得到统一。这一操作使得CNN可以接受任意尺寸的输入,不必经过裁剪(crop)和扭曲拉伸(warp)。在目标检测方面,加入这一操作的SPP-Net比R-CNN快24到102倍,全过程下来速度为0.5s/image。
SPP的优势有:
1、针对不同尺寸的输入可以得到相同维度的输出,而siding window pooling 做不到;
2、SPP使用multi-level spatial bins, 而siding window pooling采用的单一的窗口,multi-level对目标变形非常鲁棒;
3、由于输入尺寸的可变性,SPP可以提取不同尺度的特征。
4、SPP-Net能使得我们在训练中使用多尺度训练,避免过拟合,使得最终的精度相比固定尺寸训练有所提升。

2、Deep Networks with Spatial Pyramid Pooling

2.1 SPP Layer

作者首先可视化了网络特征图,表明了特征图不仅反映了相应的强度和涉及到它们的空间位置。卷积层可以接受任意大小的输入并输出任意尺寸的特征图,但分类器(SVM/softmax)或者全连接层只能接受固定尺寸的输入。
在这里插入图片描述
为了让CNN适应任意大小的图像,作者将最后一个池化层(例如,在最后一个卷积层之后的pool5层)替换为空间金字塔池化层。如上图所示,空间金字塔池化的输出是kM维向量,桶(bins)的数量记为M,k是最后一个卷积层的输出特征图数量,图中k为256。每个特征图的尺寸为axa,被切分为nxn的bins,那么采用窗口为win=ceil(a/n)和步长为str=floor(a/n)的max-pooling。最后将所有的特征级联起来(固定维度kM)作为全连接层的输入。这样就保证了无论输入图像的尺寸,输入全连接层的输入都有同样的大小。
网络处理流程如下:
在这里插入图片描述

2.2 网络训练

单尺度训练,固定裁剪输入图像为224x224,最后一层卷积层输出特征图大小为13x13,设置三个级别的空间金字塔池化操作,SPP设置如下:
在这里插入图片描述
多尺度训练,采用两个尺度训练,180x180,224x224;180尺寸的图片是224尺寸的直接resize得到,而不是通过裁剪得到,所以两种尺度的区域只在分辨率上不同,而在内容/布局上没有区别。对于180x180的输入图像,最后一层卷积层输出特征图大小为10x10,通过SPP层,180x180的输入大小和224x224的输入大小得到相同维度的全连接层输入。
以上单/多尺度训练主要应用于训练阶段,在测试推理阶段,SPPNet可以接受任意大小的输入图像。

3、实验结果

3.1 分类

数据集采用ImageNet 2012,输入图片固定为224x224,Baseline model的结构如下
在这里插入图片描述
将网络最后一个池化层替换成SPP层后,对应的结果分别为:
在这里插入图片描述
可见多尺度训练对模型也有提升
ILSVRC2014分类竞赛的结果如下,SPP-Net取到第三名的结果,第一名是GoogLeNet,第二名VGG
在这里插入图片描述

3.2 检测

SPP-Net也可以用于目标检测。相较于R-CNN的2000次提取特征,SPP-Net只从整个图像中提取一次特征映射(可能在多个尺度上)。然后对特征图上的每个候选框应用空间金字塔池操作,该候选框对应的特征通过SPP操作将变成固定长度的向量,如下图所示。由于只应用一次卷积操作,所以我们的方法可以运行速度提高几个数量级。
在这里插入图片描述
实验设置:相对于R-CNN,SPP-Net还是用selective search提出区域候选框(测试阶段2000个),SPP-Net的backbone部分采用ZF-5,SPP层采用4级空间金字塔(1x1,2x2,3x3,6x6,共50个bins),这样每个候选框区域这就会生成12800维(256x50)的特征向量用于全连接层的输入。后面训练每个类别的SVM分类器也是用这个12800维的特征。训练SVM的样本设置方案和R-CNN一致,也采用负样本难度挖掘技术。
在这里插入图片描述
因为SPP-Net和R-CNN采用的方式差不多,只是SPP-Net将R-CNN的2000次提取特征的过程集中到一次完成,所以它们最终的mAP区别不大,但SPP-Net的速度比R-CNN的快非常多。

4、创新点和不足

  • 创新点:
    1、针对不同尺寸的输入可以得到相同维度的输出,实现了多尺度训练的可能,能让网络见到多尺度图片,增加鲁棒性。
    2、首次提出单尺度/多尺度交替训练。
    3、改进R-CNN的提取特征方式,合并2000次提取为一次提取,大大提升了速度。
  • 不足:
    1、还是没有改进候选框区域生成;
    2、特征提取、SVM分类、边框回归这三个阶段是独立的,需分别进行训练和推理,效率较低。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适用于 Windows 的 10 个顶级分区管理器软件

您想要对硬盘驱动器或 USB 驱动器进行分区的原因可能有多种。许多用户希望对其外部和内部硬盘驱动器进行分区以有效地管理数据。为了处理分区,Windows为用户提供了一个内置的分区管理工具。 Windows 用户可以通过磁盘管理面板对任何驱动器进行分区。然而&#xff0…

哪种超声波清洗眼镜不伤镜片?超声波什么牌子好?眼镜清洗机推荐

戴眼镜的朋友就能够感同身受,眼镜佩戴一天真的特别容易脏,灰尘或者是脸部出汗出油等,让耳机惨不忍睹!对于眼镜清洗的方式也有很多种,那么到底哪种清洗方式才是真正有效果并且不伤眼镜的呢?跟随笔者的脚步来…

安装Kuboard管理K8S集群

目录 第一章.安装Kuboard管理K8S集群 1.安装kuboard 2.绑定K8S集群,完成信息设定 3.内网安装 第二章.kuboard-spray安装K8S 2.1.先拉镜像下来 2.2.之后打开后,先熟悉功能,注意版本 2.3.打开资源包管理,选择符合自己服务器…

Python-Opencv图像处理的小坑

1.背景 最近在做一点图像处理的事情,在做处理时的cv2遇到一些小坑,希望大家遇到的相关的问题可以注意!! 2. cv2.imwrite保存图像 cv2.imwrite(filename, img, [params]) filename:需要写入的文件名,包括路…

快速排序并不难

快速排序的核心框架是“二叉树的前序遍历对撞型双指针”。我们在《一维数组》一章提到过”双指针思路“:在处理奇偶等情况时会使用两个游标,一个从前向后,一个是从后向前来比较,根据结果来决定继续移动还是停止等待。快速排序的每…

医院信息系统源码,采用JAVA编程,支持跨平台部署应用,满足一级综合医院(专科二级及以下医院500床)的日常业务应用

医院HIS系统源码,HIS系统全套源码,支持电子病历4级,自主版权 his医院信息系统内设门诊/住院医生工作站、门诊/住院护士工作站。各工作站主要功能依据职能要求进行研发。如医生工作站主要功能为编辑电子病历、打印、处理医嘱;护士工…

总结|哪些平台有大模型知识库的Web API服务

截止2023/12/6 笔者个人的调研,有三家有大模型知识库的web api服务: 平台类型文档数量文档上传并解析的结构api情况返回页码文心一言插件版多文档有问答api,文档上传是通过网页进行上传有,而且是具体的chunk id,需要设…

“消费增值:改变你的购物方式,让每一笔消费都变得更有价值“

你是否厌倦了仅仅购买物品或享受服务后便一无所有的消费方式?现在,消费增值的概念将彻底改变你的消费观念!通过参与消费增值,你的每一笔消费都将变得更有价值! 消费增值是一种全新的消费理念,它让你在购物的…

星闪的三层架构

在数字化转型的浪潮中,物联网技术正成为连接世界的纽带,将各种智能设备融为一个无缝的整体。而在这个大背景下,星闪崭露头角,将成为连接未来的关键枢纽。本文将介绍星闪系统的三层架构,包括基础应用层、基础服务层和星…

面向AI开发的六种最重要的编程语言

在AI开发界,你使用的编程语言很重要。每种语言有其独特的特性。选择合适的语言不是关乎个人偏好的问题,而是影响你如何构建和启动AI系统的关键决定。无论你在AI方面有无经验,选择一种合适的语言来学习至关重要。合适的语言将帮助你创建功能强…

一文带你快速了解Python史上最快Web框架

文章目录 1. 写在前面2. Sanic框架简介2.1 背景2.2 特征与优势 3. Sanic框架实战3.1. 安装Sanic3.2. Demo案例编写 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&a…

NVRAM相关

1. Modem NVRAM四个分区 nvdata:手机运行过程中,使用(读写)的NVRAM(除了存在protect_f和protect_s中的NVRAM)都是该分区的nvram文件。存储着普通NVRAM数据、 IMEI、barcode、Calibration数据等。对应的modem path是Z:\NVRAM。NVRAM目录下有CALIBRAT、NVD…

Goby 漏洞发布| Apache OFBiz webtools/control/xmlrpc 远程代码执行漏洞(CVE-2023-49070)

漏洞名称: Apache OFBiz webtools/control/xmlrpc 远程代码执行漏洞(CVE-2023-49070) English Name:Apache OFBiz webtools/control/xmlrpc Remote Code Execution Vulnerability (CVE-2023-49070) CVSS core: 9.8 影响资产数&…

2023新优化应用:RIME-CNN-LSTM-Attention超前24步多变量回归预测算法

程序平台:适用于MATLAB 2023版及以上版本。 霜冰优化算法是2023年发表于SCI、中科院二区Top期刊《Neurocomputing》上的新优化算法,现如今还未有RIME优化算法应用文献哦。RIME主要对霜冰的形成过程进行模拟,将其巧妙地应用于算法搜索领域。 …

外网的maven项目转移到内网操作的步骤

1、新起一个仓库路径testRep,idea 引用的maven里的setting.xml里仓库配置修改成刚才建的路径,目的把需要的jar全部下载到那个文件夹里 2、项目打压缩包,刚才仓库文件夹打压缩包,并复制到内网电脑 3、内网电脑idea引入项目 4、修改…

【离散数学】——期末刷题题库(等价关系与划分)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

Spring Boot HTTP 400 错误的日志信息在哪里查看 ?

HTTP 400 一般来说是入参的某些字段的格式不对 Spring Boot项目启动后默认是不会把相应的日志打印在控制台的 需要在logback.xml里面做相关的配置才会打印出来 具体配置如下 <configuration><appender name"stdout" class"ch.qos.logback.core.Con…

C# OpenVINO 模型信息查看工具

目录 效果 支持模型 项目 代码 下载 C# OpenVINO 模型信息查看工具 效果 支持模型 ONNX format (*.onnx) PDPD (*.pdmodel) TF (*.pb) TFLite (*.tflite) 项目 代码 using Sdcb.OpenVINO; using System; using System.Collections.Generic; using System.Text; using…

数据结构与算法(五)回溯算法(Java)

目录 一、简介1.1 定义1.2 特性1.3 结点知识补充1.4 剪枝函数1.5 使用场景1.6 解空间1.7 实现模板 二、经典示例2.1 0-1 背包问题2.2 N皇后问题 一、简介 1.1 定义 回溯法&#xff08;back tracking&#xff09;是一种选优搜索法&#xff0c;又称为试探法&#xff0c;按选优条…

Linux环境下的MySQL安装

文章目录 前提说明1.卸载内置环境2.检查系统安装包3.卸载这些默认安装包4.获取MySQL官方yum源5.安装MySQLyum源&#xff0c;对比前后yum源6.查看yum源是否生效7.安装MySQL服务8.查看相对应的配置文件9.启动服务10.查看启动服务11.登录方法一12.登录方法二13.登录方法三14.设置开…