基于DSP芯片与量化模型的三维物体识别方法与流程

文档序号:20351985发布日期:2020-04-10 23:04阅读:267来源:国知局
基于DSP芯片与量化模型的三维物体识别方法与流程

本发明属于计算机视觉领域,更具体地,涉及一种基于dsp芯片与量化模型的三维物体识别方法。



背景技术:

将模型参数量化表示,称为量化模型,模型文件大小可以减少约3/4,同时可以将浮点运算转换为整型运算,理论上可以提高特征提取的速率。

现有的基于dsp的特征提取器,利用dsp芯片可以并行计算的优势,相较于arm架构的cpu,可以更快地完成深度网络中各种层的操作,包括卷积层、池化层、残差层等。

使用点云数据进行物体识别,物体识别的方法有很多种,有使用二维数据的和使用三维点云数据的,该类发明或使用模式识别,或采用深度学习方法对对应的物体数据进行特征提取,最终完成识别任务。

三维数据的特征提取器,该类发明的输入不是传统的图像数据(包含xy平面坐标,每个像素点的颜色),而是三维数据,如点云(包含xyz三维坐标,可能包含颜色和其他信息),不同于平面数据,点云数据是连续数据,若将其离散化,则非常稀疏,因此现有的高效方法常常是直接对原始点云信息进行操作,得到输入点云的特征值或特征向量。

现有发明仅分别有上述部分,而未有将它们进行整合使用的,尽管这些技术的领域和方向不尽相同。现有的技术既没有量化的三维数据特征提取器,也没有基于dsp的三维数据特征提取器。之所以尚未有量化的三维数据特征提取器,是因为现有的网络量化结构多基于处理传统的二维图像设计,而要处理三维数据的网络结构的量化结构需要一些变体,如需要处理混合32位整形数和8位整形数、除了卷积外的一般运算的量化计算方式,现今尚未有统一的处理方式。之所以尚未有基于dsp的三维数据特征提取器,是尚未有通用的、成型的、开源的基于dsp芯片的深度学习框架,其开发门槛和难度较大,需要准确地把需要加速的内存数据写入到dsp缓存中,才能利用dsp并行运算的硬件加速的优势。



技术实现要素:

本发明为克服上述现有技术中的缺陷,提供一种基于dsp芯片与量化模型的三维物体识别方法,使得发明中的特征提取器可以提取三维数据的特征,并且可以通过数据结构优化和硬件加速的方法加速特征提取的速度。

为解决上述技术问题,本发明采用的技术方案是:一种基于dsp芯片与量化模型的三维物体识别方法,包括三维数据采集器、三维数据特征提取器以及特征解码器,所述的三维数据特征提取器包括量化参数模型存储模块和dsp并行计算加速模块;所述的三维数据采集器为rgb-d摄像头,拍摄后得到画面中物体的深度信息,最终合成为点云数据;将该点云数据输入到三维数据特征提取器中,特征提取器中的量化参数模型存储模块用于存量化模型的储参数,储存的参数为8bit整型参数;利用dsp并行计算加速模块加速特性,最高可以并行完成相较于x86框架下的32条指令,快速完成深度神经网络中卷积、池化、残差操作,最后得到输入数据的特征;特征解码器根据模型训练时对特征加密的方式反向解码,得到需要的特征格式,如识别任务是将特征解码,得到长度为k的特征向量,以及最大特征值的索引,对照索引-标签表即可得到该数据的标签。

