稀疏表达(Sparse Representation)

动机

最近研究了一下稀疏表达在视觉应用的相关理论,第一次接触一个理论自然不想上来就直接看英文论文,于是在CSDN上尝试查了一下相关资料,看了不少博客之后发现大都基于B站上搬运的一个稀疏表达的视频课程,课程讲得应该很好,但是中文字幕的翻译质量实在是看不下去。相关的博客也讲得比较抽象,看完也不明白具体是怎么应用的,功夫不负有心人,翻了N多页之后还是让我找到了一个感觉很棒的文章,本文以此为基础,先介绍稀疏表达的一点基础知识,随后以一个具体的案例展示了稀疏表达是怎样在视觉的人脸识别任务上应用的,同时自己记录一下便于日后温习,由于本人水平有限,文中如出现错误还请大佬不吝赐教!

什么是稀疏表达

稀疏表达最早出现在信号处理领域,是过去20年来信号处理中非常引人关注的研究领域。指在给定的超完备字典中用尽可能少的原子来表示信号,以获得信号更为简洁的表达方式,从而使我们能更容易地获取信号中所蕴含的信息(在视觉中通常指语义信息),更方便地对信号进行压缩和编码等进一步处理。其中有几个名词想解释一下:

  • 超完备字典:我们知道任意向量 x ∈ R 3 \bm{x} \in \mathbb{R} ^ 3 xR3都可以用 e = ( e 1 , e 2 , e 3 ) = ( 1 0 0 0 1 0 0 0 1 ) \bm{e}=( \bm{e_1}, \bm{e_2}, \bm{e_3} ) = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} e=(e1,e2,e3)=100010001的线性组合唯一表示,这里的 e \bm{e} e 可以叫做三维空间中的(自然基)。从机器学习的视角来看我们可以把上述矩阵的每一列看做样本空间中的一个样本,每一行看做样本的一个特征;在这里如果我们选用这个自然基便可以线性表示样本空间中所有的样本,这里的 e \bm{e} e 也可以称为一个完备基,但是如果我们再选择一个样本与上述基矩阵在行方向concat在一起,就构成了一个3x4的矩阵,用这个矩阵的列向量的线性组合同样可以表示整个样本空间,这时我们给它一个新的名字:超完备字典
  • 原子: 上述字典中每一列称为一个原子,也就是一个基向量。

信号稀疏表示的两大任务

字典的生成:

稀疏字典的生成可以说是稀疏表达非常重要的任务之一,在信号处理中通常用具有良好性质的人工设计的字典,如小波字典、超完备DCT字典和曲波字典等,而在稀疏表达在视觉的任务中,字典通常由训练集本身或者从训练集学习而来。

信号的稀疏分解

基于稀疏字典,计算特定信号在该字典下的稀疏表示,通常表现为求解一个优化问题。

信号稀疏表示的应用

基于重构的应用

  • 图像去噪
  • 压缩与超分辨率
  • SAR成像
  • 缺失图像重构
  • 音频修复

基于分类的应用

将表征对象主要的或者本质的特征构造成稀疏向量,这些特征具有类间的强区分性。利用稀疏表示方法得到这些特征的值,并根据稀疏向量与某类标准值的距离,或稀疏向量间的距离判别完成模式识别或分类过程。

  • 盲源识别
  • 音乐表示与分类
  • 人脸识别
  • 文本识别

稀疏表达用于视觉任务的几点不同

  1. 与稀疏表达在信号处理领域不同,在计算机视觉领域既要求得到观测样本的紧凑、高保真的表达,也要求提取样本的语义信息;
  2. 字典的选择在桥接稀疏表达在信号处理与计算机视觉领域的鸿沟有关键作用,由训练样本本身组成,或者从训练样本中学习到的非传统的字典在获得SOTA的结果和在稀疏表达上添加语义信息至关重要;
  3. 稀疏表达为什么能够发现数据的语义信息?
    答:Although the images (or their features) are naturally very high dimensional, in many applications,images belonging to the same class exhibit degenerate structure. That is, they lie on or near low-dimensional subspaces, submanifolds, or stratifications. If a collection of representative samples is found for the distribution, we should expect that a typical sample has a very sparse representation with respect to such a (possibly learned) basis. Such a sparse representation, if computed correctly, might naturally encode semantic information about the image.

基于稀疏表达的人脸识别

这部分应该是深度学习火起来之前在人脸识别领域比较成功的方法之一,深度学习彻底火了之后,各种任务都改用深度模型求解,不管什么domain的特征,一通调参和BP优化就完事了,懂得都懂。

