图像稀疏编码表示

原创 2015年07月08日 09:55:14

注:本文学习自CVPRLinear Spatial Pyramid Matching Using Sparse Coding
for Image Classification》、《Image classification By non-negative sparse coding, low-rank and sparse decomposition》及《基于稀疏编码的图像视觉特征提取及应用》

本文学习笔记是自己的理解,如有不对的地方,请大家指正批评,共同进步!

在提取完所有训练图像的SIFT特征后,需要对每幅图像进行视觉特征编码。视觉特征编码的目的在于对原始特征向量进行选择和变换,得到图像中最具表现力和区分度的视觉特征向量,使得计算机可以更高效的进行处理。一般编码方式是向量量化,另一种视觉编码方式稀疏编码能更好的表示图像。

1、向量量化

向量量化的基本思想是在基向量空间中寻找目标向量的最近邻,然后用该基向量的编号表示原目标向量:


其中x为某个SIFT特征向量,di为基向量空间中的第i个向量。其实基向量就是对所有训练图像的所有SIFT特征向量进行聚类,得到的K个聚类中心,这K个特征向量最后作为基向量。然后对于每一幅图像,寻找每个SIFT特征向量属于哪个基向量,来进行映射。

在向量量化的过程中,基本步骤如下:
1) 将全部的训练样本进行归一化;
2) 对训练样本进行聚类,得到若干个类中心,构成基向量空间:
3) 在所有类中心中为目标向量寻找最近邻。

BOW模型中,先聚类产生视觉关键词,然后进行向量量化编码。对于用SIFT特征


就是这幅图像的稀疏编码。
向量量化的优点在于计算简单,数据压缩率高,缺点在于精度损失比较大,在某些应用中难以满足要求。

2、稀疏编码

稀疏编码的本质是一个目标向量可以由少量的基向量经线性拟合而成,且基向量空间存在一定的冗余。与向量量化的区别是向量量化的每个目标向量只能由一个基向量表示。也就是说向量量化方式的约束条件太严格,会引起重构误差。二者区别可表示如下:



对图像的稀疏编码一般分为两个过程:

一是基向量的训练过程,也称为字典的学习。在这个过程中,我们利用大量的训练样本,通过无监督学习方法学习获得一组冗余的基向量,这组基向量通常反映了训练样本中一些带有本质特性的基元,如图像中的边界、角点,实验表明,字典的学习过程模拟了人类视觉皮层对信息的处理过程。

最优化问题(1)变成了二次约束的最小二乘问题,即:


这个最优化问题,在给定X情况下,交替固定一个变量,训练另一个变量,如此迭代。

   二是线性拟合的求解过程。即任意目标向量xn都可以由字典V内的若干个条目经线性组合拟合而成,该过程根据不同的约束条件,可以得到不同的拟合系数un,然后用该系数向量表示图像特征。

此时V已知,对图像X稀疏编码得到U,问题变为如下求解:


3、实验过程:

