CN110874605B - 图像识别处理方法和装置 - Google Patents
图像识别处理方法和装置 Download PDFInfo
- Publication number
- CN110874605B CN110874605B CN201811010061.0A CN201811010061A CN110874605B CN 110874605 B CN110874605 B CN 110874605B CN 201811010061 A CN201811010061 A CN 201811010061A CN 110874605 B CN110874605 B CN 110874605B
- Authority
- CN
- China
- Prior art keywords
- parameters
- neural network
- unit
- convolution
- convolutional neural
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 220
- 230000004913 activation Effects 0.000 claims abstract description 99
- 238000012545 processing Methods 0.000 claims abstract description 74
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000013528 artificial neural network Methods 0.000 claims abstract description 26
- 230000015654 memory Effects 0.000 claims description 96
- 238000011176 pooling Methods 0.000 claims description 57
- 230000005540 biological transmission Effects 0.000 claims description 45
- 238000007781 pre-processing Methods 0.000 claims description 30
- 238000009825 accumulation Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 17
- 230000000694 effects Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 101100311460 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sum2 gene Proteins 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000001328 optic nerve Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
-
- 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
-
- 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
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/955—Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Biomedical Technology (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biodiversity & Conservation Biology (AREA)
- Evolutionary Biology (AREA)
- Image Analysis (AREA)
Abstract
本发明提供一种图像识别处理方法和装置。该方法包括:获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,原始图像数据包括M个像素点数据,M为正整数;由卷积神经网络运算模块根据卷积神经网络配置参数和卷积神经网络运算参数对所述原始图像数据进行卷积神经网络运算,其中,所述卷积神经网络运算模块包括N个并行设置的运算组件,每个运算组件包括依次连接的卷积运算单元、批处理运算单元和激活运算单元,所述N个运算组件分别对所述原始图像数据中的N个像素点数据同时进行卷积运算、批处理运算和激活运算,N为小于或等于M的正整数。本发明实施例还提供对应的装置,本发明实施例提供的技术方案提升了图像识别处理的实时性。
Description
技术领域
本发明属于数据处理领域,具体涉及一种图像识别处理方法和装置。
背景技术
卷积神经网络(Convolutional Neural Network,简称CNN)最早由Yann Lecun提出,并且应用于手写数字识别并一直保持了其在该领域的霸主地位。近年来卷积神经网络在多个方向持续发力,在语音识别、人脸识别、通用物体识别、运动分析、自然语言处理甚至脑电波分析方面均有突破。CNN可以被扩大规模并且被配置成支持对学习处理的数据集添加标签。在这些条件下,已经发现CNN在学习复杂并且鲁棒的图像特征方面是成功的。
CNN是一种前馈人工神经网络,其中各个单独的神经元以使得其对视场中的重叠区段作出响应的方式被拼贴。CNN是受到生物的视神经行为的启发。CNN利用多层神经元连接处理图像数据,从而在图像识别中实现高准确度。
单一处理器在计算能力方面受到限制,因此,需要对其他计算配置进行探索以便满足支持CNN的需求。在各个探索领域当中,对于以图形处理单元(GPU)、多核处理器、现场可编程门阵列(FPGA)和专用集成电路(ASIC)上的通用计算的形式,利用硬件专门化的CNN加速器进行实现。需要说明的是,因为软件无法满足图像数据处理速度方面的需求,所以在图像数据处理领域,CNN加速器是通过硬件来实现的。
现有技术中在进行图像识别处理时,其中的CNN运算需要对图像数据进行多次运算,且运算过程采用串行方式进行,存在运算效率低,实时性差的技术问题。
发明内容
针对现有技术中的图像识别处理方法实时性较差的问题,本发明提供了一种图像识别处理方法和装置,实现卷积神经网络运算的并行处理,提升图像识别处理的实时性。
为了达到上述目的,本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种图像识别处理方法,包括:
获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,原始图像数据包括M个像素点数据,M为正整数;
由卷积神经网络运算模块根据卷积神经网络配置参数和卷积神经网络运算参数对原始图像数据进行卷积神经网络运算,其中,卷积神经网络运算模块包括N个并行设置的运算组件,每个运算组件包括依次连接的卷积运算单元、批处理运算单元和激活运算单元,所述N个运算组件分别对原始图像数据中的N个像素点数据同时进行卷积运算、批处理运算和激活运算,N为小于或等于M的正整数。
可选的,获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数包括:
通过数据传输总线获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数。
可选的,通过数据传输总线获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数包括:
通过先进可扩展接口AXI总线获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数。
可选的,获取原始图像数据包括通过第一接口获取原始图像数据,并将原始图像数据写入到第一存储单元中;
获取卷积神经网络配置参数包括通过第一接口获取参数配置指令,并将参数配置指令发送给参数分发模块,参数配置指令包括卷积神经网络配置参数;
获取卷积神经网络运算参数包括通过第二接口获取卷积运算参数、批处理运算参数和激活运算参数,并将卷积运算参数和批处理运算参数写入到第二存储单元中,将激活运算参数发送给参数分发模块。
可选的,还包括:
运算控制模块从参数分发模块获取卷积神经网络配置参数中的控制类配置参数;
运算控制模块根据控制类配置参数控制从第一接口获取原始图像数据、从第一接口获取参数配置指令以及从第二接口获取卷积运算参数、批处理运算参数和激活运算参数;
运算控制模块将卷积神经网络配置参数中的控制类配置参数发送给卷积神经网络运算模块。
可选的,卷积神经网络运算模块还包括运算控制单元,方法还包括:
运算控制单元接收卷积神经网络配置参数中的控制类配置参数,控制类配置参数包括输入或者输出原始图像尺寸、每层卷积神经网络的输入或者输出通道数目,并根据控制类配置参数控制从第一存储单元中读取原始图像数据,从第二存储单元中读取卷积运算参数和批处理运算参数,并将原始图像数据、卷积运算参数和批处理运算参数发送给卷积运算单元。
可选的,方法还包括:
所述运算控制模块从所述参数分发模块获取所述激活运算参数和所述卷积神经网络配置参数中的运算类配置参数,所述运算类配置参数包括卷积预算配置参数、卷积内核大小和池化方式;
所述运算控制模块将所述激活运算参数和所述卷积神经网络配置参数中的运算类配置参数发送给所述卷积神经网络运算模块的运算控制单元;
所述运算控制单元将激活运算参数发送给激活运算单元,以及将所述卷积运算配置参数、所述卷积内核大小发送给卷积运算单元,以及将所述池化方式发送给池化单元;或者,
所述参数分发模块直接将所述激活运算参数发送给激活运算单元,以及将所述卷积运算配置参数和所述卷积内核大小发送给卷积运算单元,以及将所述池化方式发送给池化单元。
可选的,方法还包括:
对从第一存储单元中读取的原始图像数据进行图像填充处理后发送给卷积运算单元;以及,对从第二存储单元中获取的卷积运算参数进行累加求和处理后发送给卷积运算单元。
可选的,第二存储单元包括第一存储器、第二存储器和第三存储器,将卷积运算参数和批处理运算参数写入到第二存储单元,以及从第二存储单元读取卷积运算参数和批处理运算参数包括:
将卷积运算参数写入到第一存储器或第二存储器中,以及从第一存储器或第二存储器中读取卷积运算参数,且在向第一存储器写入卷积运算参数时,从第二存储器中读取卷积运算参数,或者,在向第二存储器写入卷积运算参数时,从第一存储器中读取卷积运算参数;
将批处理运算参数写入到第三存储器中,以及从第三存储器中读取批处理运算参数。
第二方面,本发明实施例还提供了一种图像识别处理装置,包括:
参数获取模块,用于获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,原始图像数据包括M个像素点数据,M为正整数;
卷积神经网络运算模块,与参数获取模块连接,用于根据卷积神经网络配置参数和卷积神经网络运算参数对原始图像数据进行卷积神经网络运算,其中,卷积神经网络运算模块包括N个并行设置的运算组件,每个运算组件包括依次连接的卷积运算单元、批处理运算单元和激活运算单元,所述N个运算组件分别对原始图像数据中的N个像素点数据同时进行卷积运算、批处理运算和激活运算,N为小于或等于M的正整数。
可选的,还包括参数分发模块,参数获取模块包括数据传输总线、第一接口、第二接口、第一存储单元和第二存储单元;
数据传输总线用于传输原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数;
第一接口的第一端与数据传输总线连接,第一接口的第二端分别与参数分发模块和第一存储单元连接,第一接口用于从数据传输总线获取原始图像数据并写入第一存储单元,以及从数据传输总线获取参数配置指令,并发送给参数分发模块,参数配置指令包括卷积神经网络配置参数;
第二接口的第一端与数据传输总线连接,第二接口的第二端分别与参数分发模块和第二存储单元连接,第二接口用于从数据传输总线获取卷积运算参数、批处理运算参数和激活运算参数,并将卷积运算参数和批处理运算参数写入到第二存储单元中,将激活运算参数发送给参数分发模块。
可选的,还包括运算控制模块,运算控制模块分别与参数分发模块和卷积神经网络运算模块连接;
运算控制模块用于从参数分发模块获取卷积神经网络配置参数中的控制类配置参数;以及用于根据控制类配置参数控制从第一接口获取原始图像数据、从第一接口获取参数配置指令以及从第二接口获取卷积运算参数、批处理运算参数和激活运算参数;以及用于将卷积神经网络配置参数中的控制类配置参数发送给卷积神经网络运算模块。
可选的,卷积神经网络运算模块还包括运算控制单元,运算控制单元的参数输入端与控制模块连接,以及运算控制单元的控制端分别与卷积运算单元、批处理运算单元和激活运算单元连接;
运算控制单元用于接收卷积神经网络配置参数中的控制类配置参数,所述控制类配置参数包括输入或者输出原始图像尺寸、每层卷积神经网络的输入或者输出通道数目,并根据控制类配置参数控制从第一存储单元中读取原始图像数据,并将该原始图像数据发送给卷积运算单元,控制从第二存储单元中读取卷积运算参数和批处理运算参数,并将卷积运算参数和批处理运算参数发送给卷积运算单元;以及用于将激活运算参数发送给激活运算单元。
可选的,卷积神经网络运算模块还包括池化单元和写回单元,分别与运算控制单元的控制端连接;所述运算控制模块还用于从所述参数分发模块获取所述激活运算参数和所述卷积神经网络配置参数中的运算类配置参数,所述运算类配置参数包括卷积预算配置参数、卷积内核大小和池化方式,以及用于将所述激活运算参数和所述卷积神经网络配置参数中的运算类配置参数发送给所述卷积神经网络运算模块的运算控制单元,所述运算控制单元还用于将激活运算参数发送给激活运算单元,以及将所述卷积运算配置参数、所述卷积内核大小发送给卷积运算单元,以及将所述池化方式发送给池化单元;或者,
所述参数分发模块直接与所述激活运算单元、所述卷积运算单元和所述池化单元连接,所述参数分发模块用于直接将所述激活运算参数发送给激活运算单元,以及将所述卷积运算配置参数和所述卷积内核大小发送给卷积运算单元,以及将所述池化方式发送给池化单元。
可选的,卷积神经网络运算模块还包括:
图像预处理单元,设置在第一存储单元和卷积运算单元之间,用于对原始图像数据进行图像填充处理后发给卷积运算单元;
参数预处理单元,设置在第二存储单元和卷积运算单元之间,用于对卷积运算参数进行累加求和后发送给卷积运算单元。
可选的,参数获取模块还包括数据读写单元,数据读写单元分别与第一接口和第一存储单元连接,分别与第二接口和第二存储单元连接,分别与图像预处理单元和参数预处理单元连接,以及与写回单元连接;
数据读写单元用于从第一接口获取原始图像数据,并写入到第一存储单元,以及从第一存储单元读取原始图像数据,并发送给图像预处理单元;
数据读写单元还用于从第二接口获取卷积运算参数和批处理运算参数,并写入到第二存储单元,以及从第二存储单元读取卷积运算参数和批处理运算参数,并发送给参数预处理单元
数据读写单元还用于将写回单元发送的池化运算后的图像数据写入到第一存储单元。
可选的,第二存储单元包括第一存储器、第二存储器和第三存储器,参数读取单元具体用于将卷积运算参数写入到第一存储器或第二存储器中,以及从第一存储器或第二存储器读取所述卷积运算参数,且在向所述第一存储器写入所述卷积运算参数时,从所述第二存储器中读取所述卷积运算参数,或者,在向所述第二存储器写入所述卷积运算参数时,从所述第一存储器中读取所述卷积运算参数;
将所述批处理运算参数写入到所述第三存储器,以及从第三存储器中读取所述批处理运算参数。
可选的,还包括:
数据暂存单元,与每个运算组件的卷积运算单元连接,用于存储卷积运算单元运算后的每个输入通道的卷积运算结果。
可选的,数据传输总线为先进可扩展接口AXI总线。
本发明实施例提供的技术方案,其中在图像识别处理过程中,在进行CNN运算时,卷积神经网络运算模块包括N个并行设置的运算组件,每个运算组件包括依次连接的卷积运算单元、批处理运算单元和激活运算单元,而所述N个运算组件分别对原始图像数据中的N个像素点数据同时进行卷积运算、批处理运算和激活运算,其中N为小于或等于M的正整数,即可以实现由运算组件同时对N个像素点数据进行上述运算,达到对原始图像数据进行并行运算的技术效果,相当于现有技术中以串行方式依次对每个像素点数据进行CNN运算,提供了运算效率,提升了图像识别处理过程的实时性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
结合附图,通过以下非限制性实施方式的详细描述,本发明的其它特征、目的和优点将变得更加明显。
在附图中:
图1为本发明实施例提供的图像识别处理方法的流程示意图;
图2为本发明实施例提供的卷积神经网络运算模块的结构示意图;
图3为本发明实施例提供的一种图像识别处理装置的结构示意图;
图4为本发明实施例提供的另一种图像识别处理装置的结构示意图;
图5为本发明实施例提供的再一种图像识别处理装置的结构示意图;
图6为本发明实施例提供的第一存储单元所使用的存储器中的存储示意图;
图7为发明实施例提供的卷积运算示意图;
图8为本发明实施例提供的第二存储单元的结构示意图。
具体实施方式
下文中,将参考附图详细描述本发明的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本发明中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
如背景技术中所述,现有技术中在进行图像识别处理时,其中的卷积神经网络运算模块需要对原始图像数据进行多次运算,而其中的运算过程是采用串行方式对每个像素点分别进行运算,存在运算效率低,实时性差的技术问题。
针对现有技术中的图像识别过程中,卷积神经网络运算时存在的上述技术问题,本发明提供了一种图像识别处理方法。图1为本发明实施例提供的图像识别处理方法的流程示意图,如图1所示,该方法包括如下步骤:
步骤101、获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,上述原始图像数据包括M个像素点数据,M为正整数;
具体的,本步骤中是在利用卷积神经网络进行图像识别,以识别图像中的人、动物或车辆等特征信息时,首先需要获取原始图像数据,并进一步获取卷积神经网络配置参数和卷积神经网络运算参数,卷积神经网络运算可以包括多层运算,而上述的配置参数和运算参数是进行每层卷积神经网络运算所需要的流程控制参数或运算参数,例如包括进行卷积运算、批处理运算和激活运算时所使用的运算参数,具体的,本步骤中可以设置专门的参数获取模块来获取上述的原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数。
步骤102、由卷积神经网络运算模块根据上述卷积神经网络配置参数和卷积神经网络运算参数对原始图像数据进行卷积神经网络运算,其中,卷积神经网络运算模块包括N个并行设置的运算组件,每个运算组件包括依次连接的卷积运算单元、批处理运算单元和激活运算单元,所述N个运算组件分别对原始图像数据中的N个像素点数据同时进行卷积运算、批处理运算和激活运算,N为小于或等于M的正整数。
具体的,在上述步骤101中获取到原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数的基础上,将原始图像数据输入到卷积神经网络运算模块中进行运算。参照图2所示,图2为本发明实施例提供的卷积神经网络运算模块的结构示意图,如图2所述,该模块包括N个并行设置的运算组件21,且每个运算组件包括依次连接的卷积运算单元22、批处理运算单元23和激活运算单元24,在进行运算时,每个像素点数据输入到一个运算组件中,则N个运算组件可以同时处理N个像素点数据,以使得各像素点数据同时在对应的运算组件中进行卷积运算、批处理运算和激活运算,实现并行运算的效果,进而能够提高卷积神经网络运算的运算效率,提升了图像识别过程的实时性。
在图1所示的实施例中,其中的步骤101中获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数可以具体为:通过数据传输总线获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,即除了获取原始图像数据外,还可以采用实时获取的方式从数据传输总线中获取到卷积神经网络配置参数和卷积神经网络运算参数,且通过该方式获取的配置参数和运算参数,可以根据实际运算需求进行实时调整,实现卷积神经网络运算的可编程性和可配置性,同时也可以支持不同规模的卷积神经网络架构。
进一步的,上述的数据传输总线可以为先进可扩展接口AXI总线,即可以通过AXI总线获取上述的原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数。具体的,该AXI总线可以是一种符合ARM架构的数据传输总线,本实施例提供的技术方案能够兼容现有的ARM架构。AXI总线也是一种面向高性能、高带宽、低延迟的片内总线,能够满足超高性能和复杂的片上系统设计需求,符合本发明实施例中利用硬件系统实现卷积神经网络实时运算的需求。
在利用上述的数据传输总线(例如AXI总线)传输原始图像数据和卷积神经网络运算参数时,可以设置专用的接口与上述数据传输总线配合,以从数据传输总线上获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,并且进一步的,可以分别为原始图像数据和卷积神经网络运算参数设置对应的存储单元。
具体的,可以设置两个接口,即第一接口和第二接口,其中通过第一接口获取原始图像数据,并将所述原始图像数据写入到第一存储单元中,以及通过第一接口获取参数配置指令,并将参数配置指令发送给参数分发模块,该参数配置指令中包括卷积神经网络配置参数,具体的,可以是为每一层卷积神经网络匹配多条(例如12条)参数配置指令,该第一接口最多支持一次接收若干层(例如13层)网络的参数配置指令,当一层卷积神经网络的参数配置指令使用完毕后,可以接收新一层网络的参数配置指令。上述的卷积神经网络配置参数可以包括但不限于输入或者输出原始图像尺寸、每层卷积神经网络的输入或者输出通道数目、卷积内核大小、池化方式等,还可以包括卷积运算过程中所使用的对于每层卷积神经网络运算而言相对固定的乘法系数、移位系数和加法系数,即可以称为卷积运算配置参数。每一条参数配置指令可以是64bit定长,不同bit代表不同的含义,参数分发模块可以解析每条参数配置指令以获取其中的配置参数,分发给其他模块进行使用。另外,还可以通过第二接口获取卷积运算参数、批处理运算参数和激活运算参数,并将卷积运算参数和批处理运算参数写入到第二存储单元中,将激活运算参数发送给参数分发模块。
上述步骤中通过将原始图像数据存储到第一存储单元中,以及将卷积神经网络运算参数存储到第二存储单元中,可以实现上述两类数据的分别存储,在卷积神经网络运算模块执行运算步骤时,可以分别从第一存储单元中读取原始图像数据,以及从第二存储单元中读取所述卷积神经网络运算参数,并将上述两类数据发送给卷积神经网络运算模块来执行运算步骤。
进一步的,在图像识别处理装置中,还可以包括运算控制模块,上述方法还可以进一步包括:
运算控制模块从参数分发模块获取卷积神经网络配置参数中的控制类配置参数,该运算控制模块还可以根据上述控制类配置参数对整个本发明实施例所涉及的图像识别处理方法的整个流程进行控制,例如可以控制从第一接口获取原始图像数据、从第一接口获取参数配置指令以及从第二接口获取卷积运算参数、批处理运算参数和激活运算参数。另外,该运算控制模块将卷积神经网络配置参数中的控制类配置参数发送给卷积神经网络运算模块,可以控制何时启动卷积神经网络运算。
进一步的,在卷积神经网络运算模块中,还可以包括运算控制单元,本发明实施例提供的方法还包括:运算控制单元接收卷积神经网络运算配置参数中的控制类配置参数,并可以基于卷积神经网络运算配置参数中的控制类配置参数控制卷积神经网络运算流程,上述控制类配置参数包括但不限于输入或者输出原始图像尺寸、每层卷积神经网络的输入或者输出通道数目。具体包括根据控制类配置参数控制从第一存储单元中读取原始图像数据,从第二存储单元中读取卷积运算参数和批处理运算参数,并将所述原始图像数据、卷积运算参数和批处理运算参数发送给卷积运算单元。本发明实施例中,对于每个运算组件中的卷积运算单元和批处理运算单元,其可以合并为同一个单元。
此外,对于卷积神经网络配置参数中的运算类配置参数和激活运算参数,可以通过两种方式发送给各个运算单元,即第一种方式是由运算控制模块和卷积神经网络运算模块的运算控制单元进行转发,第二种方式是由参数分发模块直接进行分发。具体的,第一种方式进一步包括:
运算控制模块从参数分发模块获取激活运算参数和卷积神经网络配置参数中的运算类配置参数,该运算类配置参数包括卷积预算配置参数、卷积内核大小和池化方式;
运算控制模块将激活运算参数和卷积神经网络配置参数中的运算类配置参数发送给卷积神经网络运算模块的运算控制单元;
运算控制单元将激活运算参数发送给激活运算单元,以及将卷积运算配置参数、卷积内核大小发送给卷积运算单元,以及将池化方式发送给池化单元。
第二种方式进一步包括:参数分发模块直接将卷积运算配置参数和卷积内核大小发送给卷积运算单元,以及将激活运算参数发送给激活运算单元,以及将池化方式发送给池化单元。
通过上述两种方式进行激活运算参数和卷积神经网络配置参数中的运算类配置参数分发后,卷积运算单元可以根据卷积运算配置参数和卷积内核大小进行卷积运算,激活运算单元可以根据激活运算参数进行激活运算,以及池化单元可以根据池化方式进行池化运算,即卷积神经网络运算还可以进一步包括池化运算步骤和写回步骤,即上述方法还可以进一步包括:池化单元根据池化方式对激活运算处理后的图像数据进行池化运算,并将池化运算后的图像数据写回到第一存储单元中。具体的,在每层卷积神经网络运算完成后,可以将该层运算处理后的图像数据写回到第一存储单元中,以进行下一层的卷积神经网络运算,在进行下一层的卷积神经网络运算时,还可以利用上述N个运算组件进行并行处理,以提高卷积神经网络运算效率。
进一步的,卷积神经网络运算还可以进一步包括预处理步骤,该预处理步骤包括对原始图像数据进行图像填充处理,即对从第一存储单元中读取的原始图像数据进行图像填充处理后发送给卷积运算单元,本步骤中的图像填充处理可以是对图像的上下左右边界进行填充,以迎合卷积运算过程中卷积内核大小对图像数据的需求;以及对从第二存储单元中获取的卷积运算参数进行累加求和处理后发送给卷积运算单元,具体的,还可以将初始获取的卷积运算参数也发送给卷积运算单元。
本发明上述实施例中,其中的将卷积运算参数和批处理运算参数存储到第二存储单元中,该第二存储单元可以包括第一存储器、第二存储器和第三存储器,则上述方法中将卷积运算参数和批处理运算参数写入到第二存储单元,以及从第二存储单元读取卷积运算参数和批处理运算参数可以具体包括:
将卷积运算参数写入到第一存储器或第二存储器中,以及从第一存储器或第二存储器中读取所述卷积运算参数,且在向第一存储器写入卷积运算参数时,从第二存储器中读取卷积运算参数,或者,在向第二存储器写入卷积运算参数时,从第一存储器中读取所述卷积运算参数。即采用一种乒乓操作的方式,交替向第一存储器和第二存储器中写入卷积神经网络运算参数,以及交替从第一存储器和第二存储器中读取卷积神经网络运算参数,提高参数读写效率,提升整个图像识别处理过程的实时性。而对于批处理运算参数,可以是将批处理运算参数写入到第三存储器中,以及从第三存储器中读取所述批处理运算参数。
与上述方法实施例对应的,本发明实施例还提供了一种图像识别处理装置,能够执行上述的图像识别处理方法,且能够达到相同的技术效果。图3为本发明实施例提供的一种图像识别处理装置的结构示意图,如图3所示,该图像识别处理装置包括参数获取模块1和卷积神经网络运算模块2,具体的,上述的参数获取模块1用于获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,原始图像数据包括M个像素点数据,M为正整数;卷积神经网络运算模块2与参数获取模块1连接,用于根据卷积神经网络配置参数和卷积神经网络运算参数对原始图像数据进行卷积神经网络运算;其中,参照上述的图2所示,其中的卷积神经网络运算模块2包括N个并行设置的运算组件21,每个运算组件21包括依次连接的卷积运算单元22、批处理运算单元23和激活运算单元24,N个运算组件21用于分别对原始图像数据中的N个像素点数据同时进行卷积运算、批处理运算和激活运算,N为小于或等于M的正整数。
本实施例提供的图像识别处理装置,其中卷积神经网络运算模块包括N个并行设置的运算组件,在进行运算时,每个像素点数据输入到一个运算组件中,则N个运算组件可以同时处理N个像素点数据,以使得N个像素点数据同时在对应的运算组件中进行卷积运算、批处理运算和激活运算,实现并行运算的效果,进而能够提高卷积神经网络运算的运算效率,提升了图像识别处理过程的实时性。
图4为本发明实施例提供的另一种图像识别处理装置的结构示意图,如图4所示,为在图3所示的实施例基础上,装置还包括参数分发模块3,参数获取模块1包括数据传输总线11、第一接口12、第二接口13、第一存储单元14和第二存储单元15。其中的数据传输总线11用于传输原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数;第一接口12的第一端与数据传输总线11连接,第一接口12的第二端分别与参数分发模块3和第一存储单元14连接,第一接口12用于从数据传输总线11获取原始数据并写入到第一存储单元14,以及从数据传输总线11获取参数配置指令,并发送给参数分发模块3,该参数配置指令包括卷积神经网络配置参数;第二接口13的第一端与数据传输总线11连接,第二接口13的第二端分别与参数分发模块3和第二存储单元15连接,第二接口13用于从数据传输总线11获取卷积运算参数、批处理运算参数和激活运算参数,并将卷积运算参数和批处理运算参数写入到第二存储单元15中,将激活运算参数发送给参数分发模块3。本发明实施例中,其中第一存储单元14和第二存储单元15均可以使用随机存取存储器。
本实施例中通过设置数据传输总线,并使用该数据传输总线传输原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,使得可以在各层卷积神经网络运算过程中,实时从数据传输总线中获取卷积神经网络配置参数和卷积神经网络运算参数,且通过该方式获取的配置参数和运算参数,可以根据实际需求实时调整,进而可以实现卷积神经网络运算的可编程性和可配置性。进一步的,上述的数据传输总线可以为先进可扩展接口AXI总线。具体的,该AXI总线可以是一种符合ARM架构的数据传输总线,本实施例提供的技术方案能够兼容现有的ARM架构。AXI总线也是一种面向高性能、高带宽、低延迟的片内总线,能够满足超高性能和复杂的片上系统设计需求,符合本发明实施例中利用硬件系统实现卷积神经网络实时运算的需求。
本发明实施例中,仍如上述的附图4所示,还可以进一步包括运算控制模块4,该运算控制模块4分别与参数分发模块3和卷积神经网络运算模块2连接;
运算控制模块4用于从参数分发模块3获取卷积神经网络配置参数中的控制类配置参数,并可以根据控制类配置参数对本发明实施例所涉及的图像识别处理的整个流程进行控制。具体的,该运算控制模块4用于控制从第一接口获取原始图像数据、从第一接口获取参数配置指令以及从第二接口获取卷积运算参数、批处理运算参数和激活运算参数;以及用于将卷积神经网络配置参数中的控制类配置参数发送给卷积神经网络运算模块2。另外,该运算控制模块4将卷积神经网络配置参数中的控制类配置参数发送给卷积神经网络运算模块2,可以对卷积神经网络运算流程进行控制,控制何时启动卷积神经网络运算。
进一步的,仍如上述图4所示,卷积神经网络运算模块2还包括运算控制单元25,该运算控制单元25的参数输入端与运算控制模块4连接,以及运算控制单元25的控制端分别与卷积运算单元22、批处理运算单元23和激活运算单元24连接;其中的运算控制单元25用于接收卷积神经网络配置参数中的控制类配置参数,该控制类配置参数包括输入或者输出原始图像尺寸、每层卷积神经网络的输入或者输出通道数目,并根据卷积神经网络配置参数中的控制类配置参数控制从第一存储单元14中读取原始图像数据,并将该原始图像数据发送给卷积运算单元22,控制从第二存储单元15中读取卷积运算参数和批处理运算参数,并将上述卷积运算参数和批处理运算参数发送给卷积运算单元22,本发明实施例中,对于每个运算组件中的卷积运算单元22和批处理运算单元23,其可以合并为同一个单元,并可以称其为卷积和批处理运算单元,来执行卷积运算和批处理运算的功能。
进一步的,卷积神经网络运算模块2还包括池化单元26和写回单元27,分别与运算控制单元25的控制端连接。
具体的,针对激活运算参数和所述卷积神经网络配置参数中的运算类配置参数,可以通过两种方式分发到各个运算单元。
第一种方式是依次由运算控制模块4和卷积神经网络运算模块2的运算控制单元25进行分发,即运算控制模块4还用于从参数分发模块3获取激活运算参数和卷积神经网络配置参数中的运算类配置参数,运算类配置参数包括卷积预算配置参数、卷积内核大小和池化方式,以及用于将激活运算参数和卷积神经网络配置参数中的运算类配置参数发送给卷积神经网络运算模块2的运算控制单元25,运算控制单元25还用于将激活运算参数发送给激活运算单元24,以及将卷积运算配置参数、卷积内核大小发送给卷积运算单元22,以及将池化方式发送给池化单元26。
第二种方式是由参数分发模块直接进行分发,即参数分发模块3还可以直接与激活运算单元24、卷积运算单元22和池化单元26连接,参数分发模块3用于直接将激活运算参数发送给激活运算单元24,以及将卷积运算配置参数和所述卷积内核大小发送给卷积运算单元22,以及将池化方式发送给池化单元26。
通过上述两种方式进行激活运算参数和卷积神经网络配置参数中的运算类配置参数分发后,卷积运算单元22可以根据卷积运算配置参数和卷积内核大小进行卷积运算,激活运算单元24可以根据激活运算参数进行激活运算,以及池化单元26可以根据池化方式进行池化运算。
具体的,池化单元26用于根据卷积神经网络配置参数中的池化方式对激活运算处理后的图像数据进行池化运算,并控制写回单元27将池化运算后的图像数据写回到第一存储单元14中。具体的,在每层卷积神经网络运算完成后,可以将该层运算处理后的图像数据写回到第一存储单元中,以进行下一层的卷积神经网络运算,下一层的卷积神经网络运算时也可以利用上述的N个运算组件并行运算。
图5为本发明实施例提供的再一种图像识别处理装置的结构示意图,如图5所示,该装置的卷积神经网络运算模块2中还进一步包括图像预处理单元28和参数预处理单元29,其中的图像预处理单元28设置在第一存储单元14和卷积运算单元22之间,用于对原始图像数据进行图像填充处理后发给卷积运算单元22,其中的图像填充处理可以是对图像的上下左右边界进行填充,以迎合卷积运算过程中卷积内核大小对图像数据的需求;参数预处理单元29设置在第二存储单元15和卷积运算单元22之间,用于对卷积运算参数进行累加求和后发送卷积运算单元22,具体的,还可以将初始获取的卷积运算参数也发送给卷积运算单元。
可选的,仍如上述图5所示,其中的参数获取模块1还可以包括数据读写单元16,数据读写单元16分别与第一接口12和第一存储单元14连接,分别与第二接口13和第二存储单元15连接,分别与图像预处理单元28和参数预处理单元29连接,以及与写回单元27连接,该数据读写单元16用于从第一接口12获取原始图像数据,并写入到第一存储单元14,以及从第一存储单元14读取原始图像数据,并发送给图像预处理单元28;以及数据读写单元16还用于从第二接口13获取卷积运算参数和批处理运算参数,并写入到第二存储单元15,以及从第二存储单元15读取卷积运算参数和批处理运算参数,并发送给参数预处理单元29,数据读写单元16还用于将写回单元27发送的池化运算后的图像数据写入到第一存储单元14。
具体的,本发明实施例中的数据读写单元16可以对第一存储单元14和第二存储单元15的读写命令进行分类,从第一接口12接收到的原始图像数据将会通过数据读写单元16写入到第一存储单元14中,图像预处理单元28可以通过数据读写单元16读取第一存储单元14,第二接口接收到的卷积运算参数、批处理运算参数也将通过数据读写单元16写入第二存储单元15中,参数预处理单元29也可以通过数据读写单元16读取第二存储单元15。另外,写回单元27也可以将运算结束后的每个输出通道的图像数据通过数据读写单元16写入第一存储单元14中。本发明实施例中,其中的第一接口可以是主动写入类型的接口,即数据传输总线将原始图像数据和卷积神经网络配置参数通过第一接口主动写入;而第二接口可以是被动读取类型的接口,即需要通过第二接口读取卷积运算参数、批处理运算参数和激活运算参数。
第一存储单元14可以对原始图像数据、运算后的图像数据进行存储。举例来说,第一存储单元14所使用的存储器的深度可以为32K,位宽可以为64Byte,也就是说第一存储单元14所使用的存储器的每一行可以存储64个像素点数据,如果原始图像数据宽度超过64个像素点,则原始图像数据的一行将会在第一存储单元14所使用的存储器中分多行存储。根据上述实施例中的说明,第一存储单元中存储的64个像素点数据可以同时参与卷积神经网络运算模块中的运算,也就是说卷积神经网络运算模块中包括64个运算组件,第一存储单元14所使用的存储器中的64个像素点数据将分别参与每个运算组件的卷积运算、批处理运算和激活运算。为了支持卷积运算内核大小为3x3的情况,可以将第一存储单元14所使用的存储器位宽由64Byte扩展为66Byte,将66Byte分别定义为B0、B1、B2…B65,其中B1-B64依然存储每一行原始图像数据的64Byte,B0存储第一存储单元14所使用的存储器中前一行的B64,B65存储第一存储单元14所使用的存储器中后一行的B1。该第一存储单元14所使用的存储器中的存储示意图如图6所示,其中Didx代表一个像素点,含义同B0~B65。图7为发明实施例提供的卷积运算示意图,如图7所示,其中是以卷积内核大小为3x3为例进行说明,也就是卷积运算中滑动窗大小是3x3,卷积运算以每个3x3大小的滑动窗为单位,将该滑动窗内的像素点与卷积运算参数逐个相乘后累加求和,然后进行其他步骤的卷积运算。
可选的,图8为本发明实施例提供的第二存储单元的结构示意图,如图8所示,本发明实施例中的第二存储单元15可以包括第一存储器151、第二存储器152和第三存储器153,数据读写单元16具体用于将卷积运算参数写入到第一存储器151或第二存储器152中,以及从第一存储器151或第二存储器152中读取卷积运算参数,且在向第一存储器151写入卷积运算参数时,从第二存储器152中读取卷积运算参数,或者,在向第二存储器152写入卷积运算参数时,从第一存储器151中读取卷积运算参数,即采用一种乒乓操作的方式,交替向第一存储器151和第二存储器152中写入卷积神经网络运算参数,以及交替从第一存储器151和第二存储器152中读取卷积神经网络运算参数,提高参数读写效率,提升整个图像识别处理过程的实时性。另外,上述的数据读写单元16还用于将批处理运算参数写入到第三存储器153,以及从第三存储器153中读取批处理运算参数。
以下结合本发明实施例中卷积神经网络运算模块中的各个功能单元,对卷积神经网络运算的过程进行详细说明,仍可以参考图5,具体涉及图像预处理单元28、参数预处理单元29、卷积运算单元22、批处理运算单元23、激活运算单元24、池化单元26和写回单元27。
具体的,在进行运算过程中,首先由图像预处理单元28向数据读写单元16发起数据读取请求,该数据读取请求由数据单元16发送给第一存储单元14,图像预处理单元28对反馈回来的原始图像数据进行图像填充处理后发给所述卷积运算单元22,以迎合卷积运算过程中卷积内核大小对图像数据的需求,例如卷积内核大小为3x3。参数预处理单元29向数据读写单元16发起参数读取请求,该参数读取请求由数据单元16发送给第二存储单元15,以获取卷积运算参数,参数预处理单元29会对卷积运算参数进行累加求和后,将累加求和结果和读取的卷积运算参数同时发送给卷积运算单元22,另外,还会获取到批处理运算参数,该批处理运算参数也会发送给卷积运算单元22,且具体的,由于批处理运算为对卷积运算结果直接进行处理,批处理运算单元23和卷积运算单元22可以合并为同一个运算单元。
卷积运算单元22在接收到预处理的图像数据和卷积运算参数,同时获取到运算控制单元24或者参数分发模块3发送的卷积运算过程中所使用的乘法系数、移位系数和加法系数后,可以进行卷积运算,具体的运算过程包括:对卷积滑动窗中的像素点数据与卷积运算参数对应位置相乘,再累加求和。具体实现过程如下:卷积滑动窗中的像素点数据与卷积运算参数对应位置逐个相乘,并且对所有的乘法结果求取累加和sum0,滑动窗大小即卷积内核大小,可以参考图7。
另外,滑动窗像素点数据累加和、卷积运算参数累加和再分别进行乘法、移位操作得到累加和sum1和sum2,最后对sum0、sum1、sum2和加法系数偏移量求和,最终得到卷积运算结果。其中的乘法系数、移位系数和加法系数可以参照上述从运算控制单元24或者参数分发模块3获取。
批处理运算单元23要对卷积运算结果进行规范化,其中均值为0,方差为1。具体实现过程为,将卷积运算结果与批处理乘法系数相乘,经过移位且与加法偏移量累加后,得到批处理结果,其中乘法系数、移位系数、加法系数都是由第二接口读取数据传输总线获取,并且存储在第二存储单元16。由于批处理运算直接对卷积运算结果进行处理,因此卷积运算单元22和批处理运算单元23可以合并在同一个功能单元中。
激活运算单元24可以进行激活运算,该单元可以实现输入数据分段非线性映射,也就是说将输入数据与若干个(例如16个)激活参数进行比较,寻找到最接近输入数据的激活参数,求取两者差值,然后对差值依次做乘法、移位、加法操作,这里的16个比较系数、乘法系数、移位系数、加法系数均是由第二接口读取数据传输总线获得后发送给参数分发模块3,并由参数分发模块3直接分发,或者最终由运算控制单元24发送给激活运算单元。另外,本发明实施例中,其中依次连接的卷积运算单元22、批处理单元23和激活单元24可以构成一个运算组件,一共可以设置N个运算组件,以实现同一时间内对N个像素点数据进行卷积神经网络运算,达到并行运算的技术效果,提升图像识别处理过程的运算效率。
池化单元26可以进行池化运算,将输入图像进行缩小,保留重要的信息,它可以计算2x2或者4x4像素点区域内的最大值或者均值,每一层卷积神经网络需要进行哪种池化类型,将由配置参数决定。具体的,池化类型可以包括但不限于2x2像素点区域内求均值、最大值、左上方值、右上方值,4x4像素点区域内求均值、最大值、左上方值等类型。
数据暂存单元20与每个卷积运算单元22连接,可以将每个输入通道的卷积运算结果暂时存储起来,也就是说当前输入通道的卷积运算完成后,卷积运算单元22可以将前一次卷积运算结果从数据暂存单元20中读出,然后与当前输入通道的卷积运算结果累加后,再送入数据暂存单元20中暂存。
写回单元27可以将经过卷积运算、批处理运算、激活运算、池化处理后的每个输出通道的图像数据写回到第一存储单元14中,此时的写请求会先发送给数据读写单元16中,然后发送给第一存储单元14。另外,写回单元27还会将每个输出通道的图像数据写到数据传输总线上,再以直接内存存取方式读取数据传输总线。
本发明实施例提供的技术方案中,除了设置了N个运算组件进行并行运算,以及设置乒乓操作模式的第一存储器和第二存储器来实现卷积运算参数的存储,能够显著的提高运算效率,提升图像识别处理方法的实时性。另外,本发明实施例提供的图像识别处理装置的架构中,将与数据传输总线连接的第一接口和第二接口,与内部的卷积神经网络运算模块分离,便于对卷积神经网络运算模块进行升级优化。另外,本发明实施例提供的架构,其中在对各个模块进行设计时,例如对第一接口、第一存储单元和运算控制模块进行设计时,可以充分考虑不同的原始图像尺寸、卷积神经网络运算层数和卷积内核大小的需求,可以支持不同规模的卷积神经网络架构。
本发明实施例的附图中的流程图和框图,图示了按照本发明实施例各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。在基于硬件的系统实现时,其中加法操作、乘法操作等可以通过加法器、乘法器等硬件实现,另外,还可以增加一些逻辑控制器来实现基本的逻辑控制。
描述于本发明实施例实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (17)
1.一种图像识别处理方法,其特征在于,包括:
获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,所述原始图像数据包括M个像素点数据,M为正整数;
由卷积神经网络运算模块根据卷积神经网络配置参数和卷积神经网络运算参数对所述原始图像数据进行卷积神经网络运算,其中,所述卷积神经网络运算模块包括N个并行设置的运算组件,每个运算组件包括依次连接的卷积运算单元、批处理运算单元和激活运算单元,所述N个运算组件分别对所述原始图像数据中的N个像素点数据同时进行卷积运算、批处理运算和激活运算,N为小于或等于M的正整数;
运算控制模块从参数分发模块获取所述卷积神经网络配置参数中的控制类配置参数;
所述运算控制模块根据所述控制类配置参数控制从第一接口获取原始图像数据、从第一接口获取参数配置指令以及从第二接口获取卷积运算参数、批处理运算参数和激活运算参数;
所述运算控制模块将所述卷积神经网络配置参数中的控制类配置参数发送给卷积神经网络运算模块;
所述运算控制模块从所述参数分发模块获取所述激活运算参数和所述卷积神经网络配置参数中的运算类配置参数;
所述运算控制模块将所述激活运算参数和所述运算类配置参数发送给所述卷积神经网络运算模块的运算控制单元;
所述运算控制单元或所述参数分发模块,将激活运算参数发送给激活运算单元,以及将所述卷积运算配置参数、所述卷积内核大小发送给卷积运算单元,以及将池化方式发送给池化单元。
2.根据权利要求1所述的图像识别处理方法,其特征在于,所述获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数包括:
通过数据传输总线获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数。
3.根据权利要求2所述的图像识别处理方法,其特征在于,所述通过数据传输总线获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数包括:
通过先进可扩展接口AXI总线获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数。
4.根据权利要求2所述的图像识别处理方法,其特征在于,所述获取原始图像数据包括通过第一接口获取原始图像数据,并将所述原始图像数据写入到第一存储单元中;
所述获取卷积神经网络配置参数包括通过第一接口获取参数配置指令,并将所述参数配置指令发送给参数分发模块,所述参数配置指令包括所述卷积神经网络配置参数;
所述获取卷积神经网络运算参数包括通过第二接口获取卷积运算参数、批处理运算参数和激活运算参数,并将所述卷积运算参数和批处理运算参数写入到第二存储单元中,将所述激活运算参数发送给参数分发模块。
5.根据权利要求4所述的图像识别处理方法,其特征在于,所述卷积神经网络运算模块还包括运算控制单元,所述方法还包括:
所述运算控制单元接收所述卷积神经网络配置参数中的控制类配置参数,所述控制类配置参数包括输入或者输出原始图像尺寸、每层卷积神经网络的输入或者输出通道数目;
所述运算控制单元根据所述控制类配置参数控制从所述第一存储单元中读取原始图像数据,从所述第二存储单元中读取卷积运算参数和批处理运算参数,并将所述原始图像数据、卷积运算参数和批处理运算参数发送给卷积运算单元。
6.根据权利要求5所述的图像识别处理方法,其特征在于,所述运算类配置参数包括卷积预算配置参数、卷积内核大小和池化方式。
7.根据权利要求5所述的图像识别处理方法,其特征在于,所述方法还包括:
对所述从第一存储单元中读取的原始图像数据进行图像填充处理后发送给所述卷积运算单元;以及,对所述从第二存储单元中获取的卷积运算参数进行累加求和处理后发送给卷积运算单元。
8.根据权利要求5所述的图像识别处理方法,其特征在于,所述第二存储单元包括第一存储器、第二存储器和第三存储器,将卷积运算参数和批处理运算参数写入到第二存储单元,以及从第二存储单元读取卷积运算参数和批处理运算参数包括:
将所述卷积运算参数写入到第一存储器或第二存储器中,以及从第一存储器或第二存储器中读取所述卷积运算参数,且在向所述第一存储器写入所述卷积运算参数时,从所述第二存储器中读取所述卷积运算参数,或者,在向所述第二存储器写入所述卷积运算参数时,从所述第一存储器中读取所述卷积运算参数;
将所述批处理运算参数写入到所述第三存储器中,以及从所述第三存储器中读取所述批处理运算参数。
9.一种图像识别处理装置,其特征在于,包括:
参数获取模块,用于获取原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数,所述原始图像数据包括M个像素点数据,M为正整数;
卷积神经网络运算模块,与所述参数获取模块连接,用于根据所述卷积神经网络配置参数和卷积神经网络运算参数对所述原始图像数据进行卷积神经网络运算,其中,所述卷积神经网络运算模块包括N个并行设置的运算组件,每个运算组件包括依次连接的卷积运算单元、批处理运算单元和激活运算单元,所述N个运算组件分别对所述原始图像数据中的N个像素点数据同时进行卷积运算、批处理运算和激活运算,N为小于或等于M的正整数;
运算控制模块,所述运算控制模块分别与参数分发模块和所述卷积神经网络运算模块连接;
所述运算控制模块用于从参数分发模块获取所述卷积神经网络配置参数中的控制类配置参数;以及用于根据所述控制类配置参数控制从第一接口获取原始图像数据、从第一接口获取参数配置指令以及从第二接口获取卷积运算参数、批处理运算参数和激活运算参数;以及用于将所述卷积神经网络配置参数中的控制类配置参数发送给卷积神经网络运算模块;
所述卷积神经网络运算模块还包括池化单元和写回单元,分别与所述运算控制单元的控制端连接;
所述运算控制模块还用于从所述参数分发模块获取所述激活运算参数和所述卷积神经网络配置参数中的运算类配置参数,以及用于将所述激活运算参数和所述运算类配置参数发送给所述卷积神经网络运算模块的运算控制单元,所述运算控制单元还用于将激活运算参数发送给激活运算单元,以及将所述卷积运算配置参数、所述卷积内核大小发送给卷积运算单元,以及将所述池化方式发送给池化单元;或者,
所述参数分发模块直接与所述激活运算单元、所述卷积运算单元和所述池化单元连接,所述参数分发模块用于直接将所述激活运算参数发送给激活运算单元,以及将所述卷积运算配置参数和所述卷积内核大小发送给卷积运算单元,以及将所述池化方式发送给池化单元。
10.根据权利要求9所述的图像识别处理装置,其特征在于,还包括参数分发模块,所述参数获取模块包括数据传输总线、第一接口、第二接口、第一存储单元和第二存储单元;
所述数据传输总线用于传输原始图像数据、卷积神经网络配置参数和卷积神经网络运算参数;
所述第一接口的第一端与所述数据传输总线连接,所述第一接口的第二端分别与所述参数分发模块和所述第一存储单元连接,所述第一接口用于从所述数据传输总线获取原始数据并写入所述第一存储单元,以及从所述数据传输总线获取参数配置指令,并发送给参数分发模块,所述参数配置指令包括卷积神经网络配置参数;
所述第二接口的第一端与所述数据传输总线连接,所述第二接口的第二端分别与所述参数分发模块和所述第二存储单元连接,所述第二接口用于从所述数据传输总线获取卷积运算参数、批处理运算参数和激活运算参数,并将所述卷积运算参数和批处理运算参数写入到第二存储单元中,将所述激活运算参数发送给参数分发模块。
11.根据权利要求10所述的图像识别处理装置,其特征在于,所述卷积神经网络运算模块还包括运算控制单元,所述运算控制单元的参数输入端与所述控制模块连接,以及运算控制单元的控制端分别与所述卷积运算单元、批处理运算单元和激活运算单元连接;
所述运算控制单元用于接收所述卷积神经网络配置参数中的控制类配置参数,所述控制类配置参数包括输入或者输出原始图像尺寸、每层卷积神经网络的输入或者输出通道数目,并根据所述控制类配置参数控制从所述第一存储单元中读取原始图像数据,并将该原始图像数据发送给卷积运算单元,控制从所述第二存储单元中读取卷积运算参数和批处理运算参数,并将卷积运算参数和批处理运算参数发送给卷积运算单元;以及用于将激活运算参数发送给激活运算单元。
12.根据权利要求11所述的图像识别处理装置,其特征在于,所述运算类配置参数包括卷积预算配置参数、卷积内核大小和池化方式。
13.根据权利要求11所述的图像识别处理装置,其特征在于,所述卷积神经网络运算模块还包括:
图像预处理单元,设置在所述第一存储单元和所述卷积运算单元之间,用于对原始图像数据进行图像填充处理后发给所述卷积运算单元;
参数预处理单元,设置在所述第二存储单元和所述卷积运算单元之间,用于对所述卷积运算参数进行累加求和后发送给所述卷积运算单元。
14.根据权利要求13所述的图像识别处理装置,其特征在于,所述参数获取模块还包括数据读写单元,所述数据读写单元分别与所述第一接口和所述第一存储单元连接,分别与所述第二接口和所述第二存储单元连接,分别与所述图像预处理单元和所述参数预处理单元连接,以及与所述写回单元连接;
所述数据读写单元用于从第一接口获取原始图像数据,并写入到第一存储单元,以及从所述第一存储单元读取原始图像数据,并发送给所述图像预处理单元;
所述数据读写单元还用于从第二接口获取所述卷积运算参数和批处理运算参数,并写入到第二存储单元,以及从所述第二存储单元读取所述卷积运算参数和批处理运算参数,并发送给所述参数预处理单元
所述数据读写单元还用于将写回单元发送的池化运算后的图像数据写入到第一存储单元。
15.根据权利要求14所述的图像识别处理装置,其特征在于,第二存储单元包括第一存储器、第二存储器和第三存储器,所述数据读写单元具体用于将所述卷积运算参数写入到第一存储器或第二存储器中,以及从第一存储器或第二存储器读取所述卷积运算参数,且在向所述第一存储器写入所述卷积运算参数时,从所述第二存储器中读取所述卷积运算参数,或者,在向所述第二存储器写入所述卷积运算参数时,从所述第一存储器中读取所述卷积运算参数;
将所述批处理运算参数写入到所述第三存储器,以及从第三存储器中读取所述批处理运算参数。
16.根据权利要求9所述的图像识别处理装置,还包括:
数据暂存单元,与每个所述运算组件的卷积运算单元连接,用于存储所述卷积运算单元运算后的每个输入通道的卷积运算结果。
17.根据权利要求10所述的图像识别处理装置,其特征在于,所述数据传输总线为先进可扩展接口AXI总线。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811010061.0A CN110874605B (zh) | 2018-08-31 | 2018-08-31 | 图像识别处理方法和装置 |
PCT/CN2019/095449 WO2020042771A1 (zh) | 2018-08-31 | 2019-07-10 | 图像识别处理方法和装置 |
US17/272,557 US12026105B2 (en) | 2018-08-31 | 2019-07-10 | Image recognition processing method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811010061.0A CN110874605B (zh) | 2018-08-31 | 2018-08-31 | 图像识别处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110874605A CN110874605A (zh) | 2020-03-10 |
CN110874605B true CN110874605B (zh) | 2024-05-03 |
Family
ID=69644683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811010061.0A Active CN110874605B (zh) | 2018-08-31 | 2018-08-31 | 图像识别处理方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12026105B2 (zh) |
CN (1) | CN110874605B (zh) |
WO (1) | WO2020042771A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110874632B (zh) * | 2018-08-31 | 2024-05-03 | 嘉楠明芯(北京)科技有限公司 | 图像识别处理方法和装置 |
CN114154624A (zh) * | 2021-12-07 | 2022-03-08 | 广州小鹏自动驾驶科技有限公司 | 基于卷积神经网络的数据处理方法、装置及设备 |
CN116151352B (zh) * | 2023-04-13 | 2024-06-04 | 中浙信科技咨询有限公司 | 基于大脑信息通路整合机制的卷积循环神经网络诊断方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106355244A (zh) * | 2016-08-30 | 2017-01-25 | 深圳市诺比邻科技有限公司 | 卷积神经网络的构建方法及系统 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN107832804A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104035750A (zh) * | 2014-06-11 | 2014-09-10 | 西安电子科技大学 | 一种基于fpga的实时模板卷积实现方法 |
US9886377B2 (en) * | 2015-10-05 | 2018-02-06 | Intel Corporation | Pipelined convolutional operations for processing clusters |
WO2017091833A1 (en) * | 2015-11-29 | 2017-06-01 | Arterys Inc. | Automated cardiac volume segmentation |
WO2018187005A1 (en) * | 2017-04-07 | 2018-10-11 | Regents Of The University Of Minnesota | Methods for scan-specific k-space interpolation reconstruction in magnetic resonance imaging using machine learning |
WO2018227105A1 (en) * | 2017-06-08 | 2018-12-13 | The United States Of America, As Represented By The Secretary, Department Of Health And Human Services | Progressive and multi-path holistically nested networks for segmentation |
CN107292334A (zh) * | 2017-06-08 | 2017-10-24 | 北京深瞐科技有限公司 | 图像识别方法及装置 |
CN111373751B (zh) * | 2017-08-10 | 2023-02-28 | 夏普株式会社 | 图像滤波装置、图像解码装置以及图像编码装置 |
CN107590535A (zh) * | 2017-09-08 | 2018-01-16 | 西安电子科技大学 | 可编程神经网络处理器 |
CN107657581B (zh) * | 2017-09-28 | 2020-12-22 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
US10796221B2 (en) * | 2017-10-19 | 2020-10-06 | General Electric Company | Deep learning architecture for automated image feature extraction |
CN108416422B (zh) | 2017-12-29 | 2024-03-01 | 国民技术股份有限公司 | 一种基于fpga的卷积神经网络实现方法及装置 |
US10855986B2 (en) * | 2018-05-29 | 2020-12-01 | Qualcomm Incorporated | Bandwidth compression for neural network systems |
-
2018
- 2018-08-31 CN CN201811010061.0A patent/CN110874605B/zh active Active
-
2019
- 2019-07-10 US US17/272,557 patent/US12026105B2/en active Active
- 2019-07-10 WO PCT/CN2019/095449 patent/WO2020042771A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN106355244A (zh) * | 2016-08-30 | 2017-01-25 | 深圳市诺比邻科技有限公司 | 卷积神经网络的构建方法及系统 |
CN107832804A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107833176A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107844832A (zh) * | 2017-10-30 | 2018-03-27 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107895191A (zh) * | 2017-10-30 | 2018-04-10 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
US20210326619A1 (en) | 2021-10-21 |
CN110874605A (zh) | 2020-03-10 |
WO2020042771A1 (zh) | 2020-03-05 |
US12026105B2 (en) | 2024-07-02 |
WO2020042771A9 (zh) | 2021-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109903221B (zh) | 图像超分方法及装置 | |
CN107609642B (zh) | 计算装置和方法 | |
CN113705769B (zh) | 一种神经网络训练方法以及装置 | |
CN110874605B (zh) | 图像识别处理方法和装置 | |
CN110059733A (zh) | 卷积神经网络的优化及快速目标检测方法、装置 | |
EP3855367A1 (en) | Operation accelerator, processing method, and related device | |
CN113011562B (zh) | 一种模型训练方法及装置 | |
CN111914997B (zh) | 训练神经网络的方法、图像处理方法及装置 | |
CN111340077B (zh) | 基于注意力机制的视差图获取方法和装置 | |
CN111465943B (zh) | 一种集成电路和用于神经网络处理的方法 | |
CN113159073A (zh) | 知识蒸馏方法及装置、存储介质、终端 | |
JP6891626B2 (ja) | 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法 | |
CN112163601A (zh) | 图像分类方法、系统、计算机设备及存储介质 | |
CN110929865A (zh) | 网络量化方法、业务处理方法及相关产品 | |
CN116113941A (zh) | 一种神经网络加速器、加速方法以及装置 | |
CN110991630A (zh) | 一种面向边缘计算的卷积神经网络处理器 | |
CN110874632B (zh) | 图像识别处理方法和装置 | |
CN111797992A (zh) | 一种机器学习优化方法以及装置 | |
CN111931901A (zh) | 一种神经网络构建方法以及装置 | |
CN111738403A (zh) | 一种神经网络的优化方法及相关设备 | |
CN111582465A (zh) | 基于fpga的卷积神经网络加速处理系统、方法以及终端 | |
CN111950700A (zh) | 一种神经网络的优化方法及相关设备 | |
CN110009644B (zh) | 一种特征图行像素分段的方法和装置 | |
CN113762304B (zh) | 图像处理方法、图像处理装置和电子设备 | |
WO2024104365A1 (zh) | 一种设备测温方法及其相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20201203 Address after: Room 206, 2 / F, building C, phase I, Zhongguancun Software Park, No. 8, Dongbei Wangxi Road, Haidian District, Beijing 100094 Applicant after: Canaan Bright Sight Co.,Ltd. Address before: 100094, No. 3, building 23, building 8, northeast Wang Xi Road, Beijing, Haidian District, 307 Applicant before: Canaan Creative Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |