ScSPM
Linear Spatial Pyramid Matching using Sparse Coding for Image Classification (CVPR'09)
稀疏编码系列:
李菲菲 bag of words:现在Computer Vision中的Bag of words来表示图像的特征描述也是很流行的。大体思想是这样的,假设有5类图像,每一类中有10幅图像,这样首先对每一幅图像划分成patch(可以是刚性分割也可以是像SIFT基于关键点检测的),这样,每一个图像就由很多个patch表示,每一个patch用一个特征向量来表示,咱就假设用Sift表示的,一幅图像可能会有成百上千个patch,每一个patch特征向量的维数128。
接下来就要进行构建Bag of words模型了,假设Dictionary词典的Size为100,即有100个词。那么咱们可以用K-means算法对所有的patch进行聚类,k=100,我们知道,等k-means收敛时,我们也得到了每一个cluster最后的质心,那么这100个质心(维数128)就是词典里的100个词了,词典构建完毕。
词典构建完了怎么用呢?是这样的,先初始化一个100个bin的初始值为0的直方图h。每一幅图像不是有很多patch么?我们就再次计算这些patch和和每一个质心的距离,看看每一个patch离哪一个质心最近,那么直方图h中相对应的bin就加1,然后计算完这幅图像所有的patches之后,就得到了一个bin=100的直方图,然后进行归一化,用这个100维的向量来表示这幅图像。对所有图像计算完成之后,就可以进行分类聚类训练预测之类的了。
那么,这里影响效率的一个方面是构建词典时的K-means聚类,我在用的时候遇到了两个问题:1、内存溢出。这是由于一般的K-means函数的输入是待聚类的完整的矩阵,在这里就是所有patches的特征向量f合成的一个大矩阵,由于这个矩阵太大,内存不顶了。我内存为4G。2、效率低。因为需要计算每一个patch和每一个质心的欧拉距离,还有比较大小,那么要是循环下来这个效率是很低的。
参考: 第九章三续:SIFT算法的应用--目标识别之Bag-of-words模型
图像分类中的max pooling和average pooling是对特征的什么来操作的,结果是什么?链接:https://www.zhihu.com/question/23437871/answer/44678835
这个故事还要从feature coding讲起。最初编码的方式比较耿直(VQ,矢量量化),这样计算的结果本身是一个统计直方图,也就是向量的,因此不需要做什么处理,直接送到SVM里面就完了。但是由于特征本身语义不高,这样的编码方式会造成比较大的误差。2009年,图像方面的稀疏编码被提了出来(Jianchao Yang, Kai Yu, Yihong Gong, and Thomas Huang. Linear spatial pyramid matching using sparse coding for image classification. CVPR2009.)掀起了一股特征编码的潮流(集中在09-10这个阶段)。稀疏编码减小了量化误差,效果也十分显著(14%的正确率提升),但是经过稀疏编码得到的结果是一个矩阵而不是向量(具体可以看paper),矩阵的两个维度分别是word和location,这个矩阵是无法直接拿来分类的,所以需要对它做pooling变成一个向量,这就是题主所说的pooling。
刚开始的pooling比较拍脑袋,sum就是对每一列求和,max就是求最大,因为矩阵里面的数值强度表现了这个词本身的响应,所以对响应不同的操作会得到不同的结果。上面的那篇文章也比较了一些pooling的效果,但是没有探讨哪种比较好,或者哪种为什么好。
后来有一些工作开始思考什么样的pooling比较好以及为什么好。比如Y. Boureau, J. Ponce, Y. LeCun A Theoretical Analysis of Feature Pooling in Visual Recognition, ICML, 2010,P. Koniusz, F. Yan, K. Mikolajczyk Comparison of Mid-Level Feature Coding Approaches And Pooling Strategies in Visual Concept Detection. CVIU, 117(5):479-492, 2013。 CVIU的这篇文章提出了AxMin的方法,应该是比较新的(是不是最新不太确定)。也有尝试探讨什么样的pooling好以及为什么好的:Protected Pooling Method Of Sparse Coding In Visual Classi cation,ICCVG,2014(会很水而且写得非常naive,只供参考)。不过pooling本身对分类系统的影响不大,2%以内差不多。
总的来说pooling确实起到了整合特征的作用,因为不同的方法得到的结果有些差别,不过我理解主要动机还是“不池化就没法继续了”这种感觉。
ScSPM的更多相关文章
- 图像的稀疏表示——ScSPM和LLC的总结
前言 上一篇提到了SPM.这篇博客打算把ScSPM和LLC一起总结了.ScSPM和LLC其实都是对SPM的改进.这些技术,都是对特征的描述.它们既没有创造出新的特征(都是提取SIFT,HOG, RGB ...
- 在线场景感知:图像稀疏表示—ScSPM和LLC总结(以及lasso族、岭回归)
前言: 场景感知其实不分三维场景和二维场景,可以使用通用的方法,不同之处在于数据的形式,以及导致前期特征提取及后期在线场景分割过程.场景感知即是场景语义分析问题,即分析场景中物体的特征组合与相应场景的 ...
- ScSPM & LLC
为啥会有SPM→ScSPM呢?原因之一是为了寻找better coding + better pooling的方式提高性能,原因之二就是提高速度.如何提高速度?这里的速度,不是Coding+Pooli ...
- 理解sparse coding
理解sparse coding 稀疏编码系列: (一)----Spatial Pyramid 小结 (二)----图像的稀疏表示——ScSPM和LLC的总结 (三)----理解sparse codin ...
- Spatial Pyramid Matching 小结
Spatial Pyramid Matching 小结 稀疏编码系列: (一)----Spatial Pyramid 小结 (二)----图像的稀疏表示——ScSPM和LLC的总结 (三)----理解 ...
- structured sparsity model
Data representation往往基于如下最小化问题: (1) 其中X是观测到的数据的特征矩阵,D是字典,Z是字典上的描述.约束项和使得字典dictionary和描述code具 ...
- CV code references
转:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction: SIFT [1] [Demo program][SI ...
- Coursera机器学习+deeplearning.ai+斯坦福CS231n
日志 20170410 Coursera机器学习 2017.11.28 update deeplearning 台大的机器学习课程:台湾大学林轩田和李宏毅机器学习课程 Coursera机器学习 Wee ...
- 2016CVPR论文集
http://www.cv-foundation.org/openaccess/CVPR2016.py ORAL SESSION Image Captioning and Question Answe ...
随机推荐
- PHP获取文件后缀的7中方法
在日常的工作当中我们避免不了要经常获取文件的后缀名,今天我就整理了一下7种获取文件后缀的方法,希望对大家有所帮助. $url = 'http://www.baidu.com/uploads/20185 ...
- axure笔记--内部框架交互链接
内部框架的作用: 1.可以引用站点地图的页面 2.可以引用视频(链接视频)(axure中没有媒体控件) 3.可以引用本地文件 4.引用网页(注意:1.超链接地址要加上http:// 2.内部框架大 ...
- python爬虫基础04-网页解析库xpath
更简单高效的HTML数据提取-Xpath 本文地址:https://www.jianshu.com/p/90e4b83575e2 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 ...
- 快速入门Matplotlib
十分钟快速入门Matplotlib 函数式绘图 这个库主要有两种绘图方式,一种是像这样的类matlab的函数式绘图方法. import matplotlib.pyplot as plt import ...
- Hibernate的Session的get()和load()方法区别
hibernate中Session接口提供的get()和load()方法都是用来获取一个实体对象,在使用方式和查询性能上有一些区别. get Session接口提供了4个重载的get方法,分别通过“持 ...
- Java-克隆一个对象
如可方便的克隆一个对象 package com.tj; public class MyClass implements Cloneable { public Object clone() { Clon ...
- [转]python开发_shelve_完整版
''' python中的shelve模块,可以提供一些简单的数据操作 他和python中的dbm很相似. 区别如下: 都是以键值对的形式保存数据,不过在shelve模块中, key必须为字符串,而值可 ...
- Wp 导航到手机定位设置页面
WP开放了很多选择器和启动器,找了半天没发现有打开定位设置页面的,找了好久终于找到了解决办法: await Windows.System.Launcher.LaunchUriAsync(new Uri ...
- 大数据学习——Kafka集群部署
1下载安装包 2解压安装包 -0.9.0.1.tgz -0.9.0.1 kafka 3修改配置文件 cp server.properties server.properties.bak # Lice ...
- 学习笔记1——下载和安装WordPress
首先,到WordPress官方网站下载WordPress,下载地址https://cn.wordpress.org/txt-download/ 然后,将下载后的文件夹放在www目录下,到浏览器中输入l ...