SPM空间金字塔模型
1 基本介绍
SPM 全称是Spatial Pyramid Matching,出现的背景是bag of visual words模型被大量地用在了图像表示(Image representation)中,但是BOVW模型完全缺失了特征点的位置信息。SPM考虑空间信息,将图像分成若干块(sub-regions),分别统计每一子块的特征,最后将所有块的特征拼接起来,形成完整的特征,这就是SPM中的Spatial。在分块的细节上,采用了一种多尺度的分块方法,即分块的粒度越大越细(increasingly fine),呈现出一种层次金字塔的结构,这就是SPM中的Pyramid。
SPM即Spatial Pyramid Matching,是一种利用空间金字塔进行图像匹配、识别、分类的 算法 。SPM是BOF(Bag Of Features)的改进,因为BOF是在整张图像中计算特征点的分布特征,进而生成全局直方图,所以会丢失图像的局部/细节信息,无法对图像进行精确地识别。为了克服BOF的固有缺点,作者提出了SPM算法,它是在不同分辨率上统计图像特征点分布,从而获取图像的局部信息。
如上图所示,将level(i)的图像划分为pow(4,i)个cell(bins),然后再每一cell上统计直方图特征,最后将所有level的直方图特征连接起来组成一个vector,作为图形的feature。在后文的描述中cell和bins是等价的。
Pyramid Match Kernels:
1)假设存在两个特征集合X、Y,其中每个特征x的维度为d。将特征空间划分为不同的尺度,在尺度下把特征空间的每一维划出个bins,那么d维的特征空间就能划出个bins(论文中这么描述,但是在实际中是用K-means或BOW进行聚类,得到的每个类中心就是一个bin)。
2) 在level(i)中,如果点x,y落入同一bin中就称x,y点Match,每个bin中匹配的点的个数为min(Xi, Yi),其中Xi, Yi代表相应level下的第i个bin。
3)表示X、Y在level 下的直方图特征,表示level 中X、Y落入第i个bin的特征点的个数,那么在level 下匹配的点的总数为:
在后文中,我们把简写为
4)统计各个尺度下match的总数(就等于直方图相交)。由于细粒度的bin被大粒度的bin所包含,为了不重复计算,每个尺度的有效Match定义为match的增量;
5)不同的尺度下的match应赋予不同权重,显然大尺度的权重小,而小尺度的权重大,因此定义权重为
6)两个点集X、Y的匹配程度pyramid match kernel为:
(3)
Spatial Matching Scheme
论文中的实验过程如下:
1)用 strong feature detector即SIFT进行特征检测,patch size=16*16,patch每次移动的步长spacing grid=8*8。
2)按照BOF相同的方法(即KMeans)构建包含M个words的dictionary。
3)利用图像金字塔把图像划分为多个scales的bins,然后计算落入每个bins中属于不同类别的word的个数,则图像X、Y最终的匹配度为:
4)把所有level下的直方图特征连接起来组成一个维度为的feature,作为分类的特征向量。
SPM代码下载:http://www.cs.illinois.edu/homes/slazebni/
参考文献:
1)Lazebnik S, Schmid C, Ponce J. Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories[C]//CVPR 2006.
如下图,对图像采用不同的尺度进行分块,得到不同尺度的图像,不同尺度构成层次关系:
上图中,不同的点可以看作不同的特征,每层中,点的个数,可以理解为该关键点或区域特征在该层次图像出现的频率,统计每个特征在不同层次图像中分布情况,可以得到每个特征的金字塔:
从level 2 到level 0类似The Pyramid Match Kernel中,直方图取不同间隔,即把level 2看做间隔为1,有16个bin,level 1间隔为2,得到4个bin....因此,对于两幅图像,用相同的尺度划分层次,并统计每个层次中每个cells中某特征出现的次数,得到该特征下的金字塔。
2 计算方法
可以用和The Pyramid Match Kernel相似的方法计算两个图形在该特征下的匹配程度(也可理解为相似度)。匹配方法如下:
每个层次的匹配点数:
说明:
1. SPM介绍了两幅图像匹配的方法。如要用于场景分类,上式就等于M(L+1)个直方图相交运算的和,其实也就等于一个更大的向量直接进行直方图相交运算而已。而这个向量,就等于每个被划分的图像子区域上的visual words直方图连在一起。这个特征,就是用来分类的特征。
2. 作者在实验中表明,不同L下,M从200取到400对分类性能影响不大,也就是降低了码书的大小对分类效果的影响。
3. 这个方法可以作为一个模板,每个分块图像(sub-region)中统计的直方图可以多种多样,简单的如颜色直方图,也可以用HOG,这就形成了PHOG(分层梯度直方图)。
4. 只不过这种空间分类信息仍然有局限性-----一幅相同的图像旋转90度,匹配的结果就不会太高了。所以模型隐含的假设就是图像都是正着存储的(人都是站立的,树都是站立的.......)。Spatial BOW (Spatial-bag-of-features[C])好像可以解决这个问题。
5. 另外空间Pyramid的分块方法也没有考虑图像中目标的完整性(仅仅是利用SIFT特征来描述了Object),即,在对图像分块时,可能会把一个目标分在不同块中。
理论原文:Beyond Bags of Features: Spatial Pyramid Matching for Recognizing Natural Scene Categories
SPM空间金字塔模型相关推荐
- 词袋模型和空间金字塔模型
1 词袋模型 李菲菲认为图像可以类比文档,图像的子块或特征点可以看作是单词,则可以统计图像中所有特征的直方图表示图像,即得到图像的BoW(bag of words)模型.图1是BoW模型的示例图,对于 ...
- SPM空间金字塔匹配模型
SPM:Spatial Pyramid Matching for Recognizing Natural Scene Categories 空间金字塔匹配 SPM即Spatial Pyramid Ma ...
- 用于视觉识别的深度卷积网络空间金字塔池化方法
摘要 现有的深卷积神经网络(CNN)需要一个固定大小的神经网络(例如224x224)的输入图像.这种要求是"人为的",可能会降低对任意大小/尺度的图像或子图像的识别精度.在这项工作 ...
- 空间金字塔方法表示图像
注:本学习笔记是自己的理解,如有错误的地方,请大家指正,共同学习进步. 本文学习自CVPR论文<Discriminative Spatial Pyramid>.<Discrimina ...
- 空间金字塔池化SPP
空间金字塔池化 1.提出的原因 下面这里是我们在网上反复可以看见的话(所以关键是理解这些内容): 提出的原因: 在SPP提出之前,传统的网络具有它有两大缺点: 1.通常需要输入固定大小的图片来进行训练 ...
- 用户金字塔模型详解及在实际运营工作中的意义
我这次分享的主题是讲用户金字塔,这个主题我大概是国内最早提出的. 我觉得这个概念比较实际一些,对大家平时的工作有帮助,所以今天我会讲的比较细一些. 关于我的个人经历(简述) 前面我先讲一下我的个人经历 ...
- Spatial Pyramid Pooling(空间金字塔池化)-变尺度CNN训练
1. 需求创造好的产品,产品拓宽原始的需求 当前的深度神经网络一般都需要固定的输入图像尺寸(如224*224). 这种需求很明显是人为的,潜在性的弊端会降低识别精度(为了使图像尺寸相同,一定会涉及到图 ...
- TGRS2021:Road Segmentation for Remote Sensing ImagesUsing Adversarial Spatial Pyrami对抗性空间金字塔网络的道路分割
TGRS2022:Road Segmentation for Remote Sensing ImagesUsing Adversarial Spatial Pyramid Networks基于对抗性空 ...
- [Neck] 空间金字塔池化【池化策略】(Space Pyramid Pool, SPP)模块和路径聚合网络【增强】(Path Aggregation Network, PANet)的结构
文章目录 背景 yolo v4 中的空间金字塔池化(Space Pyramid Pool, SPP)模块和路径聚合网络(Path Aggregation Network, PANet)的结构 SPP ...
最新文章
- libyuv库的使用
- 深入浅出ThreadLocal,你会吗?
- UML科普文,一篇文章掌握14种UML图
- Xcode 7.0正式版发布了
- 深入理解PHP异常和错误处理(6)PHP如何优雅的处理错误
- 英语自动提取高频词_斑马英语提分营免费体验课
- Android之使用PopupWindow使用和总结
- 4799元!OPPO Reno巴萨定制版开启预售:7月26日正式开售
- 怎么把线稿提取出来_PS教程:提取线稿如此简单?三种方法总有一种适合你
- CentOS7 安装RabbitMQ 亲测(编写中,有大神请帮忙指点下文中遇到的问题,谢谢)...
- iOS开发经验总结(二)
- java(6) ArrayList源码
- Thrift 对象序列化、反序列化-字节数组分析
- c语言万能头文件用不,万能头文件不能用?
- Mermaid知识点总结4 - Flowchart 3
- JDK Stream
- 电脑PHP动画制作画板,html5教程制作简单画板代码分享
- Android 学习(一)
- rust读条闪退_rust更新后无法连接服务器 | 手游网游页游攻略大全
- VPP创建buffer池