CN110458280A - 一种适用于移动端的卷积神经网络加速方法及系统 - Google Patents
一种适用于移动端的卷积神经网络加速方法及系统 Download PDFInfo
- Publication number
- CN110458280A CN110458280A CN201910637446.8A CN201910637446A CN110458280A CN 110458280 A CN110458280 A CN 110458280A CN 201910637446 A CN201910637446 A CN 201910637446A CN 110458280 A CN110458280 A CN 110458280A
- Authority
- CN
- China
- Prior art keywords
- data
- convolution
- sliding window
- thread
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种适用于移动端的卷积神经网络加速方法及系统,其通过获取待检测图像的参数,利用预设的神经网络模型得到第一线程索引数据和第二线程索引数据,第一滑动窗口位置坐标作为第一线程索引标识,调用第一线程索引数据获取第一卷积输入数据,与第一滑动窗口位置坐标对应的第一卷积核数据进行内积计算;利用多线程并行计算得到当前通道的第一特征图数据;第二滑动窗口位置坐标作为第二线程索引标识,调用第二线程索引数据获得第二卷积输入数据,利用多线程并行计算得到第二输出特征图的所有输出数据,从而实现深度可分离卷积和逐点卷积的并行计算,提高待检测图像的检测速度。
Description
技术领域
本发明属于图像处理领域,具体涉及一种适用于移动端的卷积神经网络加速方法及系统。
背景技术
自20世纪80年代以来,人工智能领域逐渐兴起,早期的人工神经网络(ANN,Artificial Neural Network)结构简单,只能完成一些简单的人工智能任务。随着数据学科和并行计算学科和并行计算学科发展,数据量持续增长,计算机的计算能力不断提高,使得更深、更复杂的神经网络也能有很好的学习能力,从此深度学习在人工智能领域开始暂露头角,
卷积神经网络(CNN,Convolutional Neural Network)作为深度学习发展最重要的分支之一,它的发展是最为成熟的,并广泛应用于各种图形图像视频处理的任务中。卷积神经网络发展如此迅速,除训练数据规模增长和计算能力提升外,还得益于各种卷积神经网络框架。现有的卷积神经网络应用大多是部署在服务器或桌面机平台上,而移动端才是应用最广泛、用户量最多的应用平台,将卷积神经网络应用移动化才能最大限度推动深度学习应用的发展。
自2016年来,移动端的卷积神经网络不断发展,很多轻量化的网络结构被提出,包含深度可分离卷积结构的MobileNets卷积神经网络就是其中应用最广泛的网络之一。从网络结构设计的角度出发,已经将网络模型的参数量和计算量降低,但在现有的一些移动端卷积神经网络框架中,一些网络层数较深的卷积神经网络前向仍然比较缓慢,尤其在实时性要求较高的应用中,如实时视频流处理,这些现有的移动端卷积神经网络框架的计算速度不能满足应用需求。因此,进一步提升卷积神经网络在移动端的计算速度,才能解决移动端卷积神经网络在实时性应用中的速度问题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种适用于移动端的卷积神经网络加速方法及系统,其通过多线程索引分别实现多线程并行获取多个通道的特征图数据,同时利用多线程并行计算得到待检测图像多通道的输出特征图数据,实现深度可分离卷积和逐点卷积的并行计算,以提高待检测图像的检测速度。
为实现上述目的,按照本发明的一个方面,提供了一种适用于移动端的卷积神经网络加速方法,该移动端包括多个深度可分离卷积计算单元和多个逐点卷积计算单元,包括如下步骤:
获取待检测图像的参数,利用预设的神经网络模型得到与多个深度可分离卷积计算单元一一对应的多个第一线程索引数据,与多个逐点卷积计算单元一一对应的多个第二线程索引数据,第一线程索引数据包括第一滑动窗口位置坐标、对应通道编号、第一滑动窗口尺寸和与第一滑动窗口位置坐标一一对应的第一卷积核数据,第二线程索引数据包括第二滑动窗口位置坐标、对应通道编号、第二滑动窗口尺寸和与第二滑动窗口位置坐标一一对应的第二卷积核数据;
第一滑动窗口位置坐标作为第一线程索引标识进行第一线程索引数据存储,第二滑动窗口位置坐标作为第二线程索引标识进行第二线程索引数据存储;
获取待检测图像的三维数据,利用当前通道的第一线程索引标识调用第一线程索引数据,依据第一滑动窗口内的待检测图像的三维数据作为第一卷积输入数据,该第一卷积输入数据与第一滑动窗口位置坐标对应的第一卷积核数据进行内积计算;利用移动端的多个深度可分离卷积计算单元进行多线程并行计算,遍历当前通道的第一线程索引标识,得到当前通道的第一特征图数据;
利用当前通道的第二线程索引标识调用第二线程索引数据,依据第二滑动窗口内的当前通道的第一特征图数据作为第二卷积输入数据,该第二卷积输入数据与第二滑动窗口位置坐标对应的第二卷积核数据进行内积计算,得到当前通道的第二特征图数据;
利用移动端的多个逐点卷积计算单元多线程并行计算,遍历所有通道的线程索引,得到第二输出特征图的所有输出数据,以提高对待检测图像的检测速度。
作为本发明的进一步改进,第一线程索引数据和/或第二线程索引数据采用向量化存储方式。
作为本发明的进一步改进,通过加载指令将第一线程索引数据和/或第二线程索引数据加载为float16类型向量,调用向量内积指令实现内积计算。
为实现上述目的,按照本发明的另一个方面,提供了一种适用于移动端的卷积神经网络加速系统,其包括依次连接的卷积核神经网络模块、深度可分离卷积计算模块、逐点卷积计算模块和数据存储模块,其中,数据存储模块还连接卷积核神经网络模块和深度可分离卷积计算模块,深度可分离卷积计算模块包括多个深度可分离卷积计算单元,逐点卷积计算模块包括多个逐点卷积计算单元,
卷积核神经网络模块用于获取待检测图像的参数,利用预设的神经网络模型利用预设的神经网络模型得到与多个深度可分离卷积计算单元一一对应的多个第一线程索引数据,与多个逐点卷积计算单元一一对应的多个第二线程索引数据,第一线程索引数据包括第一滑动窗口位置坐标、对应通道编号、第一滑动窗口尺寸和与第一滑动窗口位置坐标一一对应的第一卷积核数据,第二线程索引数据包括第二滑动窗口位置坐标、对应通道编号、第二滑动窗口尺寸和与第二滑动窗口位置坐标一一对应的第二卷积核数据;
数据存储模块用于存储卷积核神经网络模块发送的第一线程索引数据和第二线程索引数据,其中,第一线程索引数据和第二线程索引数据的存储过程为:
第一滑动窗口位置坐标作为第一线程索引标识进行第一线程索引数据存储,第二滑动窗口位置坐标作为第二线程索引标识进行第二线程索引数据存储;
深度可分离卷积计算模块用于获取待检测图像的三维数据,利用当前通道的第一线程索引标识调用第一线程索引数据,依据第一滑动窗口内的待检测图像的三维数据作为第一卷积输入数据,该第一卷积输入数据与第一滑动窗口位置坐标对应的第一卷积核数据进行内积计算;利用移动端的多个深度可分离卷积计算单元进行多线程并行计算,遍历当前通道的第一线程索引标识,从而得到当前通道的第一特征图数据;
逐点卷积计算模块用于接收当前通道的第一特征图数据,利用当前通道的第二线程索引标识调用第二线程索引数据,依据第二滑动窗口内的当前通道的第一特征图数据作为第二卷积输入数据,该第二卷积输入数据与第二滑动窗口位置坐标对应的第二卷积核数据进行内积计算,得到当前通道的第二特征图数据;利用移动端的多个逐点卷积计算单元进行多线程并行计算,遍历所有通道的线程索引,得到第二输出特征图的所有输出数据,以提高对待检测图像的检测速度。
作为本发明的进一步改进,数据存储模块包括float向量模块,该模块用于以float向量类型存储第一线程索引数据和/或第二线程索引数据。
作为本发明的进一步改进,数据存储模块通过加载指令将第一线程索引数据和/或第二线程索引数据加载为float16类型向量,深度可分离卷积计算模块和/或逐点卷积计算模块调用向量内积指令实现内积计算。
作为本发明的进一步改进,用于搭建的卷积核神经网络模块的模型框架包括:Caffe、tensorflow、MXNet和Pytorch。
作为本发明的进一步改进,该系统可利用基于Mali GPU的移动设备实现,具体过程为:
获取用于计算的Mali GPU设备,依据第一索引数据和第二索引数据分布情况,通过操作命令入队的方式在调用设备上的计算资源,操作命令包括全局内存向主存传输命令、主存向全局内存传输命令和内核函数执行命令;在.cl文件中创建内核函数以实现深度可分离卷积计算模块和/或逐点卷积计算模块的内核函数的构建。
作为本发明的进一步改进,卷积核神经网络模块还用于依据各通道的深度可分离卷积和逐点卷积所占的内存空间大小,创建对应的缓冲区。
作为本发明的进一步改进,深度可分离卷积计算模块和/或逐点卷积计算模块执行操作命令并调用内核函数实现卷积计算。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
本发明的一种适用于移动端的卷积神经网络加速方法及系统,其通过多线程索引分别实现多线程并行获取多个通道的特征图数据,同时利用多线程并行计算得到待检测图像多通道的输出特征图数据,从而实现深度可分离卷积和逐点卷积的并行计算,以提高待检测图像的检测速度。
本发明的一种适用于移动端的卷积神经网络加速方法及系统,其利用向量化存储第一线程索引数据和/或第二线程索引数据,通过调用内积指令实现内积的向量化计算,从而进一步提高待检测图像的检测速度。
本发明的一种适用于移动端的卷积神经网络加速方法及系统,其通过建立适应移动端设备的深度可分离卷积结构为网络主干,轻量化网络结构,降低网络参数量和计算量,减小网络的存储开销和计算开销,降低网络计算过程中的设备负载。
附图说明
图1是本发明实施例的一种适用于移动端的卷积神经网络加速系统的结构示意图;
图2是本发明实施例的深度可分离卷积并行计算的示意图;
图3是本发明实施例的逐点卷积计算的示意图。
图4是本发明实施例的卷积神经网络加速系统的网络示意图;
图5是本发明实施例的卷积神经网络加速系统基于Mali GPU实现的网络示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面结合具体实施方式对本发明进一步详细说明。
Mali GPU:一款高端GPU,用于将图形IP视觉娱乐变为现实,市场上安卓智能手机该部件的配置比例不到30%,可与PowerVR SGX系列GPU对比。
OpenCL:Mali GPU的开发平台。
一种适用于移动端的卷积神经网络加速方法,该移动端包括多个深度可分离卷积计算单元和多个逐点卷积计算单元,其特征在于,包括如下步骤:
获取待检测图像的参数,利用预设的神经网络模型得到与多个深度可分离卷积计算单元一一对应的多个第一线程索引数据,与多个逐点卷积计算单元一一对应的多个第二线程索引数据,第一线程索引数据包括第一滑动窗口位置坐标、对应通道编号、第一滑动窗口尺寸和与第一滑动窗口位置坐标一一对应的第一卷积核数据,第二线程索引数据包括第二滑动窗口位置坐标、对应通道编号、第二滑动窗口尺寸和与第二滑动窗口位置坐标一一对应的第二卷积核数据;
第一滑动窗口位置坐标作为第一线程索引标识进行第一线程索引数据存储,第二滑动窗口位置坐标作为第二线程索引标识进行第二线程索引数据存储;
获取待检测图像的三维数据,利用当前通道的第一线程索引标识调用第一线程索引数据,依据第一滑动窗口内的待检测图像的三维数据作为第一卷积输入数据,该第一卷积输入数据与第一滑动窗口位置坐标对应的第一卷积核数据进行内积计算;利用移动端的多个深度可分离卷积计算单元进行多线程并行计算,遍历当前通道的第一线程索引标识,得到当前通道的第一特征图数据;
利用当前通道的第二线程索引标识调用第二线程索引数据,依据第二滑动窗口内的当前通道的第一特征图数据作为第二卷积输入数据,该第二卷积输入数据与第二滑动窗口位置坐标对应的第二卷积核数据进行内积计算,得到当前通道的第二特征图数据;
利用移动端的多个逐点卷积计算单元多线程并行计算,遍历所有通道的线程索引,得到第二输出特征图的所有输出数据,以提高对待检测图像的检测速度。
作为一个优选的实施例,滑动窗口与卷积核的内积计算可采用向量化计算以提高计算速度。进一步地,数据存储模块设置有float16类型向量模块,float16是长度为16的float类型的向量,该向量模块用于存储多线程索引数据,数据存储模块通过加载指令将多线程索引数据加载为float16类型向量,深度可分离卷积计算模块和/或逐点卷积计算模块调用向量内积指令实现内积计算。
图1是本发明实施例的一种适用于移动端的卷积神经网络加速系统的结构示意图。如图1所示,其包括依次连接的卷积核神经网络模块、深度可分离卷积计算模块、逐点卷积计算模块和数据存储模块,其中,数据存储模块还连接卷积核神经网络模块和深度可分离卷积计算模块,深度可分离卷积计算模块包括多个深度可分离卷积计算单元,逐点卷积计算模块包括多个逐点卷积计算单元,
卷积核神经网络模块用于获取待检测图像的参数,利用预设的神经网络模型利用预设的神经网络模型得到与多个深度可分离卷积计算单元一一对应的多个第一线程索引数据,与多个逐点卷积计算单元一一对应的多个第二线程索引数据,第一线程索引数据包括第一滑动窗口位置坐标、对应通道编号、第一滑动窗口尺寸和与第一滑动窗口位置坐标一一对应的第一卷积核数据,第二线程索引数据包括第二滑动窗口位置坐标、对应通道编号、第二滑动窗口尺寸和与第二滑动窗口位置坐标一一对应的第二卷积核数据;
第一滑动窗口位置坐标作为第一线程索引标识进行第一线程索引数据存储,第二滑动窗口位置坐标作为第二线程索引标识进行第二线程索引数据存储;
深度可分离卷积计算模块用于获取待检测图像的三维数据,利用当前通道的第一线程索引标识调用第一线程索引数据,依据第一滑动窗口内的待检测图像的三维数据作为第一卷积输入数据,该第一卷积输入数据与第一滑动窗口位置坐标对应的第一卷积核数据进行内积计算;利用移动端的多个深度可分离卷积计算单元进行多线程并行计算,遍历当前通道的第一线程索引标识,从而得到当前通道的第一特征图数据;
图2是本发明实施例的深度可分离卷积并行计算的示意图。如图2所示,其中,以各个通道调用对应的多个第一线程索引标识进行相应的深度可分离卷积计算,依据第一滑动窗口内的待检测图像的三维数据作为第一卷积输入数据,该第一卷积输入数据与第一滑动窗口位置坐标对应的第一卷积核数据进行内积计算;利用移动端的多个深度可分离卷积计算单元进行多线程并行计算,遍历当前通道的第一线程索引标识,从而得到当前通道的第一特征图数据;作为一个优选的实施例,滑动窗口与卷积核的内积计算可采用向量化计算以提高计算速度。进一步地,数据存储模块设置有float16类型向量模块,float16是长度为16的float类型的向量,该向量模块用于存储第一线程索引数据和第二线程索引数据,数据存储模块通过加载指令将多线程索引数据加载为float16类型向量,深度可分离卷积计算模块和/或逐点卷积计算模块调用向量内积指令实现内积计算;
以滑动窗口位置坐标形成线程索引的线程规划,当前通道的线程索引的线程计算对应位置的卷积输出,通过多通道的数据并行的方式并行加速卷积计算,单个通道的线程计算滑动窗口与卷积核数据的内积,通过向量内积计算,遍历当前通道的所有索引,进而可以完成当前通道的深度可分离卷积计算;
逐点卷积计算模块用于接收当前通道的第一特征图数据,利用当前通道的第二线程索引标识调用第二线程索引数据,依据第二滑动窗口内的当前通道的第一特征图数据作为第二卷积输入数据,该第二卷积输入数据与第二滑动窗口位置坐标对应的第二卷积核数据进行内积计算,得到当前通道的第二特征图数据;利用移动端的多个逐点卷积计算单元多线程并行计算,遍历所有通道的线程索引,得到第二输出特征图的所有输出数据,以提高对待检测图像的检测速度。
图3是本发明实施例的逐点卷积计算的示意图。如图3所示,其中,以各个通道调用对应的多个第二线程索引标识进行相应的逐点卷积计算,依据第二滑动窗口内的当前通道的第一特征图数据作为第二卷积输入数据,该第二卷积输入数据与第二滑动窗口位置坐标对应的第二卷积核数据进行内积计算,得到当前通道的第二特征图数据;利用移动端的多个逐点卷积计算单元多线程并行计算,遍历所有通道的线程索引,得到第二输出特征图的所有输出数据;作为一个优选的实施例,滑动窗口与卷积核的内积计算可采用向量化计算以提高计算速度。进一步地,数据存储模块设置有float16类型向量模块,float16是长度为16的float类型的向量,该向量模块用于存储第一线程索引数据和第二线程索引数据,数据存储模块通过加载指令将多线程索引数据加载为float16类型向量,深度可分离卷积计算模块和/或逐点卷积计算模块调用向量内积指令实现内积计算;
图4是本发明实施例的卷积神经网络加速系统的网络示意图。如图4所示,作为一个示例,用于训练的卷积神经网络模型的框架有Caffe、tensorflow、MXNet和Pytorch,作为一个优选,以Caffe为示例,以训练好卷积神经网络的网络结构文件和网络参数文件创建网络对象,遍历网络的每一层,将网络结构文件中的层类型、输入帧规格和输出帧规格写到新的网络结构文件中,若遍历到卷积层还需将多线程索引、padding、stride、group等参数写到新的网络结构文件中,再将量化后的网络模型参数写到新的模型参数文件中,到此便完成了离线预处理阶段的网络模型转换。将转换后的网络结构文件和网络模型参数加载到model对象和layer对象中,根据网络结构文件中层类型指定每一层的forward函数,模型加载成功后,再加载输入图像到卷积神经网络的数据层,执行网络前向预测得到计算结果。
在Mali GPU中,将多个着色器处理核心映射成OpenCL平台模型中的处理核心,每一个着色器处理核心中的多个线程映射成多个工作项,在Mali GPU的OpenCL标准中调用工作空间的工作项,底层通过调用Mali GPU中的多线程完成计算任务。由于Mali GPU的架构与高通的移动GPU以及桌面端GPU不同,Mali GPU对OpenCL内存模型的支持与其他的GPU有一定差异,Mali GPU中没有独立的显存,与Arm CPU共用机器上的主存。在OpenCL内存模型中,全局内存和局部内存本质是在机器的主存中,全局内存和局部内存的访问速度相同,将数据从全局内存加载到局部内存后再进行处理的优化方式在Mali GPU的OpenCL程序设计中不会有效果。因此,Mali GPU中的OpenCL中,将工作空间中的工作项划分成工作组不能起到优化作用。在Mali GPU的OpenCL异构并行计算框架中,可用的加速技术有基于多线程的数据并行、向量化和循环展开。数据并行需要编程人员将内核函数中的输入缓冲区提前规划成均匀的排列,在内核函数中利用Mali GPU中的多线程独立地访问数据。向量化是在内核函数中利用OpenCL提供的向量数据结构,将计算数据加载到向量中,并在单线程中利用SIMD指令加速计算。循环展开是在内核函数中的循环头部声明循环展开,并可指定循环展开的层数,编译器会自动展开程序优化代码执行效率。
图5是本发明实施例的卷积神经网络加速系统基于Mali GPU实现的网络示意图。如图5所示,基于Mali GPU实现上述计算的具体过程为:
获取用于计算的Mali GPU设备,依据第一索引数据和第二索引数据分布情况,通过操作命令入队的方式在调用设备上的计算资源,操作命令包括全局内存向主存传输命令、主存向全局内存传输命令和内核函数执行命令。在.cl文件中创建内核函数,并在编译成功的内核函数程序中对象中获取各个内核函数对象,即完成深度可分离卷积计算模块和/或逐点卷积计算模块的内核函数的构建;
卷积核神经网络模块还用于依据各通道的深度可分离卷积和逐点卷积所占的内存空间大小,创建对应的缓冲区。
卷积计算模块读取输入图像数据,执行操作命令并调用内核函数实现卷积计算。
本发明提出的加速系统在Firefly RK3399开发板和Huawei P8手机上实现了MobileNetSSD对象检测网络前向过程,MobileNetSSD的网络结构如图5所示,其主干网主要由深度可分离卷积计算单元(dw)和逐点卷积计算单元(pw)构成,网络包含13个带Relu激活函数的dw卷积、13个带Relu激活函数的pw卷积、5带Relu激活函数的3*3普通卷积和16个带Relu激活函数的1*1普通卷积,总共47个带Relu激活函数的卷积层。使用尺寸大小为300*300*3的图片数据进行性能测试,实验数据表明Firefly RK3399上Mali T860GPU的处理速度为350ms/image,Huawei P8手机上Mali T624GPU的处理速度为500ms/image。使用深度可分离卷积核逐点卷积替换原始的卷积,卷积计算量和参数量都有大幅度降低,尤其当原始卷积中的卷积核的数量和卷积核规格较大时,计算量和参数量压缩比更大,可获得更好的减少计算开销和存储开销的效果。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种适用于移动端的卷积神经网络加速方法,该移动端包括多个深度可分离卷积计算单元和多个逐点卷积计算单元,其特征在于,包括如下步骤:
获取待检测图像的参数,利用预设的神经网络模型得到与多个深度可分离卷积计算单元一一对应的多个第一线程索引数据,与多个逐点卷积计算单元一一对应的多个第二线程索引数据,所述第一线程索引数据包括第一滑动窗口位置坐标、对应通道编号、第一滑动窗口尺寸和与第一滑动窗口位置坐标一一对应的第一卷积核数据,所述第二线程索引数据包括第二滑动窗口位置坐标、对应通道编号、第二滑动窗口尺寸和与第二滑动窗口位置坐标一一对应的第二卷积核数据;
所述第一滑动窗口位置坐标作为第一线程索引标识进行第一线程索引数据存储,所述第二滑动窗口位置坐标作为第二线程索引标识进行第二线程索引数据存储;
获取待检测图像的三维数据,利用当前通道的第一线程索引标识调用第一线程索引数据,依据第一滑动窗口内的待检测图像的三维数据作为第一卷积输入数据,该第一卷积输入数据与第一滑动窗口位置坐标对应的第一卷积核数据进行内积计算;利用移动端的多个深度可分离卷积计算单元进行多线程并行计算,遍历当前通道的第一线程索引标识,得到当前通道的第一特征图数据;
利用当前通道的第二线程索引标识调用第二线程索引数据,依据第二滑动窗口内的当前通道的第一特征图数据作为第二卷积输入数据,该第二卷积输入数据与第二滑动窗口位置坐标对应的第二卷积核数据进行内积计算,得到当前通道的第二特征图数据;
利用移动端的多个逐点卷积计算单元进行多线程并行计算,遍历所有通道的线程索引,得到第二输出特征图的所有输出数据,以提高对待检测图像的检测速度。
2.根据权利要求1所述的一种适用于移动端的卷积神经网络加速方法,其特征在于,所述第一线程索引数据和/或第二线程索引数据采用向量化存储方式。
3.根据权利要求2所述的一种适用于移动端的卷积神经网络加速方法,其特征在于,通过加载指令将所述第一线程索引数据和/或第二线程索引数据加载为float16类型向量,调用向量内积指令实现内积计算。
4.一种适用于移动端的卷积神经网络加速系统,其包括依次连接的卷积核神经网络模块、深度可分离卷积计算模块、逐点卷积计算模块和数据存储模块,其中,数据存储模块还连接卷积核神经网络模块和深度可分离卷积计算模块,所述深度可分离卷积计算模块包括多个深度可分离卷积计算单元,所述逐点卷积计算模块包括多个逐点卷积计算单元,其特征在于,
所述卷积核神经网络模块用于获取待检测图像的参数,利用预设的神经网络模型利用预设的神经网络模型得到与多个深度可分离卷积计算单元一一对应的多个第一线程索引数据,与多个逐点卷积计算单元一一对应的多个第二线程索引数据,所述第一线程索引数据包括第一滑动窗口位置坐标、对应通道编号、第一滑动窗口尺寸和与第一滑动窗口位置坐标一一对应的第一卷积核数据,所述第二线程索引数据包括第二滑动窗口位置坐标、对应通道编号、第二滑动窗口尺寸和与第二滑动窗口位置坐标一一对应的第二卷积核数据;
所述数据存储模块用于存储卷积核神经网络模块发送的第一线程索引数据和第二线程索引数据,其中,第一线程索引数据和第二线程索引数据的存储过程为:
所述第一滑动窗口位置坐标作为第一线程索引标识进行第一线程索引数据存储,所述第二滑动窗口位置坐标作为第二线程索引标识进行第二线程索引数据存储;
所述深度可分离卷积计算模块用于获取待检测图像的三维数据,利用当前通道的第一线程索引标识调用第一线程索引数据,依据第一滑动窗口内的待检测图像的三维数据作为第一卷积输入数据,该第一卷积输入数据与第一滑动窗口位置坐标对应的第一卷积核数据进行内积计算;利用移动端的多个深度可分离卷积计算单元进行多线程并行计算,遍历当前通道的第一线程索引标识,从而得到当前通道的第一特征图数据;
所述逐点卷积计算模块用于接收当前通道的第一特征图数据,利用当前通道的第二线程索引标识调用第二线程索引数据,依据第二滑动窗口内的当前通道的第一特征图数据作为第二卷积输入数据,该第二卷积输入数据与第二滑动窗口位置坐标对应的第二卷积核数据进行内积计算,得到当前通道的第二特征图数据;利用移动端的多个逐点卷积计算单元进行多线程并行计算,遍历所有通道的线程索引,得到第二输出特征图的所有输出数据,以提高对待检测图像的检测速度。
5.根据权利要求4所述的一种适用于移动端的卷积神经网络加速系统,其特征在于,所述数据存储模块包括float向量模块,该模块用于以float向量类型存储第一线程索引数据和/或第二线程索引数据。
6.根据权利要求5所述的一种适用于移动端的卷积神经网络加速系统,其特征在于,所述数据存储模块通过加载指令将所述第一线程索引数据和/或第二线程索引数据加载为float16类型向量,所述深度可分离卷积计算模块和/或逐点卷积计算模块调用向量内积指令实现内积计算。
7.根据权利要求4-6中任一项所述的一种适用于移动端的卷积神经网络加速系统,其特征在于,用于搭建的卷积核神经网络模块的模型框架包括:Caffe、tensorflow、MXNet和Pytorch。
8.根据权利要求4-7中任一项所述的一种适用于移动端的卷积神经网络加速系统,其特征在于,该系统可利用基于Mali GPU的移动设备实现,具体过程为:
获取用于计算的Mali GPU设备,依据第一索引数据和第二索引数据分布情况,通过操作命令入队的方式在调用设备上的计算资源,操作命令包括全局内存向主存传输命令、主存向全局内存传输命令和内核函数执行命令;在.cl文件中创建内核函数以实现深度可分离卷积计算模块和/或逐点卷积计算模块的内核函数的构建。
9.根据权利要求8所述的一种适用于移动端的卷积神经网络加速系统,其特征在于,所述卷积核神经网络模块还用于依据各通道的深度可分离卷积和逐点卷积所占的内存空间大小,创建对应的缓冲区。
10.根据权利要求8所述的一种适用于移动端的卷积神经网络加速系统,其特征在于,所述深度可分离卷积计算模块和/或逐点卷积计算模块执行操作命令并调用内核函数实现卷积计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910637446.8A CN110458280B (zh) | 2019-07-15 | 2019-07-15 | 一种适用于移动端的卷积神经网络加速方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910637446.8A CN110458280B (zh) | 2019-07-15 | 2019-07-15 | 一种适用于移动端的卷积神经网络加速方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110458280A true CN110458280A (zh) | 2019-11-15 |
CN110458280B CN110458280B (zh) | 2022-08-30 |
Family
ID=68481246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910637446.8A Active CN110458280B (zh) | 2019-07-15 | 2019-07-15 | 一种适用于移动端的卷积神经网络加速方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110458280B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110909801A (zh) * | 2019-11-26 | 2020-03-24 | 山东师范大学 | 基于卷积神经网络的数据分类方法、系统、介质及设备 |
CN110942139A (zh) * | 2019-11-22 | 2020-03-31 | 深圳市魔数智擎人工智能有限公司 | 深度学习神经网络部署系统及其方法 |
CN111079904A (zh) * | 2019-12-23 | 2020-04-28 | 福建星网视易信息系统有限公司 | 深度可分离卷积的加速方法、存储介质及应用 |
CN111563580A (zh) * | 2020-04-28 | 2020-08-21 | 京东方科技集团股份有限公司 | 一种卷积神经网络实现装置及方法 |
CN111797985A (zh) * | 2020-07-22 | 2020-10-20 | 哈尔滨工业大学 | 一种基于gpu的卷积运算内存访问优化方法 |
CN113378863A (zh) * | 2021-07-09 | 2021-09-10 | 上海商汤科技开发有限公司 | 一种图像处理方法及装置、电子设备和存储介质 |
CN113591098A (zh) * | 2021-06-11 | 2021-11-02 | 浙江大学 | 一种基于sgx的远程安全异构计算方法和系统 |
WO2022041188A1 (zh) * | 2020-08-31 | 2022-03-03 | 深圳市大疆创新科技有限公司 | 用于神经网络的加速器、方法、装置及计算机存储介质 |
CN114399828A (zh) * | 2022-03-25 | 2022-04-26 | 深圳比特微电子科技有限公司 | 用于图像处理的卷积神经网络模型的训练方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170147944A1 (en) * | 2015-11-24 | 2017-05-25 | Xerox Corporation | Adapted domain specific class means classifier |
CN106779060A (zh) * | 2017-02-09 | 2017-05-31 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
US20190188237A1 (en) * | 2017-12-18 | 2019-06-20 | Nanjing Horizon Robotics Technology Co., Ltd. | Method and electronic device for convolution calculation in neutral network |
CN109949304A (zh) * | 2018-03-29 | 2019-06-28 | 北京昆仑医云科技有限公司 | 图像检测学习网络的训练和获取方法、图像检测装置和介质 |
-
2019
- 2019-07-15 CN CN201910637446.8A patent/CN110458280B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170147944A1 (en) * | 2015-11-24 | 2017-05-25 | Xerox Corporation | Adapted domain specific class means classifier |
CN106779060A (zh) * | 2017-02-09 | 2017-05-31 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
US20190188237A1 (en) * | 2017-12-18 | 2019-06-20 | Nanjing Horizon Robotics Technology Co., Ltd. | Method and electronic device for convolution calculation in neutral network |
CN109949304A (zh) * | 2018-03-29 | 2019-06-28 | 北京昆仑医云科技有限公司 | 图像检测学习网络的训练和获取方法、图像检测装置和介质 |
Non-Patent Citations (2)
Title |
---|
FRANCOIS CHOLLET: "Xception: Deep Learning with Depthwise Separable Convolutions", 《2017 IEEE CONFERENCE ON COMPUTER VISION AND PATTERN RECOGNITION(CVPR)》 * |
吴天舒等: "基于改进SSD的轻量化小目标检测算法", 《红外与激光工程》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110942139A (zh) * | 2019-11-22 | 2020-03-31 | 深圳市魔数智擎人工智能有限公司 | 深度学习神经网络部署系统及其方法 |
CN110909801A (zh) * | 2019-11-26 | 2020-03-24 | 山东师范大学 | 基于卷积神经网络的数据分类方法、系统、介质及设备 |
CN111079904A (zh) * | 2019-12-23 | 2020-04-28 | 福建星网视易信息系统有限公司 | 深度可分离卷积的加速方法、存储介质及应用 |
CN111079904B (zh) * | 2019-12-23 | 2023-05-23 | 福建星网视易信息系统有限公司 | 深度可分离卷积的加速方法和存储介质 |
CN111563580A (zh) * | 2020-04-28 | 2020-08-21 | 京东方科技集团股份有限公司 | 一种卷积神经网络实现装置及方法 |
CN111563580B (zh) * | 2020-04-28 | 2024-03-08 | 京东方科技集团股份有限公司 | 一种卷积神经网络实现装置及方法 |
CN111797985B (zh) * | 2020-07-22 | 2022-11-22 | 哈尔滨工业大学 | 一种基于gpu的卷积运算内存访问优化方法 |
CN111797985A (zh) * | 2020-07-22 | 2020-10-20 | 哈尔滨工业大学 | 一种基于gpu的卷积运算内存访问优化方法 |
WO2022041188A1 (zh) * | 2020-08-31 | 2022-03-03 | 深圳市大疆创新科技有限公司 | 用于神经网络的加速器、方法、装置及计算机存储介质 |
CN113591098A (zh) * | 2021-06-11 | 2021-11-02 | 浙江大学 | 一种基于sgx的远程安全异构计算方法和系统 |
CN113591098B (zh) * | 2021-06-11 | 2024-03-26 | 浙江大学 | 一种基于sgx的远程安全异构计算方法和系统 |
CN113378863A (zh) * | 2021-07-09 | 2021-09-10 | 上海商汤科技开发有限公司 | 一种图像处理方法及装置、电子设备和存储介质 |
CN113378863B (zh) * | 2021-07-09 | 2023-12-19 | 上海商汤科技开发有限公司 | 一种图像处理方法及装置、电子设备和存储介质 |
CN114399828A (zh) * | 2022-03-25 | 2022-04-26 | 深圳比特微电子科技有限公司 | 用于图像处理的卷积神经网络模型的训练方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110458280B (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110458280A (zh) | 一种适用于移动端的卷积神经网络加速方法及系统 | |
CN109993299B (zh) | 数据训练方法及装置、存储介质、电子装置 | |
DE102020118004A1 (de) | Verfahren und vorrichtungen zum kachelförmigen durchlaufen eines tensors für faltungsoperationen | |
CN108664999A (zh) | 一种分类模型的训练方法及其装置、计算机服务器 | |
CN107563512B (zh) | 一种数据处理方法、装置以及存储介质 | |
DE102020110688A1 (de) | Hardware-agnostischer compiler für tiefgehende neuronale netze | |
DE102020115581A1 (de) | Lenkung von planungsabhängigkeiten durch einen compiler für neuronale netze | |
CN103460253B (zh) | 用于图形处理的像素值精简 | |
CN111651207B (zh) | 一种神经网络模型运算芯片、方法、装置、设备及介质 | |
CN105739951B (zh) | 一种基于gpu的l1最小化问题快速求解方法 | |
US20130318068A1 (en) | Method for serial and condition-based execution of operators by parallel processes | |
CN111539526B (zh) | 一种神经网络卷积的方法和设备 | |
CN111369430B (zh) | 基于移动深度学习引擎的移动端人像智能背景替换方法 | |
CN115249315B (zh) | 面向异构计算设备的深度学习图像分类方法及装置 | |
CN110991279B (zh) | 文档图像分析与识别方法及系统 | |
CN112764893B (zh) | 数据处理方法和数据处理系统 | |
CN114972323B (zh) | 一种用于模型训练的缺陷图片生成方法及系统 | |
Ye et al. | A new approach for resource scheduling with deep reinforcement learning | |
CN111985597A (zh) | 模型压缩方法及装置 | |
CN116012633A (zh) | 算子优化方法及相关设备 | |
CN109978058A (zh) | 确定图像分类的方法、装置、终端及存储介质 | |
CN115294296A (zh) | 一种基于图像预训练模型提示学习的三维物体识别方法 | |
CN103679815B (zh) | 基于表面搜索的可视外壳生成方法及装置 | |
CN113704520B (zh) | 利用cuda并行加速Anchor-based数据的处理方法、装置以及电子设备 | |
WO2024128372A1 (ko) | 차세대 고속 경량 객체인식 fpga npu 시스템을 위한 계산유닛, 버퍼 및 데이터 이동 최적화 방법론 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |