首页 > 专利 > 杭州电子科技大学 > 基于RISC-V的卷积神经网络的文字识别方法专利详情

基于RISC-V的卷积神经网络的文字识别方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2020-03-18
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2020-09-01
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2022-11-18
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2040-03-18
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN202010193160.8 申请日 2020-03-18
公开/公告号 CN111507336B 公开/公告日 2022-11-18
授权日 2022-11-18 预估到期日 2040-03-18
申请年 2020年 公开/公告年 2022年
缴费截止日
分类号 G06V30/19G06V10/764G06V10/82G06N3/04G06N3/08 主分类号 G06V30/19
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 0
权利要求数量 1 非专利引证数量 0
引用专利数量 0 被引证专利数量 0
非专利引证
引用专利 被引证专利
专利权维持 2 专利申请国编码 CN
专利事件 事务标签 公开、实质审查、授权
申请人信息
申请人 第一申请人
专利权人 杭州电子科技大学 当前专利权人 杭州电子科技大学
发明人 秦兴、周志远 第一发明人 秦兴
地址 浙江省杭州市下沙高教园区2号大街 邮编 310018
申请人数量 1 发明人数量 2
申请人所在省 浙江省 申请人所在市 浙江省杭州市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
杭州君度专利代理事务所 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
杨舟涛
摘要
本发明公开了基于RISC‑V的卷积神经网络的文字识别方法,本发明先搭建一个神经网络训练环境,然后设计一个基于mnist数据集的6层手写数字识别网络;输入图片,训练至设定的准确度,保存权重和偏置参数文件;设定RISC‑V指令集的自定义指令类型和格式,根据预留指令编码空间设计指令,根据设定的指令格式和SIGMOD函数实现方法,设计具体的硬件加速电路;在FPGA上面导入硬件加速电路、权重和偏置参数文件,搭建RISC‑V开发环境并完成自定义指令的添加;输入图片,使用硬件加速电路对图片中的数字进行识别。本发明实现对特定运算的指令级加速,加速部分神经网络推理运算,其可以迅速的将图片中的手写数字识别出来。
  • 摘要附图
    基于RISC-V的卷积神经网络的文字识别方法
  • 说明书附图:图1
    基于RISC-V的卷积神经网络的文字识别方法
  • 说明书附图:图2
    基于RISC-V的卷积神经网络的文字识别方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2022-11-18 授权
2 2020-09-01 实质审查的生效 IPC(主分类): G06K 9/32 专利申请号: 202010193160.8 申请日: 2020.03.18
3 2020-08-07 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.基于RISC‑V的卷积神经网络的文字识别方法,其特征在于:该方法具体包括以下步骤:
步骤S1:搭建虚拟机ubuntu16.04+tensorflow‑cpu神经网络训练环境,设计一个基于mnist数据集的6层手写数字识别网络;
其中卷积神经网络的结构为:
输入特征 卷积核 输出特征
卷积层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类基本指令格式,根据预留指令编码空间设计指令,添加一个sig指令,指令格式表示为sig r1,r2,表示sigmod函数的硬件实现,具体表现为:R[r1]=sigmod(r2);
步骤S5、根据步骤S4设定的指令格式,采用查找表的方式实现SIGMOD函数,设计具体的硬件加速电路;
步骤S6、在FPGA上面导入步骤S5的硬件加速电路和步骤S3得到的权重和偏置参数文件,搭建RISC‑V开发环境并完成自定义指令的添加;
步骤S7、输入图片,使用硬件加速电路对图片中的数字进行识别。
说明书

技术领域

[0001] 本发明属于专用处理器指令加速领域,尤其涉及一种基于RISC‑V加速指令的卷[0002] 积神经网络的文字识别方法。

背景技术

[0003] 目前通过神经网络进行图片文字识别,效率比较低下,而RISC‑V指令集是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),RISC‑V是在指令集不断发展和成熟的基础上建立的全新指令。RISC‑V指令集完全开源,设计简单,易于移植Unix系统,模块化设计,完整工具链,同时有大量的开源实现。但关于RISC‑V加速指令研究并没有很好的设计和实现。

发明内容

[0004] 本发明针对现有技术的不足,提出了一种基于RISC‑V加速指令的卷积神经网络的文字识别方法。。
[0005] 本发明一种基于RISC‑V加速指令的卷积神经网络的文字识别方法,该方法具体包括以下步骤:
[0006] RISC‑V自定义加速指令设计在卷积神经网络中的应用方法,具体包括以下步骤:
[0007] 步骤S1:搭建虚拟机ubuntu16.04+tensorflow‑cpu神经网络训练环境,设计一个基于mnist数据集的6层手写数字识别网络;
[0008] 其中卷积神经网络的结构如表1所示;
[0009]   输入特征 卷积核 输出特征卷积层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
[0010] 每个卷积层后面接一个激活函数SIGMOD;
[0011] 步骤S2、输入图片,图片中文中黑底白字;
[0012] 步骤S3、训练至设定的准确度,保存权重和偏置参数文件;
[0013] 步骤S4、设定RISC‑V指令集的自定义指令类型和格式为I类基本指令格式,根据预留指令编码空间设计指令,
[0014] 步骤S5、根据步骤S4设定的指令格式和SIGMOD函数实现方法,设计具体的硬件加速电路;
[0015] 步骤S6、在FPGA上面导入步骤S5的硬件加速电路和步骤S3得到的权重和偏置参数文件,搭建RISC‑V开发环境并完成自定义指令的添加;
[0016] 步骤S7、输入图片,使用硬件加速电路对图片中的数字进行识别。
[0017] 与现有技术相比较,本发明的有益效果为:
[0018] 利用RISC‑V指令扩展接口进行加速指令,实现对特定运算的指令级加速,加速部分神经网络推理运算,其可以迅速的将图片中的手写数字识别出来。

