本文转载自:<span id="profileBt"><a href="https://mp.weixin.qq.com/s?__biz=MzU0Mzk1MzMyNQ==&mid=2247484698&idx=1&…; PYNQ开源社区微信公众号</a></span>
感兴趣者可与 pynq_china@xilinx.com 联系,共同合作拓展项目。
<strong>项目介绍</strong>
本项目主要设计了一个手写体数学公式的计算器,其主要功能包括:首先从USB摄像头或者SD卡上存储的图片数据获取图像的输入,随后在Arm核上将其转变为单通道灰度图像,然后根据像素阈值确定图像内可能存在数字或者数学符号的区域,并将该区域的像素点提取出来,并将其分辨率缩放至32*32大小之后送入后续的卷积神经网络之中,待卷积神经网络识别完成之后,将所有的数字或者数学符号以字符串数组的形式按原有顺序送入计算函数之中,计算出公式结果并输出。
<a href="https://mp.weixin.qq.com/s?__biz=MzU0Mzk1MzMyNQ==&mid=2247484698&am…;点击查看项目视频</a>
<strong>项目目标</strong>
1、 利用FPGA并行计算的优势,加速CNN进行数学符号识别的过程。
2、 探索出CNN的应用场景。
3、 希望本项目具有较高的可移植性和通用性。
4、 深入学习Zynq开发,提升Zynq软硬协同的开发能力。
5、 深入了解卷积神经网络的底层实现原理。
6、本项目设计的最后一个目的是为初学HLS进行CNN加速的人提供一个很好的参考或者启蒙。
<strong>项目相关知识</strong>
1、Tensorflow深度学习框架
2、CNN的实现原理及相关知识
3、HLS的相关知识
4、Python编程的相关知识
5、神经网络量化的相关知识
<strong>项目展示</strong>
基于TensorFlow框架下的网络训练与量化后程序运行结果如下:
<center><img src="http://xilinx.eetrend.com/files/2020-08/wen_zhang_/100050982-104197-1.p…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-08/wen_zhang_/100050982-104198-2.p…; alt=""></center>
<p align="center"><strong>Python网络训练结果</strong></p>
在PYNQ上实现整个手写体数学公式计算器的运行结果如下:
(如图片不清晰,可以前往Github查看)
<center><img src="http://xilinx.eetrend.com/files/2020-08/wen_zhang_/100050982-104199-3.p…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-08/wen_zhang_/100050982-104200-4.p…; alt=""></center>
<center><img src="http://xilinx.eetrend.com/files/2020-08/wen_zhang_/100050982-104201-5.p…; alt=""></center>
系统框图
<center><img src="http://xilinx.eetrend.com/files/2020-08/wen_zhang_/100050982-104202-6.p…; alt=""></center>
本项目已在github开源,网址: https://github.com/Microdent/Handwritten_Mathematical_Calculator_on_FPGA