在本发明中,三维数据采集器获得三维数据后,输入到三维数据特征提取器中,得到特征,最后输入到特征解码器中,即可完成计算机视觉的任务,如识别、检测、分割。三维数据的特征提取器加入dsp并行计算的硬件加速特性,以及特征提取器模型量化的特性,可以加快特征提取的速率,同时参数模型文件也会缩小,使其能够在手机等移动终端上可以直接运行该特征提取器。使用三维点云数据的特征提取器的目的是,该方法输入和保存物体的三维数据,而不是二维像素数据,这样可以保护用户的隐私——二维的图像数据可以通过人类自身的阅历能力轻易地解读出一些可能带有隐私的内容,比如物体带有的纹理信息,以及背景中可能带有的隐私内容等,而三维的物体信息带有的细节相较于二维信息更少,且设定好采集范围的三维数据采集器不会采集到背景信息。7.进一步的,在使用量化参数模型存储模块存储参数时,需要获取量化模型,量化模型的获取方法包括训练时量化和训练后量化;

当为训练时量化是的步骤包括:首先,在模型训练时调用tensorflow的tf.contrib.quantize.create_training_graph接口并实现该接口未支持的在一般操作后加入伪量化节点的功能,之后所有的运算操作后都有一个伪量化节点,伪量化节点储存上一个节点的最大值和最小值,使用这两个值,利用映射公式:q=r/scale+zero_pt,即可将参数由32位浮点数存储的方式转换成用8位整型数的存储方式,其中r代表32位浮点数,q代表8位整型数,scale是映射缩放,scale=(vmax-vmin)/255,zero_pt是映射零点,zero_pt=-255*vmin/(vmax–vmin)=-vmin/scale,其中vmax与vmin从伪量化节点中获取,255为8位无符号整型数可表示的最大值;

然后,在模型参数固定时,调用tf.contrib.quantize.create_eval_graph接口并实现该接口未支持的在一般操作后加入伪量化节点的功能。随后进行模型参数固定,参数固定后,调用tococonvert脚本,结合一般节点与其对应的伪量化节点的信息,得到量化模型;

当为训练后量化时的步骤包括:首先,在模型训练阶段使用一般的训练方法;

然后,在模型参数固定时,在权重、激活、矩阵乘法、加法等节点之后人工地加入伪量化节点,再向模型喂入部分训练数据以获得伪量化节点需要记录的关于上一节点的最大值和最小值;随后进行模型参数固定,参数固定后,调用tococonvert脚本,结合一般节点与其对应的伪量化节点的信息,得到量化模型。

进一步的,所述的dsp并行计算加速模块中dsp并行加速的方法包括:使用dsp指令时,使用直接内存访问dma技术,将需要运算的数据直接放入dsp芯片内存中,运算结束后再次使用dma将数据从dsp内存提取到设备内存中,其中,使用arm框架的cpu与dsp芯片同时工作,即在dsp计算时,cpu同时在dma,提取上一次dsp运算的结果,并准备将下一次dsp需要使用的数据写入dsp内存中,一旦dsp芯片计算完毕,则立刻执行dma写入,这样可以立刻开始下一次的计算,提高dsp芯片利用率。

进一步的,基于dsp芯片与量化模型的三维物体识别方法,具体包括以下步骤:

s1.采集训练数据,采集方法为使用三维数据采集器采集物体的深度信息,去除背景和噪声信息后得到物体的点云数据;

s2.训练模型,使用可以端对端处理点云数据的深度学习网络结构对训练数据进行训练,得到模型;训练数据为步骤s1中采集的数据,网络结构为dgcnn的baseline变体;

s3.量化模型,步骤s2中使用的是伪量化节点,其本质是浮点运算,即非量化模型,在步骤s3中会将伪量化节点的信息合并到上一节点,真正地量化模型,将模型参数的表示方法由32位浮点数变为8位整数,压缩模型大小的同时提高前向传播计算的效率;

s4.建立索引-标签表,步骤s1中采集数据时同时标识该数据的类别,使用一个自然数索引去表示这个标签,得到索引与标签一一对应的表;

s5.物体点云数据采集,与步骤s1基本一致,但没有该数据的类别标签,且是单个数据逐个采集;

s6.基于dsp芯片的量化深度学习模型特征提取,模型已在步骤s3中被量化,使用8位整数来表示权重,在模型前向传播中也是使用8位整数来表示各层特征值,与原来的浮点表示映射关系为r=s*(q-z),r代表32位浮点数,q代表8位整型数,s为映射缩放,z为映射零点偏移;

