利用FPGA进行深度学习加速,目前已经推出了很多优秀的项目,比如xilinx官方的BNN和QNN开源项目等。同时自动化设计顶级会议(Design Automation Conference, DAC)每年都会主办低功耗目标检测系统设计挑战赛,原本该大会分为GPU和FPGA两个赛道,但是在2020年的大会中仅保留了FPGA赛道。该大会每年会有大量的优秀的作品,其中部分作品会进行开源,这些作品是我们学习的绝佳资源。下面我们将首先复现在2019年在第二届低功耗目标检测系统设计挑战赛取得冠军的iSmart3团队的方案。该团队来自美国伊利诺伊大学(UIUC)的团队,包揽了 GPU 组和 FPGA 组的双冠军。该比赛选择的算法平台为ultra96系列开发板,核心芯片为ZU3。本次测评将在Edgboard上进行实现。如果需要了解该目标检测网络的详细信息可以参考以下论文:
https://arxiv.org/abs/1909.09709
网络的具体结构图如下所示:
首先需要利用HLS对IP核进行重新构建,首先新建工程,选择芯片型号为:xczu3eg-sfvc784-1-i,周期为5ns。完成以后进行综合,并且生成IP。由于C仿真时间较长,所以本次暂时不进行仿真实验。
然后新建vivado工程设置PL的输出时钟为100MHz:
然后新建BD文件,进行简单的连接,连接得到的结果如下所示:
生成顶层文件后进行综合和实现生成bit,tcl等文件,然后将对应的权重文件和工程文件上传至Edgeboard开发板,运行对应的Python文件,对15张测试图片进行识别,得到的情况如下所示:
可以看到计算过程中输出了每个目标的图标,并且15张图片进行目标检测消耗了5秒左右的时间,这个速度和论文描述的实际成绩还是有差距,也有可能是计算方法的问题。