博客开了很久,一直没有写东西。刚好前两天在实验室做了一个关于图像分类的报告,所以拿过来试试水。但CSDN的编辑器用起来不是很顺手,所以为了方便,博客中用了很多图片。

引言

关于图像的工作门槛一直比较高,因为图像中的信息太丰富,展现形式也很多,噪声也丰富,所以很难提取有效的特征,这就导致后面的分类任务变得非常麻烦。正如下图所示:

正如于凯所说,特征定义了整个分类问题性能的上限,选分类器只是逼近这个上限的一种途径

因此接下来讲的内容主要针对特征提取。

一、词袋模型(BoW)

在讲LLC之前先提一下BoW,因为后者是基础。BoW网上已经有很多的资料了,所以这里提及BoW的目的只在于与后面讲的内容以及LLC作对比。词袋模型总体上可以分成3步:前两步用于特征提取;第三步分类。

流程如下:

step 1: 计算图像的特征描述符,其实提取的是图像的浅层特征

step 2: 然后对所有图像中计算的描述符进行聚类(后文中凡是字典学习的地方,都是用所有图像的所有特征在学习。),也叫向量矢量(VQ),机器学习领域通常叫做是字典学习。然后统计每个簇中的特征数量(计算直方图),每个聚类中心就是直方图中的一个bin,后面也叫字典中的一个原子。这一步也是提取图像的深层信息

step 3: 使用分类器分类。

但是BoW有一个问题:因为全图的所有特征进行直方图计算,所以原图像新的表示(特征)失去了空间信息。保留图像的空间信息就是后面所讲内容的出发点。