在模型前向传播推断的计算中有卷积乘法、矩阵乘法、加法运算,调用dsp指令集中的vsswmac5指令完成并行度为32倍的矩阵乘法;1x1卷积可以直接转换成矩阵乘法运算,因此该指令也被用于实现1x1卷积;其他的卷积运算使用vswmac5指令,有8倍的并行度;残差加法与一般加法使用vadd指令,有32倍并行度;总体上,应用dsp并行计算加速模块,提高模型前向传播的计算并行度;

将步骤s5中所采集的数据输入到三维数据特征提取器中,以8到32倍的并行度前向传播计算得到该数据的特征;

s7.特征解码,将步骤s6中计算得到的特征利用特征解码器按照计算机视觉识别任务的方法进行解码,即获取特征值最大的元素所在的索引;

s8.索引-标签表查询,得到所识别物体的标签,将步骤s7中得到的索引值在步骤s4中建立的索引-标签表中进行查询,得到步骤s5中所采集物体的所属标签。

进一步的,所述的步骤s2中,若使用训练时量化的方法,此时就要调用tf.contrib.quantize.create_training_graph接口,该接口自动地在一些特定的结构后面加入伪量化节点,包括卷积、矩阵相乘、激活和残差加法;对于其他运算,包括一般加法、乘法、不带参数的矩阵乘法,该接口不会在这些操作后加入伪量化节点,因此需要修改该接口的实现,使得该接口可以在所有运算节点后正确地加入伪量化节点,该接口当前仅支持卷积、全连接、残差等运算,没有实现对一般加法、矩阵乘法等的量化实现,需要根据其对量化卷积的实现进行自定义修改;若是使用训练后量化的方法,则使用一般的没有伪量化节点的训练方式。

进一步的,所述的s3步骤中,若使用训练时量化的方法,此时就要调用tf.contrib.quantize.create_eval_graph接口,该接口尚未支持的一般加法、矩阵乘法的量化实现需要自定义修改;随后将权重固定化,再使用tococonvert脚本,将模型转换成tflite格式,参数类型为quantized_uint8,至此得到量化模型;若使用训练后量化的方法,则在权重、激活、残差加、一般加法、矩阵乘法节点之后人工地加入伪量化节点,将若干数据喂入该模型,得到激活、残差加节点的最大值和最小值,并写入对应的伪量化节点,随后将权重固定化,再使用tococonvert脚本,将模型转换成tflite格式,参数类型为quantized_uint8,至此得到量化模型。

与现有技术相比,有益效果是:本发明提供的一种基于dsp芯片与量化模型的三维物体识别方法,结合了当前已有发明模型量化、基于dsp芯片的特征提取器的优点,结合应用到物体的三维点云数据中,存储参数的模型文件大小缩小3/4,且其前向传播推断速率加快,指令的最高并行比为32倍,即32条x86框架的cpu指令可在dsp芯片上用1条指令完成,因此理论上最高加速比为32倍,因此可以移植到手机等移动终端或者一些嵌入式芯片设备中。应用本发明的方法,只有设备具有采集点云的数据采集器、简易的cpu处理器和dsp芯片即可在该设备中完成三维点云数据的特征提取并可以将特征解码完成视觉任务。此外,使用物体的三维点云数据而非二维图像数据更能保护隐私,因为点云数据是不能还原物体的纹理细节、设定好采集距离的采集器不会采集背景信息,而二维图像则包含了这些信息,且难以避免采集这些冗余的隐私信息。

附图说明

图1是本发明整体方法流程图。

具体实施方式

附图仅用于示例性说明,不能理解为对本发明的限制;为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。附图中描述位置关系仅用于示例性说明,不能理解为对本发明的限制。

如图1所示,一种基于dsp芯片与量化模型的三维物体识别方法,包括以下步骤:

