基于PYNQ平台的手写数字识别


    
    基PYNQ台实现手写数字识


    1设计概述
    11PYNQ台简介
    PYNQ全称Python Productivity for Zynq原Zynq架构基础添加python支持Zynq赛灵思公司推出行业第扩展处理台系列芯片中集成ARM处理器FPGA编程逻辑器件旨视频监视汽车驾驶员辅助工厂动化等高端嵌入式应提供需处理计算性水PYNQ希够助python语言身易易学扩展库全社区活跃贡献度高等特性效降低Zynq嵌入式系统开发门槛PYNQARM处理器FPGA器件底层交互逻辑完全封装起顶层封装python需import应模块名称导入应硬件模块进行底层层数交互者系统提供硬件加速
    简单说直接硬件底层进行封装户助封装库文件直接python语言操作硬件IO脚等功软件工程师说需复杂繁琐开发工具基浏览器Jupyter Notebook工具直接编辑工程代码系统架构师助PYNQ设计更清晰软件接口系统架构硬件工程师言设计硬件台够更开发背景
    目前支持PYNQ开发板3种图11示设计中开发板zcu104

    图11支持pynq开发板
    12设计目标概述
    终实现目标:完全python脚控制手写数字识读入手写数字图片python opencv库函数读取测试图片Python控制Arm处理器调卷积池化等高速硬件电路进行计算然出手写数字识结果整体框图图12示





    图12设计实现目标

    2神网络搭建训练
    21 MNIST数集
    实验中选择MNIST数集进行手写数字识MNIST数集已嚼烂数集 教程会手 成 典范
    MNIST 数集 httpyannlecuncomexdbmnist 获取 包含四部分
    l Training set images trainimagesidx3ubytegz (99 MB 解压 47 MB 包含 60000 样)
    l Training set labels trainlabelsidx1ubytegz (29 KB 解压 60 KB 包含 60000 标签)
    l Test set images t10kimagesidx3ubytegz (16 MB 解压 78 MB 包含 10000 样)
    l Test set labels t10klabelsidx1ubytegz (5KB 解压 10 KB 包含 10000 标签)
    MNIST 数集美国国家标准技术研究 National Institute of Standards and Technology (NIST) 训练集 (training set) 250 手写数字构成 中 50 高中学生 50 口普查局 (the Census Bureau) 工作员 测试集(test set) 样例手写数字数


    张图片28*28(图)黑白色构成(里黑色01浮点数黑色越深表示数值越1)图片采集手写09数字TensorFlow数集相关操作封装库中
    22 神网络设计


    搭建神网络输入图片进行训练终合适权重偏置权值存储起提供面硬件
    实验中设置网络6层包括两卷积层两池化层两全连接层接softmax分类器输出概率值网络层输入输出kernel参数图示:



    221 卷积层

    卷积质种应加运算通设定步长 Kernel原图矩阵面移动做加运算值存放进入输出矩阵中
    数通卷积网络图中显著特征会提取质信号处理卷积类似周围信息加权求者说信号进行滤波
    222 池化层
    卷积运算中存交叠程计算提取特征存关联性说特征冗余项特征表示面进行采样操作加池化层
    池化种方法常般值池化均值池化项目实验中两池化层值池化

    池化意义:
    l 减少卷积运算产生冗余
    l 池化层邻域特征点整合新特征
    l 池化特征参数减少时(旋转移伸缩等)特性保留

    223 机失活
    神网络训练程中Dropout种广泛trickDropout说起非常简单训练程中前层输出值里会部分神元机死亡种死亡暂时训练时发生测试时恢复
    Dropout减神元间赖问题减少拟合产生

    224 Softmax
    Softmax非线性函数
    数全连接层已成维量值应取labelsoftmax进行化直观理解概率问题label加1


    softmax直白说原输出313通softmax函数作映射成(01)值值累1(满足概率性质)理解成概率选取输出结点时候选取概率(值应)结点作预测目标

    23 tensorflow训练
    Tensorflow拥层级结构部署类服务器PC终端网页支持GPUTPU高性数值计算广泛应谷歌部产品开发领域科学研究机器学领域tensorflow方便搭建需神网络通调tensorboard网络训练准确率损失函数变化进行视化
    MNIST数集搭建神网络面进行1000次迭代测试集面准确率达98左右面硬件设计
    tensorboard中网络结构:

    电脑终端中进行1000次迭代训练显示:

    tensorboard中训练程中训练集测试集准确率变化:


    时损失函数降低:


    准确率趋势变化稳排拟合性训练结束层网络权值参数文件保存(bin文件)提供续硬件

    3Vivado HLS实现硬件电路

    31高层综合简介
    传统FPGA设计流程中般顶模块化设计模块包括户编写RTL代码高层次综合指户采C\C++等高级语言编写程序通高层综合工具综合成RTL代码样极提高开发效率软件开发员参硬件开发中
    Vivado HLSXilinx公司推出高层综合工具Vivado工具设计理念IP核心功模块做封装成IPVivado集成实现化设计复Vivado HLS做IP封装工具封装CC++SystemC者OpenCL等高级语言实现功函数
    部分工作通高层次综合工具描述卷积池化运算C代码综合RTL代码载板子硬件电路实现卷积池化运算加速

    32设计流程

    设计输入里三文件需手动编写TestBenchC函数文件头文件Constraints文件创建工程时候完成器件时钟频率约束Directive理解引导文件通添加引导工具生成想电路全串行全行等

    321实现方法

    需实现种通卷积池化运算电路第步第二步卷积运算电路中实现第步第二步池化运算电路中实现

    全连接运算中池化输出三维数组展开成维然权重矩阵相输出种运算通卷积运算实现权重矩阵转换四维数组然池化输出四维数组进行卷积运算样运算结果前面样需实现两种电路全连接运算通卷积运算电路完成

    两模块通axi总线挂载cpu总线通cpu配置参数完成运算

    322代码讲解

    描述卷积运算需参数输入数矩阵高度宽度输出数矩阵高度宽度卷积核移动步长输入通道数输出通道数等padding指矩阵周围填充数值两种模式种全部填零种填入元素相等值里采第二种

    通定义变量描述卷积运算参数
    图中定义描述池化运算参数
    实现卷积运算池化运算c语言程序
    卷积运算:

    池化运算:

    Vivado HLS工具代码中添加引导文件样生成带axi总线接口模块通axi总线接口模块连接总线cpu配置参数



    终生成模块示

    1





    4硬件系统搭建
    41硬件系统集成









    开vivado进入block design界面HLS生成两ip添加进需开发板面Arm处理器添加进zcu104开发板arm处理器ip名Zynq Ultrascale+ MPSoCxilinx开发板系统默认DDR接Arm处理器受块Arm处理器控制次设计中希Arm控制什时候进行卷积操作时需卷积池化两电路够访问存存中读取数工作流程图示






    生成block design出加进zynqconvpool三ip外新ip两AXI interconnectAXI smartconnectprocessor system reset中AXI interconnectAXI smartconnect总线互连器ARM处理器master口通总线互连器分成两master线分连接convpoolslave接口实现卷积池化两ip控制Convpool两ipslave接口master接口卷积池化操作需存中读取数Convpool两ipmaster接口通总线互连器连接arm处理器slave接口实现存访问











    42Python开发硬件
    421pythonip操作
    Pynq必须python3Python硬件配置调Overlay函数调方法from pynq import Overlay面介绍Overlay函数功
    Overlay函数指定烧写FPGAbit文件首先指定特流文件
    方法:
    from pynq import Overlay
    olOverlay(testbit)

    bit文件烧进PL调Overlaydownload函数
    oldownload()

    Download函数Python通download函数PS发出指令PL进行编程PL指Progarmmable Logic开发板编程逻辑部分FPGA PS指 Processing System开发板面arm处理器
    执行oldownload()需bit文件tcl脚Bit文件vivado工程生产bitstreamtcl脚生成:开block design状态export block designpython脚放相路径

    查调设计中ip
    ip_dict函数

    执行ip_dict函数返回设计中物理址物理址宽度ip类型等等参数help(Conv_0)查函数执行convolConv_0相ippython中实现例化help(conv)查ip函数里readwrite函数



    Write函数需指定需写寄存器址需写入值Read函数需指定寄存器址返回该寄存器值(讲pre时说读写存应该读写ip中寄存器值)

    址必须int类型值必须int者bytes否会出错
    422python存操作
    函数:Xlnk调方法from pynq import XlnkXlnk官方介绍


    Xlnk法numpy类似存中开出块数组存放需权值矩阵数值Xlnk开出物理址连续空间存储数DDR中连续区间存储数调pointer函数physical_address函数返回虚拟址真实物理址Xlnk开数组保证设计convpool ip取数时候取出取正确数

    第次卷积操作需数进行存分配实际操作代码



    开出数组需训练网络权值导入权值矩阵供续首先bin文件中权值读出重新排列写入存中

    43 完整硬件计算程
    代码示分分类图片数读入第层卷积第层池化第二层卷积第二层池化第层全连接第二层全连接出分类结果阶段面阶段具体操作进行讲解


    分类图片数读入

    读入手写数字图片张jpg尺寸28*28(改变尺寸mnist数集相)素点灰度值255原灰度值mnist图片中255代表黑普通图片0黑

    图数存入存中名image物理空间中

    第层卷积


    根面讲write函数卷积电路功配置次卷积需参数

    配置卷积核高度卷积核宽度XY方步长Padding模式否需relu权值矩阵W全部值权值矩阵b全部值输出卷积计算结果等等
    convwrite函数寄存器写数物理址写入存中相应值第层卷积操作中相应寄存器写入卷积核高度卷积核宽度XY方步长Padding模式否需relu具体值存放权值矩阵W权值矩阵b寄存器通读取存中数赋值卷积计算结果放入存h_conv1中

    分计算开始束信号定义电路结构关vivado hls做完高层综合会生产c语言驱动需读写寄存器c语言函数中定义Run poolRun conv函数c驱动翻译式改写面C语言驱动路径


    第层池化
    池化操作函数定义


    基操作模式第层卷积相次卷积次池化两次全连接终计算出09数字概率选取作结果输出



    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 5 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于机器学习的手势识别研究

    基于机器学习的手势识别研究目录摘 要 IIIAbstract IV第一章 绪论 11.1课题背景及问题的提出 11.2 手势识别技术发展现状及发展趋势 11.3论文主要内容 3第二章 基于...

    3年前   
    791    0

    基于FPGA的数字跑表

    基于FPGA的数字跑表学院:物电学院姓名: 学号:班级:班日期:2011年X月X日目录一、实例的主要内容 3二、实验目标: 41初步掌握Verilog HDL语言的设计方法 42、完成一个数字...

    3年前   
    630    0

    基于人脸识别的动态识别签到系统设计与实现

    目标检测(Object Detection)是近年来计算机科学的研究重点,他可以通过识别目标的几何特征,将复杂的场景分割并针对特定的目标进行识别,关键点在于准确度以及实时性 。人脸识别(Face...

    3年前   
    1211    0

    基于opencv的车牌识别系统设计与实现

     基于opencv的车牌识别系统设计与实现 ...

    2年前   
    747    0

    基于视觉的车道线识别算法研究毕业论文

    毕业设计基于视觉的车道线识别算法研究Research on Algorithms of Vision-basedLane Recognition 2009 届 电气与电子工程 分...

    4年前   
    997    0

    基于图像识别的智能小车系统设计

    第1章 绪论1.1 课题背景目前,在企业生产技术不断提高、对自动化技术要求不断加深的环境下,智能车辆以及在智能车辆基础上开发出来的产品已成为自动化物流运输、柔性生产组织等系统的关键设备。世界上...

    8个月前   
    243    0

    —基于机器学习的人脸识别算法的设计与实现

    人脸识别技术是一种新型的生物特征认证技术。人脸识别技术也是一个非常活跃的研究领域,涵盖了许多领域,例如数字图像处理。随着人们对应用程序需求的增长,面部识别技术趋向于大量使用,使用微芯片和标准化。

    3年前   
    830    0

    基于matlab的人民币面额识别

    基于matlab的人民币的自动识别 姓 名 学 号 院 系 信息...

    4年前   
    1047    0

    基于python的人脸识别系统

    随着科技的不断发展,人工智能在人类生活的应用越来越普及,作为当前最受关注的生物特征识别的方法,人脸识别在考勤、边检、安防、运输等领域有着巨大应用前景,是人工智能与计算机视觉领域的研究热点之一。

    3年前   
    2115    2

    手写信

      哈哈,写下这几个字,我笑了,感觉已经不认识自己的字了。本来,只想和你说一下,里面有几件护肤品,担心你不知道怎么用,想写个纸条说明一下,却突然想到,不如写封信吧,这个想法实在太棒了。  ...

    9年前   
    5771    0

    基于单片机的数字电压表

     基于单片机的数字电压表 摘要:本文介绍一种基于89S52单片机的一种电压测量电路,该电路采用ICL7135高精度、双积分A/D转换电路,测量范围直流0-±2000伏,使用LCD液晶模...

    5年前   
    1054    0

    手写论文的格式

    手写论文的格式  一、 引言  引言(前言、导言、绪言、序言)是正文的引子,相当于演说中的开场白。国内刊物引言部分不需另立标题。引言应当对正文起到提纲挈领和引导阅读兴趣的作用。在写引言之前首先...

    10年前   
    416    0

    数字图像处理车牌识别课程设计matlab实现附源代码

    基于matlab的车牌识别系统一、 目的与要求目的:利用matlab实现车牌识别系统,熟悉matlab应用软件的基础知识,了解了基本程序设计方法,利用其解决数字信号处理的实际应用问题,从而加深...

    1年前   
    343    0

    数字化大厦、大型会所RFID身份识别系统-RFID解决方案

    数字化大厦、大型会所RFID身份识别系统-RFID解决方案  一、系统概述  本方案将无线射频识别技术(即RFID技术)、红外传感技术应用到大型机关单位的开放式门禁管理或数字化大厦,成功的解决...

    11年前   
    541    0

    电子信息工程基于单片机的隐形指纹识别系统

    (基于单片机的隐形指纹识别系统)(An invisible fingerprint identification system based on single chip microcomput...

    1年前   
    243    0

    基于单片机的颜色识别早教系统设计与实现

     基于单片机的颜色识别早教系统设计与实现 ...

    3年前   
    637    0

    基于小波分析的板型缺陷识别方法

    基于小波分析的板型缺陷识别方法 张潜 高立群 王贞祥 (东北大学信息科学与工程学院, 110004) 摘要 本文提出了一种基于小波分析的冷轧板形缺陷识别的新方法。在识别中首先利...

    14年前   
    19891    0

    基于语音识别技术的智能家居控制系统的设计

    21世纪经济快速发展,人们对物质文化的需求也越来越高。在信息科技的支持下,事物在朝着简单化、便捷化、智能化的方向发展。在此背景下应运而生而生的智能家居,正是信息时代的典型产物。

    4年前   
    1201    0

    基于Matlab的特定人孤立词识别系统开题报告

    合肥师范学院本科毕业论文(设计)开题报告(学生填写)学号姓名指导教师题目基于MATLAB的特定人孤立词识别系统课题内容: 课题任务:本论文主要介绍在Matlab平台上进行特定人孤立词的处理和识...

    1年前   
    399    0

    基于Python的识别图片中文字的工具设计与实现

     基于Python的识别图片中...

    2年前   
    581    0