利用MATLAB在Intel FPGA上实现深度学习的原型
基于fpga的硬件非常适合在嵌入式设备上进行深度学习推理,因为它们提供了较低的延迟和功耗。早期原型对于开发能够有效部署到FPGA的深度学习网络至关重要。
了解深度学习HDL工具箱™如何从MATLAB直接自动化深度学习网络的FPGA原型®.只需几行MATLAB代码,就可以在Intel上部署和运行推理®Arria 10 SoC板。这种直接连接允许您在FPGA上运行深度学习推理,作为MATLAB中应用程序的一部分,因此您可以更快地收敛到满足系统需求的网络上。
fpga非常适合在边缘设备中进行深度学习推理,因为它们有较低的延迟,比cpu或gpu使用更少的电力,我们开始看到它们被设计到各种各样的应用中。
但边缘部署带来了速度、规模和功耗等限制,这迫使在基于fpga的硬件上实现深度学习网络时必须做出权衡。因此,对于工程师来说,能够在网络设计和FPGA部署之间快速迭代变得至关重要。
有了深度学习HDL工具箱,您可以从MATLAB开始在FPGA上运行推理,只需向现有的深度学习代码添加5行代码,因此您可以在MATLAB中进行实验和迭代。
要快速入门,请从扩展资源管理器或MathWorks硬件支持页面下载深度学习HDL工具箱的英特尔支持包。该软件包包括预先构建的比特流,可将深度学习处理器和数据移动功能编程到像Intel Arria 10 SoC这样的流行板上。
这种深度学习处理器具有运行卷积和全连接层的模块,您可以编译各种深度学习网络在其上运行,而无需重新编程FPGA。其余的功能控制层,以及参数的移动和存储和激活,以及允许MATLAB通过以太网或JTAG直接与之通信的接口。
这是一个车道检测的例子,它使用了一个已经训练过的串联网络。它会在视频上覆盖车道标记。
您需要的第一行代码是定义目标对象。在本例中,目标是使用JTAG接口的Intel板。
下一行定义工作流对象,它指定使用目标对象,哪个位流—在本例中是我们下载的使用单精度浮点计算的位流,因此您甚至不需要量化到定点,当然还有我们想要在目标上编程的网络。
第三行编译控制网络的指令并生成参数。当你迭代你的网络设计时,你可以重新编译并部署到处理器,
这是这里的第四行代码——deploy函数。如果还没有对比特流进行编程,那么这个程序将用比特流对FPGA进行编程。它加载已编译的定义网络的指令及其参数。
最后第五行是调用网络在FPGA上运行预测。你通常会在MATLAB算法中用到它,比如这里。
就这样,您可以在您的算法上下文中在FPGA上运行您的网络。
在这里,因为我们每次从MATLAB加载一个图像到FPGA,所以它看起来运行得很慢,但从性能分析来看,它还不算太差。我们可以从这里调整网络,重新编译,并重新评估性能,只需几行MATLAB代码。
因此,您可以立即得到关于它在FPGA上的执行情况的反馈,而不必给硬件团队增加负担,最终您可以为深度学习处理器生成HDL,您知道它可以在硬件中实现。
这5行MATLAB代码在我们的示例套件中是一个共同的主题,因此您可以用与您的应用程序最相似的示例之一来尝试它。
相关产品2022世界杯八强谁会赢?
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。