技术领域
[0001] 本
申请涉及
计算机视觉领域技术领域,更具体地说,涉及一种图像特征提取方法、装置及一种电子设备和一种计算机可读存储介质。
背景技术
[0002] Resnet网络模型(深度残差
卷积神经网络模型)可以用于在计算机视觉领域提取图像的特征。随着
大数据、
机器学习和
人工智能在不同应用领域的发展,传统的计算架构已无法满足其对计算效能持续增长的迫切需求,基于CPU(中文全称:
中央处理器,英文全称:central processing unit)+GPU(中文全称:图形处理器,英文全称:Graphics Processing Unit)集群的传统分布式计算架构在训练Resnet网络模型时存在能耗过高、扩展性较差、计算资源利用不足等问题,导致Resnet网络模型的训练效率较低。
[0003] 因此,如何提高网络模型的训练效率是本领域人员需要解决的技术问题。
发明内容
[0004] 本申请的目的在于提供一种图像特征提取方法、装置及一种电子设备和一种计算机可读存储介质,提高了网络模型的训练效率,进而提高了图像特征提取效率。
[0005] 为实现上述目的,本申请提供了一种图像特征提取方法,包括:
[0006] 根据训练集的数据大小和目标网络模型中每个网络层的参数计算每个所述网络层的数据计算量;
[0007] 根据GPU和FPGA的基本信息分别计算所述GPU的第一算
力和所述FPGA的第二算力;
[0008] 基于每个所述网络层的数据计算量、所述第一算力和第二算力将每个所述网络层分配至所述GPU或所述FPGA中进行计算,得到训练完成的目标网络模型;
[0009] 利用所述训练完成的目标网络模型进行图像特征提取。
[0010] 其中,所述基于每个所述网络层的数据计算量、所述第一算力和第二算力将每个所述网络层分配至所述GPU或所述FPGA中进行计算,得到训练完成的目标网络模型,包括:
[0011] 基于每个所述网络层的数据计算量、所述第一算力和第二算力确定在所述GPU中计算的第一网络层和在所述FPGA中计算的第二网络层;
[0012] 对所述第二网络层的前向
算法和后向算法进行Opencl代码重写和并行优化;
[0013] 利用所述GPU计算所述第一网络层,利用所述FPGA计算优化后的第二网络层,得到训练完成的目标网络模型。
[0014] 其中,每个所述网络层的参数包括卷积核大小、输入图片大小、输出图片大小、输入通道数和输出通道数中的任一项或任一项的组合。
[0015] 其中,所述GPU的基本信息包括所述GPU的型号;
[0016] 所述FPGA的基本信息包括所述FPGA的DSP资源和编译
频率。
[0017] 其中,所述目标网络模型包括Resnet-50网络模型。
[0018] 为实现上述目的,本申请提供了一种图像特征提取装置,包括:
[0019] 第一计算模
块,用于根据训练集的数据大小和目标网络模型中每个网络层的参数计算每个所述网络层的数据计算量;其中,所述目标网络模型包括Resent-50网络模型;
[0020] 第二计算模块,用于根据GPU和FPGA的基本信息分别计算所述GPU的第一算力和所述FPGA的第二算力;
[0021] 分配模块,用于基于每个所述网络层的数据计算量、所述第一算力和第二算力将每个所述网络层分配至所述GPU或所述FPGA中进行计算,得到训练完成的目标网络模型;
[0022] 提取模块,用于利用所述训练完成的目标网络模型进行图像特征提取。
[0023] 其中,所述分配模块包括:
[0024] 确定单元,用于基于每个所述网络层的数据计算量、所述第一算力和第二算力确定在所述GPU中计算的第一网络层和在所述FPGA中计算的第二网络层;
[0025] 优化单元,用于对所述第二网络层的前向算法和后向算法进行Opencl代码重写和并行优化;
[0026] 计算模块,用于利用所述GPU计算所述第一网络层,利用所述FPGA计算优化后的第二网络层,得到训练完成的目标网络模型。
[0027] 其中,所述目标网络模型包括Resnet-50网络模型。
[0028] 为实现上述目的,本申请提供了一种电子设备,包括:
[0030] 处理器,用于执行所述计算机程序时实现如上述图像特征提取方法的步骤。
[0031] 为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述图像特征提取方法的步骤。
[0032] 通过以上方案可知,本申请提供的一种图像特征提取方法,包括:根据训练集的数据大小和目标网络模型中每个网络层的参数计算每个所述网络层的数据计算量;根据GPU和FPGA的基本信息分别计算所述GPU的第一算力和所述FPGA的第二算力;基于每个所述网络层的数据计算量、所述第一算力和第二算力将每个所述网络层分配至所述GPU或所述FPGA中进行计算,得到训练完成的目标网络模型;利用所述训练完成的目标网络模型进行图像特征提取。
[0033] 本申请提供的图像特征提取方法,在训练网络模型是采用GPU与FPGA(中文全称:现场可编程
逻辑门阵列,英文全称:Field Programmable Gate Array)的混合架构,根据网络层的计算量和GPU、FPGA设备的算力进行模型拆分,将不同的网络层划分到GPU和FPGA设备上进行计算,实现了网络模型的GPU+FPGA混合训练,能够提高网络层计算的资源利用率以及网络模型训练的能效比,进而提高图像特征提取效率。本申请还公开了一种图像特征提取装置及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。
[0034] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
[0035] 为了更清楚地说明本申请
实施例或
现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成
说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
[0036] 图1为根据一示例性实施例示出的一种图像特征提取方法的
流程图;
[0037] 图2为根据一示例性实施例示出的另一种图像特征提取方法的流程图;
[0038] 图3为Resnet-50网络模型的训练系统的结构图;
[0039] 图4为根据一示例性实施例示出的一种图像特征提取装置的结构图;
[0040] 图5为根据一示例性实施例示出的一种电子设备的结构图。
具体实施方式
[0041] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0042] 本申请实施例公开了一种图像特征提取方法,提高了网络模型的训练效率,进而提高了图像特征提取效率。
[0043] 参见图1,根据一示例性实施例示出的一种图像特征提取方法的流程图,如图1所示,包括:
[0044] S101:根据训练集的数据大小和目标网络模型中每个网络层的参数计算每个所述网络层的数据计算量;
[0045] 本步骤中的目标网络模型可以包括Resnet-50网络模型或其他
深度神经网络模型,在此不进行具体限定。在本步骤中,根据训练集的数据大小和网络模型中各网络层的参数计算出每个网络层的数据计算量,此处的参数可以包括卷积核大小、输入图片大小、输出图片大小、输入通道数和输出通道数等。
[0046] 数据计算量为每个网络层前向和后向计算时的需要计算的总的运算数,以卷积层前向计算为例,Cin个通道上一次卷积计算:
[0047] 加法运算:(K2-1)Cin,乘法运算:K2Cin,通道方向加法:Cin-1;
[0048] 总的运算数:((K2-1)Cin)+K2Cin+(Cin-1)=2K2Cin-1
[0049] 卷积总的数据计算量:(2K2Cin-1)(M2Cout)N,可简化为:2K2Cin(M2Cout)N。
[0050] 其中,K为卷积核的大小,M为正向时输出图片的大小,N为Batch_size(批处理参数),Cin为输入通道数,Cout为输出通道数。
[0051] S102:根据GPU和FPGA的基本信息分别计算所述GPU的第一算力和所述FPGA的第二算力;
[0052] 在本步骤中,根据GPU和FPGA的基本信息分别计算GPU和FPGA的算力,算力即为该设备每秒可以处理的浮点运算的数量,此处GPU的基本信息包括GPU的型号等,FPGA的基本信息包括FPGA的DSP资源和编译频率等。
[0053] S103:基于每个所述网络层的数据计算量、所述第一算力和第二算力将每个所述网络层分配至所述GPU或所述FPGA中进行计算,得到训练完成的目标网络模型;
[0054] 在本步骤中,将网络层分配至GPU和FPGA中进行并行运算,即基于每个网络层的数据计算量、GPU的第一算力和FPGA的第二算力确定在GPU中计算的第一网络层和在FPGA中计算的第二网络层,使得GPU计算完成所有第一网络层的时间与FPGA计算完成所有第二网络层的时间大致相同。GPU与FPGA之间可以进行数据传输,以完成各网络层的计算。
[0055] 优选的,本步骤包括:基于每个所述网络层的数据计算量、所述第一算力和第二算力确定在所述GPU中计算的第一网络层和在所述FPGA中计算的第二网络层;对所述第二网络层的前向算法和后向算法进行Opencl代码重写和并行优化;利用所述GPU计算所述第一网络层,利用所述FPGA计算优化后的第二网络层,得到训练完成的目标网络模型。在具体实施中,对第二网络层的前向和后向计算算法进行Opencl代码重写,并进行并行优化设计。所有网络层均计算完成后,得到训练完成的目标网络模型。
[0056] 并行优化设计方法主要包括数据传输优化、存储
访问优化、
数据处理优化等,其中数据处理优化采用较多的是:多流
水线、向量化、循环展开等方法。不同算法有其算法特点,一般会根据算法特点综合采用上述优化策略进行优化设计;
[0057] 例如,在C++中的for循环语句:
[0058] for(int i=0;i<100;i++){
[0059] c[i]=a[i]*b[i];
[0060] }
[0061] 上述c++
语言代码在运算时是串行的,采用Opencl并行实现可以
修改如下:
[0062] #define VEC 32//设定并行度
[0063] #pragma unroll VEC
[0064] for(int i=0;i<100;i++){
[0065] c[i]=a[i]*b[i];
[0066] }
[0067] 该示例是将该循环采用32的并行度进行循环展开,即一个时钟周期同时进行32次运算。
[0068] 存储访问优化:数据从主机端CPU传到FPGA板卡上是放置在DDR全局内存中的,在计算时,可以先读取数据到FPGA板卡的本地内存,然后利用本地内存的数据进行计算,计算完再写回全局内存,这样会降低数据访问延迟等。
[0069] S104:利用所述训练完成的目标网络模型进行图像特征提取。
[0070] 在本步骤中,利用上述步骤训练完成的目标网络模型进行图像特征提取。
[0071] 本申请实施例提供的图像特征提取方法,在训练网络模型是采用GPU与FPGA的混合架构,根据网络层的计算量和GPU、FPGA设备的算力进行模型拆分,将不同的网络层划分到GPU和FPGA设备上进行计算,实现了网络模型的GPU+FPGA混合训练,能够提高网络层计算的资源利用率以及网络模型训练的能效比,进而提高图像特征提取效率。
[0072] 本申请实施例公开了一种图像特征提取方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
[0073] 参见图2,根据一示例性实施例示出的另一种图像特征提取方法的流程图,如图2所示,包括:
[0074] S201:根据训练集的数据大小和目标网络模型中每个网络层的参数计算每个所述网络层的数据计算量;
[0075] S202:根据GPU和FPGA的基本信息分别计算所述GPU的第一算力和所述FPGA的第二算力;
[0076] S203:基于每个所述网络层的数据计算量、所述第一算力和第二算力确定在所述GPU中计算的第一网络层和在所述FPGA中计算的第二网络;
[0077] S204:对所述第二网络层的前向算法和后向算法进行Opencl代码重写和并行优化;
[0078] S205:利用所述GPU计算所述第一网络层,利用所述FPGA计算优化后的第二网络层,得到训练完成的目标网络模型。
[0079] S206:利用所述训练完成的目标网络模型进行图像特征提取。
[0080] 下面介绍本申请提供的一种应用实施例,如图3所示,Resnet-50网络模型的训练系统包括:理论计算量和设备算力分析模块、Resnet-50网络模型划分模块、FPGA
内核程序实现优化模块和时序控
制模块四个部分。理论计算量和设备算力分析模块主要完成了Resnet-50各网络层的计算量需求和GPU、FPGA板卡理论计算能力分析工作;Resnet-50网络模型划分模块针对理论计算量和算力分析模块的分析结果实现网络模型的模型划分;FPGA内核程序实现优化模块中实现经OpenCL并行优化设计后的Resnet-50网络网络层的前向和后向计算;时序
控制模块控制Resnet-50网络模型训练的整个过程,实现数据在GPU和FPGA之间的流水控制。
[0081] Resnet-50网络模型的训练步骤包括:
[0082] 步骤一:理论分析Resnet-50各网络层在训练过程中的计算量需求;
[0083] 步骤二:理论分析GPU和FPGA计算设备的计算能力;
[0084] 步骤三:根据步骤一和步骤二的理论分析结果,将Resnet-50网络模型进行手动的模型划分,将网络层
指定分配到GPU或者FPGA设备上;
[0085] 步骤四:对需要在FPGA设备上进行计算的网络层,进行Opencl编码实现,并对网络层的前向和后向计算过程进行Opencl并行优化设计;
[0086] 步骤五:
硬件编译优化好的网络层Opencl代码程序;
[0087] 步骤六:启动Resnet-50训练过程,流水控制GPU和FPGA直接
训练数据的传输过程,直到训练结束。
[0088] 下面对本申请实施例提供的一种图像特征提取装置进行介绍,下文描述的一种图像特征提取装置与上文描述的一种图像特征提取方法可以相互参照。
[0089] 参见图4,根据一示例性实施例示出的一种图像特征提取装置的结构图,如图4所示,包括:
[0090] 第一计算模块401,用于根据训练集的数据大小和目标网络模型中每个网络层的参数计算每个所述网络层的数据计算量;其中,所述目标网络模型包括Resent-50网络模型;
[0091] 第二计算模块402,用于根据GPU和FPGA的基本信息分别计算所述GPU的第一算力和所述FPGA的第二算力;
[0092] 分配模块403,用于基于每个所述网络层的数据计算量、所述第一算力和第二算力将每个所述网络层分配至所述GPU或所述FPGA中进行计算,得到训练完成的目标网络模型;
[0093] 提取模块404,用于利用所述训练完成的目标网络模型进行图像特征提取。
[0094] 本申请实施例提供的图像特征提取装置,在训练网络模型是采用GPU与FPGA的混合架构,根据网络层的计算量和GPU、FPGA设备的算力进行模型拆分,将不同的网络层划分到GPU和FPGA设备上进行计算,实现了网络模型的GPU+FPGA混合训练,能够提高网络层计算的资源利用率以及网络模型训练的能效比,进而提高图像特征提取效率。
[0095] 在上述实施例的
基础上,作为一种优选实施方式,所述分配模块401包括:
[0096] 确定单元,用于基于每个所述网络层的数据计算量、所述第一算力和第二算力确定在所述GPU中计算的第一网络层和在所述FPGA中计算的第二网络层;
[0097] 优化单元,用于对所述第二网络层的前向算法和后向算法进行Opencl代码重写和并行优化;
[0098] 计算模块,用于利用所述GPU计算所述第一网络层,利用所述FPGA计算优化后的第二网络层,得到训练完成的目标网络模型。
[0099] 在上述实施例的基础上,作为一种优选实施方式,所述目标网络模型包括Resnet-50网络模型。
[0100] 在上述实施例的基础上,作为一种优选实施方式,每个所述网络层的参数包括卷积核大小、输入图片大小、输出图片大小、输入通道数和输出通道数中的任一项或任一项的组合。
[0101] 在上述实施例的基础上,作为一种优选实施方式,所述GPU的基本信息包括所述GPU的型号;
[0102] 所述FPGA的基本信息包括所述FPGA的DSP资源和编译频率。
[0103] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0104] 本申请还提供了一种电子设备,参见图5,本申请实施例提供的一种电子设备500的结构图,如图5所示,可以包括处理器11和存储器12。该电子设备500还可以包括多媒体组件13,输入/输出(I/O)
接口14,以及通信组件15中的一者或多者。
[0105] 其中,处理器11用于控制该电子设备500的整体操作,以完成上述的图像特征提取方法中的全部或部分步骤。存储器12用于存储各种类型的数据以支持在该电子设备500的操作,这些数据例如可以包括用于在该电子设备500上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器12可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态
随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程
只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件13可以包括屏幕和音频组件。其中屏幕例如可以是
触摸屏,音频组件用于输出和/或输入音频
信号。例如,音频组件可以包括一个麦克
风,麦克风用于接收外部
音频信号。所接收的音频信号可以被进一步存储在存储器
12或通过通信组件15发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口
14为处理器11和其他接口模块之间提供接口,上述其他接口模块可以是
键盘,
鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件15用于该电子设备500与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,
近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件15可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
[0106] 在一示例性实施例中,电子设备500可以被一个或多个应用专用集成
电路(Application Specific Integrated Circuit,简称ASIC)、
数字信号处理器(Digital Signal Processor,简称DSP)、数字
信号处理设备(Digital Signal Processing Device,简称DSPD)、
可编程逻辑器件(Programmable Logic Device,简称PLD)、
现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、
控制器、
微控制器、
微处理器或其他电子元件实现,用于执行上述的图像特征提取方法。
[0107] 在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述图像特征提取方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器12,上述程序指令可由电子设备500的处理器11执行以完成上述的图像特征提取方法。
[0108] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请
权利要求的保护范围内。
[0109] 还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。