[0077] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0078] 下面结合具体实施例对本发明提供的技术方案进行详细说明。
[0079] 图1是本发明实施例一提供的图像处理方法的流程示意图。本发明实施例的执行主体示例性的可以为图像处理装置、处理器,还可以为应用图像处理方法的任意装置和系统,例如监控系统、智能驾驶系统等。如图1所示,图像处理方法,包括:
[0080] S101、根据运算单元的定点位宽硬件资源量,将卷积神经网络使用浮点表示的网络参数定点化处理。
[0081] 其中,定点化处理后的网络参数为采用2的幂次表示的值。
[0082] 示例性的,本发明实施例中的运算单元可以为支持定点运算的计算单元,比如FPGA中的数据处理单元DSP等。当运算单元为FPGA等硬件平台时,为了发挥FPGA等硬件平台低功耗、加速运算等方面的综合优势,运算单元的定点位宽资源量通常较为有限。某些情形下,为了实现更低功耗往往会选择尽量小的定点位宽资源量,比如8比特或4比特位甚至更少宽资源量来实现定点运算。然而,定点位宽资源量少往往会影响运算速度,对于要求快速响应甚至是实时响应的平台,例如自动驾驶的车载运算平台等,则需要对卷积神经网络进行适配硬件定点位宽资源量方面的优化,以实现在有限资源平台上的高速运算。
[0083] 卷积神经网络通常包括多个卷积层,用于对待处理的图像进行特征提取,对提取到的特征进行分类,以实现卷积神经网络的各类功能。卷积神经网络中包含有多个网络参数,卷积神经网络中的网络参数的取值决定了卷积神经网络的性能。为提高卷积神经网络的性能,卷积神经网络的网络参数取值的形式通常为浮点数。本发明实施例中的卷积神经网络可以为经过训练的卷积神经网络。但是浮点数形式的网络参数存在占用存储空间,计算复杂度高问题,本发明实施例中对卷积神经网络使用浮点表示的网络参数进行定点化处理,使得定点化处理后的网络参数为采用2的幂次表示的值,一方面减少了网络参数对存储空间的占用,另一方面简化了基于卷积神经网络进行图像处理时所需的运算。
[0084] 例如,采用2的幂次来定点化表示网络参数,在存储时,可仅存储网络参数对应的幂次数值,进而可减少存储空间占用以及运算过程中对内存空间的占用,节约了FPGA等硬件平台的资源。同时,当采用2的幂次来表示网络参数时,对于卷积神经网络中大量的乘法运算,可使得运算单元可以采用移位与加和运算的方式来替代处理速度较慢且功耗较大的乘法运算,实现图像处理。采用2的幂次来表示网络参数可大大降低运算复杂度,提高运算速度,实现快速实时响应,降低运算过程中的功耗,尤其在运算单元为FPGA等硬件资源有限的硬件时,可解决卷积神经网络无法应用在硬件上或者无法在硬件上实现加速运算的问题。
[0085] 示例性地,在对卷积神经网络的网络参数进行定点化之前,可先检测网络参数的形式是否为浮点数,若是,则需对网络参数的取值进行定点化。
[0086] 示例性的,在一种可能的实现方式中定点化处理后的网络参数为M个2的幂次之和,M为大于1的整数。
[0087] 示例性的,本实施例中,对于一个浮点数,可采用M个2的次幂来表示。例如,对于浮5 2 4 2 1
点数36.11,可采用2+2来表示。例如,对于浮点数21.42,可采用2+2+2来表示。例如,对于
4 ‑2
浮点数16.25,可采用2+2 来表示。通过采用M个2的幂次之和来对网络参数的取值进行定点化,一方面在偏差较小的情况下,减少了网络参数对存储空间的占用,确保了卷积神经网络的性能,另一方面,可将卷积神经网络中的与网络参数相关的乘法操作简化为移位操作,简化了卷积神经网络的运算,提高了卷积神经网络的运算速率。
[0088] 可以理解的是,定点化后的网络参数也可以采用少于M个的2的幂次之和来表示。5
例如,对于浮点数32,可采用2来表示。
[0089] 可选的,在一种可能的实现方式中,M等于2。例如,对于某一网络参数的定点化结k j果,可采用2+2来表示。
[0090] 示例性的,通过均采用两个2的次幂来表示,可在确保网络参数的准确度的同时,不增加过多的计算量,避免了内存及存储资源的占用量提升。
[0091] 示例性的,在存储卷积神经网络的网络参数的取值时,由于网络参数数量较多,且每个网络参数的取值不同,在存储网络参数的取值时,存在占用存储空间较多的问题。为进一步减少存储空间占用,本发明实施例提供一种可能的定点化处理后的网络参数的存储方式,该种方式中:
[0092] 定点化处理后的网络参数为2的k次幂与2的j次幂之和,k和j均为整数,k大于j、且k与j之差小于预设阈值。
[0093] 具体的,对于任一浮点数,可采用2k+2j来进行定点化,其中k和j均为整数,且k大于j。为了简化网络参数的定点化过程,减少定点化处理后的网络参数存储时占用的空间,可限定k与j之差小于预设阈值。
[0094] 示例性的,确定预设阈值的过程首先可以确定卷积神经网络的所有网络参数的初始值,然后根据所有初始值的精度,确定最小精度值s,最小精度值s即为j的可能取值的最小值。然后根据所有初始值中最大的初始值,确定最大数值,最大数值可以为对最大初始值t进行向上取整。示例性的,可采用一个2的次幂,如2 表示最大数值,或M个2的次幂表示最大p q
数值,如2+2。t、p、q为整数,且p大于q。t或p即为k的可能取值的最大值。当k和j的差值大于预设阈值时,可将j的可能的最小取值增大,也即降低网络参数的定点化精度。
[0095] 可选的,在本实施例中,当定点化处理后的网络参数为2的k次幂与2的j次幂之和,存储定点化处理后的网络参数的具体方式可以包括:
[0096] 根据k与j,以及,二进制值映射表,获取定点化处理后的网络参数对应的二进制值,二进制值映射表用于指示不同k与j取值组合对应的二进制值;
[0097] 存储二进制值。
[0098] 示例性的,定点化处理后的网络参数为2的k次幂与2的j次幂之和,考虑到k和j为不相同的整数,且k与j之差小于预设阈值d,故可确定卷积神经网络的定点化处理后的网络参数,取值的所有可能性为 种。其中,d=l‑k+1。例如,当k和j之间差值的预设阈值为8,此时,网络参数的取值可能为28种。对于28个不同的数值,可采用5位比位数进行区分。因此,可建立二进制值映射表,二进制映射表中指示了不同k与j取值组合对应的二进制值,从而减少了定点化处理后的网络参数在存储时占用的存储空间。
[0099] 示例性的,在确定定点化处理后的网络参数对应的二进制值时,可采用2log(l‑k+1)比特位来编码定点化处理后的网络参数。具体为前log(l‑k+1)比特位用于表示第一个2的幂次,后log(l‑k+1)比特位表示后一个2的幂次。
[0100] S102、获取待处理的图像。
[0101] 示例性地,待处理的图像可以为监控摄像头拍摄得到的图像,还可以为车载摄像头拍摄得到图像,还可以为预存储在的图像库中的图像。
[0102] S103、控制运算单元根据定点化处理后的网络参数处理图像,得到图像的处理结果。
[0103] 示例性地,图像的处理结果包括:对象检测/跟踪结果、特征提取结果、分割结果、分类结果中的至少之一。
[0104] 示例性地,当采用存储二进制值的方式来指示定点化处理后的网络参数时,控制运算单元根据定点化处理后的网络参数处理图像,可具体包括:
[0105] S11、控制运算单元根据二进制值和二进制映射表,确定卷积神经网络的定点化处理后的网络参数。
[0106] 示例性地,控制运算单元根据存储的二进制值,在二进制映射表中通过查找确定卷积神经网络的定点化处理后的网络参数,或者,在二进制映射表中通过查找确定幂次k和k jj,从而可确定定点化处理后的网络参数2+2。
[0107] S12、根据卷积神经网络的定点化处理后的网络参数处理图像。
[0108] 本发明实施例提供的图像处理方法包括:根据运算单元的定点位宽硬件资源量,将卷积神经网络使用浮点表示的网络参数定点化处理,获取待处理的图像,控制运算单元根据定点化处理后的网络参数处理图像,得到图像的处理结果。通过对卷积神经网络的网络参数进行定点化,采用2的幂次来定点化表示网络参数,可减少存储空间占用以及运算过程中对内存空间的占用,节约了FPGA等硬件平台的资源。同时,采用2的幂次来表示网络参数可大大降低运算复杂度,提高运算速度,实现快速实时响应,降低运算过程中的功耗,尤其在运算单元为FPGA等硬件资源有限的硬件时,可解决卷积神经网络无法应用在硬件上或者无法在硬件上实现加速运算的问题。
[0109] 示例性地,在图1所示实施例的基础上,本发明实施例还提供一种图像处理方法,图2是本发明实施例二提供的图像处理方法的流程示意图。如图2所示,图像处理方法,包括:
[0110] S201、根据运算单元的定点位宽硬件资源量,将卷积神经网络使用浮点表示的网络参数定点化处理。
[0111] S202、采用训练数据再次训练包括定点化处理后的网络参数的卷积神经网络,以对定点化处理后的网络参数进行修正。
[0112] 示例性的,训练数据示例性的可以为标注有标签的数据。例如,当采用卷积神经网络进行图像中的人脸检测、可行驶区域检测时,训练数据则为标注有人脸区域、可行驶区域的图像。
[0113] 示例性的,对卷积神经网络的网络参数的训练、定点化以及再训练过程可以多次执行,以提高网络参数的准确性。
[0114] S203、获取待处理的图像。
[0115] S204、控制运算单元根据修正后的网络参数处理图像,得到图像的处理结果。
[0116] 本实施例提供的图像处理方法中,在对卷积神经网络使用浮点表示的网络参数进行定点化处理后,采用训练数据再次训练包括定点化处理后的网络参数的卷积神经网络,以对定点化处理后的网络参数进行修正,可提高卷积神经网络的网络参数的准确性。
[0117] 本发明实施例另一方面还提供一种图像处理装置,用于执行上述实施例中的图像处理方法,具有相同或相似的技术特征和技术效果。
[0118] 图3是本发明实施例一提供的图像处理装置的结构示意图。如图3所示,图像处理装置包括:
[0119] 参数定点化模块301,用于根据运算单元的定点位宽硬件资源量,将卷积神经网络使用浮点表示的网络参数定点化处理,定点化处理后的网络参数为采用2的幂次表示的值;
[0120] 图像获取模块302,用于获取待处理的图像;
[0121] 图像处理模块303,用于控制运算单元根据定点化处理后的网络参数处理图像,得到图像的处理结果。
[0122] 可选的,定点化处理后的网络参数为M个2的幂次之和,M为大于1的整数。
[0123] 可选的,M等于2。
[0124] 可选的,定点化处理后的网络参数为2的k次幂与2的j次幂之和,k和j均为整数,k大于j、且k与j之差小于预设阈值。
[0125] 示例性的,在图3所示实施例的基础上,本发明实施例还提供一种图像处理装置。图4是本发明实施例二提供的图像处理装置的结构示意图。如图4所示,图像处理装置还包括:
[0126] 存储模块304,用于根据k与j,以及,二进制值映射表,获取定点化处理后的网络参数对应的二进制值,二进制值映射表用于指示不同k与j取值组合对应的二进制值;存储二进制值。
[0127] 可选的,上述图4所示实施例中的图像处理模块303,具体用于:
[0128] 控制运算单元根据二进制值和二进制映射表,确定卷积神经网络的定点化处理后的网络参数;
[0129] 根据卷积神经网络的定点化处理后的网络参数处理图像。
[0130] 示例性的,如图4所示,图像处理装置还包括:
[0131] 训练模块305,用于在控制运算单元根据定点化处理后的网络参数处理图像之前,采用训练数据再次训练包括定点化处理后的网络参数的卷积神经网络,以对定点化处理后的网络参数进行修正。
[0132] 可选的,图像的处理结果包括:对象检测/跟踪结果、特征提取结果、分割结果、分类结果中的至少之一。
[0133] 本发明实施例另一方面还提供一种智能驾驶系统,采用了上述实施例中的图像处理方法,具有相同或相似的技术特征和技术效果。
[0134] 图5是本发明实施例提供的智能驾驶系统的结构示意图。如图5所示,智能驾驶系统包括:车载摄像头501,卷积神经网络子系统502和控制子系统503;其中,控制子系统503用于:
[0135] 根据运行卷积神经网络子系统502的运算单元的定点位宽硬件资源量,将卷积神经网络使用浮点表示的网络参数定点化处理,定点化处理后的网络参数为采用2的幂次表示的值;
[0136] 控制卷积神经网络子系统502根据定点化处理后的网络参数处理车载摄像头501采集到的车辆行驶路面的图像,得到图像的处理结果;
[0137] 根据图像的处理结果进行车辆智能驾驶。
[0138] 示例性的,智能驾驶控制包括辅助驾驶和自动驾驶以及辅助驾驶和自动驾驶等多种驾驶模式之间的切换等多种情形。
[0139] 可选的,定点化处理后的网络参数为M个2的幂次之和,M为大于1的整数。
[0140] 可选的,M等于2。
[0141] 可选的,定点化处理后的网络参数为2的k次幂与2的j次幂之和,k和j均为整数,k大于j、且k与j之差小于预设阈值。
[0142] 可选的,控制子系统503还用于,根据k与j,以及,二进制值映射表,获取定点化处理后的网络参数对应的二进制值,二进制值映射表用于指示不同k与j取值组合对应的二进制值。
[0143] 对应的,智能驾驶系统还包括:存储子系统504;
[0144] 存储子系统504,用于存储二进制值。
[0145] 可选的,控制子系统503具体用于,
[0146] 控制卷积神经网络子系统根据存储子系统中存储的二进制值和二进制值映射表,确定卷积神经网络的定点化处理后的网络参数;
[0147] 根据定点化处理后的网络参数处理车载摄像头采集到的车辆行驶路面的图像,得到图像的处理结果。
[0148] 可选的,智能驾驶系统还包括:训练子系统505;
[0149] 训练子系统505用于,采用训练数据再次训练包括定点化处理后的网络参数的卷积神经网络子系统,以对定点化处理后的网络参数进行修正。
[0150] 可选的,图像的处理结果包括:车牌识别结果、可行驶区域检测结果、车道线检测结果、车道线属性检测结果、车载摄像头姿态检测结果中的至少之一。
[0151] 本发明实施例另一方面还提供一种基于FPGA的车载运算平台,采用了上述实施例中的图像处理方法,具有相同或相似的技术特征和技术效果。
[0152] 图6是本发明实施例提供的基于FPGA的车载运算平台的结构示意图。如图6所示,基于FPGA的车载运算平台包括:处理器601、外部存储器602、内存603和FPGA运算单元604;其中,
[0153] 外部存储器602中存储有神经网络的定点化处理后的网络参数,或者,存储有神经网络的定点化处理后的网络参数对应的二进制值和查找表,查找表用于指示不同的网络参数的幂次值对应的二进制值;定点化处理后的网络参数为采用2的幂次表示的值;
[0154] 处理器601将神经网络的定点化处理的网络参数读入内存603,或者,将根据二进制值和查找表,查找得到定点化处理的网络参数读入内存603,将内存603上的数据和待处理的图像信息输入到FPGA运算单元604;
[0155] FPGA运算单元604根据待处理的图像信息和定点化处理的网络参数得到移位运算结果,对多次结果求和运算,得到图像的处理结果。
[0156] 可选的,定点化处理后的网络参数为M个2的幂次之和,M为大于1的整数。
[0157] 可选的,M等于2。
[0158] 可选的,定点化处理后的网络参数为2的k次幂与2的j次幂之和,k和j均为整数,k大于j、且k与j之差小于预设阈值。
[0159] 可选的,外部存储器602中存储有k与j;
[0160] 查找表指示了不同的k和j的取值组合对应的二进制值。
[0161] 可选的,图像的处理结果包括:对象检测/跟踪结果、特征提取结果、分割结果、分类结果中的至少之一。
[0162] 本发明实施例另一方面还提供一种电子设备,图7是本发明实施例提供的电子设备的结构示意图,如图7所示,该电子设备包括:
[0163] 存储器701,用于存储程序指令;
[0164] 处理器702,用于调用并执行所述存储器中的程序指令,执行上述图1所示实施例中的方法步骤。
[0165] 示例性地,如图7所示,电子设备还包括运算单元703,运算单元703用于实现上述任一实施例中的卷积神经网络的运算。
[0166] 本发明实施例另一方面还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序用于执行上述图1或图2所示实施例中的方法步骤。
[0167] 本实施例中的装置与前述实施例中的方法是基于同一发明构思下的两个方面,在前面已经对方法实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施中的系统的结构及实施过程,为了说明书的简洁,在此就不再赘述。
[0168] 在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0169] 本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0170] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0171] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。