压缩感知信号的重构方法、装置、FPGA及存储介质与流程

文档序号:23706802发布日期:2021-01-23 13:52阅读:91来源:国知局
压缩感知信号的重构方法、装置、FPGA及存储介质与流程
压缩感知信号的重构方法、装置、fpga及存储介质
技术领域
[0001]
本发明涉及信息工程技术领域,特别涉及一种压缩感知信号的重构方法、装置、fpga及计算机可读存储介质。


背景技术:

[0002]
目前,压缩感知恢复方法最常用的是正交匹配追踪算法(orthogonal matching pursuit),其主要做法就是经过一系列的矩阵计算从给定的测量矩阵中选取对观测值贡献最大的列向量作为原子信号添加进初始化为空集的原子矩阵中,经过计算原子矩阵和观测值的最小二乘值,恢复出原始信号。由于匹配追踪算法中会耗费很长的时间进行矩阵计算,使得压缩感知信号的重构效率不高。
[0003]
因此,如何能够快速准确地重构出原始信号,提高用户体验,是现今急需解决的问题。


技术实现要素:

[0004]
本发明的目的是提供一种压缩感知信号的重构方法、装置、fpga及计算机可读存储介质,以利用fpga(field programmable gate array,现场可编程逻辑门阵列)中的内存通道并行进行矩阵计算,从而快速准确地重构出原始信号,提升用户体验。
[0005]
为解决上述技术问题,本发明提供一种压缩感知信号的重构方法,包括:
[0006]
fpga获取待恢复信号的观测向量和测量矩阵;
[0007]
根据所述观测向量和所述测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定所述待恢复信号对应的重构结果;其中,所述预设内积计算内存通道和所述预设最小二乘计算内存通道的数量均大于或等于2。
[0008]
可选的,所述根据所述观测向量和所述测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定所述待恢复信号对应的重构结果,包括:
[0009]
根据所述观测向量,确定当前残差;
[0010]
利用所述预设内积计算内存通道并行计算当前残差与所述测量矩阵的内积的绝对值,并对所述绝对值按数值大小进行排序;
[0011]
从所述测量矩阵选择目标列向量与当前原子矩阵取并集,并利用并集结果更新当前原子矩阵;其中,所述目标列向量为目标索引对应的列向量,所述目标索引为数值最大的所述绝对值对应的索引;
[0012]
利用所述预设最小二乘计算内存通道并行计算当前原子矩阵与所述观测向量的最小二乘值;
[0013]
根据所述观测向量、所述最小二乘值和当前原子矩阵,更新当前残差;
[0014]
根据当前残差判断是否迭代完成;
[0015]
若否,则执行所述利用所述预设内积计算内存通道并行计算当前残差与所述测量矩阵的内积的绝对值,并对所述绝对值按数值大小进行排序的步骤;
[0016]
若是,则将所述最小二乘值作为所述重构结果。
[0017]
可选的,所述利用所述预设内积计算内存通道并行计算当前残差与所述测量矩阵的内积的绝对值,并对所述绝对值按数值大小进行排序,包括:
[0018]
将所述测量矩阵对应的转置矩阵的每一行和当前残差分别传输所述预设内积计算内存通道并行计算得到内积;
[0019]
对所述内积中每个域取绝对值,并按数值大小进行排序。
[0020]
可选的,所述利用所述预设最小二乘计算内存通道并行计算当前原子矩阵与所述观测向量的最小二乘值,包括:
[0021]
利用所述预设最小二乘计算内存通道计算各自对应的行向量与列向量的乘积,完成最小二乘值计算过程中的矩阵乘的并行计算。
[0022]
可选的,所述根据所述观测向量、所述最小二乘值和当前原子矩阵,更新当前残差,包括:
[0023]
利用r=y