步骤1.采集训练数据,采集方法为使用具有rgb-d功能的摄像头采集物体的深度信息,去除背景和噪声信息后得到物体的点云数据。

步骤2.训练模型,使用可以端对端处理点云数据的深度学习网络结构对训练数据进行训练,得到模型。训练数据为步骤1中采集的数据,网络结构为dgcnn的baseline变体。

步骤2.1.若使用训练时量化的方法,此时就要调用tf.contrib.quantize.create_training_graph接口,该接口自动地在一些特定的结构后面加入伪量化节点,包括卷积、矩阵相乘、激活和残差加法等。对于其他运算,如一般加法、乘法、不带参数的矩阵乘法等,该接口并不会在这些操作后加入伪量化节点,因此需要修改该接口的实现,使得该接口可以在所有运算节点后正确地加入伪量化节点。该接口当前仅支持卷积、全连接、残差等运算,没有实现对一般加法、矩阵乘法等的量化实现,需要根据其对量化卷积的实现进行自定义修改。

步骤2.2.若是使用训练后量化的方法,则使用一般的,没有伪量化节点的训练方式即可。

步骤3.量化模型,步骤2中使用的是伪量化节点,其本质还是浮点运算,即非量化模型,在该步骤中会将伪量化节点的信息合并到上一节点,真正地量化模型,将模型参数的表示方法由32位浮点数变为8位整数,压缩模型大小的同时提高前向传播计算的效率。

步骤3.1.若使用使用训练时量化的方法,此时就要调用tf.contrib.quantize.create_eval_graph接口,此外,该接口尚未支持的一般加法、矩阵乘法等的量化实现需要自定义修改。随后将权重固定化,再使用tococonvert脚本,将模型转换成tflite格式,参数类型为quantized_uint8,至此得到量化模型。

步骤3.2.若使用训练后量化的方法,则在权重、激活、残差加、一般加法、矩阵乘法等节点之后人工地加入伪量化节点,将若干数据喂入该模型,得到激活、残差加等节点的最大值和最小值,并写入对应的伪量化节点。随后将权重固定化,再使用tococonvert脚本,将模型转换成tflite格式,参数类型为quantized_uint8,至此得到量化模型。

步骤4.建立索引-标签表,步骤1中采集数据时同时标识该数据的类别,使用一个自然数索引去表示这个标签,得到索引与标签一一对应的表。

步骤5.物体点云数据采集,与步骤1基本一致,但没有该数据的类别标签,且是单个数据逐个采集。

步骤6.基于dsp芯片的量化深度学习模型特征提取,模型已在步骤3中被量化,使用8位整数来表示权重,在模型前向传播中也是使用8位整数来表示各层特征值,与原来的浮点表示映射关系为r=s*(q-z),r代表32位浮点数,q代表8位整型数,s为映射缩放,z为映射零点偏移。

在模型前向传播推断的计算中有卷积乘法、矩阵乘法、加法等运算,调用dsp指令集中的vsswmac5指令可以完成并行度为32倍的矩阵乘法;1x1卷积可以直接转换成矩阵乘法运算,因此该指令也被用于实现1x1卷积;其他的卷积运算使用vswmac5指令,有8倍的并行度;残差加法与一般加法使用vadd指令,有32倍并行度。总体上,应用dsp并行计算加速模块,提高模型前向传播的计算并行度,模型前向传播的计算并行度将提高8到32倍。

将步骤5中所采集的数据输入到该特征提取器中,以8到32倍的并行度前向传播计算得到该数据的特征。

步骤7.特征解码,将步骤6中计算得到的特征按照计算机视觉识别任务的方法进行解码,即获取特征值最大的元素所在的索引。

步骤8.索引-标签表查询、得到所识别物体的标签,将步骤7中得到的索引值在步骤4中建立的索引-标签表中进行查询,得到步骤5中所采集物体的所属标签。

显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1