SPP-Net目标检测算法深度剖析

2024-04-22 07:08

本文主要是介绍SPP-Net目标检测算法深度剖析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、引入SPP-Net

二、SPP-Net简介

三、网络架构

四、总结


论文地址 :https://arxiv.org/abs/1406.4729

一、引入SPP-Net

        为何们猛然间对SPP-Net起了好奇之心呢?因为在学习R-CNN系列算法的时候,总有资料提到SPP-Net(Spatial Pyramid Pooling-Net)算法(其实是一种深度学习的网络架构),在处理完R-CNN系列算法之后,打算来看看,这个SPP-Net到底是个什么来头,如果大家对目标检测算法有点兴趣,可以逛逛我的R-CNN系列和YOLO系列算法的博客。

二、SPP-Net简介

        首先要知道SPP-Net是一个解决目标检测问题的算法,其依旧属于two-stage的目标检测算法,也就是先找出候选区域(有相应的成熟的算法),之后在进行分类和回归问题。

        在我学习完Fast R-CNN之后,我发现SPP-Net中的很多算法思想和Fast R-CNN好像,然后我就看了一下两篇论文的发布时间,SPP-Net:2014.6.8,Fast R-CNN:2015 4.30,然后我似乎明白了什么(吸取了SPP-Net的思想)。

三、网络架构

这里写图片描述
图一:SPP-Net网络架构

        首先,讲解一下这个网络是干什么的,用来提取图像特征的,很多人会认为这个网络的结果直接出判断种类结果以及预测框,其实不是的,这个网路架构的输出是一个分类结果,然后我们提取其全连接层,来作为这个图像的特征向量来代替原图的,这个理解很重要。那么接下来就介绍一下这个网络的流程,首先得到一个图片, 然后将图片经过一系列卷积操作然后得到feature maps,然后将feature maps进行三种尺度的池化,相当于将feature maps分割成1x1、2x2、4x4大小的网格,每个网格内的值是网格内所有单元的加和平均(这个就是ROI Pooling),以此来确保输入到全连接层的维度是固定的,然后将这些向量连接,但是不是说只有16+4+1维度,因为feature maps,这里我用的是复数,表明通道数不只是1,像图一中的通道数为256,所以拼接成的向量维度是(16+4+1)x 256。然后通过全连接层6、7,然后再连接一个softmax层,也就是分类层。这样一个图像的分类网络就建好了,那么我们需要这个网络中除了输出层以外的部分来代表一个图像的特征提取。

        之后,在训练好这个特征提取器(ZF-5网络架构,文章用到的)之后就可以进行目标检测了,首先通过候选区域生成算法得到2000个候选区,然后将整张图片resize大小为MIN(w, h),之后进入ZF-5生成feature maps,然后定义了4个等级的spatial pyramid分别是1x1、2x2、3x3、6x6(既然这里是四个等级的池化,那么在训练分类器的时候也要是四个,但是上面是为了举例设置了三种池化窗口),然后将候选区映射到feature maps上,之后将SPP应用在每个候选区中,并拼接成特征向量,之后通过全连接层,然后得到最终的特征向量。如下图二

图二:SPP-Net用于目标检测

        然后我们需要训练多个(这里到底多少个需要根据物体到底有多少个种类来定义)个基于SVM的二分类器,用来判断这个区域到底是背景还是存在物体,数据集如何构建呢?

  • Ground Truth的区域经过特征提取之后形成特征向量推入SVM中,其标签为1(正例)
  • 候选区域与Ground Truth的IoU小于30%的提取的特征,标记为0(负例)
  • 在负样本中,如果一个新加入的负样本与已经加入的负样本的IoU大于70%则不将其加入到负样本中

         这样我就训练好了多个SVM的二分类器,用来给每一个类别去打分,然后选取分数大于0.3的进入候选区进入到后面的NMS算法截断,当然在进入NMS之前需要预测一下回归框的位置,这个部分和R-CNN是一致的,就是说对候选框的中心进行一定比例的位移,将宽高进行一定比例的放缩,目标是为了和Ground Truth更加的贴近。论文中介绍了两种方法,图三是直接预测位置,图四是预测缩放平移比例。

图三:方法一
图四:方法二

四、总结

        如果直接比较SPP-Net和R-CNN的话,我感觉可比性不大,但是Fast R-CNN和SPP-Net却可以擦出不少的火花,而且我感觉SPP-Net的很多思想被Fast R-CNN进行引用

  • 对于使用成熟的卷积神经网络对图像进行特征提取,有一点不同,在训练之后的全连接层的时候,SPP-Net是没有微调特征提取的卷积层的,但是Fast R-CNN进行了微调,这也是为啥Faster R-CNN的独特的训练流程的原因(为了更好的融合RPN网络的Fast R-CNN网络)
  • 当然Fast R-CNN和SPP-Net也有很多相似的部分,为了节省时间,对于候选区域没有在原图中直接选取而是在feature maps上进行选取
  • 二者都使用了ROI Pooling,也就是说将一个区域通过网格的区域池化,进行特征长度的限定,进而更好的连接全连接层

这篇关于SPP-Net目标检测算法深度剖析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/925112

相关文章

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

.NET利用C#字节流动态操作Excel文件

《.NET利用C#字节流动态操作Excel文件》在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据,本文将演示如何在.NET平台使用C#通过字节流创建,读取,编辑及保... 目录用C#创建并保存Excel工作簿为字节流用C#通过字节流直接读取Excel文件数据用C#通过字节

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