1、从每张图像中随机提取一个特征点向量,凑出一个初始训练样本X。(128*2600
for ii = 1:2600

     fpath = training.path{ii};

      load(fpath);

      num_fea = size(feaSet.feaArr, 2);

       rndidx = randperm(num_fea);

       X(:, ii) = feaSet.feaArr(:, rndidx(ii));

end;

2、视觉字典V的学习
  a、初始视觉字典V通过随机函数给出,先随机产生一个128*300的矩阵作为初始视觉 字典

V = rand(128, 300)-0.5;%先随机生成一个视觉词典V

    V = V - repmat(mean(V,1), size(V,1),1);

     V = V*diag(1./sqrt(sum(V.*V)));

  b、使用刚刚得到的V,对样本X计算得到U

  U = L1QP_FeatureSign_Set(X, V, lambda);

此函数在已知训练样本X和给出的视觉字典V的前提下,学习得到此时样本的稀


  c、使用刚刚得到的U,再训练得到V
V = l2ls_learn_basis_dual(X, U, pars.VAR_basis);

此函数在已知训练样本X和样本稀疏编码U的前提下,学习得到V。在条件


  d、迭代50bc过程,最终得到视觉词典V及训练样本X的稀疏编码U

3、对每张图像,应用得到的视觉字典V,得到其稀疏编码U

4、如下代码用某种方式(sc_approx_pooling)对每幅图像的稀疏编码进行了处理,然后用21*300(300是视觉关键词的个数)维向量来表示这幅图像。以前是对向量量化编码U按关键词出现的频次计算直方图来表示这幅图像,现在改用最大池处理,即对于稀疏编码得到的U,Uij表示了第iSIFT特征区域对第j个关键词的归属程度,取每个关键词中归属程度的最大值来表示这个关键词,得到K维特征向量来表示这幅图像。

sc_fea = zeros(6300, 2600);%%所有训练图像的稀疏编码

sc_label = zeros(2600, 1);

for iter1 = 1:2600,  

     fpath = database.path{iter1};

     load(fpath);

     %%对每张图像给出一个稀疏编码矩阵(这里需要对每张图片每金字塔层每个网格给出一个300*N 稀疏编码矩阵,最后按 权值串联该幅图的所有稀疏编码作为最终稀疏编码来表示这幅图像)

     sc_fea(:, iter1) = sc_approx_pooling(feaSet, V, pyramid, gamma);

    sc_label(iter1) = database.label(iter1);

end;

 

 

总结一下,稀疏编码其实就是先对所有图像的所有SIFT特征进行训练,得到基向量也即视觉关键词V。之后对于每一幅图像,计算其每个特征点所属的基向量索引uu中含有多个非零系数用来拟合多个基向量,得到一幅图像的系数编码U。用U乘以基向量V就能表示一幅图像X。之后再用方法(sc_approx_pooling)对每幅图像的稀疏表示U进行了处理,得到300(视觉关键词的个数)维向量来表示这幅图像。




版权声明:本文为博主原创文章,未经博主允许不得转载。

图像稀疏编码表示

from http://blog.csdn.net/qustqustjay/article/details/46799525 注:本文学习自CVPR《Linear Spatial Pyramid ...
  • distsau
  • distsau
  • 2015年07月25日 18:50
  • 2180

图像稀疏编码表示

from http://blog.csdn.net/qustqustjay/article/details/46799525 注:本文学习自CVPR《Linear Spatial Pyramid ...
  • distsau
  • distsau
  • 2015年07月25日 18:50
  • 2180

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

稀疏编码系列: (一)----Spatial Pyramid 小结(二)----图像的稀疏表示——ScSPM和LLC的总结(三)----理解sparse coding(四)----稀疏模型与结构...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年01月03日 19:30
  • 1074

稀疏表示去噪中的一些小问题

1.基于稀疏表示的图像去噪,是将图像分块,对于每个块进行稀疏表示得到系数矩阵,然后重构图像通过系数矩阵*字典得到吗?稀疏表示过程中每次将图像的每一列与字典做内积,选择最大的一个,计算残差,多次迭代,继...
  • qq_32175783
  • qq_32175783
  • 2016年09月21日 23:11
  • 1326

先进的编码技术-稀疏表达-2-ScSPM和LLC的总结

稀疏编码系列: (一)----Spatial Pyramid 小结(二)----图像的稀疏表示——ScSPM和LLC的总结(三)----理解sparse coding(四)----稀疏模型与结构...
  • wuhang19911024
  • wuhang19911024
  • 2015年05月30日 09:57
  • 553

图片的稀疏字典学习

这段代码来源于Python的Dictionary Learning的官方文献教材,主要用途是教会用户通过字典学习对图片进行滤波处理。 step1:首先是各种工具包的导入和测试样例的导入 # 导...
  • liuweizj12
  • liuweizj12
  • 2017年06月11日 10:36
  • 319

高光谱图像分类(二)稀疏表示

什么是稀疏系数?什么是字典?稀疏系数如何表示信号?下图是一个稀疏表示模型 1.稀疏系数: 先看到右边的α, 白色小格子表示0,有色小格子表示非0数(0,1),稀疏的意思就是非零系数很少的含义。 2...
  • Darrenwangcheng
  • Darrenwangcheng
  • 2016年10月18日 14:44
  • 2760

深度学习笔记:稀疏自编码器(1)——神经元与神经网络

本文是笔者复习稀疏自编码器内容后的第一篇笔记
  • wanz2
  • wanz2
  • 2016年10月25日 20:21
  • 737

理解稀疏编码sparse coding

稀疏编码系列: (一)----Spatial Pyramid 小结(二)----图像的稀疏表示——ScSPM和LLC的总结(三)----理解sparse coding(四)----稀疏模型与结构...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年01月03日 19:31
  • 6709

稀疏表示之OMP,SOMP算法及openCV实现

一、前言 稀疏表示是自上世纪90年代开始,从人眼的视觉感受野获得启示,逐渐被人们所研究。现在已经发展为一种重要的信息表示方法。所谓稀疏表示是指,一个信号在过完备字典中,可以由少数个原子线性表达, 其数...
  • EbowTang
  • EbowTang
  • 2016年10月06日 20:34
  • 2126
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图像稀疏编码表示
举报原因:
原因补充:

(最多只允许输入30个字)