时间:2024-08-09 来源:网络搜集 关于我们 0
LeNet-5:是Yann LeCun在1998年设计的用于手写数字识别的卷积神经网络,当年美国大多数银行就是用它来识别支票上面的手写数字的,它是早期卷积神经网络中最有代表性的实验系统之一。
LenNet-5共有7层(不包括输入层),每层都包含不同数量的训练参数,如下图所示。
LeNet-5中主要有2个卷积层、2个下抽样层(池化层)、3个全连接层3种连接方式。
https://github.com/lulinchen/cnn_open
该项目是通过 FPGA 实现硬件 CNN 结构的尝试。
代码由 Verilog/SystemVerilog 编写,并使用 Vivado 在 Xilinx FPGA 上合成实验。
该代码只是功能的实验性代码,并未完全优化。
Xilinx KCU105 Board
https://china.xilinx.com/products/boards-and-kits/kcu105.html
XCKU040-2FFVA1156E FPGA
系统逻辑单元 (K)530DSP slice1,920Block RAM (Mb)21.116.3Gb/s 收发器20I/O 引脚520仅实现了 4 个基本模块:
conv,这个模块执行卷积计算,全连接也和卷积一样处理,内核大小等于输入数据大小。The max_poolThe relu迭代器(The iterator),在输入数据周围跑,并馈送至计算单元。LeNet 使用上诉 4 个基本模块构成,权重和偏差存储在 ROM 中编码(这也是纯FPGA实现CNN的难点,参数不好修改和存储)。
参考 Tenserflow Lenet 代码,来自CarND-LeNet-Lab(https://github.com/udacity/CarND-LeNet-Lab)。
Xilinx KCU105 Board,采用HDMI输入输出子板。
通过 HDMI 电缆将 PC 连接到 HDMI 输入节点。
一个 32x32 大小的输入从 PC 屏幕输出中裁剪出来,然后输入 Lenet。分类结果显示在 HDMI 输出上。
下图截自FPGA的HDMI输出。白色矩形是由 FPGA 绘制的。将Mnist 数字图片移动到矩形中,或使用Paint 软件手动绘制一个数字。矩形下方打印的数字为分类结果。
原始的软件代码参考:
1、https://github.com/udacity/CarND-LeNet-Lab
2、https://github.com/udacity/CarND-Term1-Starter-Kit
到底纯FPGA适不适合这种大型神经网络的设计?这个问题其实我们不适合回答,但是FPGA厂商是的实际操作是很有权威性的,现在不论是Intel还是Xilinx都没有在自己传统的FPGA上推广AI,都是在基于FPGA的SoC上推广(Vitis和OpenVINO,前者Xilinx后者Intel),总结来看就是:纯 RTL 硬件设计不是AI的好选择。特别是对于大规模网络,权重和中间结果需要存储在外部存储器中。并且数据迭代器会更加复杂。设计周期长,AI相关领域迭代速度快,综上以上几点,可以很容易给你们指引一条道路。
最好使用通用或专用处理器来做控制工作,让硬件来执行计算(加速的概念)。
综上,此项目仅仅适合需要了解相关概念的朋友参考,不建议深入,一些简单的算法可以深入学习一下,推荐下面的项目:
https://github.com/suisuisi/FPGAandCNN/tree/main/DigitalRecognition
最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面有什么感兴趣方面的项目,大家可以在后台留言或者加微信留言,今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。
优秀的 Verilog/FPGA开源项目介绍(十三)- I2C
优秀的 Verilog/FPGA开源项目介绍(十二)- 玩FPGA不乏味
优秀的 Verilog/FPGA开源项目介绍(十一)- SPI/SPI FLASH/SD卡
优秀的 Verilog/FPGA开源项目介绍(十)- H.264和H.265
优秀的 Verilog/FPGA开源项目介绍(九)- DP(增改版)
优秀的 Verilog/FPGA开源项目介绍(八)- HDMI
优秀的 Verilog/FPGA开源项目介绍(七)- CAN通信
优秀的 Verilog/FPGA开源项目介绍(六)- MIPI
优秀的 Verilog/FPGA开源项目介绍(五)- USB通信
优秀的 Verilog/FPGA开源项目介绍(四)- Ethernet
优秀的 Verilog/FPGA开源项目介绍(三)- 大厂的项目
串行总线技术(二)-串行总线中的先进设计理念及SerDes/PMA介绍
优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V
优秀的 Verilog/FPGA开源项目介绍(一)-PCIe通信