实施方案

[0021] 下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
[0022] 如图1,2所示,本发明RISC‑V自定义加速指令设计在卷积神经网络中的应用方法具体包括以下步骤:
[0023] S1、RISC‑V指令集架构是一个灵活可扩展的架构,RISC‑V的可扩展性主要体现在两方面:1预定义的Custom指令,2预留的指令编码空间。本设计采用预留的指令编码空间来实现加速指令。
[0024] RISC‑V架构定义的指令集只使用了少部分的指令编码空间。更多的指令编码空间被预留给用户作为扩展指令使用。由于RISC‑V架构支持多种不同的指令长度,不同的指令长度均预留有不同的编码空间。根据常用的32位长度指令opcode表。对于没有定义的,reserved类型的指令类型组,可以用来设计自定义指令。
[0025] 由于SIGMOD函数经常用于神经网络的算法中,所以以SIGMOD函数的硬件计算加速指令为例进行研究。SIGMOD函数计算公式是:
[0026]
[0027] 指令格式:采用I类基本指令格式,指令格式如图1所示。Rd是目标寄存器,Rs1是源寄存器1。funct3是SIG sigmod的函数缩写,imm是保留部分(可用于软件编译时修改该值,向模块传递一个立即数),opcode使用reserved编码空间1101011。
[0028] 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段,用输出数值除以分度值的方法得出输出编码值。
[0029] S2、设计环境要求:
[0030] (1)机器的位宽是32位,即认为寄存器与指令位宽32位,ROM访存以4字节对齐。
[0031] (2)所有模块时钟设计为同步时钟,异步复位。
[0032] (3)模块本身不包含取指、译码操作,即认为操作数和操作码已经通过前序指令或步骤得到。
[0033] SIGMOD运算模块6种状态转换图如图2:
[0034] IDLE空闲状态:此状态下系统等待START线上的上升沿信号到来,此信号由外部模块产生,START信号产生后转入READ_INPUT状态。
[0035] READ_INPUT读源寄存器状态:此状态下系统读取源寄存器的数据到累加器中,读取并写入完毕后转入JUDGE_INPUT状态。
[0036] JUDGE_INPUT判断输入范围状态:此状态下系统判断输入寄存器的值是否在输入范围内,若在输入范围内转入CAL_ADDR状态,不在输入范围内转入WIRTE_OUTPUT状态。
[0037] CAL_ADDR地址计算状态:此状态表示模块正在根据输入计算得到合法的ROM地址,计算结束后转入READ_ROM状态。
[0038] READ_ROM读ROM阶段:此状态表示模块正在读取ROM数据寄存器中的数据到累加器中,读取并写入完毕后转入WRITE_OUTPUT阶段。
[0039] WRITE_OUTPUT写输出状态:此状态表示模块将累加器中的数据写入到目标寄存器中,写入后转入IDLE状态。
[0040] S3、以最简单的手写数字识别卷积神经网络为例验证SIGMOD指令的加速功能。在PC端搭建虚拟机ubuntu16.04+tensorflow‑cpu神经网络训练环境。设计一个基于mnist数据集的6层手写数字识别网络。输入图片为28×28像素黑底白字,输出为图片的识别数值。中间包含三种主要计算:卷积,激活函数(SIGMOD),池化。表1为每层具体输入输出特征,卷积核大小参数设计表。每个卷积层后面接一个激活函数SIGMOD。训练完准确度98%,保存权重和偏置参数文件。
[0041] 表1每层参数设计表
[0042]  输入特征 卷积核 输出特征
卷积层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
[0043] S4、在pynq‑z2板卡上面实现神经网络推理计算。把PC端训练好的权重和偏置参数值转化为二进制格式存储到SD卡并把搭建好的底层硬件设计导入到FPGA板卡。安装RISC‑V工具链依赖项,下载RISC‑V工具链,编译并安装RISC‑V工具链。
[0044] 添加一个指令到指令集:添加了一个sig指令,指令格式表示为sig r1,r2。此指令格式表示sigmod函数的硬件实现,具体表现为:R[r1]=sigmod(r2)。
[0045] 添加操作码:打开工具链文件夹下的riscv‑opcodes/opcodes,添加操作码。sig rd rs1 rs2 31..25=1 14..12=0 6..2=0x1A 1..0=3。
[0046] 运行指令:添加好新的操作码后在命令行界面进行对指令的运行。
[0047] cat opcodes‑pseudo opcodes opcodes‑rvc opcodes‑rvc‑pseudo opcodes‑custom|./parse‑opcodes‑c>~/temp.h
[0048] 重编译:打开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[]。在结构体修改完成之后,进行重新编译,即可完成自定制指令的添加。
[0049] 使用增加的SIGMOD指令进行图片推理测试。测试集10000张图片集识别率98.72%,速度434.09帧每秒。使用ARM‑A9实现推理运算,识别率98.94%,速度为40.71帧每秒,实现10.66倍加速比。证明RISC‑V自定义加速指令SIGMOD加快了卷积神经网络的推理速度。
[0050] 以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
[0051] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

附图说明

[0019] 图1为本发明RISC‑V加速指令研究方法的加速指令格式图;
[0020] 图2为本发明RISC‑V加速指令研究方法的运算模块状态转换图;
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号