CN111507336A - 基于risc-v的卷积神经网络的文字识别方法 - Google Patents
基于risc-v的卷积神经网络的文字识别方法 Download PDFInfo
- Publication number
- CN111507336A CN111507336A CN202010193160.8A CN202010193160A CN111507336A CN 111507336 A CN111507336 A CN 111507336A CN 202010193160 A CN202010193160 A CN 202010193160A CN 111507336 A CN111507336 A CN 111507336A
- Authority
- CN
- China
- Prior art keywords
- instruction
- risc
- neural network
- picture
- layer
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/62—Text, e.g. of license plates, overlay texts or captions on TV images
-
- 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
- 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Multimedia (AREA)
- Character Discrimination (AREA)
Abstract
本发明公开了基于RISC‑V的卷积神经网络的文字识别方法,本发明先搭建一个神经网络训练环境,然后设计一个基于mnist数据集的6层手写数字识别网络;输入图片,训练至设定的准确度,保存权重和偏置参数文件;设定RISC‑V指令集的自定义指令类型和格式,根据预留指令编码空间设计指令,根据设定的指令格式和SIGMOD函数实现方法,设计具体的硬件加速电路;在FPGA上面导入硬件加速电路、权重和偏置参数文件,搭建RISC‑V开发环境并完成自定义指令的添加;输入图片,使用硬件加速电路对图片中的数字进行识别。本发明实现对特定运算的指令级加速,加速部分神经网络推理运算,其可以迅速的将图片中的手写数字识别出来。
Description
技术领域
本发明属于专用处理器指令加速领域,尤其涉及一种基于RISC-V加速指令的卷
积神经网络的文字识别方法。
背景技术
目前通过神经网络进行图片文字识别,效率比较低下,而RISC-V指令集是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),RISC-V是在指令集不断发展和成熟的基础上建立的全新指令。RISC-V指令集完全开源,设计简单,易于移植Unix***,模块化设计,完整工具链,同时有大量的开源实现。但关于RISC-V加速指令研究并没有很好的设计和实现。
发明内容
本发明针对现有技术的不足,提出了一种基于RISC-V加速指令的卷积神经网络的文字识别方法。。
本发明一种基于RISC-V加速指令的卷积神经网络的文字识别方法,该方法具体包括以下步骤:
RISC-V自定义加速指令设计在卷积神经网络中的应用方法,具体包括以下步骤:
步骤S1:搭建虚拟机ubuntu16.04+tensorflow-cpu神经网络训练环境,设计一个基于mnist数据集的6层手写数字识别网络;
其中卷积神经网络的结构如表1所示;
输入特征 | 卷积核 | 输出特征 | |
卷积层1 | 28×28×1 | 3×3×1×16 | 28×28×16 |
池化层1 | 28×28×16 | 2×2 | 14×14×16 |
卷积层2 | 14×14×16 | 3×3×16×32 | 14×14×32 |
池化层2 | 14×14×32 | 2×2 | 7×7×32 |
全连接层1 | 7×7×32 | 7×7×32×128 | 128 |
全连接层2 | 128 | 128×10 | 10 |
每个卷积层后面接一个激活函数SIGMOD;
步骤S2、输入图片,图片中文中黑底白字;
步骤S3、训练至设定的准确度,保存权重和偏置参数文件;
步骤S4、设定RISC-V指令集的自定义指令类型和格式为I类基本指令格式,根据预留指令编码空间设计指令,
步骤S5、根据步骤S4设定的指令格式和SIGMOD函数实现方法,设计具体的硬件加速电路;
步骤S6、在FPGA上面导入步骤S5的硬件加速电路和步骤S3得到的权重和偏置参数文件,搭建RISC-V开发环境并完成自定义指令的添加;
步骤S7、输入图片,使用硬件加速电路对图片中的数字进行识别。
与现有技术相比较,本发明的有益效果为:
利用RISC-V指令扩展接口进行加速指令,实现对特定运算的指令级加速,加速部分神经网络推理运算,其可以迅速的将图片中的手写数字识别出来。
附图说明
图1为本发明RISC-V加速指令研究方法的加速指令格式图;
图2为本发明RISC-V加速指令研究方法的运算模块状态转换图;
具体实施方式
下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
如图1,2所示,本发明RISC-V自定义加速指令设计在卷积神经网络中的应用方法具体包括以下步骤:
S1、RISC-V指令集架构是一个灵活可扩展的架构,RISC-V的可扩展性主要体现在两方面:1预定义的Custom指令,2预留的指令编码空间。本设计采用预留的指令编码空间来实现加速指令。
RISC-V架构定义的指令集只使用了少部分的指令编码空间。更多的指令编码空间被预留给用户作为扩展指令使用。由于RISC-V架构支持多种不同的指令长度,不同的指令长度均预留有不同的编码空间。根据常用的32位长度指令opcode表。对于没有定义的,reserved类型的指令类型组,可以用来设计自定义指令。
由于SIGMOD函数经常用于神经网络的算法中,所以以SIGMOD函数的硬件计算加速指令为例进行研究。SIGMOD函数计算公式是:
指令格式:采用I类基本指令格式,指令格式如图1所示。Rd是目标寄存器,Rs1是源寄存器1。funct3是SIG sigmod的函数缩写,imm是保留部分(可用于软件编译时修改该值,向模块传递一个立即数),opcode使用reserved编码空间1101011。
SIGMOD函数属于超越函数,不能够直接实现,所以采用查找表的方式实现SIGMOD函数。根据SIGMOD函数图像,输入-16以下的数值几乎为0,+15以上的数值几乎为1,所以对输入范围是-16~+15的所有整数进行编码计算。输入一共有32个输入值。输出范围0.0000001125~0.999999694。***最小分度5.96046E-08(1/(2^24)),取值是24位的2进制分之一。采用平均编码方式,将1分为2^24段,用输出数值除以分度值的方法得出输出编码值。
S2、设计环境要求:
(1)机器的位宽是32位,即认为寄存器与指令位宽32位,ROM访存以4字节对齐。
(2)所有模块时钟设计为同步时钟,异步复位。
(3)模块本身不包含取指、译码操作,即认为操作数和操作码已经通过前序指令或步骤得到。
SIGMOD运算模块6种状态转换图如图2:
IDLE空闲状态:此状态下***等待START线上的上升沿信号到来,此信号由外部模块产生,START信号产生后转入READ_INPUT状态。
READ_INPUT读源寄存器状态:此状态下***读取源寄存器的数据到累加器中,读取并写入完毕后转入JUDGE_INPUT状态。
JUDGE_INPUT判断输入范围状态:此状态下***判断输入寄存器的值是否在输入范围内,若在输入范围内转入CAL_ADDR状态,不在输入范围内转入WIRTE_OUTPUT状态。
CAL_ADDR地址计算状态:此状态表示模块正在根据输入计算得到合法的ROM地址,计算结束后转入READ_ROM状态。
READ_ROM读ROM阶段:此状态表示模块正在读取ROM数据寄存器中的数据到累加器中,读取并写入完毕后转入WRITE_OUTPUT阶段。
WRITE_OUTPUT写输出状态:此状态表示模块将累加器中的数据写入到目标寄存器中,写入后转入IDLE状态。
S3、以最简单的手写数字识别卷积神经网络为例验证SIGMOD指令的加速功能。在PC端搭建虚拟机ubuntu16.04+tensorflow-cpu神经网络训练环境。设计一个基于mnist数据集的6层手写数字识别网络。输入图片为28×28像素黑底白字,输出为图片的识别数值。中间包含三种主要计算:卷积,激活函数(SIGMOD),池化。表1为每层具体输入输出特征,卷积核大小参数设计表。每个卷积层后面接一个激活函数SIGMOD。训练完准确度98%,保存权重和偏置参数文件。
表1每层参数设计表
输入特征 | 卷积核 | 输出特征 | |
卷积层1 | 28×28×1 | 3×3×1×16 | 28×28×16 |
池化层1 | 28×28×16 | 2×2 | 14×14×16 |
卷积层2 | 14×14×16 | 3×3×16×32 | 14×14×32 |
池化层2 | 14×14×32 | 2×2 | 7×7×32 |
全连接层1 | 7×7×32 | 7×7×32×128 | 128 |
全连接层2 | 128 | 128×10 | 10 |
S4、在pynq-z2板卡上面实现神经网络推理计算。把PC端训练好的权重和偏置参数值转化为二进制格式存储到SD卡并把搭建好的底层硬件设计导入到FPGA板卡。安装RISC-V工具链依赖项,下载RISC-V工具链,编译并安装RISC-V工具链。
添加一个指令到指令集:添加了一个sig指令,指令格式表示为sig r1,r2。此指令格式表示sigmod函数的硬件实现,具体表现为:R[r1]=sigmod(r2)。
添加操作码:打开工具链文件夹下的riscv-opcodes/opcodes,添加操作码。sigrd rs1 rs2 31..25=1 14..12=0 6..2=0x1A 1..0=3。
运行指令:添加好新的操作码后在命令行界面进行对指令的运行。
cat opcodes-pseudo opcodes opcodes-rvc opcodes-rvc-pseudo opcodes-custom|./parse-opcodes-c>~/temp.h
重编译:打开temp.h并找到对应的两行SIG定义并添加到riscv-gnu-toolchain/riscv-binutils-gdb/include/opcode/riscv-opc.h。然后再编辑文件riscv-gnu-toolchain/riscv-binutils-gdb/opcodes/riscv-opc.c。同时添加SIG指令定义{"SIG","I","d,s,t",MATCH_SIG,MASK_SIG,match_opcode,0}至结构体riscv_opcode riscv_opcodes[]。在结构体修改完成之后,进行重新编译,即可完成自定制指令的添加。
使用增加的SIGMOD指令进行图片推理测试。测试集10000张图片集识别率98.72%,速度434.09帧每秒。使用ARM-A9实现推理运算,识别率98.94%,速度为40.71帧每秒,实现10.66倍加速比。证明RISC-V自定义加速指令SIGMOD加快了卷积神经网络的推理速度。
以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (1)
1.基于RISC-V的卷积神经网络的文字识别方法,其特征在于:该方法具体包括以下步骤:
步骤S1:搭建虚拟机ubuntu16.04+tensorflow-cpu神经网络训练环境,设计一个基于mnist数据集的6层手写数字识别网络;
其中卷积神经网络的结构如表1所示;
每个卷积层后面接一个激活函数SIGMOD;
步骤S2、输入图片,图片中文中黑底白字;
步骤S3、训练至设定的准确度,保存权重和偏置参数文件;
步骤S4、设定RISC-V指令集的自定义指令类型和格式为I类基本指令格式,根据预留指令编码空间设计指令,
步骤S5、根据步骤S4设定的指令格式和SIGMOD函数实现方法,设计具体的硬件加速电路;
步骤S6、在FPGA上面导入步骤S5的硬件加速电路和步骤S3得到的权重和偏置参数文件,搭建RISC-V开发环境并完成自定义指令的添加;
步骤S7、输入图片,使用硬件加速电路对图片中的数字进行识别。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010193160.8A CN111507336B (zh) | 2020-03-18 | 2020-03-18 | 基于risc-v的卷积神经网络的文字识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010193160.8A CN111507336B (zh) | 2020-03-18 | 2020-03-18 | 基于risc-v的卷积神经网络的文字识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111507336A true CN111507336A (zh) | 2020-08-07 |
CN111507336B CN111507336B (zh) | 2022-11-18 |
Family
ID=71874250
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010193160.8A Active CN111507336B (zh) | 2020-03-18 | 2020-03-18 | 基于risc-v的卷积神经网络的文字识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111507336B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112101537A (zh) * | 2020-09-17 | 2020-12-18 | 广东高云半导体科技股份有限公司 | Cnn加速器和电子设备 |
CN112256330A (zh) * | 2020-11-03 | 2021-01-22 | 中国人民解放军军事科学院国防科技创新研究院 | 用于加速数字信号处理的risc-v指令集扩展方法 |
CN112988238A (zh) * | 2021-05-06 | 2021-06-18 | 成都启英泰伦科技有限公司 | 一种基于可扩展指令集cpu内核的扩展运算装置及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109857460A (zh) * | 2019-02-20 | 2019-06-07 | 南京华捷艾米软件科技有限公司 | 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及*** |
CN110490311A (zh) * | 2019-07-08 | 2019-11-22 | 华南理工大学 | 基于risc-v架构的卷积神经网络加速装置及其控制方法 |
US20200082246A1 (en) * | 2018-09-10 | 2020-03-12 | Nvidia Corp. | Scalable multi-die deep learning system |
-
2020
- 2020-03-18 CN CN202010193160.8A patent/CN111507336B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200082246A1 (en) * | 2018-09-10 | 2020-03-12 | Nvidia Corp. | Scalable multi-die deep learning system |
CN109857460A (zh) * | 2019-02-20 | 2019-06-07 | 南京华捷艾米软件科技有限公司 | 基于risc-v架构的矩阵卷积计算方法、接口、协处理器及*** |
CN110490311A (zh) * | 2019-07-08 | 2019-11-22 | 华南理工大学 | 基于risc-v架构的卷积神经网络加速装置及其控制方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112101537A (zh) * | 2020-09-17 | 2020-12-18 | 广东高云半导体科技股份有限公司 | Cnn加速器和电子设备 |
CN112101537B (zh) * | 2020-09-17 | 2021-08-03 | 广东高云半导体科技股份有限公司 | Cnn加速器和电子设备 |
CN112256330A (zh) * | 2020-11-03 | 2021-01-22 | 中国人民解放军军事科学院国防科技创新研究院 | 用于加速数字信号处理的risc-v指令集扩展方法 |
CN112988238A (zh) * | 2021-05-06 | 2021-06-18 | 成都启英泰伦科技有限公司 | 一种基于可扩展指令集cpu内核的扩展运算装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111507336B (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111507336B (zh) | 基于risc-v的卷积神经网络的文字识别方法 | |
Kernighan et al. | The C programming language | |
US7386844B2 (en) | Compiler apparatus and method of optimizing a source program by reducing a hamming distance between two instructions | |
Arndt | Matters Computational: ideas, algorithms, source code | |
Warren | Hacker's delight | |
CN108256164B (zh) | 状态机晶格中的布尔逻辑 | |
WO2012103146A2 (en) | Utilizing special purpose elements to implement a fsm | |
CN112256330B (zh) | 用于加速数字信号处理的risc-v指令集扩展方法 | |
CN114721720B (zh) | 一种指令集扩展方法、装置、电子设备及存储介质 | |
US8423979B2 (en) | Code generation for complex arithmetic reduction for architectures lacking cross data-path support | |
CN112463139B (zh) | 基于电子积木的编程方法、装置、电子设备及存储介质 | |
CN112947933A (zh) | 一种算子的执行方法、装置、计算机设备及存储介质 | |
CN111045728B (zh) | 一种计算装置及相关产品 | |
JP2021517301A (ja) | 確率的丸めロジック | |
CN112200305A (zh) | 一种神经网络加速协处理器、处理***及处理方法 | |
Sedgewick et al. | Algorithms: Part I | |
US7219117B2 (en) | Methods and systems for computing floating-point intervals | |
CN116382782A (zh) | 向量运算方法、向量运算器、电子设备和存储介质 | |
Arefin | Art of Programming Contest | |
CN113407236B (zh) | 一种指令汇编方法、装置、计算机设备及存储介质 | |
US20190286418A1 (en) | Architecture and instruction set to support integer division | |
CN110533174B (zh) | 神经网络***中数据处理的电路和方法 | |
CN117708475B (zh) | 一种基于rvv1.0扩展的复数序列fft蝶形运算方法 | |
Dmitrović | Modern C for Absolute Beginners | |
JP7315872B2 (ja) | プロセッサ、シミュレータプログラム、アセンブラプログラム、及び情報処理プログラム |
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 |