神经网络从算法训练到FPGA部署 (1)--开发流程说明

       将深度神经网络算法部署到现实场景(基于FPGA),主要包含两部分的工作,一个是为场景找到合适的算法,训练出满足要求的模型;第2个是将模型定点化后部署在FPGA上运行,主要含以下步骤:

  1. 准备工作:数据收集及TFrecord制作,数据预处理函数编写。

        练习时从kaggle网站上获取带标注数据集;

        制作训练与验证用的Tfrecord数据文件;

        图像增强、剪裁、pad、标准化等预处理;

        训练及验证用的mini-batch数据生成(随机、多线程)

    2. 基于Tensorflow框架下VGG13,InceptionV3,Resnet50网络改写及适配,适配到本地数据集的类别数。在本地数据集上训          练,精度达到要求。

    3. 网络模型压缩

        Xilinx公司提供了Decent_Q工具进行模型压缩及定点,但官方只提供定点功能,带剪枝功能的模型压缩工具估计要另外收           费。后面个人想自己开发一个工具替代该功能。通过网络结构及参数,将权重较小的或者值比较相近的kernel去掉,重新构         建更稀疏的网络,保存新的网络和权重,重新导入数据,做微调重新训练,生成新的Pb,给xilinx的decent_Q做定点。

    4. FPGA上的部署:

        固化后的模型及参数保存,使用pb文件格式;

       FPGA上DPU集成;

       利用DNNDK工具生成DPU的运行指令;

       Petalinux系统制作及DPU后端C程序开发。

       不过如果不是卷积网络,就无法利用xilinx的这套工具链。

       自己开发部署工具链一般包含:

       硬件:硬件加速器的开发,针对算法开发算子、调度单元、通信模块。

       定点工具及编译器:模型定点化,以及网络模型、权重翻译成指令及权重数据。

       Runtime:运行时配合的驱动以及数据预处理、后处理代码。

     另外,mxnet、keras、pytorch这些开发框架下开发的模型,可以转化成pb格式,这样可以适配采用不同框架开发算法的人           员。

  • 5
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值