at*lp,计算得到当前残差;其中,r为当前残差,y为所述观测向量,at为当前原子矩阵,lp为所述最小二乘值。
[0024]
可选的,所述根据当前残差判断是否迭代完成,包括:
[0025]
判断当前残差的1范数是否小于阈值;
[0026]
若否,则执行所述利用所述预设内积计算内存通道并行计算当前残差与所述测量矩阵的内积的绝对值,并对所述绝对值按数值大小进行排序的步骤;
[0027]
若是,则执行所述将所述最小二乘值作为所述重构结果的步骤。
[0028]
可选的,所述预设内积计算内存通道和所述预设最小二乘计算内存通道为相同的内存通道,所述内存通道具体为hbm2通道。
[0029]
本发明还提供了一种压缩感知信号的重构装置,包括:
[0030]
获取模块,用于获取待恢复信号的观测向量和测量矩阵;
[0031]
重构模块,用于根据所述观测向量和所述测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定所述待恢复信号对应的重构结果;其中,所述预设内积计算内存通道和所述预设最小二乘计算内存通道的数量均大于或等于2。
[0032]
本发明还提供了一种fpga,包括:
[0033]
存储器,用于存储计算机程序;
[0034]
处理器,用于执行所述计算机程序时实现如上述所述的压缩感知信号的重构方法的步骤。
[0035]
此外,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的压缩感知信号的重构方法的步骤。
[0036]
本发明所提供的一种压缩感知信号的重构方法,包括:fpga获取待恢复信号的观测向量和测量矩阵;根据观测向量和测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定待恢复信号对应的重构结果;其中,预设内积计算内存通道和预设最小二乘计算内存通道的数量均大于或等于2;
[0037]
可见,本发明通过根据观测向量和测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定待恢复信号对应的重构结果,将压缩感知恢复过程移植到
fpga中,从而利用fpga中的内存通道并行完成现有耗时很长的矩阵计算,极大缩短计算时间,从而快速准确地重构出原始信号,提升用户体验。此外,本发明还提供了一种压缩感知信号的重构装置、fpga及计算机可读存储介质,同样具有上述有益效果。
附图说明
[0038]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0039]
图1为本发明实施例所提供的一种压缩感知信号的重构方法的流程图;
[0040]
图2为本发明实施例所提供的一种压缩感知信号的重构过程的流程示意图;
[0041]
图3为本发明实施例所提供的一种压缩感知信号的重构装置的结构框图。
具体实施方式
[0042]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043]
请参考图1,图1为本发明实施例所提供的一种压缩感知信号的重构方法的流程图。该方法可以包括:
[0044]
步骤101:fpga获取待恢复信号的观测向量和测量矩阵。
[0045]
其中,本步骤中的待恢复信号可以为需要通过本实施例所提供的方法重构恢复的原始信号。本步骤中的测量矩阵和观测向量(即观测值向量)可以为现有对信号进行压缩感知恢复所需的输入,如现有技术中利用正交匹配追踪算法进行压缩感知恢复所需的测量矩阵和观测向量;观测向量可以为待恢复信号在测量矩阵上投影得到观测值向量。
[0046]
对应的,对于本步骤中观测向量和测量矩阵的具体内容,可以由设计人员根据实用场景和用户需求自行设置,如可以采用与现有技术中测量矩阵和观测向量的设置方法相同或相似的方式实现;具体的,本步骤中的观测向量的维度可以为m
×
1,本步骤中的测量矩阵可以为维度为m
×
n,m和n均正整数,n可以大于m,如n远大于m(n>>m)。
[0047]
步骤102:根据观测向量和测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定待恢复信号对应的重构结果;其中,预设内积计算内存通道和预设最小二乘计算内存通道的数量均大于或等于2。
[0048]
可以理解的是,本步骤中的预设内积计算内存通道可以为预先设置的用于完成压缩感知恢复的内积计算过程中的矩阵乘的并行计算的内存通道;本步骤中的预设最小二乘计算内存通道可以为预先设置的用于完成压缩感知恢复的最小二乘计算过程中的矩阵乘的并行计算的内存通道。本实施例中的预设内积计算内存通道和预设最小二乘计算内存通道可以为相同的内存通道,即本实施例中可以设置多个(即大于或等于2个)内存通道,使多个内存通道可以即完成压缩感知恢复的内积计算过程中的矩阵乘的并行计算,又完成压缩感知恢复的最小二乘计算过程中的矩阵乘的并行计算;本实施例中的预设内积计算内存通
道和预设最小二乘计算内存通道也可以不同的内存通道,本实施例对此不做任何限制。
[0049]
具体的,对于预设内积计算内存通道和预设最小二乘计算内存通道的具体类型和数量可以由设计自行设置,如预设内积计算内存通道和预设最小二乘计算内存通道可以均为hbm2(high bandwidth memory 2th,第二代高带宽存储器)通道,以利用hbm2通道的高带宽进一步提升压缩感知信号的重构速度,例如本实施例中的fpga可以设置多个hbm2通道完成压缩感知恢复的内积计算和最小二乘计算过程中的矩阵乘的并行计算;预设内积计算内存通道和预设最小二乘计算内存通道也可以为ddr(double data rate sdram,双倍速率sdram)内存通道。本实施例对此不做任何限制。
[0050]
需要说明的是,对于本步骤中fpga根据观测向量和测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定待恢复信号对应的重构结果的具体方式,可以由设计人员根据实用场景和用户需求自行设置,如采用正交匹配追踪算法时,本步骤可以如图2所示,包括:
[0051]
步骤201:根据观测向量,确定当前残差。
[0052]
其中,本步骤可以为当前次重构的初始化步骤,本步骤通过利用观测向量,确定当前的残差(即当前残差),保证后续的计算可以顺利进行。
[0053]
具体的,本实施例并不限定本步骤中根据观测向量,确定当前残差的具体方式,如可以直接将观测向量作为当前残差,即当前的残差r=观测向量y。
[0054]
相应的,本步骤中还可以将当前的原子矩阵(即当前原子矩阵)设置为空集,以完成原子矩阵的初始化。
[0055]
步骤202:利用预设内积计算内存通道并行计算当前残差与测量矩阵的内积的绝对值,并对绝对值按数值大小进行排序。
[0056]
可以理解的是,本步骤的目的可以为fpga利用设置的多个预设内积计算内存通道(如hbm2通道)并行计算当前残差与测量矩阵的内积的绝对值并排序,以提升当前残差与测量矩阵的内积计算速度。
[0057]
具体的,本步骤中fpga可以将测量矩阵对应的转置矩阵的每一行和当前残差分别传输预设内积计算内存通道并行计算得到内积,即将测量矩阵对应的转置矩阵的每一行与当前残差依次分别传输到各自对应一条预设内积计算内存通道进行矩阵乘计算,从而利用多条预设内积计算内存通道的并行计算得到测量矩阵与当前残差的内积;之后可以对内积中每个域取绝对值,得到当前残差与测量矩阵的内积的绝对值。例如预设内积计算内存通道为hbm2通道时,本步骤中fpga在计算当前的残差r与测量矩阵φ的内积时,将测量矩阵φ的转置的每一行和残差r分别送入多个hbm2通道并行计算内积,再对内积里的每个域取绝对值,并且按照绝对值的大小进行排序。
[0058]
步骤203:从测量矩阵选择目标列向量与当前原子矩阵取并集,并利用并集结果更新当前原子矩阵;其中,目标列向量为目标索引对应的列向量,目标索引为数值最大的绝对值对应的索引。
[0059]
可以理解的是,本步骤中fpga可以利用步骤202中排序最大的绝对值的内积对应的索引(即目标索引),从测量矩阵选取该索引对应的列向量(即目标列向量)与当前的原子矩阵取(当前原子矩阵)并集,并将并集的结果作为更新后的当前原子矩阵。
[0060]
具体的,当前原子矩阵的初始状态可以为空集。
[0061]
步骤204:利用预设最小二乘计算内存通道并行计算当前原子矩阵与观测向量的最小二乘值。
[0062]
其中,本步骤的目的可以为fpga利用设置的多个预设最小二乘计算内存通道(如hbm2通道)并行计算当前原子矩阵与观测向量的最小二乘值,以提升当前原子矩阵与观测向量的最小二乘值计算速度。
[0063]
具体的,本步骤中fpga可以利用预设最小二乘计算内存通道计算各自对应的行向量与列向量的乘积,完成最小二乘值计算过程中的矩阵乘的并行计算,即在计算当前原子矩阵与观测向量的最小二乘值的过程中所有的矩阵乘的计算是将行向量和对应的列向量分别送入到各自对应一条预设最小二乘计算内存通道进行矩阵乘计算,从而利用多条预设最小二乘计算内存通道的并行计算得到当前原子矩阵与观测向量的最小二乘值。例如预设最小二乘计算内存通道为hbm2通道时,本步骤中fpga在计算当前的原子矩阵at与观测向量y的最小二乘值的过程中所有的矩阵乘的计算都可以将行向量和列向量分开分别送入多个hbm2通道并行计算。
[0064]
步骤205:根据观测向量、最小二乘值和当前原子矩阵,更新当前残差。
[0065]
具体的,对于本步骤中fpga根据观测向量、最小二乘值和当前原子矩阵,更新当前残差的具体方式,可以由设计人员自行设置,如fpga可以利用r=y