这部分主要参考大佬的博客
论文: Robust Face Recognition via Sparse Representation,我只是主线自己理一下,想进一步了解的可以看上述两个资料。不得不说现在来看,论文里面的想法对于我来说还是很巧妙和大胆,不愧是TPAMI的论文。

在人脸识别任务中,人们直接使用训练集作为过完备字典, 其中类别为 i i i的人脸的所有样本表示为:

D i = [ d i , 1 , d i , 2 , . . . , d i , N i ] ∈ R m × N i \bm{D_i} = [\bm{d}_{i,1}, \bm{d}_{i,2}, ... , \bm{d}_{i, N_i} ] \in \mathbb{R} ^ {m \times N_i} Di=[di,1,di,2,...,di,Ni]Rm×Ni

其中每一个列代表一个样本(人脸),预先将所有人脸图像展开成一维列向量,那么整个训练集中所有人脸样本可以表示为:

D = [ D 1 , D 2 , . . . , D c ] ∈ R m × N \bm{D}=[\bm{D}_1, \bm{D}_2, ... , \bm{D}_c] \in \mathbb{R} ^ {m \times N} D=[D1,D2,...,Dc]Rm×N

其中 N = ∑ i = 1 c N i N=\sum_{i=1}^cN_i N=i=1cNi, 给定一个样本 x ∈ R m \bm{x} \in \mathbb{R}^m xRm, 假设我们不知道它的标签,可以将其表示为字典 D \bm{D} D上的线性组合:

x = D α \bm{x} = \bm{D}\bm{\alpha} x=Dα

这里只有向量 α \bm{\alpha} α是未知的,我们可以很容易将上式的求解转换为如下优化问题:

α ∗ = a r g m i n ∣ ∣ x − D α ∣ ∣ 2 2 \bm{\alpha}^* = argmin||\bm{x} - \bm{D}\bm{\alpha}||_2 ^2 α=argminxDα22

至此,我们可以在字典 D \bm{D} D上用向量 α \bm{\alpha} α表示样本 x \bm{x} x, 但是我们的向量表示却不一定是稀疏的,所以我们希望

x = D α s . t . ∣ ∣ α ∣ ∣ 0 ≤ δ \bm{x} = \bm{D}\bm{\alpha} \\ s.t. ||\bm{\alpha}||_0 \le \delta x=Dαs.t.α0δ

同样转化为优化问题:
α ∗ = a r g m i n ∣ ∣ x − D α ∣ ∣ 2 2 + λ ∣ ∣ α ∣ ∣ 0 \bm{\alpha}^* = argmin||\bm{x} - \bm{D}\bm{\alpha}||_2 ^2 + \lambda||\bm{\alpha}||_0 α=argminxDα22+λα0
其中 λ \lambda λ e r r o r error error和sparsity trade-off 的 coefficient.又因为L0范数难以优化,人们常用L1范数进行替换,即最终优化问题可以表示为一个 l a s s o lasso lasso问题:
α ∗ = arg min ⁡ α ∣ ∣ x − D α ∣ ∣ 2 2 + λ ∣ ∣ α ∣ ∣ 1 \bm{\alpha}^* = \argmin_\bm{\alpha}||\bm{x} - \bm{D}\bm{\alpha}||_2 ^2 + \lambda||\bm{\alpha}||_1 α=αargminxDα22+λα1
现成的解lasso问题的方法有很多,就不再列举了。解得最优的 α ∗ \bm{\alpha}^* α之后再计算每个类别的残差:
e i ( x ) = ∣ ∣ x − D i α i ∣ ∣ 2 \bm{e}_i(\bm{x})=||\bm{x}-\bm{D}_i\bm{\alpha}_i||_2 ei(x)=xDiαi2
则最终分类的类别为:
i ∗ = arg min ⁡ i e i ( x ) i^* =\argmin_i \bm{e}_i(\bm{x}) i=iargminei(x)
至此,我们已经完成了将一张人脸对应于一个身份的工作(分类),任务完成。

结论

这种基于稀疏表达的人脸识别算法能较好低地提取到人脸的语义信息,对部分遮挡,图像损坏,光照变化等具有很强的鲁棒性,但是由于是初期的工作,该方法对要求训练和测试的图像是对齐的,且训练集具有一定量的样本数,足以线性表示任何测试样本。不知不觉时间已经到了深夜,也不想写了,下面贴几张实验结果的图,有兴趣的可以根据参考资料详细了解。上述是自己的理解,如有错误,还望不吝赐教!

实验结果

在这里插入图片描述
在这里插入图片描述

参考文献

  1. https://blog.csdn.net/Forever_pupils/article/details/88572281
  2. DOI: 10.1109/TPAMI.2008.79
  3. DOI: 10.1109/JPROC.2010.2044470
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值