zoukankan      html  css  js  c++  java
  • 陆吾生感知压缩视频笔记

    Lecture 1

    Key: sparse & incoherence

    Sparse: There is not too much informations. 比如一个长度为1024个向量,即有1024个分量,但其中只有几十个分量不为0,则这个向量就称为sparse vector。

    CS只在很稀疏的情况下才成立。除了白噪声,其他所有信号(音乐、图像、股市等)都可以看做sparse。

    取样方式与传统不同,CS可以取更小的点,比如1000长度的信号,可以只取300次。还原信号时要有算法,能够从很小的样本来还原很大的信息(Reconstruction)。

    2006年被认为是CS开创的年代。

    Shannon-Nyquist Sampling Theorem

    A continuous-time signal x(t) with frequencies no higher than $f_{max}$(上届频率,band-limit) can be reconstructed from its samples $x[k]=x(kT_s)$, if the smaples are taken at a rate $f_s =1/T_s$ that is greater than $2f_{max}$。

    如果一个函数的傅里叶变换后,在某一个区域之外都为零,则这个函数一定可以通过采有限的点来完美的恢复出来。该定理在根本上解决了对连续信号采样后可以完美恢复信号的问题。

    一个连续函数在正实轴上无线衍生,上面有无穷个点(countless),我们定义为有$aleph$个,然后我们等间隔取样,取无穷个点(countable),我们定义为$aleph_0$个,两者的关系为$aleph=2^{aleph}$。

    一个实值的函数的傅里叶变换后得到的是一个复值函数,在频率域中做模值关于频率的函数得到的一定是对称的。

    对于模拟信号采样后的信号,得到傅里叶变换信号是周期的;这时如果采样频率不足,则不同周期的傅里叶谱会有信号重合,也就无法进行回复。如果采样频率满足采样定律的话,则可以使用一个低通滤波器来取出信号,用以恢复原来的信号。

    连续信号通过采样得到的取样信号:

    $$x_s(t)=x(t)s(t)=x(t)sum_{k=-infty}^{infty} delta(t-kT_s)=sum_{k=-infty}^{infty}x(t)delta(t-kT_s) =sum_{k=-infty}^{infty}x(kT_s)delta(t-kT_s)$$

    上述说的在频率域通过一个盒状低通滤波器来取样,可以理解为在时域通过一个sinc函数来卷积,于是(利用$delta$的取样特性)

    $$han{x}(t)=sinc(frac{t}{T_s})ast sum_{k=-infty}^{infty}x(kT_s)delta(t-kT_s)=sum_{k=-infty}^{infty}x[k]sinc[(t-kT_s)/T_s] (x[k]=x(kT_s))$$

    Sparse and Compressible Signals

    一个向量长度为n,即有n个分量,如果里面的非零分量有r个,且r<<n,我们说这个向量是sparse

    如果一个矩阵为A,则matlab中a = A(:); 可以生成一个向量,长度为A的所有元素。 我们将向量a左乘一个正交矩阵,比如余弦矩阵,那么得到的y可能就是一个sparse的,同时由于矩阵各列正交,则y与a的能量不变。为了让y稀疏,采取阈值方法,比如y中所有模值低于$epsilon$的都归为零,则相当于对y进行了sparse。Matlab代码可以写为:

    ind = find(abs(y)<$epsilon$);

    y_sparse = y;

    y_sparse(ind) = 0;

    如果矩阵为小波矩阵,字典矩阵,那么测得y的稀疏性更好。

     

    Lecture 2

    数字信号指的是两个坐标方向都离散化(时间离散、信号离散)digital signal。

    Shannon-Nyquist采样公式中,关键在于采样率是否超过两倍的带 宽。

    数字信号中,我们得到一个向量$[x_1, x_2, … , x_n]^T$,这里的$n$理解为你的采样率,即单位时间采样的点数。

    下图稍微介绍了一下关于矩阵的理解,可以看做信号往矩阵基向量上的投影。(个人认为基用矩阵列向量来构成也可以)

    所以关于CS,我们要做的便是争取做更好的投影使达到sparse的效果。

    这里给出离散余弦矩阵(DCT)的表达形式(这是一种non-adaptive):

    Matlab代码为:

    如果采用小波基,这里原理忽略,关键在于理解小波是一个滤波器,长度较短(一般是2),所以要重复针对均值部分进行处理。

    在利用小波做处理的时候,通过将差频信息制零,就可以是的小波处理过的信息sparse。需要特别注意的是,做小波处理的前提是能够取得全部的信息,然后做处理之后再丢掉大部分数据。

    Overcompleted Dictionary

    如果一个信号f在矩阵W的作用下,可以得到一个稀疏表示a,即$Wf=a$。那么反过来,$f=W^T a$,表示一个信号可以用一个矩阵和一个稀疏系数表示。如果我将$W^T$进行扩展,虽然稀疏系数的分量增加,但其更加稀疏。

    Lecture 3

    字典D是一个$n imes l$的矩阵,每一列是一个atom,于是信号f可以表示为:$f=Dx$。

    Hadmader-Walsh 矩阵,最后一步的作用是让每列正交。

    方程$y=Dx$的解全部可以由字典$D$的KVD后的结果表示。其中要求D是一个长矩阵$l imes n, l >n$,且$rank(D)=n$

    解的形式表示为特解+通解:$x=x_s + V_n phi$。其中$x_s=D^T(DD^T)y$;$V_n$是字典D在SVD($D=USigmaV^T$)之后得到V($l imes l$)矩阵从第$n+1$列到$l$列组成的新矩阵;$phi$是自由向量,任意一个都满足其解。

    引入范数(norm)概念:for $1 leq p < infty, ||x||_p = ( sum_{i=1}^n ||x_i||^p )^{frac{1}{p}} $ 其中p为0(特殊,x中不为0的个数),1,2,$infty$最为常用。对于一个范数,必须满足:

    1. $||x||geq 0$
    2. $||x||=0 Longleftrightarrow x = 0$
    3. $||alpha x||=|alpha| ||x||$
    4. $||x+y||leq ||x|| + ||y||$

    当p小于1的时候,上述的4个条件并不都满足。所以严格来说,$l_0$-norm,其实不是norm,因为在小于1的时候就已经不能说是norm了。

    所以CS问题变为: $min ||x||_0 s.t. Dx=y$ 但是这变成了NP-hard问题,实际的处理方式是求解$min ||x||_1 s.t. Dx=y$

    由于$l_1$范数中有绝对值,求模的和是个困难问题,通过增加条件来是问题改变,即最小化模的上界的和:

    $$min sum_{i=1}^n d_i s.t. | heta_i| leq d_i , D heta = x$$ 通过增加条件(由1个变为2n+1个),可以使得求解问题以及条件中不存在绝对值运算。

    Coherence Between two Bases

    我们构建字典D的时候,让其有两个部分组成,即$D=[Phi Psi]$,这两个方阵都是正交矩阵,那么如何判断这两个矩阵组成的字典D是否合适?

    我们说这两个基最好incoherence,即相互独立最好。核心式子:

    $$mu(Phi, Psi) = sqrt{n} ullet max_{lleq k, jleq n} |phi_k^T psi_j|$$

    于是我们的$mu$测量的是两个矩阵最大的相关性,范围是$[1, sqrt{n}]$,其中越接近1,表明两个矩阵越不相关,用以做字典D的效果越好。

    Lecture 4

    针对两种基(方阵$n imes n$)$Phi Psi$,可以理解为一个字典的两个部分,也可以理解为一个系统的两个部分。这两个基的关系可以看做字典的性质或者系统的性质。下面几种情况效果比较好:

    $mu(I_n, C_n^T)=sqrt{2}, mu(I_n, F_n^T)=1, mu(I_n, H_n)=1$

    其中第一个矩阵如果不用单位阵,而是一个随机矩阵,效果往往会得到提高。

    Sensing a sparse signal

    $y=Phi heta$

    如果$ heta$是稀疏的,那么我们通过测量到的$y$,就可以想办法去还原$ heta$。问题变为:

    $min || heta||_1 s.t. y=hat{Phi} heta $

    这里说明一下用到的一些数字:n,向量长度;m,采样数;r,在某个基下面的稀疏情况(即非零个数)。那么一般我们的目标是r < m << n(m > Cr log n , m>4r)。由于$Phi$是$n imes n$,则$hat{Phi}$是$m imes n$的矩阵,其中m行是完全随机取。

    对于范数的几何图形,可以理解,最小化问题看做一个直线方程,只有当该直线交于坐标轴的时候,能够保证某几个分量为0,也就是达到了sparse情况,所以要用$l_1$范数去逼近。

    实际问题变为:$x=Psi heta, y=hat{Phi}x $

    $$min || heta||_1 s.t. hat{Phi} Psi heta = y$$

    同时CS的抗噪能力较好,只要选取的变换域信号在里面足够sparse。

    Lecture 5

    Proximal-Gradient Methods for Convex Optimization Problems

    如果一个函数可以分成两部分F(x)=f(x)+g(x),且这两部分一个可微,一个不可微。

    Lipschitz梯度函数满足:,$L(f)$称之为Lipschitz 常数

    由于函数有上式的表示,最左边是条直线,右边是二次项,抛物线,最优化函数$f(x)$难度较大,我们采取最小化右式二次项表达式。

    Frobenius Norm: $||x||_F=sqrt{sum_{j=1}^m sum_{i=1}^n x_{ij}^2}$

    TV norm : $||x||_{TV}=sum_{j=1}^m sum_{i=1}^n ||D_{ij}x||, ||D_{ij}x||=[x(i+1, j)-x(i, j) , x(i, j+1) – x(i, j)]^T$

    将问题转为凸函数问题,然后进行猜解,再迭代优化。

    迭代过程:$x_k=x_{k-1}-t_k igtriangledown f(x_{k-1}) $ 其中$t_k$是个常数,如果我们令整个常数为Lipschitz常数的倒数,这个过程一定是收敛的。

    上式用matlab可以去较好的解出。

    Lecture 6

    目标函数:$F(x)=f(x)+g(x)$,两个部分都是凸函数,但一个光滑($||igtriangledown f(x)- igtriangledown f(y)|| leq L(f)||x-y||$),一个不光滑。

    Matlab中,矩阵与矩阵的乘法非常耗时,要争取通过提取公因式等方法编程矩阵与向量相乘。

    图像处理中,不用$l_1$ norm,用的是TV。

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    如何在linux系统安装redis
    关于—单例模式
    2.观察者模式(发布-订阅模式)
    1.提供者模式
    提供者模式:提供者的实例化加锁
    为已有的类添加特性,常用于数据库生成的类模型
    C#特性
    JSON.parse(jsonStr)和eval('('+jsonStr+')')
    a标签的href和onclick
    查看SQL语句执行时间/性能测试
  • 原文地址:https://www.cnblogs.com/salan668/p/3592601.html
Copyright © 2011-2022 走看看