1.基于近似计算的VGG图像特征提取加速方法,其特征是,包括:
获取待加速的基于VGG网络的图像特征提取程序,从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序;
对目标循环程序执行穿孔得到初始近似程序,用初始近似程序替换待加速的基于VGG网络的图像特征提取程序中的目标循环程序,即得到加速的基于VGG网络的图像特征提取程序;
获取待特征提取的图像,将待特征提取的图像输入到加速的基于VGG网络的图像特征提取程序中,进行特征提取,在特征提取的过程中对初始近似程序执行输出注入;最后得到提取后的特征;
所述输出注入即利用与当前迭代输入最相似的历史迭代输入对应的迭代输出值作为当前迭代的输出值。
2.如权利要求1所述的方法,其特征是,所述从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序,具体步骤包括:计算待加速程序中每个循环程序的执行时间,获取占用总执行时间最多的前M个循环程序;M为设定值,M为正整数;选取占总执行时间前N位的循环作为目标循环;N为设定值,N为正整数;。
3.如权利要求1所述的方法,其特征是,对目标循环程序执行穿孔得到初始近似程序;
具体步骤包括:
S21:对待加速的基于VGG网络的图像特征提取程序进行运行,记录待加速程序的第一输出精度,即精确精度;
步骤S22和步骤S23是并发进行的;
S22:对目标循环程序的指令进行模拟穿孔;记录每次模拟穿孔后待加速程序的第二输出精度;
S23:对目标循环程序的迭代进行模拟穿孔;记录每次模拟穿孔后待加速程序的第三输出精度;
S24:每次模拟穿孔后,如果目标循环程序中止或崩溃,则当前被模拟穿孔的指令为敏感指令;否则,当前被模拟穿孔的指令为弹性指令;
每次模拟穿孔后,如果目标循环程序中止或崩溃,则当前被模拟穿孔的迭代为敏感迭代;否则,当前被模拟穿孔的迭代为弹性迭代;
S25:根据待加速程序的第一输出精度和每次模拟穿孔后待加速程序的第二输出精度,计算第一相对误差;
根据待加速程序的第一输出精度和每次模拟穿孔后待加速程序的第三输出精度,计算第二相对误差;
S26:根据计算的第一相对误差和第二相对误差,筛选出第一相对误差和第二相对误差均在设定范围内的弹性指令;绘制每条弹性指令与第一相对误差和第二相对误差的关系图;
根据计算的第一相对误差和第二相对误差,筛选出第一相对误差和第二相对误差均在设定范围内的弹性迭代;绘制每条弹性迭代与第一相对误差和第二相对误差的关系图;
S27:根据每条弹性指令与第一相对误差和第二相对误差的关系图,对第一相对误差和第二相对误差均小于设定范围的弹性指令,按照损失精度从小到大的顺序依次进行真实折半穿孔;
根据每条弹性迭代与第一相对误差和第二相对误差的关系图,对第一相对误差和第二相对误差均小于设定范围的弹性迭代,按照损失精度从小到大的顺序依次进行真实折半穿孔;得到目标循环程序对应的初始近似程序。
4.如权利要求1所述的方法,其特征是,在特征提取的过程中对初始近似程序执行输出注入的具体步骤包括:首先,将初始近似程序进行设定时间段的执行,目的是为影子内存shadow memory提供初始值;影子内存shadow memory用于存储目标循环中迭代的输入和迭代的输出,随着迭代的执行,影子内存shadow memory记录历史迭代输入和历史迭代输入对应的历史迭代输出,以及当前迭代输入和当前迭代输入对应的迭代输出;
从历史迭代输入中查找与初始近似程序当前迭代输入相似度最高的历史迭代输入,将相似度最高的历史迭代输入对应的历史迭代输出,作为当前迭代输入的迭代输出。
5.如权利要求1所述的方法,其特征是,所述输出注入的具体步骤包括:S31:选择近似对象:选择除敏感迭代和当前被穿孔的迭代之外的迭代,并把选择出的迭代的地址用存储器存储;
S32:地址检测:当待加速程序执行到初始近似程序,初始近似程序迭代开始执行之前,首先获取当前执行的地址,并在存储器中查找,判断存储器中是否含有当前执行的地址;如果有,则执行S33;如果无,则对初始近似程序的执行过程不做任何处理;
S33:迭代输入的相似度判断;
S34:把相似度最高的迭代输入对应的迭代输出赋给当前输出:
找到相似度最高且最高相似度大于设定阈值,读取相似迭代输入对应的迭代输出,称作相似迭代输出;采用二进制插装直接把相似度最高的迭代输入对应的迭代输出赋给当前迭代输入的迭代输出。
6.如权利要求5所述的方法,其特征是,迭代输入的相似度判断的步骤包括:读取影子内存shadow memory的中历史迭代输入,将当前迭代输入与shadow memory的历史迭代输入对比,基于哈希算法对比二者之间的相似性;
如果相似性大于设定阈值,则从历史迭代输入中选出一个相似度最高的迭代输入,再找出相似度最高的迭代输入对应的迭代输出执行注入,进入S34;
如果相似度小于设定阈值,则进行对初始近似程序不做任何处理,继续执行;
如果相似度达到百分之百,则为冗余,不执行输出注入,直接穿孔;
执行结束后,利用当前迭代输入和迭代输出更新shadow memory,计数器增加1,计数器的编号就是当前迭代输入和迭代输出对应的编号。
7.如权利要求1所述的方法,其特征是,动态质量管理,具体步骤包括:S51:当shadow memory中与当前迭代输入相似度最高迭代输入的相似度大于设定阈值,执行对比阶段,即S52;否则,不对初始近似程序执行近似操作,用当前执行的迭代输入和迭代输出更新shadow memory;
S52:执行对比阶段,即对比相似度最高迭代输入对应的程序总输出与未注入操作状态下程序的总输出,根据二者的误差,确定是否执行恢复阶段;
如果误差在设定阈值之内,则执行二进制插桩输出注入操作;否则,执行恢复阶段;
S53:执行恢复阶段,不对初始近似程序执行近似操作,用当前执行的迭代输入和迭代输出更新shadow memory。
8.基于近似计算的VGG图像特征提取加速系统,其特征是,包括:
目标循环程序提取模块,其被配置为:获取待加速的基于VGG网络的图像特征提取程序,从待加速的基于VGG网络的图像特征提取程序中识别目标循环程序;
穿孔模块,其被配置为:对目标循环程序执行穿孔得到初始近似程序,用初始近似程序替换待加速的基于VGG网络的图像特征提取程序中的目标循环程序,即得到加速的基于VGG网络的图像特征提取程序;
特征提取模块,其被配置为:获取待特征提取的图像,将待特征提取的图像输入到加速的基于VGG网络的图像特征提取程序中,进行特征提取,在特征提取的过程中对初始近似程序执行输出注入;最后得到提取后的特征;
所述输出注入即利用与当前迭代输入最相似的历史迭代输入对应的迭代输出值作为当前迭代的输出值。
9.一种电子设备,其特征是,包括存储器和处理器以及存储在存储器上并在处理器上运行的计算机指令,所述计算机指令被处理器运行时,完成权利要求1-7任一项方法所述的步骤。
10.一种计算机可读存储介质,其特征是,用于存储计算机指令,所述计算机指令被处理器执行时,完成权利要求1-7任一项方法所述的步骤。