二、Spatial PyramidMatching(SPM)(06'CVPR)[1]

这个工作利用金字塔匹配核(Spatial Pyramid Matching)[2] 保留图像的空间信息。简单来说,也就是将图像分块,每块采用BoW,这样左上角的特征就不会跑到右下角的直方图中。如下图:

那么问题来了,图像怎么分块,也就是每块的大小是怎么定的。如果块太小,处理旋转问题效果不好。如果太大,跟BoW一样失去大部分的空间信息。要解决这个问题最直观的做法就是使用多种分块方式,然后在合并。的确SPM就是这么做的。

Spatial Pyramid Matching

先讲一下金字塔匹配核,这个概念是在05’ ICCV的paper中提出来的。它原本是用来计算两个特征集合X和Y的相似性(可以将X和Y理解成两幅图像的特征集),X和Y中的每个特征是d维(如:SIFT是128维的)。匹配过程主要分为两步:

第一:分层。层数从0层开始,最顶层L。每一层代表一种粒度,如果体现在一个线段上,就是将这个线段分为多少段,如2段,3段等。从0到L,粒度越来越细。第层上,每个特征的每一维被分为个区间。这样特征空间被分为个区间。这里可以借助下面这个图来理解:

上图处于金字塔的第二层,因为特征的每个维度被分为4个区间。一个箭头是一种组合,这种组合的数量就是个。其实每种组合就是特征空间中被划分出来的一个区间。如果两个特征落到同一个区间上(上图中的箭头),认为这两个特征是匹配的。

第二:计算匹配结果。先看一个公式:

这个公式是用来计算特征集合X和Y在第l层上的匹配结果,即,而分别表示X,Y中落入第i个区间(上图中的箭头)的特征数,展示一个例子(这个例子中用Z替换X):

最终的匹配结果为:

由于第层是对第层中的每个区间进行四分,所以第层匹配结果一定包含第层的匹配结果,也就是粗粒度的匹配结果一定包括细粒度的匹配结果,因此在计算最终的相似性时去掉重复的部分即。因此就可以得计算每层匹配结果对最终匹配结果的权重,即第层的权重为,也就是说细粒度的匹配结果比粗粒度匹配结果更可靠。以上就是金字塔匹配核的主要内容。

Spatial Matching Scheme

上面一小节讲诉的是金字塔匹配核,这一小节才是SPM这篇文章自己的东西。SPM借鉴了金字塔匹配的思想,只是这里不再是对图像特征的每一维进行划分(实际上SPM对特征空间的划分还是采用的K-means,这是ScSPM和LLC改进的地方),而是对特征在图像中的坐标进行划分,划分方式跟上面一样。一个例子:

图底部的数字表示每一层的权重,从金字塔匹配中可以知道第0层和第1层的权重是相等的。这样就可以计算SPM产生的总特征数:

M表示聚类中心(直方图中bin),注意M是在分层之前就已经确定了的,所以对于每层中每一块的直方图结构都是一样的。L=0是就是BoW。将SPM用CNN的形式展示:

上面这个模型和CNN除了层数不一样外,还有一个地方也不一样,就是第一层coding+pooling中(也就是SIFT)的filter是设计的而,CNN中每个filter都是通过样本学出来的。上图中VQ coding就是字典学习,第二个pooling采用的是平均pooling,具体的形式放在后面跟ScSPM一起做比较。字典学习是学习直方图的柱子,pooling是计算每个柱子上的值(直方图的高度),将这些值合并成向量就是原图新的表示(特征)。

三、ScSPM

ScSPM[3]相比SPM有两个地方做改进:

一、用稀疏编码SC来替换K-means,这是字典学习的方式换了(跟K-means和K-SVD的关系类似),字典中的每个原子就是直方图中一个柱子bin

SPM的字典学习:

其实就是K-means,表示特征集合中的第i个特征,B表示字典,这里就是K-means的聚类中心,ci表示第i个特征的编码。如果xi属于第1类,ci=[1,0,0,0,...];

SPM的pooling:

SPM的输出结果是一幅图像的直方图。直方图就是做加法,将该幅图像的所有点的编码排成矩阵C,C的第i行就是ci,C的每一列就是字典中的原子,或者说是最终直方图中的每一个柱子,所以最后将C的每一列求和,然后归一化获得的向量就是该幅图的特征,最后用于分类,所以是Averaging pooling。

ScSPM的字典学习:

就是用稀释编码代替K-means,原因是多个(相比一个是多个,相比所有样本是少量)样本线性表示比单个表示要更加鲁棒,表示误差更小。

ScSPM的Pooling: 选取矩阵C每一列的最大值,也就是Maxpooling。现在学术界普遍认为max pooling 比averaging pooling更加鲁棒

另外ScSPM输出的是非线性特征,所以只需要线性分类器就可以获得很好的效果;而SPM输出的线性特征,需要采用非线性的分类器。线性分类器无论是训练还是测试速度都快于非线性分类器。

四、LLC

LLC[4]认为局部性比稀疏性更合理,有更小的重构误差(但我并不认为会比稀疏编码重构误差跟小);另外,局部性有解析解(这在搞科研时是可遇不可求的),更新字典时速度更快,一个样本只需要更新它周围的几个原子(稀疏编码不具备这功能)。我认为第二个优势是最具有吸引力的。

LLC的目标函数:

文章给出的结果:

这个结果似乎有问题,因此本人重新推导了一遍,推导过程如下。

一、将目标函数转化为非约束的目标函数:

二、去掉二范数:

三、上式对ci求导,结果如下:

四、合并上面两个式子:

五、调整成文中结果的形式:

[1]. K. Grauman and T. Darrell. Pyramidmatch kernels: Discriminative classification with sets of image features. InProc. ICCV, 2005.

[2]. S. Lazebnik, C. Schmid, and J. Ponce.Beyond bags of features: Spatial pyramid matching for recognizing natural scenecategories. InCVPR, 2006.

[3]. J. Yang, K. Yu, Y. Gong, and T. Huang.Linear spatial pyramid matching using sparse coding for image classification.Proc. of CVPR’09, 2009.

[4]. Wang, Jinjun, et al. "Locality-constrained linear coding for image classification." Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on. IEEE, 2010.

总结SPM,ScSPM,LLC相关推荐

  1. Deep Learning:Sparse Coding ScSPM LLC

    转自 Deep Learning:Sparse Coding ScSPM & LLC 最近看了余凯的CVPR12 Tutorial on Deep Learning(下载),在此记录下自己的一 ...

  2. 实例检索︱图像的实例搜索(文献、方法描述、商业案例)

    笔者在这几天看了一些关于图像特征化的内容,发现图像相似性搜索领域,一般先图像特征量化,然后进行相应的匹配. 1.方向一:描述符.先抽取图像局部特征符,根据一些匹配算法进行匹对,较多适合在图像比对,人脸 ...

  3. 图像的稀疏表示——ScSPM和LLC的总结

    稀疏编码系列: (一)----Spatial Pyramid 小结 (二)----图像的稀疏表示--ScSPM和LLC的总结 (三)----理解sparse coding (四)----稀疏模型与结构 ...

  4. 在线场景感知:图像稀疏表示-ScSPM和LLC总结(lasso族、岭回归)

    前言 场景感知应用于三维场景和二维场景,可以使用通用的方法,不同之处在于数据的形式,以及导致前期特征提取及后期在线场景分割过程.场景感知即是场景语义分析问题,即分析场景中物体的特征组合与相应场景的关系 ...

  5. C++版的LLC代码

    图像稀疏编码总结:LLC和SCSPM ,文章对稀疏编码讲解非常详细. <Locality-constrained Linear Coding for Image Classification&g ...

  6. matlab变压器紧耦合,一种紧耦合高效llc谐振变压器的制造方法

    一种紧耦合高效llc谐振变压器的制造方法 [专利摘要]本发明公开了一种紧耦合高效LLC谐振变压器,包括磁芯不带气隙的环形主变压器,主变压器的初级线圈一端与输入辅助电感连接:主变压器的第二次级线圈两端分 ...

  7. matlab llc谐振电路,一个菜鸟对LLC谐振知识的渴望

    admin 离线 LV9 管理员积分:30301 | 主题:2337 | 帖子:8925 积分:30301 管理员 2015-5-27 14:55:14 期待ing shyshihouyun 积分:5 ...

  8. 安装node和spm过程

    2019独角兽企业重金招聘Python工程师标准>>> 安装nodejs 官网下载nodejs,我下的是v0.10.33版本,安装到d:\nodejs下. 1.新建目录d:\node ...

  9. LLC 逻辑链路控制

    LLC  协  议 4.2.1 LLC帧格式 LLC协议定义了LLC层之间通信的帧格式,参见图4.3. 图4.3  LLC帧格式 LLC帧格式中各个字段的含义如下: ① 服务访问点(SAP)地址:SA ...

最新文章

  1. MFC的进程和线程,非正常终止
  2. idea 一直在build_让web开发部署提速 8 倍的一款 IDEA 插件,你有在用?
  3. Java Enterprise软件与应有的软件
  4. java 延迟初始化_Java并发编程——延迟初始化占位类模式
  5. 哈尔滨理工C语言程序设计精髓_计算机科学与信息工程学院C语言程序设计竞赛圆满完成!...
  6. Golang通道(chan,协程交互数据)
  7. CTO 要我把这份 MySQL 规范贴在工位上!
  8. 德鲁克:终生难忘的7堂课
  9. 20191114每日一句
  10. [Linux基础]读书笔记-老男孩核心系统命令实战1
  11. [ARC120F]Wine Thief
  12. java poi 导入报错,Cannot get a NUMERIC value from a STRING cell
  13. 收款码在线生成系统源码 无限制
  14. 面阵相机行业研究分析报告
  15. Testing WLW!!
  16. 【异步电路碎碎念1】 —— 到底什么是异步电路
  17. 西雅图成为了美国办公租赁最大市场!
  18. 子网掩码为255.255.255.0代表什么意思?如果一个网络的子网掩码为255.255.255.248,问该网络能够连接多少台主机?
  19. QT常用布局layout快速入门
  20. 学好英语,学好数学。

热门文章

  1. Spring Boot 2.0 WebFlux 教程 (一) | 入门篇
  2. 无监督特征学习(半监督学习+自学习)
  3. 数据库原理 ODBC概述
  4. 机器学习中的数学——距离定义(九):测地距离(Geodesic Distance)
  5. 计算机技术在生物教学中应用,信息技术在生物教学中的应用
  6. 【904. 水果成篮】
  7. 超简单EventBus使用
  8. EasyAR尝鲜系列教程之Hello EasyAR
  9. Linux tar/rpm/yum命令软件安装
  10. 自动驾驶仿真工具之AirSim简介