发明内容
有鉴于此,本发明的目的在于提供一种基于深度学习的图像对象检测方法、***及模型处理方法、设备、终端,能够减少移动终端在应用基于CNN的图片对象检测技术时所需的检测时间以及存储空间使用量。其具体方案如下:
一种CNN模型处理方法,包括:
获取训练后CNN模型对应的模型文件,得到训练后CNN模型文件;其中,所述训练后CNN模型对应的训练样本包括对目标对象进行图像采集后得到的图片以及相应的目标对象信息;
将所述训练后CNN模型文件由浮点格式转换成定点格式,得到定点CNN模型文件;
将所述定点CNN模型文件发送至移动终端,以使所述移动终端根据所述定点CNN模型文件对待检测图片进行目标对象检测处理。
可选的,将所述训练后CNN模型文件由浮点格式转换成定点格式,得到定点CNN模型文件的过程,包括:
获取所述训练后CNN模型对应的网络结构模型文件和权重文件;其中,所述网络结构模型文件包括所述训练后CNN模型的各层网络统计信息,所述权重文件包括所述训练后CNN模型的各层权重统计信息;
分别将所述网络结构模型文件和所述权重文件由浮点格式转换成定点格式,得到包括定点网络结构模型文件和定点权重文件的定点CNN模型文件。
可选的,所述训练后CNN模型的各层网络统计信息包括各层网络的比例因子以及偏移量。
可选的,获取所述训练后CNN模型对应的网络结构模型文件和权重文件的过程,包括:
运行与所述训练后CNN模型对应的代码,并在所述代码的运行过程中,检索出所述训练后CNN模型对应的网络结构模型文件和权重文件。
本发明还公开了一种基于深度学习的图片对象检测方法,应用于移动终端,包括:
获取前述CNN模型处理方法得到的定点CNN模型文件;
根据所述定点CNN模型文件进行相应的模型重构,得到定点CNN模型;
将获取到的待检测图片输入至所述定点CNN模型,得到所述定点CNN模型输出的图片对象检测信息。
可选的,所述图片对象检测信息包括图片对象位置信息以及相应的置信度。
相应的,本发明还公开了一种CNN模型处理设备,包括:
模型文件获取模块,用于获取训练后CNN模型对应的模型文件,得到训练后CNN模型文件;其中,所述训练后CNN模型对应的训练样本包括对目标对象进行图像采集后得到的图片以及相应的目标对象信息;
模型文件转换模块,用于将所述训练后CNN模型文件由浮点格式转换成定点格式,得到定点CNN模型文件;
模型文件发送模块,用于将所述定点CNN模型文件发送至移动终端,以使所述移动终端根据所述定点CNN模型文件对待检测图片进行目标对象检测处理。
可选的,所述模型文件转换模块,包括:
文件获取单元,用于获取所述训练后CNN模型对应的网络结构模型文件和权重文件;其中,所述网络结构模型文件包括所述训练后CNN模型的各层网络统计信息,所述权重文件包括所述训练后CNN模型的各层权重统计信息;
文件转换单元,用于分别将所述网络结构模型文件和所述权重文件由浮点格式转换成定点格式,得到包括定点网络结构模型文件和定点权重文件的定点CNN模型文件。
可选的,所述文件获取单元,具体用于运行与所述训练后CNN模型对应的代码,并在所述代码的运行过程中,检索出所述训练后CNN模型对应的网络结构模型文件和权重文件。
可选的,所述CNN模型处理设备的设备类型包括计算机和/或服务器。
相应的,本发明还公开了一种移动终端,包括:
文件获取模块,用于获取前述CNN模型处理设备得到的定点CNN模型文件;
模型重构模块,用于根据所述定点CNN模型文件进行相应的模型重构,得到定点CNN模型;
对象检测模块,用于将获取到的待检测图片输入至所述定点CNN模型,得到所述定点CNN模型输出的图片对象检测信息。
本发明进一步公开了一种图片对象检测***,包括:
CNN模型处理设备,用于将训练后CNN模型文件由浮点格式转换成定点格式,得到定点CNN模型文件;其中,所述训练后CNN模型文件对应的训练样本包括对目标对象进行图像采集后得到的图片以及相应的目标对象信息;
移动终端,用于根据所述CNN模型处理设备发送的所述定点CNN模型文件进行相应的模型重构,并将获取到的待检测图片输入至重构后得到的定点CNN模型中,得到所述定点CNN模型输出的图片对象检测信息。
可选的,所述图片对象检测***,还包括:
模型训练设备,用于利用所述训练样本,对基于CNN算法构建的待训练模型进行训练,得到所述训练后模型;
其中,所述模型训练设备的设备类型为服务器。
可见,本发明在获取到训练后CNN模型之后,会将训练后CNN模型文件由浮点格式转换成定点格式,从而得到定点CNN模型文件,然后将上述定点CNN模型文件发送至移动终端,在移动终端上利用上述定点CNN模型文件进行相应的模型重构,得到相应的定点CNN模型。当移动终端获取到待检测图片之后,将利用上述定点CNN模型对上述待检测图片中的对象进行检测,从而得到相应的图片对象检测信息。由上可知,本发明中移动终端用来进行对象检测的CNN模型文件是一种格式为定点格式的文件,相对于浮点格式,定点格式的CNN模型文件所占用的存储空间大幅减少,计算复杂度也明显降低,并且由于移动终端上的DSP芯片(DSP,即Digital Signal Process,数字信号处理)支持SIMD(Single InstructionMultiple Data,单指令多数据)模式的定点指令,所以当移动终端采用定点CNN模型文件进行对象检测时,将可以把DSP芯片的计算能力应用到对象检测过程中,从而有利于进一步提升检测速度。综上,本发明能够减少移动终端在应用基于CNN的图片对象检测技术时所需的检测时间以及存储空间使用量。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种CNN模型处理方法,参见图1所示,该方法包括:
步骤S11:获取训练后CNN模型对应的模型文件,得到训练后CNN模型文件;其中,训练后CNN模型对应的训练样本包括对目标对象进行图像采集后得到的图片以及相应的目标对象信息。
可以理解的是,上述训练后CNN模型是利用上述训练样本对基于卷积神经网络算法构建的待训练模型进行训练后得到的模型,其中,训练过程所涉及的数值均为浮点格式的数值,需要消耗大量的计算量以及存储空间。具体的,可以预先将上述训练样本上传至服务器,然后在服务器上利用上述训练样本进行模型训练,从而得到模型文件格式为浮点格式的训练后CNN模型。其中,上述服务器优先为云服务器。
另外,需要说明的是,本实施例中的CNN模型处理方法是在预设的CNN模型处理设备中进行的。其中,上述CNN模型处理设备具体是浮点计算能力较强的设备,如个人电脑、物理服务器或者云服务器。
步骤S12:将训练后CNN模型文件由浮点格式转换成定点格式,得到定点CNN模型文件。
本实施例中,具体可以通过对训练后CNN模型文件进行量化处理,以实现将其由浮点格式转换成定点格式的目的。
步骤S13:将定点CNN模型文件发送至移动终端,以使移动终端根据定点CNN模型文件对待检测图片进行目标对象检测处理。
本实施例中,在获取到定点CNN模型文件之后,将该定点CNN模型文件发送至移动终端,以使移动终端根据定点CNN模型文件对待检测图片进行目标对象检测处理。
由上可知,本发明实施例中移动终端用来进行对象检测的CNN模型文件是一种格式为定点格式的文件,相对于浮点格式,定点格式的CNN模型文件所占用的存储空间大幅减少,计算复杂度也明显降低,并且由于移动终端上的DSP芯片支持SIMD模式的定点指令,所以当移动终端采用定点CNN模型文件进行对象检测时,将可以把DSP芯片的计算能力应用到对象检测过程中,从而有利于进一步提升检测速度。综上,本发明实施例能够减少移动终端在应用基于CNN的图片对象检测技术时所需的检测时间以及存储空间使用量。
在一种具体实施例中,上述步骤S12中,将训练后CNN模型文件由浮点格式转换成定点格式,得到定点CNN模型文件的过程,具体可以包括下面步骤S121和S122:
步骤S121:获取训练后CNN模型对应的网络结构模型文件和权重文件;其中,网络结构模型文件包括训练后CNN模型的各层网络统计信息,权重文件包括训练后CNN模型的各层权重统计信息;
步骤S122:分别将网络结构模型文件和权重文件由浮点格式转换成定点格式,得到包括定点网络结构模型文件和定点权重文件的定点CNN模型文件。
需要说明的是,上述训练后CNN模型的各层网络统计信息包括各层网络的比例因子以及偏移量。
另外,上述获取训练后CNN模型对应的网络结构模型文件和权重文件的过程,具体可以包括:运行与训练后CNN模型对应的代码,并在代码的运行过程中,检索出训练后CNN模型对应的网络结构模型文件和权重文件。
下面对上述过程进行更加具体的说明。
为了在移动平台上有效地实现CNN网络,本实施例可以使用最小的乘法单元,也即是字节运算。因此,本实施例利用SIMD 8x8MAC运算实现最优性能。图2示出了浮点解决方案和定点解决方案的区别。
CNN由多层网络构成,每一层实现一个特定的功能,其中卷积层占用大部分资源。总的来说,卷积层的功能是输入X与权重W卷积,再加上偏差B,从而形成输出Y。在训练期间,它们都是浮点格式。本实施例中的定点解决方案是将激活(X,Y),权重(W)和偏差(B)转换为定点。转换之后,显而易见的是,存储器使用量自动减少了75%。移动平台上的大多数处理单元,例如DSP,其每条SIMD指令具有128或256个8x8MAC,与浮点解决方案相比,成百倍地提高了计算性能。
要将数据从浮点转换为定点,需要进行量化处理。等式(1)总的描述了在浮点模式下各网络层内的运算:
Yf32=f(Xf32) (1)
而下面的等式(2)则是用来量化各层的浮点激活(activation)。
式中,X0和Y0是偏移量,Sx和Sy是比例因子,Sat_Round_Int8表示将浮点值饱和并舍入(saturating and rounding)为8位有符号整数。Sx、Sy、X0和Y0是根据浮点CNN方案的性能分析而预先计算的常数。
然后,可以通过定点激活将浮点激活表达为下面等式(3):
通过将等式(3)代入到等式(1)中,可以得到定点模式下各层内的总体运算,表示为下面等式(4):
Yi8=Syf(Xi8/Sx+X0)-SyY0 (4)
接下来,将以卷积层作为CNN各层量化的例子。其中,下面等式(5)表示浮点卷积层的运算:
Yf32=f(Xf32,Wf32,Bf32)=∑(Xf32×Wf32)+Bf32 (5)
由于权重分布对于大多数网络而言是沿着0对称的,所以,本实施例将权重量化为下面等式(6):
其中比例因子Sw是通过将Wf32缩放至[-128,127]而预先确定的。接着,将等式(5)和(6)代入到(4)中,得到下面的定点卷积等式(7):
式中,由于考虑到卷积层上Sw的范围非常大,所以通过利用q以将Sy/(SxSw)归一化为一个具有10比特位的值。
进一步的,本发明实施例还公开了一种基于深度学习的图片对象检测方法,应用于移动终端,参见图3所示,该方法包括:
步骤S21:获取前述CNN模型处理方法得到的定点CNN模型文件;
步骤S22:根据定点CNN模型文件进行相应的模型重构,得到定点CNN模型;
步骤S23:将获取到的待检测图片输入至定点CNN模型,得到定点CNN模型输出的图片对象检测信息。
其中,上述图片对象检测信息包括图片对象位置信息以及相应的置信度。
关于CNN模型处理流程以及移动终端上的图片对象检测流程可以参见图4所示,其中,模型的训练过程以及模型文件格式转换过程可以在浮点计算能力较强的服务器或PC机中进行,而定点CNN模型的重构过程以及图像检测过程则在移动终端上进行。
具体的,图4中离线模型和权重文件的转换过程主要涉及以下内容:
·运行浮点CNN代码以检索网络各层的统计信息;
·根据各层的激活统计信息,确定各层的比例因子和偏移量;
·将各层的比例因子和偏移量合并到定点CNN网络结构模型文件中;
·根据卷积层的权重统计信息,确定其权重比例因子;
·将权重量化为8位整数,并将其偏移为32位整数;
·生成定点CNN权重文件。
另外,图4中在移动平台上运行实时定点网络的过程主要涉及以下内容:
·加载定点CNN网络结构模型文件以构建网络,并根据比例因子计算各层参数;
·加载整数权重Wi8和偏差Bi32;
·将8位的待检测图片馈入网络;
·每个CNN网络层接收8位有符号整数激活作为输入;
·每个CNN网络层实现其自己的运算功能;
·每个CNN网络层生成8位有符号整数激活作为输出;
·报告对象位置和置信度。
表二中比较了浮点解决方案和定点解决方案的精度,存储器使用量和权重文件大小。
表二
由上可知,使用8位定点解决方案,精度下降不到0.5%,然而存储器使用量只有浮点解决方案的四分之一。结合移动平台上的SIMD指令,处理时间成百倍减少。
可以理解的是,本实施例中的移动终端包括但不限于智能手机、平板电脑、无人机、机器人等。
另外,在移动平台上,由于时钟频率和功耗的限制,很难实现30fps的对象检测。在这种情况下,本实施例可以引入一个运行在CPU上的多对象***来实现实时性能,具体工作过程可以参考图5所示。
其中,当基于CNN的对象检测器需要多帧时间来处理当前帧时,帧缓冲和分配器提供帧缓冲的功能,并根据缓冲器中的积压情况判断将帧馈入至检测器或***。基于CNN的对象检测器检测视频帧中的对象,这可能需要多帧时间。多对象***跟踪前一帧的对象,并在当前帧中报告对象的位置。将对象和帧相关联,以将检测到的对象结合到正确的视频帧。
相应的,本发明实施例还公开了一种CNN模型处理设备,参见图6所示,包括:
模型文件获取模块11,用于获取训练后CNN模型对应的模型文件,得到训练后CNN模型文件;其中,训练后CNN模型对应的训练样本包括对目标对象进行图像采集后得到的图片以及相应的目标对象信息;
模型文件转换模块12,用于将训练后CNN模型文件由浮点格式转换成定点格式,得到定点CNN模型文件;
模型文件发送模块13,用于将定点CNN模型文件发送至移动终端,以使移动终端根据定点CNN模型文件对待检测图片进行目标对象检测处理。
由上可知,本发明实施例中移动终端用来进行对象检测的CNN模型文件是一种格式为定点格式的文件,相对于浮点格式,定点格式的CNN模型文件所占用的存储空间大幅减少,计算复杂度也明显降低,并且由于移动终端上的DSP芯片支持SIMD模式的定点指令,所以当移动终端采用定点CNN模型文件进行对象检测时,将可以把DSP芯片的计算能力应用到对象检测过程中,从而有利于进一步提升检测速度。综上,本发明实施例能够减少移动终端在应用基于CNN的图片对象检测技术时所需的检测时间以及存储空间使用量。
其中,上述模型文件转换模块12,具体可以包括文件获取单元和文件转换单元;其中,
文件获取单元,用于获取训练后CNN模型对应的网络结构模型文件和权重文件;其中,网络结构模型文件包括训练后CNN模型的各层网络统计信息,权重文件包括训练后CNN模型的各层权重统计信息;
文件转换单元,用于分别将网络结构模型文件和权重文件由浮点格式转换成定点格式,得到包括定点网络结构模型文件和定点权重文件的定点CNN模型文件。
其中,上述文件获取单元,具体用于运行与训练后CNN模型对应的代码,并在代码的运行过程中,检索出训练后CNN模型对应的网络结构模型文件和权重文件。
另外,本实施例中的CNN模型处理设备的设备类型包括但不限于计算机和/或服务器。
相应的,本发明实施例还进一步公开了一种移动终端,参见图7所示,该移动终端包括:
文件获取模块21,用于获取前述CNN模型处理设备得到的定点CNN模型文件;
模型重构模块22,用于根据定点CNN模型文件进行相应的模型重构,得到定点CNN模型;
对象检测模块23,用于将获取到的待检测图片输入至定点CNN模型,得到定点CNN模型输出的图片对象检测信息。
更进一步的,本发明实施例还公开了一种图片对象检测***,参见图8所示,该***包括:
CNN模型处理设备31,用于将训练后CNN模型文件由浮点格式转换成定点格式,得到定点CNN模型文件;其中,训练后CNN模型文件对应的训练样本包括对目标对象进行图像采集后得到的图片以及相应的目标对象信息;
移动终端32,用于根据CNN模型处理设备31发送的定点CNN模型文件进行相应的模型重构,并将获取到的待检测图片输入至重构后得到的定点CNN模型中,得到定点CNN模型输出的图片对象检测信息。
进一步的,上述图片对象检测***,还可以包括:
模型训练设备,用于利用训练样本,对基于CNN算法构建的待训练模型进行训练,得到训练后模型;
其中,模型训练设备的设备类型具体可以为服务器。
关于上述CNN模型处理设备31以及移动终端32更加具体的构造可以参考前述实施例中公开的相应内容,在此不再进行赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种图像对象检测方法、***及模型处理方法、设备、终端进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。