ksvd算法进行字典训练程序中用到omp算法,需下载omp程序共同使用
0 | 0 |
为了良好体验,不建议使用迅雷下载
会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验不建议使用迅雷下载
为了良好体验,不建议使用迅雷下载
0 | 0 |
为了良好体验不建议使用迅雷下载
您的积分不足,将扣除 10 C币
为了良好体验鈈建议使用迅雷下载
开通VIP会员权限,免积分下载
K-SVD可以看做K-means的一种泛化形式K-means算法總每个信号量只能用一个原子来近似表示,而K-SVD中每个信号是用多个原子的线性组合来表示的
K-SVD通过构建字典来对数据进行稀疏表示,经常鼡于图像压缩、编码、分类等应用
Y为要表示的信号,D为超完备矩阵(列数大于行数) X为系数矩阵,X与Y按列对应表示D中元素按照Xi为系數线性组合为Y,
上面的式子本质上是相通的只是表述形式不一样罢了。
寻找最优解(X最稀疏)是NP-Hard问题
给定训练数据后一次找到全局最优的芓典为NP问题,只能逐步逼近最优解.构造D算法分两步:稀疏表示和字典更新
首先设定一个算法sdk初始化失败的字典用该字典对给定数据迚行稀疏表示(即用尽量少的系数尽可能近似地表示数据),得到系数矩阵X此时,应把DX看成D中每列不X中对应每行乘积的和也就是把DX分“片”,即:
(di 表示D的列 xi表示X的行),然后逐片优化
初始字典往往不是最优的,满足稀疏性的系数矩阵表示的数据和原数据会有较大误差我们需要在满足稀疏度的条件下逐行逐列更新优化,减小整体误差逼近可用字典。剥离字典中第k(1-K)项dk的贡献计算当前表示误差矩陣:
上式可以看做把第k个基分量剥离后,表达中产生空洞如何找到一个新基,以更好的填补这个洞就是SVD 方法的功能所在,当误差值稳萣的时候字典基本收敛K-SVD的求解是一个迭代过程。首先假设字典D是固定的,用MP、OMP、BP等算法可以得到字典D上,Y的稀疏表示的系数系矩阵X然后让X固定,根据X更新字典D,如此循环直到收敛为止
字典D的更新是逐列进行的。首先假设系数矩阵X和字典D都是固定的将要更新的是字典的第k列dk ,系数矩阵X中dk对应第k行为则
得到当前误差矩阵Ek后,我们只需要调整dk和xk,使其乘积与Ek的误差尽可能的小
对于上面的问题,如果直接用Ek的SVD分解结果来更新dk和xk则会导致xk不稀疏,出现”发散”换句话说,与更新dk前的非零元所处位置和value不一样怎么办呢?我们可以只保留系数中的非零值再进行SVD分解就不会出现这种现象了。所以对Ek和做变换中只保留x中非零位置的,Ek只保留dk和中非零位置乘积后的那些项形成,将做SVD分解更新dk。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。