新闻中心

EEPW首页>智能计算>设计应用> 利用VectorBlox开发工具包在PolarFire FPGA实现人工智能

利用VectorBlox开发工具包在PolarFire FPGA实现人工智能

作者: 时间:2023-05-28 来源:CTIMES 收藏

随着、机器学习技术和物联网的兴起,的应用开始逐渐转移到收集数据的边缘装置。为缩小体积、减少产热、提高计算性能,这些边缘应用需要节能型的解决方案。Microchip的智能嵌入式视觉解决方案,致力于让软件开发人员可以更方便地在®现场可编程门阵列()内执行的模型,进而满足边缘应用对节能型推理功能日益增长的需求。作为Microchip嵌入式解决方案组合的重要新成员,™加速器软件(SDK)可帮助软件开发人员在不学习工具流程的前提下,利用Microchip创建灵活的低功耗神经网络应用。

软件支持以下几个特性:
1.基于OpenVINO™工具包的前端工具;
2.支持最常见的框架,如TensorFlow、Caffe、MxNet、PyTorch和DarkNet;
3.无需预先了解FPGA即可快速评估;
4.基于软件覆盖的实现;更新CNN时无需重新编程FPGA。

图片.png
Accelerator SDK包含不同的工具,可将来自TensorFlow和ONNX等框架的神经网络描述编译成二进制大型对象(BLOB)。这些BLOB存储在闪存中,并在执行期间加载到 DDR 内存中。

主要几个工具如下:

1.模型优化:将经过训练的网络转换为通用的中间语言(IR),并通过删除训练期间使用的多个层以及优化网络以进行推理;
2.量化:将优化的网络从 FP32 转换为 INT8,并使网络能够使用更少的内存来表示,同时将精度损失降至最低;
3.校准:调整以INT8精度表示的模型的激活函数和权重;
4.运行时生成:创建写入嵌入式非易失性存储(例如 SPI 闪存)的BLOB。

CoreVectorBlox IP是包含在SDK里面的硬件加速器,CoreVectorBlox IP由矩阵处理器(MXP)和MXP CNN IP组成。当需要共享神经网络工作负载时,它可以实例化为单核加速器或多核加速器。MXP由八个32位算术/逻辑单元(ALU)组成,负责按元素张量运算,如加、减、异或、移位、乘法、内积等。MXP CNN IP由乘法和累加的二维数组组成,IP使用FPGA内部的数学块来实现功能。顾名思义,MXP CNN IP负责执行CNN的卷积层。多个网络可以在运行时迭加并动态切换。
图片.png

开发设计流程可以简单的分成三个步骤:

步骤1:准备训练好的模型

使用SDK中提供的Python脚本将经过训练的模型转换为优化的INT8表示形式,称为BLOB。通过VectorBlox Accelerator Simulator运行BLOB,以验证网络的准确性并确保网络的成功转换。
图片.png

步骤2:准备硬件

FPGA视频套件配置为作为支持AI的智能相机运行。SDK包括一个预编译的套件刻录档。使用套件中包含的FlashPro编程器将刻录档写入PolarFire FPGA并将第1步生成的BLOB写入套件的SPI闪存。
图片.png
步骤3:编写您的嵌入式代码

在基于C/C++的SoftConsole IDE中使用提供的嵌入式代码并生成和编程hex文件。将视频套件连接到HDMI显示器并将其打开。修改嵌入式代码以加载和运行多个CNN BLOB、实时动态切换CNN或按顺序加载CNN以进行同时推理。
图片.png

本文引用地址://m.amcfsurvey.com/article/202305/447065.htm

部署选项:

PolarFire FPGA视频套件(MPF300-VIDEO-KIT-NS)支持VectorBlox SDK。

图片.png

VectorBlox智能相机参考设计流程:
1.通过MIPI CSI-2接收影像;
2.影像存储在DDR4内存中;
3.推理之前,影像从DDR4读回;
4.影像从RAW转换为RGB并写回DDR4;
5.CoreVectorBlox引擎对R、G、B数组运行推理并将结果写回内存;
6.Mi-V(软RISC-V®)生态系统对概率进行排序并创建带有边界框的覆盖框架,并将结果放入 DDR4;
7.读取原始影像并与迭加帧进行 alpha 混合,然后发送到 HDMI 显示器。
图片.png

本文作者为:Microchip高级应用工程师 张长轩



评论


相关推荐

技术专区

关闭