发 帖  
原厂入驻New
[问答]

如何移植一个CNN神经网络到FPGA中?

220 cnn 神经网络 FPGA
分享
训练一个神经网络并移植到lattice FPGA上,通常需要开发人员既要懂软件又要懂数字电路设计,是个不容易的事。好在FPGA厂商为我们提供了许多工具和IP,我们可以在这些工具和IP的基础上做二次开发。
移植一个神经网络到Lattice FPGA上可以分为三步:
第一步:使用TensoRFlow, Caffe, Keras训练自己的网络。(这里Lattice官网的参考设计提供了训练网络部分的参考代码)
第二步:使用Lattice sensAI 软件编译已训练好的神经网络,定点化网络参数。该软件会根据神经网络结构和预设的FPGA资源进行分析并给出性能评估报告,此外用户还可以在软件中做Inference的仿真,查看基于浮点参数和基于定点参数的仿真结果。甚至还能通过USB连接PC与FPGA进行硬件调试。
第三步:调用Lattice CNN IP以及其他FPGA组件(例如MIPI视频源接入、ISP、目标画框、NMS算法、视频输出等),构建一个完整CNN Inference系统和产品。




0
2020-11-26 07:46:03   评论 分享淘帖 邀请回答

相关问题

5个回答
2020-11-26 10:06:45 评论

举报

解压下载的文件




总共有三个文件夹:
1)dataset 文件夹下是训练使用的图片和标签;这里是检测人的,大概7000多张图片,你可以直接用这些图片做训练。分辨率是224*224的
2)training_code文件夹下是训练用的代码;
3)Object_Counting_Using_CNN_Accelerator_IP文件夹下是FPGA部分的RTL设计工程。
2020-11-26 10:07:02 评论

举报

训练数据集的准备
如果你没有自己的训练数据,只是想要学习流程,那请直接复制粘贴dataset文件夹下的ImageSets 和 training两个文件夹并粘贴到training_code/src底下;这里的图片可用作训练,分辨率为224*224,目标是找出图片中人的位置。每张图片都对应一个txt文本格式的标签给出了人的位置,这个标签是KITTI格式的,符合Lattice提供的训练代码对标签格式的要求。
如果你希望用自己的数据集做训练,那请在training_code/image/training文件夹下放入你自己的图片和标签,然后运行training_code/image/training/dataset_create.py文件,运行后会在training_code/image/training/ImageSets文件夹下生成train.txt文件;然后同样将ImageSets 和 training 两个文件夹粘贴到training_code/src底下。
工程中自带的标签类别名是person,这个工程本来是用来检测人的; 如果你的数据集标签类别名更换了不是person了,请在training_code\src\config.py的第41行修改为你自己的标签类别名。注意不管你的标签文档里的标签类别名是大写,还是小写,还是大小写混合,这里请统一用小写。




如果你想训练其他图片而你又没有数据集,那么请查看我的上一篇该系列的博文如何下载谷歌开源数据集。
2020-11-26 10:07:10 评论

举报

训练神经网络
执行training_code/src/train.py开始训练,这里有一些依赖库需要安装,比如Tensorflow, Keras等,耐心安装好需要的库,运行代码。每1000个step会打印一次loss总结,每1000个step保存一次checkpoint文件。具体多少个step以及check_point保存地址都可以在如下的train.py文件里修改。




随着step的增加,loss在慢慢变小




经过很多次的迭代我们就可以得到最终需要的check_point文件了。到这里如果只做软件部分那么已经结束了,但是如果需要继续做移植工作,那么还需要把checkpoints文件转换成pb文件。

2020-11-26 10:07:24 评论

举报

从checkpoint文件到pb文件
我们需要把checkpoints封成pb文件才能送入sensAI做分析。
在training_code./src/logs/tensorflow文件夹下可以找到test.pbtxt,把它改名为model.pbtxt并复制到training_code/freeze/model文件夹下,如果该文件夹下已有model.pbtxt文件,请根据自己的需要决定是否覆盖或备份。
同样的把我们训练得到的check_point相关的文件都复制到:training_code/freeze/model文件夹下;然后运行training_code/freeze/trainckpt2inferencepb.py


运行后就能生成model_frozenforInference.pb文件了。


pb文件可以送入Lattice sensAI 软件进行分析,还可以编译成Lattice CNN IP 指令,量化网络参数,仿真,硬件调试等。下一节介绍如何使用Lattice sensAI 软件。

2020-11-26 10:07:40 评论

举报

只有小组成员才能发言,加入小组>>

237个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表