at*lp,计算得到更新后的当前残差;其中,r为当前残差,y为观测向量,at为当前原子矩阵,lp为最小二乘值。只要fpga可以利用观测向量、最小二乘值和当前原子矩阵,对当前残差进行更新,本实施例对此不做任何限制。
[0066]
步骤206:根据当前残差判断是否迭代完成;若否,则进入步骤202,;若是,则进入步骤207。
[0067]
可以理解的是,本步骤的目的可以为fpga利用更新后的当前残差确定是否迭代完成,即当前的最小二乘值是否满足要求;若是,则可以进入步骤207直接将当前的最小二乘值作为重构结果;若否,则可以返回步骤202,利用更新后的当前残差继续进行迭代,直至最小二乘值满足要求。
[0068]
具体的,对于本步骤中fpga根据当前残差判断是否迭代完成的具体方式,可以由设计人员自行设置,如fpga可以判断当前残差的1范数(即向量元素绝对值之和)是否小于阈值(如0.005);在当前残差的1范数小于阈值时,确定迭代完成,即当前的最小二乘值满足要求,进入步骤207;在当前残差的1范数大于或等于阈值时,确定为迭代完成,即当前的最小二乘值不满足要求,进入步骤202继续进行迭代计算,提高重构信号精度。fpga可以判断当前残差的1范数是否小于1/k;若是,则进入步骤207;若否,则进入步骤202;其中,k为稀疏度值,k可以为测量矩阵的列数(n),如在步骤201中可以设置k=n,完成稀疏度值的初始化。
[0069]
步骤207:将最小二乘值作为重构结果。
[0070]
可以理解的是,本步骤的目的可以为在确定迭代完成,即重构结果非常逼近待恢复信号时,将步骤204计算出的当前的最小二乘值作为重构结果,也就是重构出的待恢复信号(即原始信号)对应的重构信号(即近似原始信号)。
[0071]
需要说明的是,本实施例是以fpga对一个原始信号(即待恢复信号)的重构为例进行的展示,对于其它原始信号的重构,可以采用与本实施例所提供方法相同或相似的方式实现,本实施例对此不做任何限制。
[0072]
本实施例中,本发明实施例通过根据观测向量和测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定待恢复信号对应的重构结果,将压缩感知恢复过程移植到fpga中,从而利用fpga中的内存通道并行完成现有耗时很长的矩阵计算,极大缩短计算时间,从而快速准确地重构出原始信号,提升用户体验。
[0073]
请参考图3,图3为本发明实施例所提供的一种压缩感知信号的重构装置的结构框图。该装置可以包括:
[0074]
获取模块10,用于获取待恢复信号的观测向量和测量矩阵;
[0075]
重构模块20,用于根据观测向量和测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定待恢复信号对应的重构结果;其中,预设内积计算内存通道和预设最小二乘计算内存通道的数量均大于或等于2。
[0076]
可选的,重构模块20,可以包括:
[0077]
初始化子模块,用于根据观测向量,确定当前残差;
[0078]
内积计算子模块,用于利用预设内积计算内存通道并行计算当前残差与测量矩阵的内积的绝对值,并对绝对值按数值大小进行排序;
[0079]
原子矩阵更新子模块,用于从测量矩阵选择目标列向量与当前原子矩阵取并集,并利用并集结果更新当前原子矩阵;其中,目标列向量为目标索引对应的列向量,目标索引为数值最大的绝对值对应的索引;
[0080]
最小二乘计算子模块,用于利用预设最小二乘计算内存通道并行计算当前原子矩阵与观测向量的最小二乘值;
[0081]
残差更新子模块,用于根据观测向量、最小二乘值和当前原子矩阵,更新当前残差;
[0082]
迭代判断子模块,用于根据当前残差判断是否迭代完成;若是,则将最小二乘值作为重构结果;若否,则向内积计算子模块发送启动信号。
[0083]
可选的,内积计算子模块,可以包括:
[0084]
第一矩阵乘单元,用于将测量矩阵对应的转置矩阵的每一行和当前残差分别传输预设内积计算内存通道并行计算得到内积;
[0085]
排序单元,用于对内积中每个域取绝对值,并按数值大小进行排序。
[0086]
可选的,最小二乘计算子模块,可以包括:
[0087]
第二矩阵乘单元,用于利用预设最小二乘计算内存通道计算各自对应的行向量与列向量的乘积,完成最小二乘值计算过程中的矩阵乘的并行计算。
[0088]
可选的,残差更新子模块可以具体用于利用r=y

at*lp,计算得到当前残差;其中,r为当前残差,y为观测向量,at为当前原子矩阵,lp为最小二乘值。
[0089]
可选的,迭代判断子模块可以具体用于判断当前残差的1范数是否小于阈值;若是,则将最小二乘值作为重构结果;若否,则向内积计算子模块发送启动信号。
[0090]
可选的,预设内积计算内存通道和预设最小二乘计算内存通道为相同的hbm2通道。
[0091]
本实施例中,本发明实施例通过重构模块20根据观测向量和测量矩阵,利用预设内积计算内存通道和预设最小二乘计算内存通道,确定待恢复信号对应的重构结果,将压缩感知恢复过程移植到fpga中,从而利用fpga中的内存通道并行完成现有耗时很长的矩阵
计算,极大缩短计算时间,从而快速准确地重构出原始信号,提升用户体验。
[0092]
本发明实施例还提供了一种fpga,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上述实施例所提供的压缩感知信号的重构方法的步骤。
[0093]
此外,本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述实施例所提供的压缩感知信号的重构方法的步骤。
[0094]
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、fpga及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0095]
结合本文中所公开的实施例描述的方法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0096]
以上对本发明所提供的一种压缩感知信号的重构方法、装置、fpga及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1