图像识别加速器、终端设备及图像识别方法
【专利摘要】本申请揭示了一种图像识别加速器、终端设备及图像识别方法。图像识别加速器包括了降维处理模块、NVM以及图像匹配模块。在图像识别加速器进行图像识别的过程中,先由降维处理模块根据设置的降维参数γ降低第一图像数据的维度。NVM将降维后的第一图像数据中的各个数值的低ω位按照设置的第一电流I写入NVM中的第一存储区域,并将降维后的第一图像数据中的各个数值的高N-ω位按照设置的第二电流写入NVM中的第二存储区域。其中,第一电流小于第二电流。从而,匹配模块可以确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据。本发明实施例提供的图像识别加速器能够在降低终端设备的系统功耗的基础上保证图像识别的准确性。
【专利说明】
图像识别加速器、终端设备及图像识别方法
技术领域
[0001]本发明涉及计算机技术领域,尤其涉及一种图像识别加速器、终端设备及图像识别方法。
【背景技术】
[0002]图像识别技术是人工智能的一个重要领域。图像识别是指利用计算机对图像进行处理和分析,以识别各种不同目标和对像的技术。近年来,随着社交网络的普及,在移动设备中进行实时图像数据分析的需求逐渐增强。然而,由于实现图像数据分析会消耗较多的系统资源,因此,移动设备有限的电池寿命限制了图像数据分析在移动设备上的应用。
[0003]为了降低图像数据分析过程中的系统功耗,现有技术中的一种图像数据处理方法是通过降低图像数据写入静态随机存储器(Static Random-Access Memory, SRAM)中的写入电流的方式来降低系统功耗。然而,随着写入电流的降低,SRAM中存储的数据的错误率也随之上升。为了恢复错误,还需要通过解凸优化(convex optimizat1n)处理等方式对存储的图像数据进行恢复,从而能够基于恢复后的图像数据进行图像识别。在这种方式中,虽然写入数据时系统功耗有所减少,然而,图像恢复过程中的CPU的计算复杂度高,也比较浪费系统资源。并且,为了保持存储于SRAM中的数据,SRAM需要保持通电状态,因此,SRAM还存在静态功耗,上述图像数据处理方式也并不能完全消除SRAM保持数据时所需的静态功耗。因此,总体上说,采用现有的图像数据处理方式处理图像数据时,系统功耗依然较大。
【发明内容】
[0004]本发明实施例中提供的一种图像识别加速器、终端设备及图像识别方法,能够在降低终端设备的系统功耗的基础上保证图像识别的准确性。
[0005]第一方面,本发明实施例提供了一种应用于终端设备中用于识别图像的图像识别加速器,包括:
降维处理模块,用于根据设置的降维参数γ降低第一图像数据的维度,其中,降维后的第一图像数据包括多个数值;
非易失性内存NVM,用于将降维后的第一图像数据的每一个数值的低ω位按照设置的第一电流I存储于所述NVM的第一存储区域,将降维后的第一图像数据的每一个数值的高(Ν-ω)位按照设置的第二电流Is存储于所述NVM的第二存储区域,其中,N为每一个数值所占的比特位,ω为设置的宽度参数,所述第一电流I小于所述第二电流Is,所述降维参数Y、宽度参数ω以及第一电流I根据所述终端设备的系统功耗和设置的第一图像识别成功率获得;
图像匹配模块,用于确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据。
[0006]结合第一方面,在第一方面的第一种可能的实现方式中,所述图像识别加速器还包括:参数调整模块,用于如果统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值,则根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同;
所述降维处理模块,还用于根据调整后的降维参数γ’降低第二图像数据的维度;所述非易失性内存NVM,还用于将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω ’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,ω ’为调整后的宽度参数,所述I’小于所述Is;
所述图像匹配模块,还用于确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。
[0007]结合第一方面或第一方面的第一种实现方式,在第一方面的第二种可能的实现方式中,所述降维处理模块具体用于:
根据所述第一图像数据与设置的二进制矩阵的乘积获得所述降维后的第一图像数据,其中,所述第一图像数据为k行*m列的矩阵,所述二进制矩阵为m行*n列的矩阵,所述降维后的第一图像数据为m行*n列的矩阵,k、m和η为正整数,m的值大于η,η的值根据设置的降维参数γ确定,γ = n/m。
[0008]结合第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述参数调整模块具体用于:
如果统计的图像识别成功率与所述第二图像识别成功率之间的差值大于预设阈值,则分别调整降维参数Y、所述宽度参数ω或第一电流I的取值以降低系统功耗Ε,并分别获得调整后的图像识别成功率,其中,所述E的值与γ((Ν_ω) * Ι>ω*Ι)的值成正比;确定在调整后的图像识别成功率与所述第二图像识别成功率之间的差值的绝对值不大于所述预设阈值时所述终端设备的最小功耗Ε’ ;
选择在满足所述最小功耗Ε’时获得最大图像识别成功率的降维参数γ、所述宽度参数ω以及第一电流I分别作为所述调整后的降维参数γ’、宽度参数ω’以及第一电流I’。
[0009]第二方面,本发明实施例提供了一种终端设备,所述终端设备包括CPU和图像识别加速器,其中,所述CPU,用于向所述图像识别加速器发送待识别的第一图像数据;
所述图像识别加速器,用于根据设置的降维参数γ降低所述第一图像数据的维度,其中,降维后的第一图像数据包括多个数值;
将所述降维后的第一图像数据的每一个数值的低ω位按照设置的第一电流I存储于NVM的第一存储区域,将所述降维后的第一图像数据的每一个数值的高(Ν-ω)位按照设置的第二电流Is存储于所述NVM的第二存储区域,其中,N为每一个数值所占的比特位,ω为设置的宽度参数,所述I小于所述Is,所述降维参数γ、宽度参数ω以及第一电流I根据所述终端设备的系统功耗和设置的第一图像识别成功率获得;
确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据。
[0010]结合第二方面,在第二方面的第一种可能的实现方式中,所述图像识别加速器,还用于如果统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值,则根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同;
所述CPU,还用于向所述图像识别加速器发送第二图像数据;
所述图像识别加速器,还用于:
根据调整后的降维参数γ’降低第二图像数据的维度;
将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,ω’为调整后的宽度参数,所述I’小于所述Is;
确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。
[0011]结合第二方面,在第二方面的第二种可能的实现方式中,所述CPU,还用于统计在预设的统计期间内所述图像识别加速器输出的匹配结果,获取统计的图像识别成功率;确定所述统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值;
所述图像识别加速器,还用于根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同;
所述CPU,还用于向所述图像识别加速器发送第二图像数据;
所述图像识别加速器,还用于根据调整后的降维参数γ’降低第二图像数据的维度;将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,所述ω’为调整后的宽度参数,所述I’小于所述Is;
确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。
[0012]结合第二方面,在第二方面的第三种可能的实现方式中,所述CPU还用于:
统计在预设的统计期间内所述图像识别加速器输出的匹配结果,获取所述统计的图像识别成功率;
如果统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值,则根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同;
向所述图像识别加速器发送第二图像数据;
所述图像识别加速器,还用于:
根据调整后的降维参数γ’降低第二图像数据的维度;
将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,ω’为调整后的宽度参数,所述I’小于所述Is;
确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。
[0013]结合第二方面或第二方面的第一种至第三种任意一种可能的实现方式中,在第二方面的第四种可能的实现方式中,所述图像识别加速器具体用于:
根据所述第一图像数据与设置的二进制矩阵的乘积获得所述降维后的第一图像数据,其中,所述第一图像数据为k行*m列的矩阵,所述二进制矩阵为m行*n列的矩阵,所述降维后的第一图像数据为m行*n列的矩阵,k、m和η为正整数,m的值大于η,η的值根据设置的降维参数γ确定,γ = n/m。
[0014]结合第二方面的第一种或第二种可能的实现方式中,在第二方面的第五种可能的实现方式中,所述图像识别加速器具体用于:
分别调整降维参数γ、所述宽度参数ω或第一电流I的取值以降低所述终端设备的系统功耗Ε,并分别获得调整后的图像识别成功率,其中,所述E的值与γ((Ν_ω)女?/+ω*Ι)的值成正比;
确定在调整后的图像识别成功率与所述第二图像识别成功率之间的差值的绝对值不大于所述预设阈值时所述终端设备的最小功耗Ε’ ;
选择在满足所述最小功耗Ε’时获得最大图像识别成功率的降维参数γ、所述宽度参数ω以及第一电流I分别作为所述调整后的降维参数γ’、宽度参数ω’以及第一电流I’。
[0015]结合第二方面的第三种可能的实现方式中,在第二方面的第六种可能的实现方式中,所述CPU具体用于:
分别调整降维参数γ、所述宽度参数ω或第一电流I的取值以降低所述终端设备的系统功耗Ε,并分别获得调整后的图像识别成功率,其中,所述E的值与γ((Ν_ω)女?/+ω*Ι)的值成正比;
确定在调整后的图像识别成功率与所述第二图像识别成功率之间的差值的绝对值不大于所述预设阈值时所述终端设备的最小功耗Ε’ ;
选择在满足所述最小功耗Ε’时获得最大图像识别成功率的降维参数γ、所述宽度参数ω以及第一电流I分别作为所述调整后的降维参数γ’、宽度参数ω’以及第一电流I’。
[0016]第三方面,本发明实施例提供了一种应用于终端设备的图像识别方法,所述方法由所述终端设备中的图像识别加速器执行,所述方法包括:
根据设置的降维参数γ降低第一图像数据的维度,其中,降维后的第一图像数据包括多个数值;
将所述降维后的第一图像数据的每一个数值的低ω位按照设置的第一电流I存储于所述图像识别加速器中的NVM的第一存储区域,将所述降维后的第一图像数据的每一个数值的高(Ν-ω)位按照设置的第二电流Is存储于所述NVM的第二存储区域,其中,N为每一个数值所占的比特位,ω为设置的宽度参数,所述I小于所述Is,所述降维参数γ、宽度参数ω以及第一电流I根据所述终端设备的系统功耗和设置的第一图像识别成功率获得;确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据。
[0017]结合第三方面,在第三方面第一种可能的实现方式中,所述方法还包括: 确定统计的图像识别成功率与设置的第二图像识别成功率的差值的绝对值大于预设阈值;
根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同;
根据调整后的降维参数γ’降低第二图像数据的维度;
将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,ω’为调整后的宽度参数,所述I’小于所述Is;
确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。
[0018]结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述根据设置的降维参数γ降低第一图像数据的维度包括:
根据所述第一图像数据与设置的二进制矩阵的乘积获得所述降维后的第一图像数据,其中,所述第一图像数据为k行*m列的矩阵,所述二进制矩阵为m行*n列的矩阵,所述降维后的第一图像数据为m行*n列的矩阵,k、m和η为正整数,m的值大于η,η的值根据设置的降维参数γ确定,γ = n/m。
[0019]结合第三方面或第三方面的第一种至第二种中任意一种可能的实现方式,在第三方面的第三种可能的实现方式中,所述根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,包括:
分别调整降维参数γ、所述宽度参数ω或第一电流I的取值以降低所述终端设备的系统功耗Ε,并分别获得调整后的图像识别成功率,其中,所述E的值与γ((Ν-ω)女?/+ω*Ι)的值成正比;
确定在调整后的图像识别成功率与所述第二图像识别成功率之间的差值的绝对值不大于所述预设阈值时所述终端设备的最小功耗Ε’ ;
选择在满足所述最小功耗Ε’时获得最大图像识别成功率的降维参数γ、所述宽度参数ω以及第一电流I分别作为所述调整后的降维参数γ’、宽度参数ω’以及第一电流I’。
[0020]第四方面,本发明实施例提供了一种计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述第三方面中所述的方法。
[0021]本发明实施例提供的一种应用于终端设备中用于进行图像识别的图像识别加速器包括了降维处理模块、NVM以及图像匹配模块。在所述图像识别加速器对第一图像数据进行识别的过程中,先由降维处理模块根据设置的降维参数γ降低第一图像数据的维度。NVM可以将降维后的第一图像数据中的各个数值的低ω位按照设置的第一电流I写入NVM中的第一存储区域,并将降维后的第一图像数据中的各个数值的高Ν-ω位按照设置的第二电流Is写入NVM中的第二存储区域。其中,第一电流小于第二电流。从而,匹配模块可以确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据,以获得第一图像数据的图像识别结果。由于设置的降维参数Y、宽度参数ω以及第一电流I均是根据所述终端设备的系统功耗和设置的第一图像识别成功率获得,因此能够保证存储于第一存储区域的数值中的低位部分在存储过程中出现的错误对第一图像数据的识别成功率的影响较小。本发明实施例提供的图像识别加速器能够在降低终端设备的系统功耗的基础上保证图像识别的准确性,并且能够提高图像数据的识别速度。
【附图说明】
[0022]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例中的附图。
[0023]图1为本发明实施例提供的一种终端设备的结构示意图;
[0024]图2为本发明实施例提供的另一种终端设备的结构示意图;
[0025]图3为本发明实施例提供的一种图像识别加速器的结构示意图;
[0026]图4为本发明实施例提供的一种图像识别方法的流程图;
[0027]图5为本发明实施例提供的一种降维处理模块的结构示意图;
[0028]图6为本发明实施例提供的一种NVM的硬件结构示意图;
[0029]图7为本发明实施例提供的又一种图像识别加速器的结构示意图;
[0030]图8为本发明实施例提供的又一种图像识别方法的流程图;
[0031]图9为本发明实施例提供的一种参数调整方法流程图;
[0032]图10(a)和图10(b)为本发明实施例提供的参数调整过程中记录参数的示意图;
[0033]图11为本发明实施例提供的又一种终端设备的结构示意图;
[0034]图12为本发明实施例提供的又一种终端设备结构示意图;
[0035]图13为本发明实施例提供的一种图像识别方法的信令图。
【具体实施方式】
[0036]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
[0037]本发明实施例提出了一种图像识别加速器,能够在降低系统功耗的基础上保证图像识别的准确性。图1为本发明实施例提供的一种终端设备的结构示意图。在图1所述的终端设备100中,中央处理器(Central Processing Unit,CPU) 10与图像识别加速器20通过总线15直接交换数据。总线15可以为PC1、PCIE总线或图像加速接口 AGP总线等系统总线,在本发明实施例中不对总线15的类型进行限定。需要说明的是,图1所示的终端设备100可以是计算机、手机、移动终端等终端设备,在此不做限定,只要是需要实现图像识别的终端设备即可。
[0038]如图1所示,CPU 10是终端设备100的运算核心(Core)和控制核心(ControlUnit) ο CPU 10可以是一块超大规模的集成电路。在CPU 10中安装有操作系统和其他软件程序,从而CPU 10能够实现对内存、缓存等存储空间的访问。可以理解的是,在本发明实施例中,CPU 10仅仅是处理器的一个示例。除了 CPU 10外,处理器还可以是其他特定集成电路(Applicat1n Specific Integrated Circuit, ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0039]图像识别加速器20是硬件加速器(Hardware accelerator)中的一种。在本发明实施例中,图像识别加速器20是基于非易失内存(Non-Volatile Memory, NVM)的硬件加速器。硬件加速技术是利用硬件模块来替代软件算法,从而可以充分利用硬件所固有的快速特性,以提高计算机系统的处理速度。在传统的图像数据处理方法中,内存仅仅用于存储图像数据,所有的图像数据处理、分析工作均由CPU完成,因此,CPU的处理速度以及内存的传输带宽成为图像识别技术发展的瓶颈。在本发明实施例中,通过在内存中增加简单的逻辑处理电路,以实现由专用的图像识别加速器来实现图像数据处理工作。在图1所示的终端设备100中,CPU 10只需要向图像识别加速器20发送待识别的图像数据并接受图像识别加速器20获得的识别结果,从而减少了 CPU 10的负担,提高了终端设备识别图像的速度。并且,由于图1所示的系统结构减少了在CPU 10和图像识别加速器20的之间传输的数据量,从而可以解决因内存的传输带宽限制图像识别的速度的问题。
[0040]实际应用中,图像识别加速器20并不唯一与CPU 10进行数据交互。图2为本发明实施例提供的另一种终端设备的结构示意图。图2所示的终端设备100可以包括CPU10、图像识别加速器20以及图像数据采集器30。CPU 10和图像数据采集器30分别与图像识别加速器20连接。图像数据采集器30,用于采集图像数据信息,并将采集的图像数据信息发送给图像识别加速器20进行图像识别。本领域人员可以知道,图像数据采集器30可以采集人、物的图像,在此不对图像信息进行具体的限定。图像数据采集器30在采集到图像信息后,可以将采集的图像信息转换为图像数据。实际应用中,图像数据采集器可以包括实现照相或摄像等功能的器件。例如,图像数据采集器可以为手机上的摄像头。图像识别加速器20,用于对图像数据采集器30发送的图像数据信息与存储的图像数据信息进行识别,并将识别结果发送给CPU 10。可以理解的是,在图2中所示的CPU 10以及图像识别加速器20的功能及实现方式的描述可以参见上述图1的描述,在此不再赘述。
[0041]可以理解的是,上面描述的仅仅是本发明实施例中的终端设备100的两种示意性结构,说明了图像识别加速器20的两种应用场景。在又一种情形下,图像识别加速器20还可以接收CPU 10发送的图像数据信息进行图像识别后,将图像识别结果发送给其他器件或设备。在又一种情形下,图像识别加速器20还可以接收其他器件(例如图2中的图像数据采集器30)发送的图像数据信息,并向该器件反馈图像识别结果。在此不对与图像识别加速器20通信的器件进行限定。下面将对本发明实施例提供的图像识别加速器20的具体结构及操作过程进行详细描述。
[0042]图3为本发明实施例提供的一种图像识别加速器20的结构示意图,在图3中,对图像识别加速器20的结构进行了较为详细的图示。如图3所示,在本发明实施例中,图像识别加速器20可以包括降维处理模块205、非易失性存储器NVM 210、以及图像匹配模块215。需要说明的是,降维处理模块205以及图像匹配模块215均可以是逻辑电路的形式存在,也可以是以集成电路的形式存在。实际应用中,图像识别加速器20可以是一种特定集成电路ASIC (Applicat1n Specific Integrated Circuit)或一种单板。在本发明实施例中,不对图像识别加速器20的具体存在形式进行限定。为了清楚的描述图像识别加速器20中各个器件的工作原理,下面将结合图4所示的图像识别方法的流程图对图3所示的图像识别加速器20中的各个器件的结构及工作过程进行详细的介绍。在下面的实施例中,以图像识别加速器20处理第一图像数据为例进行描述。
[0043]降维处理模块205,用于根据设置的降维参数γ降低图像数据的维度。具体的,如图4所示,在步骤400中,降维处理模块205可以根据设置的降维参数γ降低第一图像数据的维度。本领域技术人员可以知道,图像数据是用数值表示的各像素(Pixel)的灰度值的集合。通常,图像数据是通过顺序地抽取图像的每一个像素的信息而获得的一个离散的阵列,该离散的阵列可以代表一副连续的图像。例如,第一图像数据可以表示为一个k行列的矩阵,其中该矩阵中的每一个数值用于代表第一图像数据中的一个像素的灰度值。换一种表达方式,第一图像数据是用数值表示的第一图像的各像素的灰度值的集合。为了提高图像识别的速度,在本发明实施例中降维处理模块205可以采用基于稀疏表示的随机映射方式降低第一图像数据的维度。在本发明实施例中并不对降维处理模块205实现的压缩算法进行限定,只要是能够实现通过稀疏表示的随机映射算法均可。
[0044]实际应用中,降维处理模块205可以采用矩阵乘法器来实现。具体的,降维处理模块205可以采用矩阵乘法器将第一图像数据与设置的低维的二进制矩阵相乘,从而实现降低第一图像数据的维度的目的。其中,二进制矩阵是指矩阵中的所有数值均为采用O或I表示的矩阵。采用二进制矩阵来实现降维的目的是为了减少降维过程中的计算复杂度。在本发明实施例中,设置的低维的二进制矩阵可以为伯努利矩阵,但本发明实施例不限定具体的二进制矩阵的形式,只要能够通过稀疏表示的方式实现降维目的的二进制矩阵即可。例如,第一图像数据为k行*m列的矩阵X,设置的二进制矩阵为m行*n列的伯努利矩阵Z,其中,k、m和η均为正整数,且m大于η。通过矩阵乘法器可以将第一图像数据与设置的伯努利矩阵Z相乘,从而可以获得一个m行*n列矩阵Y,矩阵Y即为降维后的第一图像数据。换一种表达方式,降低X矩阵的维度实际是为了降低X矩阵的列的数量。实际应用中,η的值可以根据m的值以及设置的降维参数γ来确定,其中,降维参数γ为降维后的第一图像数据的维度与第一图像数据的维度的比值,即γ =n/m^ijn = m*y。降维参数γ也可以被称为是降维率。
[0045]本领域人员可以知道,乘法器(multiplier)是一种用于完成两个互不相关的模拟信号或数字信号相乘的作用的电子器件。乘法器可以将两个二进制数相乘。矩阵乘法器是由多个乘法器和加法器构成的用以实现矩阵与矩阵相乘的功能的器件。由于矩阵乘法器中不同列的乘法器和加法器的计算互不相关,能够实现并行运算,因此,可以通过增加或减少矩阵乘法器中乘法器及加法器的列数来调整矩阵的维数。为了描述方便,在本发明实施例中,将乘法器和加法器构成的用以实现矩阵乘法运算的电路简称为乘加器。
[0046]在本发明实施例中,降维处理模块205可以通过减少矩阵乘法器中的部分列的乘加器来实现降低图像数据的维度的目的。具体的,可以通过关闭降维处理模块205中的部分列的乘加器的电源来减少部分列的乘加器。图5为本发明实施例提供的一种降维处理模块205的结构示意图。如图5所示,降维模块205包括m列乘加器,各列乘加器之间的运算互相独立。各列乘加器通过独立的开关控制该列乘加器是否工作。例如,开关SI用于控制第I列乘加器,开关S2用于控制第2列乘加器,依次类推,开关Sm用于控制第m列乘加器。本领域技术人员可以知道,开关可以通过场效应晶体管或开关电路来实现,例如,开关可以为结型场效应管(junct1n field effect transistor, JFET)和金属氧化物半导体场效应管(metal-oxide semiconductor FET, M0S-FET),在此不对开关的实现方式进行限制。
[0047]例如,在本发明实施例中,降维处理模块205可以接收CPU 10或图像数据采集器30发送的第一图像数据X,其中,X为k行*m列的矩阵。假设设置的伯努利矩阵Z为m行*n列的矩阵。降维处理模块205中可以设置m列乘加器。在一个周期内,可以将第一图像数据中的一个数值分别传输到矩阵乘法器的m列乘加器。矩阵乘加器中的各列乘加器可以分别将接收该数值与降维处理模块205中存储的伯努利矩阵Z中的一行数值中的一个数值进行乘法运算,并输出计算结果。换一种表达方式,每列乘加器一个周期内能够计算X矩阵中的一个数值与Z矩阵中的一个数值的计算结果,则在一个周期内,m列乘加器能够获得X矩阵中的该数值与Z矩阵中的一行数值的计算结果。可以理解的是,根据这种方式,经过m*k个循环后,可以获得X矩阵中的K行数值与伯努利矩阵Z的运算结果。在降低第一图像数据的维度的过程中,为了实现对第一图像数据的降维操作,降维处理模块205可以根据设定的降维参数γ以及第一图像数据中的m的值获得η的值,并根据获得的η的值关闭矩阵乘法器中控制m-n列乘加器的开关。例如,如图5所示,可以关闭矩阵乘法器中控制第n+1列至第m列乘加器的开关,使矩阵乘法器中的第n+1列至第m列乘加器在运算的过程中不进行运算。根据上述方式,降维处理模块205能够实现X矩阵和Z矩阵的乘法运算,获得降维后的第一图像数据,其中,降维后的第一图像数据以m行*n列的Y矩阵来表示。
[0048]非易失性内存(Non-Volatile Memory, NVM) 210,用于存储待识别的图像数据以及预设的图像库中的图像数据。具体的,如图4所示,在步骤410中,NVM 210可以将降维后的第一图像数据的每一个数值的低ω位按照设置的第一电流I存储于所述图像识别加速器20中的NVM 210的第一存储区域2104,将降维后的第一图像数据的每一个数值的高(Ν-ω)位按照设置的第二电流Is存储于所述NVM 210的第二存储区域2106。其中,所述降维参数Y、宽度参数ω以及第一电流I根据所述终端设备的系统功耗和设置的第一图像识别成功率获得。
[0049]在本发明实施例中,NVM 210是新一代的非易失性内存。NVM 210的存取速度与传统的易失性内存(例如,动态随机存取存储器DRAM或静态随机存取存储器SRAM)的存取速度相当。此外,NVM 210具有半导体产品的可靠性,使用寿命较长,能够实现按字节(Byte)寻址,将数据以位(bit)为单位写入存储介质中。因此,NVM 210能够被挂在内存总线上,作为内存被CPU 10直接访问。需要说明的是,NVM 210与传统的易失性内存不同,是非易失(Non-Volatile)的,当终端设备100关闭电源后,NVM 210中的信息依然存在。在本发明实施例中,NVM 210可以包括相变存储器(Phase Change Memory,PCM)、阻变存储器(Resistive Random Access Memory, RRAM)、磁性随机存储器(Magnetic Random AccessMemory,MRAM)和铁电式随机存储器(Ferroelectric Random Access Memory, FRAM)等为代表的下一代非易失性存储器(Non-Volatile Memory, NVM)。具体的,由于自旋转移矩磁随机存取存储器(spin-transfer-torque magnetic RAM, STT-MRAM)的使用寿命较长且功耗较低,并且,由于STT-MRAM的写入成功率与写入电流关系较大,在本发明实施例中,NVM210 可以为 STT-MRAM。
[0050]NVM 210可以包括NVM控制器2102、第一存储区域2104和第二存储区域2106。爪^控制器2102用于访问第一存储区域2104和第二存储区域2106。例如,NVM控制器2102可以将数据写入第一存储区域2104和第二存储区域2106,或者从第一存储区域2104和第二存储区域2106中读取数据。实际应用中,在NVM控制器2102中,可以包括处理器、特定集成电路(Applicat1n Specific Integrated Circuit,ASIC)或者被配置成实施本发明实施例的一个或多个集成电路。在NVM控制器2102中还可能包括缓存、通信接口等,在此不对NVM控制器2012的具体结构进行限定。
[0051]第一存储区域2104和第二存储区域2106可以是由多个存储单元构成的存储区域。在本发明实施例中,存储单元是指用于存储数据的最小存储介质单元,每个存储单元用于存储I比特(bit)的数据。例如,存储单元可以包括相变存储单元、磁性存储单元、阻变存储单元等非易失性存储单元。在本发明实施例中,以NVM 210为STT-MRAM为例,第一存储区域2104和第二存储区域2106可以是由多个磁性存储单元构成的存储阵列。本领域技术人员可以知道,每个磁性存储单元包括两个磁性层和一个隧道层。其中,一个磁性层的电磁方向固定,另一磁性层的电磁方向可以通过外部的电磁场来改变。当两个磁性层的方向一样时,该磁性存储单元的电阻低,用于代表数据“O”;当两个磁性层的方向相反时,该磁性存储单元的电阻为高,用于代表数据“ I ”。通常,本领域技术人员将能够通过外部电磁场改变电磁方向的磁性层称为自由层。在本发明实施例中,可以通过将自旋偏振电流通过磁性存储单元来改变自由层的磁场方向。需要说明的是,在本发明实施例中,第一存储区域2104和第二存储区域2106并不一定是连续的地址空间。并且,在NVM 210中除了第一存储区域2104和第二存储区域2106外,还可以包括用于存储其他数据的存储空间(图中未示出),在此不做限定。
[0052]本领域技术人员可以知道,与传统内存相比,非易失性内存基本不存在静态功耗,然而对非易失性内存执行读操作和写操作所造成的能量开销(也可称为动态功耗)较大。其中,静态功耗是指未对非易失性内存执行读操作和写操作期间所造成的能量开销。为了达到降低终端设备的系统功耗的目的,可以通过降低NVM的动态功耗来实现。具体的,可以通过控制写操作过程中的写入电流的大小来控制NVM的动态功耗。然而,本领域技术人员可以知道,在向磁性存储单元写数据的过程中,写入电流的强度要超过阈值电流才能保证磁性存储单元的电阻状态的翻转,因此,写入成功率与写入电流的大小也密切相关。在实现本发明的过程中,发明人发现,对于部分图像、视频等应用,数据中的低位部分在存储过程中出现的错误对识别成功率的影响较小。为了在降低写入功耗的同时不影响图像数据识别的成功率,在本发明实施例中,NVM 210采用了通过不同的写入电流结合存储的方式来存储图像数据。根据这种方式,NVM控制器2102可以通过控制写入电流将经过降维处理模块205降维处理后的第一图像数据中各个数值的低位部分和高位部分分别写入第一存储区域2104和第二存储区域2106。具体的,在本发明实施例中,第一存储区域2104的写入电流I低于第二存储区域2106的写入电流Is。例如,第一存储区域2104的写入电流可以为第一电流I,第二存储区域2106的写入电流Is可以为21。本领域技术人员可以知道,NVM控制器2102可以通过控制写入电压来控制写入电流的大小。
[0053]图6为本发明实施例提供的一种NVM 210的硬件结构示意图。如图6所示,第一存储区域2104和第二存储区域2106包括多个磁性存储单元610构成的存储阵列。NVM控制器2102可以通过控制第一电压V来控制第一电流I,NVM控制器2102可以通过控制第二电压Vs来控制第二电流Is。同一列的磁性存储单元610可以连接一个多路选择器(multiplexer, MUX) 605。NVM控制器2102可以通过控制信号控制多路选择器605输出第一电压V还是输出第二电压Vs,以实现选择通过第一电流I将降维后的第一图像数据中的各数值的低ω位写入第一存储区域2104或通过第二电流Is将各数值的高(Ν-ω)位写入第二存储区域2106的目的。其中,N为每一个数值所占的比特位,ω为设置的宽度参数。例如,若待识别的图像数据的数值为64bit,则可以按照第一电流I将该数值的低16bit写入第一存储区域2104,按照第二电流Is将该数值的高48bit写入第二存储区域2106。为了描述方便,在本发明实施例中,将ω称为宽度参数。实际应用中,ω的值以及第一电流I的值均需要根据终端设备100的系统功耗以及设置的图像识别成功率来确定。可以理解的是,待识别的图像数据的类型不同,对图像识别成功率的要求也不相同,设置的宽度参数ω以及第一电流I的值也就不同,其中,ω的值为正整数。
[0054]可以理解的是,图6仅仅是为了阐述图像识别加速器20中的NVM 210如何将图像数据进行分区存储而对NVM 210中的部分结构做出的示意性图示。实际应用中,多路选择器MUX 605可能并不直接连接磁性存储单元610,而是通过STT-MRAM中的写装置(图6中未示出)将数据写入磁性存储单元610。此外,实际应用中,也可以为多列磁性存储单元610设置一个MUX 605,或者为一行或多行磁性存储单元610设置一个MUX 605。在此不对MUX605的数量以及MUX 605与磁性存储单元610的连接关系进行限制,只要能够实现将图像数据中的数值的不同部分按照不同的电流分别写入不同的磁性存储单元610即可。
[0055]图像匹配模块215,用于确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据,并输出匹配结果。具体的,结合图4,在步骤410中,图像匹配模块215可以确定所述NVM 210中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据,以获得所述降维后的第一图像数据与NVM 210中存储的图像库中的图像数据的匹配结果。例如,图像匹配模块215可以分别从第一存储区域2104和第二存储区域2106读取降维后的第一图像数据,并将降维后的第一图像数据直接与NVM210中存储的图像库中的图像数据进行匹配,以判断是否能够成功识别该第一图像数据。可以理解的是,为了识别图像,在NVM 210中需要预先存储包含有至少一个图像数据的图像库。在本发明实施例中,图像匹配模块215可以是逻辑电路或ASIC芯片。例如,图像匹配模块215可以通过逻辑电路或ASIC芯片将降维后的第一图像数据与图像库中的图像数据按照匹配追踪(Matching Pursuits,MP)算法进行计算,从而确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据,以获得匹配结果。可以理解的是,图像库中的图像数据也可以是经过与第一图像数据相同的处理方法存储于NVM 210中的图像数据。
[0056]需要说明的是,本发明实施例并不对图像匹配模块215的具体实现形式进行限制,只要能够实现图像数据的匹配过程即可。并且,本发明实施例也不对具体的匹配算法进行限定,实际应用中,可以采用正交匹配追踪(Orthogonal Matching Pursuit,0MP)算法,也可以采用其他匹配算法,在此,不对图像匹配模块215采用的匹配算法进行限定。实际应用中,匹配模块215获得匹配结果后,可以将匹配结果返回给CPU或者将匹配结果发生给其他数据处理模块,在此不进行限定。
[0057]在本发明实施例中,由于NVM 210将降维后的第一图像数据中的各个数值的不同部分按照不同的电流分别写入第一存储区域2104和第二存储区域2106,且第一电流I小于第二电流Is,因此,按照第一电流I将数据存储于第一存储区域2104与按照第二电流Is将数据存储于第二存储区域2106相比更节省系统功耗。本领域人员可以知道,通常,写入电流越低,存储的数据出现错误的机会将越大。或者换一种表达方式,随着写入电流的降低,图像数据的识别成功率将会降低。因此,现有技术中通常会先将存储的图像数据通过解凸优化等恢复方式进行恢复后再进行图像识别。在本发明实施例中,由于设置的宽度参数ω以及第一电流I是根据终端设备100的系统功耗和设置的第一图像识别成功率获得的,从而使得存储于第一存储区域2104的数值中的低位部分在存储过程中出现的错误对识别成功率的影响较小。因此,图像匹配模块215在实现图像数据匹配的过程中,并不需要将图像数据恢复后进行匹配,而可以直接将存储于NVM 210中的降维后的第一图像数据与图像库中的图像数据进行匹配。通过本发明实施例提供的这种图像识别方式,能够在节省系统功耗的情况下满足设置的图像识别成功率,保证存储的图像数据的准确性。
[0058]为了使终端设备100能够满足各种类型的图像数据的识别需求,并能够在节省系统功耗的情况下满足设置的图像识别成功率,在本发明实施例提供的图像识别加速器20中还可以设置有统计模块225以及参数调整模块220。如图7所示,图7为本发明实施例提供的又一种图像识别加速器20的结构示意图。如图7所示,在图3所示的结构基础上,参数调整模块220分别连接降维处理模块205以及NVM 210。统计模块225分别与匹配模块215以及参数调整模块220连接。下面将结合图8所示的又一种图像识别方法对图7所示的图像识别加速器20中的各个器件的结构和工作原理进行详细的介绍。
[0059]统计模块225用于统计在预设的统计期间内图像匹配模块215输出的匹配结果,以获得统计的图像识别成功率。从而参数调整模块220能够根据统计模块225统计的图像识别成功率以及设置的第二图像识别成功率判断是否需要调整图像识别参数。具体的,如图8所示,在步骤800中,统计模块225可以统计在预设的统计期间内图像匹配模块215输出的匹配结果,获取所述统计的图像识别成功率。可以理解的是,统计模块225获得的图像识别成功率是根据多个图像数据的识别结果获得的。实际应用中,统计模块225可以是计数器等器件,在此不对统计模块225的具体实现形式进行限制。
[0060]可以理解的是,图7仅仅是对统计模块225的一种结构的示意,实际应用中,还可以将统计模块225单独设置于终端设备100中,也可以将统计模块225设置在CPU 10中,或者将统计模块225设置在与匹配模块215连接的其他设备中,本发明实施例不对统计模块225设置的具体位置进行限定。
[0061]参数调整模块220,用于如果统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值,则根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I。为了描述方便,在本发明实施例中,可以将降维参数γ、宽度参数ω以及第一电流I统称为图像识别参数。具体的,参数调整模块220可以根据统计模块225统计的图像识别成功率与设置的第二图像识别成功率的差值的绝对值来判断是否需要调整图像识别参数的取值。其中,第二图像识别成功率为重新设置的图像识别成功率,第二图像识别成功率与前述的第一图像识别成功率不同。可以理解的是,第二图像识别成功率可以预先从CPU 10获得。结合图8所示,若在步骤805中,参数调整模块220确定统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值,则在步骤810中,参数调整模块220可以根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I。
[0062]为了清楚阐述参数调整模块220具体如何调整图像识别参数,下面将结合图9所示的参数调整方法流程图对参数调整模块220如何平衡系统功耗和图像识别成功率,以获得合适的图像识别参数进行描述。图9为本发明实施例提供的一种参数调整方法流程图。在本发明实施例中,以需要将图像识别成功率从第一图像识别成功率调整为第二图像识别成功率为例进行描述。如图9所示,该参数调整方法可以包括下述步骤。
[0063]在步骤900中,参数调整模块220分别逐渐调整降维参数γ、所述宽度参数ω或第一电流I的取值以降低所述终端设备的系统功耗Ε,并分别通过统计模块225获得调整后的图像识别成功率。根据前面的描述可以知道,第一电流I的值越小,终端设备100存储图像数据时的动态功耗越小,则终端设备100的系统功耗越小。随着宽度参数ω的值增大,按照第一电流I存储于第一存储区域2104的数据越多,则终端设备100的系统功耗越小。降维参数Y的值越小,降维后的图像数据的数据量越少,终端设备100的系统功耗也会越小。终端设备的系统功耗E的值与γ ((Ν-ω) * ?/+ω*Ι)的值成正比,其中,13为设置的标准写入电流,或者也可以被称为是安全电流,按照Is将数据写入NVM 210中时,可以保证图像数据的准确度。通常,Is的值可以根据NVM 210的物理参数获得,在使用NVM 210的过程中,NVM 210的Is不会改变。可以理解的是,不同工艺制造的NVM 210因其物理参数不同,因此Is也可能不同。所述第二图像数据是用数值表示的第二图像的各像素的灰度值的集合,所述第二图像数据可以包括多个数值。实际应用中,在调整图像识别参数的过程中,参数调整模块220可以分别通过逐渐增加宽度参数ω的值、或逐渐降低降维参数γ或逐渐第一电流I的值的方式降低终端设备100的系统功耗Ε,并记录下调整的过程中的各个参数的值、系统功耗以及获得的图像识别成功率。记录的形式可以是图10(a)所示的表格形式,也可以是如图10(b)所示的图形的形式,还可以是其他记录形式。其中,在图10(b)中仅对如何采用图表的形式记录ω和I的调整对图像识别成功率的值的改变进行了示例。可以看出,用图形的形式比用表格记录更加直观。在本发明实施例中,图像识别成功率也可以被称为服务质量QoS。可以理解的是,图像识别成功率可以采用确定的图像识别参数识别多个图像数据的试验来获得。系统功耗可以根据γ ((Ν-ω)女Ι>ω*Ι)的公式计算获得,可以理解的是,系统功耗的值可以是一个估计值。
[0064]在步骤905中,参数调整模块905确定在调整后的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值不大于所述预设阈值时所述终端设备的最小功耗Ε’。可以理解的是,在步骤800所示的调整参数的过程中,可以获得与调整的参数对应的多个图像识别成功率以及多个系统功耗。本领域技术人员可以理解的是,降维参数γ的值越小,降维后的图像数据的数据量越小,出错机会更小,但降维后的图像数据中每个数值包含的信息量更大。因此,实际应用中,会存在降维参数γ减小而图像识别成功率更高的情况。从而,在选择参数时,需要考虑降维参数γ与图像识别成功率的折衷。
[0065]在本发明实施例中,可以将与设置的第二图像识别成功率的差值的绝对值不大于预设阈值的图像识别成功率都作为是满足第二图像识别成功率的要求的图像识别成功率。例如,若第二图像识别成功率为90%,预设阈值为2%,则在88% -92%之间的图像识别成功率均可以认为是满足第二图像识别成功率要求的图像识别成功率。在本步骤中,可以在记录的多个图像识别成功率中确定满足第二图像识别成功率要求的至少一个图像识别成功率。并在确定的至少一个图像识别成功率对应的多个系统功耗中确定最小的系统功耗Ε,。
[0066]在步骤910中,参数调整模块220选择在满足所述最小系统功耗E’时获得最大图像识别成功率的降维参数Y、所述宽度参数ω以及第一电流I分别作为所述调整后的降维参数γ’、宽度参数ω’以及第一电流I’。可以理解的是,在步骤905中确定的最小系统功耗Ε’对应的满足第二图像识别成功率要求的图像识别成功率可以有多个。因此,在步骤910中,参数调整模块220可以选择满足所述最小系统功耗Ε’时获得最大图像识别成功率的降维参数γ、所述宽度参数ω以及第一电流I作为调整后的降维参数γ’、宽度参数ω’以及第一电流I’。例如,在第一种情形下,宽度参数ω增加lbit,获得的图像识别成功率为88%,系统功耗E’为10w。在第二种情形下,降维参数γ减少0.5,获得的图像识别成功率为90%,系统功耗Ε’也为10w。在第三种情形下,电流I减少500 μ Α,获得的图像识别成功率为92%,系统功耗Ε’也为10w。则可以将第三种情形下的降维参数γ、所述宽度参数ω以及第一电流I作为调整后的降维参数γ’、宽度参数ω’以及第一电流I’。
[0067]可以理解的是,本发明实施例仅仅对参数调整模块220调整图像识别参数的过程进行了一个简单的示例,实际应用中,还可以组合调整上述三个参数,例如,可以同时将宽度参数ω增加Ibit并将降维参数γ减少0.5。在本发明实施例中不对具体的调整形式进行限定,只要调整上述三个图像识别参数中的至少一个参数即可。实际应用中,参数调整模块220可以根据贪心算法来确定调整后的降维参数γ’、宽度参数ω’以及第一电流I’。
[0068]需要说明的是,实际应用中,统计模块225还可以位于终端设备100的CPU 10中,则在这种情形下,参数调整模块220可以根据CPUlO的指示调整图像识别参数。如图11所示,图11为本发明实施例提供的又一种终端设备的结构示意图。在图11所示的结构中,统计模块225 (图11中未示出)可以位于CPU 10中,CPU 10可以根据图像匹配模块215在预设的统计期间发送的匹配结果统计图像识别加速器20的图像识别成功率。如果统计的图像识别成功率与所述第二图像识别成功率之间的差值大于预设阈值,则CPU 10可以向参数调整模块220发送参数调整指令,以指示参数调整模块220调整图像识别参数。所述参数调整指令中包含有所述第二图像识别成功率。换一种表达方式,在图11所示的结构中,由CPUlO和参数调整模块220共同完成调整图像识别参数的功能,具体的,可以由CPU 10执行图8中所示的步骤800-805的动作,并指示参数调整模块220执行步骤810的动作。
[0069]在又一种情形下,还可以由终端设备100中的CPU 10完成调整图像识别参数的功能。如图12所示,图12为本发明实施例提供的又一种终端设备结构示意图。图12在图11的基础上减少了参数调整模块220,图11中的参数调整模块220的功能改由CPU 10执行。具体的,在图12所示的终端设备100的结构示意图中,图像匹配模块215可以将匹配结果反馈给CPU 10,CPU 10可以根据匹配结果统计预设统计期间图像识别加速器20识别图像数据的图像识别成功率。CPU 10可以根据统计的图像识别成功率以及重新设置的第二图像识别成功率确定是否需要调整图像识别参数。当CPU 10确定统计的图像识别成功率与设置的第二图像识别成功率的差值的绝对值大于预设阈值时,CPU 10可以根据第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个图像识别参数:降维参数γ、宽度参数ω以及第一电流I,并将调整后的降维参数γ’、宽度参数ω’以及第一电流I’分别发送给降维处理模块205和NVM 210。换一种表达方式,在图12所示的结构中,CPU 10可以执行图8中所示的步骤800-810的方法。各器件具体功能的描述可以参见前述实施例的相关描述,在此不再赘述。可以理解的是,在图12所示的结构中,当CPU 10调整图像识别参数时,可以采用指令的形式向图像识别加速器20中的降维处理模块205和NVM 210发送调整的降维参数γ’、宽度参数ω’以及第一电流I’,从而控制降维处理模块205和NVM210按照调整后的图像识别参数对图像数据进行识别。
[0070]在获得调整后的降维参数γ’、宽度参数ω’以及第一电流I’后,图像识别加速器20可以根据调整后的降维参数γ’、宽度参数ω’以及第一电流I’对后续需要识别的第二图像数据进行图像识别。具体的,如图8所示,在步骤815中,降维处理模块205可以根据调整后的降维参数Y’降低第二图像数据的维度。在步骤820中,NVM 210可以将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω’)位按照所述第二电流Is存储于NVM 210的第二存储区域,其中,所述I’小于所述Is。在步骤825中,图像匹配模块215可以确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。具体的,图像匹配模块215可以将降维后的第二图像数据与NVM 210中存储的图像库中的图像数据进行比较,以获得所述降维后的第二图像数据与NVM 210中存储的图像库中的图像数据的匹配结果。可以理解的是,图像识别加速器根据调整后的降维参数γ’、宽度参数ω’以及第一电流I’对第二图像数据进行图像识别的过程与前述的根据降维参数γ、宽度参数ω以及第一电流I对第一图像数据进行图像识别的过程类似,具体描述可以参见前面的描述,在此不再赘述。
[0071]为了更清晰的描述本发明实施例提供的图像识别加速器20如何识别图像数据,下面将结合图13所示的图像识别方法的信令图对图7所示的图像识别加速器20的工作过程进行简单的描述。在本发明实施例中,仍然以识别第一图像数据为例进行描述。如图13所示。降维处理模块205接收CPU 10发送的待识别的第一图像数据1300后,降维处理模块205可以根据参数调整模块220设置的降维参数γ降低第一图像数据1300的维度。其中降维处理模块205可以采用伯努利矩阵对第一图像数据1300进行降维,以便能够基于稀疏表示的随机映射的方式对第一图像数据1300进行降维。NVM 210接收到降维后的第一图像数据1305后,NVM 210可以根据参数调整模块220设置的宽带参数ω以及第一电流I将降维后的第一图像数据的每一个数值中的低ω位按照第一电流I存储于第一存储区域2104,并将降维后的第一图像数据的每一个数值中的高Ν-ω位按照第二电流Is存储于第二存储区域2106。图像匹配模块215可以基于NVM210存储的图像库中的图像数据对降维后的第一图像数据1305进行识别,确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据,并输出匹配结果。为了图示方便,在图13中,将图像库中的图像数据以及降维后的第一图像数据1305统称为待比较的图像数据1310。一方面,在图13中,图像匹配模块215可以向CPU 10输出第一图像数据1305的识别结果。另一方面,统计模块225可以统计图像匹配模块215的图像匹配结果,从而获得统计期间内的图像识别成功率1320,参数调整模块220从而可以根据统计模块225获得的图像识别成功率1320与设置的第二图像识别成功率确定是否需要调整图像识别参数。当参数调整模块220确定需要调整图像识别参数时,参数调整模块220可以根据图9所示的方法对图像识别参数进行调整,并向降维模块205和NVM 210分别输出调整后的降维参数γ’、宽度参数ω’以及第一电流I’。从而,降维处理模块205、NVM 210以及图像匹配模块215能够根据调整后的降维参数丫’、宽度参数ω’以及第一电流I’对后续的第二图像数据进行识别。
[0072]可以理解的是,图13仅仅是对本发明实施例提供的一种终端设备100的信令示意图,对其他实施例提供的图像识别加速器20或终端设备100的工作过程可以参见图13以及前述实施例的描述。在此不再赘述。
[0073]本发明实施例提供的终端设备,通过图像识别加速器识别图像,减少了 CPU数据处理量,也减少了 CPU与内存的数据交互,能够减少CPU的负担,且能够减少内存带宽对图像数据识别应用的限制,提高图像数据的识别速度。并且,在本发明实施例提供的终端设备中,图像识别加速器可以根据基于稀疏表示的随机映射的方式降低待识别的图像数据的维度,然后将降维后的图像数据按照不同的电流写入图像识别加速器的NVM中的不同存储区域。由于设置的降维参数γ、宽度参数ω以及第一电流I均是根据所述终端设备的系统功耗和设置的图像识别成功率获得的,因此能够在降低终端设备的系统功耗的基础上保证图像识别的准确性。
[0074]本发明实施例还提供一种数据处理的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory, RAM)、固态硬盘(Solid State Disk,SSD)或者非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
[0075]需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行,反之亦然。在此不做限定。
【主权项】
1.一种应用于终端设备中用于识别图像的图像识别加速器,其特征在于,包括: 降维处理模块,用于根据设置的降维参数γ降低第一图像数据的维度,其中,降维后的第一图像数据包括多个数值; 非易失性内存NVM,用于将降维后的第一图像数据的每一个数值的低ω位按照设置的第一电流I存储于所述NVM的第一存储区域,将降维后的第一图像数据的每一个数值的高(Ν-ω)位按照设置的第二电流Is存储于所述NVM的第二存储区域,其中,N为每一个数值所占的比特位,ω为设置的宽度参数,所述第一电流I小于所述第二电流Is,所述降维参数Y、宽度参数ω以及第一电流I根据所述终端设备的系统功耗和设置的第一图像识别成功率获得; 图像匹配模块,用于确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据。2.根据权利要求1所述的图像识别加速器,其特征在于,还包括: 参数调整模块,用于如果统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值,则根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同; 所述降维处理模块,还用于根据调整后的降维参数γ’降低第二图像数据的维度; 所述非易失性内存NVM,还用于将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω ’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,ω ’为调整后的宽度参数,所述I’小于所述Is; 所述图像匹配模块,还用于确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。3.根据权利要求2所述的图像识别加速器,其特征在于,还包括: 统计模块,用于统计在预设的统计期间内所述图像匹配模块输出的匹配结果,获取所述统计的图像识别成功率。4.根据权利要求1-3任意一项所述的图像识别加速器,其特征在于,所述降维处理模块具体用于: 根据所述第一图像数据与设置的二进制矩阵的乘积获得所述降维后的第一图像数据,其中,所述第一图像数据为k行*m列的矩阵,所述二进制矩阵为m行*n列的矩阵,所述降维后的第一图像数据为m行*n列的矩阵,k、m和η为正整数,m的值大于η,η的值根据设置的降维参数γ确定,γ = n/m。5.根据权利要求2或3所述的图像识别加速器,其特征在于,所述参数调整模块具体用于: 如果统计的图像识别成功率与所述第二图像识别成功率之间的差值大于预设阈值,则分别调整降维参数Y、所述宽度参数ω或第一电流I的取值以降低系统功耗Ε,并分别获得调整后的图像识别成功率,其中,所述E的值与γ ((Ν-ω)*Ι>ω*Ι)的值成正比; 确定在调整后的图像识别成功率与所述第二图像识别成功率之间的差值的绝对值不大于所述预设阈值时所述终端设备的最小功耗Ε’ ; 选择在满足所述最小功耗E’时获得最大图像识别成功率的降维参数γ、所述宽度参数ω以及第一电流I分别作为所述调整后的降维参数γ’、宽度参数ω’以及第一电流I’。6.根据权利要求4所述的图像识别加速器,其特征在于,所述二进制类型的矩阵包括伯努利映射矩阵。7.一种终端设备,其特征在于,包括CPU和图像识别加速器,其中: 所述CPU,用于向所述图像识别加速器发送待识别的第一图像数据; 所述图像识别加速器,用于根据设置的降维参数γ降低所述第一图像数据的维度,其中,降维后的第一图像数据包括多个数值; 将所述降维后的第一图像数据的每一个数值的低ω位按照设置的第一电流I存储于NVM的第一存储区域,将所述降维后的第一图像数据的每一个数值的高(Ν-ω)位按照设置的第二电流Is存储于所述NVM的第二存储区域,其中,N为每一个数值所占的比特位,ω为设置的宽度参数,所述I小于所述Is,所述降维参数γ、宽度参数ω以及第一电流I根据所述终端设备的系统功耗和设置的第一图像识别成功率获得; 确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据。8.根据权利要求7所述的终端设备,其特征在于: 所述图像识别加速器,还用于如果统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值,则根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同; 所述CPU,还用于向所述图像识别加速器发送第二图像数据; 所述图像识别加速器,还用于: 根据调整后的降维参数γ’降低第二图像数据的维度; 将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,ω’为调整后的宽度参数,所述I’小于所述Is; 确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。9.根据权利要求7所述的终端设备,其特征在于: 所述CPU,还用于统计在预设的统计期间内所述图像识别加速器输出的匹配结果,获取统计的图像识别成功率; 确定所述统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值; 所述图像识别加速器,还用于根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同; 所述CPU,还用于向所述图像识别加速器发送第二图像数据; 所述图像识别加速器,还用于根据调整后的降维参数γ’降低第二图像数据的维度; 将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,所述ω’为调整后的宽度参数,所述I’小于所述Is; 确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。10.根据权利要求7所述的终端设备,其特征在于,所述CPU还用于: 统计在预设的统计期间内所述图像识别加速器输出的匹配结果,获取所述统计的图像识别成功率; 如果统计的图像识别成功率与设置的第二图像识别成功率之间的差值的绝对值大于预设阈值,则根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同; 向所述图像识别加速器发送第二图像数据; 所述图像识别加速器,还用于: 根据调整后的降维参数γ’降低第二图像数据的维度; 将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,ω’为调整后的宽度参数,所述I’小于所述Is; 确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。11.根据权利要求7-10任意一项所述的终端设备,其特征在于,所述图像识别加速器具体用于: 根据所述第一图像数据与设置的二进制矩阵的乘积获得所述降维后的第一图像数据,其中,所述第一图像数据为k行*m列的矩阵,所述二进制矩阵为m行*n列的矩阵,所述降维后的第一图像数据为m行*n列的矩阵,k、m和η为正整数,m的值大于η,η的值根据设置的降维参数γ确定,γ = n/m。12.根据权利要求8或9所述的终端设备,其特征在于,所述图像识别加速器具体用于: 分别调整降维参数γ、所述宽度参数ω或第一电流I的取值以降低所述终端设备的系统功耗Ε,并分别获得调整后的图像识别成功率,其中,所述E的值与γ ((Ν-ω)*?/+ω*Ι)的值成正比; 确定在调整后的图像识别成功率与所述第二图像识别成功率之间的差值的绝对值不大于所述预设阈值时所述终端设备的最小功耗Ε’ ; 选择在满足所述最小功耗Ε’时获得最大图像识别成功率的降维参数γ、所述宽度参数ω以及第一电流I分别作为所述调整后的降维参数γ’、宽度参数ω’以及第一电流I’。13.根据权利要求10所述的终端设备,其特征在于,所述CPU具体用于: 分别调整降维参数γ、所述宽度参数ω或第一电流I的取值以降低所述终端设备的系统功耗E,并分别获得调整后的图像识别成功率,其中,所述E的值与γ ((Ν-ω)*?/+ω*Ι)的值成正比; 确定在调整后的图像识别成功率与所述第二图像识别成功率之间的差值的绝对值不大于所述预设阈值时所述终端设备的最小功耗Ε’ ; 选择在满足所述最小功耗Ε’时获得最大图像识别成功率的降维参数γ、所述宽度参数ω以及第一电流I分别作为所述调整后的降维参数γ’、宽度参数ω’以及第一电流I’。14.根据权利要求11所述的终端设备,其特征在于:所述二进制类型的矩阵包括伯努利映射矩阵。15.一种应用于终端设备的图像识别方法,其特征在于,所述方法由所述终端设备中的图像识别加速器执行,所述方法包括: 根据设置的降维参数γ降低第一图像数据的维度,其中,降维后的第一图像数据包括多个数值; 将所述降维后的第一图像数据的每一个数值的低ω位按照设置的第一电流I存储于所述图像识别加速器中的NVM的第一存储区域,将所述降维后的第一图像数据的每一个数值的高(Ν-ω)位按照设置的第二电流Is存储于所述NVM的第二存储区域,其中,N为每一个数值所占的比特位,ω为设置的宽度参数,所述I小于所述Is,所述降维参数γ、宽度参数ω以及第一电流I根据所述终端设备的系统功耗和设置的第一图像识别成功率获得; 确定所述NVM中存储的图像库中是否包含有与所述降维后的第一图像数据相匹配的图像数据。16.根据权利要求15所述的图像识别方法,其特征在于,还包括: 确定统计的图像识别成功率与设置的第二图像识别成功率的差值的绝对值大于预设阈值; 根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,其中,所述第二图像识别成功率与所述第一图像识别成功率不同; 根据调整后的降维参数γ’降低第二图像数据的维度; 将降维后的第二图像数据的每一个数值的低ω’位按照调整后的第一电流I’存储于NVM的第一存储区域,将降维后的第二图像数据的每一个数值的高(Ν-ω’)位按照所述第二电流Is存储于所述NVM的第二存储区域,其中,ω’为调整后的宽度参数,所述I’小于所述Is; 确定所述NVM中存储的图像库中是否包含有与所述降维后的第二图像数据相匹配的图像数据。17.根据权利要求16所述的图像识别方法,其特征在于,还包括: 统计在预设的统计期间内所述图像匹配模块输出的匹配结果,获取所述统计的图像识别成功率。18.根据权利要求15-17任意一项所述的图像识别方法,其特征在于,所述根据设置的降维参数γ降低第一图像数据的维度包括: 根据所述第一图像数据与设置的二进制矩阵的乘积获得所述降维后的第一图像数据,其中,所述第一图像数据为k行*m列的矩阵,所述二进制矩阵为m行*n列的矩阵,所述降维后的第一图像数据为m行*n列的矩阵,k、m和η为正整数,m的值大于η,η的值根据设置的降维参数γ确定,γ = n/m。19.根据权利要求16-18任意一项所述的图像识别方法,其特征在于,所述根据所述第二图像识别成功率以及所述终端设备的系统功耗调整下述至少一个参数:降维参数γ、宽度参数ω以及第一电流I,包括: 分别调整降维参数γ、所述宽度参数ω或第一电流I的取值以降低所述终端设备的系统功耗Ε,并分别获得调整后的图像识别成功率,其中,所述E的值与γ ((Ν-ω)*?/+ω*Ι)的值成正比; 确定在调整后的图像识别成功率与所述第二图像识别成功率之间的差值的绝对值不大于所述预设阈值时所述终端设备的最小功耗Ε’ ; 选择在满足所述最小功耗Ε’时获得最大图像识别成功率的降维参数γ、所述宽度参数ω以及第一电流I分别作为所述调整后的降维参数γ’、宽度参数ω’以及第一电流I’。20.根据权利要求18所述的图像识别方法,其特征在于:所述二进制类型的矩阵包括伯努利映射矩阵。
【文档编号】G06K9/00GK105989352SQ201510101155
【公开日】2016年10月5日
【申请日】2015年3月6日
【发明人】余浩, 王雨豪, 倪磊滨, 杨伟, 赵俊峰, 肖世海
【申请人】华为技术有限公司, 南洋理工大学