Xilinx Kria K26系统模块器件制造应用案例

2021-11-17 16:34 来源:电子说

生产线已经进入快节奏时代,但为了提高交货速度和客户满意度,需要在出货前检测制造或包装缺陷。然而,自动检测设备需要在不降低生产线速度的情况下进行处理和决策。因此,我们需要Xilinx Kria K26系统模块(SoM)等设备的帮助。Kria K26 SoM(见图1)允许开发人员利用可编程逻辑与高性能Arm处理器内核相结合的并行特性。Kria SoM的优势在于Xilinx首次为SoC(XCK26)提供了异构SoC和必要的支撑基础设施,如4GB DDR4内存、16GB eMMC、512Mb QSPI、TPM安全模块和必要的电源基础设施。

为了方便与应用程序的接口,该设备提供了两个240针连接器,可分为245个输入输出。

Xilinx还提供了Kria KV260可视化AI入门套件,让开发者可以快速开始设计。该工具包为开发人员提供了带有以下接口的SoM卡:

3个MIPI接口

通用串行总线

高清晰度多媒体接口

显示端口

1GB以太网

Pmod

这个初学者工具包还附带了一系列应用示例,帮助用户理解开发基于视觉的人工智能应用是一项非常简单的任务。Kria Visual AI Starter Kit非常适合需要快速图像处理的应用,例如检查标签是否已正确应用于生产线上的装运箱。

01

制造应用案例

接下来我们详细介绍一下Kria KV260视觉入门套件在制造业中的应用。创建这样的应用程序不一定需要可编程逻辑设计。但是它需要软件开发,并且有能力使用Xilinx Vitis AI来训练和编译新的机器学习模型。首先,我们需要安装和配置Vitis AI。

材料清单

克里亚KV260可视人工智能入门套件

02

创建虚拟机

我们需要运行支持的Linux发行版的本地Linux机器或虚拟机来运行Vitis AI。安装完成后,下载Ubuntu Linux磁盘映像,在虚拟机上安装Linux系统。本项目使用的Ubuntu版本为Ubuntu-18 . 04 . 4 desktop-amd64 . iso,点击此处下载。现在您可以开始构建虚拟机了。在第一步中,在VirtualBox管理器中单击新建。将显示一个对话框来创建一个新的虚拟机(参见图2)。输入虚拟机的名称,将类型和版本分别设置为Linux和64位Linux。此外,您还可以设置与虚拟机共享的系统内存大小(参见图3)。

单击创建按钮,将显示虚拟硬盘的设置。选择512GB以允许动态分配物理存储空间。随着磁盘使用量的增加,虚拟硬盘的大小将扩展到512GB。本项目采用外置固态USB C驱动器作为虚拟硬盘,确保有足够的可用空间。

配置虚拟机后,下一步是安装操作系统。选择新创建的虚拟机,然后单击启动按钮启动虚拟机9()。

当你启动虚拟机时,会要求你安装之前下载的Ubuntu ISO。

在虚拟硬盘上安装Ubuntu操作系统。选择安装Ubuntu。

选择Ubuntu的位置和配置选项后,配置键盘。

选择最低安装,因为我们不需要使用办公软件,媒体播放器或玩游戏。

安装时擦除磁盘并安装Ubuntu。

单击继续继续。

选择您的地理位置和时区。

最后,输入Ubuntu计算机名、用户名和密码。

安装完成后,重新启动虚拟机。

重启后,登录并开始安装Vitis AI。

03

安装威迪和威迪人工智能

对于运行Linux的虚拟机,接下来需要安装Vitis和Vitis AI。安装Vitis时,您需要下载时创建的Xilinx帐户。安装Vitis需要很长时间,所以我们会先安装它。打开Xilinx下载页面,选择Linux自解压网页安装程序。

下载web安装程序后,找到下载位置,选择应用程序,然后右键单击以更改权限,使其可以作为应用程序执行。

现在,您可以使用终端窗口安装Vitis。所需时间取决于虚拟机的性能和互联网连接。使用以下sudo命令安装此工具。

苏多./Xilinx _ Unified _ 2020.2 _ 1118 _ 1232 _ Lin 64 . bin

7aec6a98-4756-11ec-b939-dac502259ad0.png

图17:运行安装程序将启动威蒂斯安装程序(见图18)。

登录您的帐户。

选择Vitis作为目标应用程序,也将安装Vivado。

为了节省安装空间,应取消选择除SoC之外的所有设备。

接受安装条件和条款。

选择安装目录,建议使用默认位置。

安装时摘要

y中,选择Install并等待安装完毕。

安装完成后,需要运行以下脚本以安装所有相关项:

sudo 《install_dir》/Vitis/《release》/scripts/installLibs.sh

接下来,安装Vitis AI。在本例中,我们将安装Vitis AI以从CPU而不是GPU运行,因而会影响训练性能。首先要安装docker,请按照此处的说明进行操作。注意,可能需要在安装完成后重启虚拟机。

接下来,请使用以下命令安装Git:sudo apt update sudo apt install git选择/创建Vitis-AI的安装目录。使用以下命令克隆Vitis-AI:git clone https://github.com/Xilinx/Vitis-AI.git一旦克隆好Vitis-AI存储库,请将其改为存储目录,并提取docker映像。cd Vitis-AI docker pull xilinx/vitis-ai:latest从docker下载最新的Vitis-AI映像将需要几分钟的时间。在提取docker映像之后,我们需要构建交叉编译系统。可以通过运行Vitis-AI/setup/mpsoc/VART中的脚本来完成此操作(见图25)。cd Vitis-AI/setup/mpsoc/VART 。/host_cross_compiler_setup_2020.2.sh

运行脚本后,请确保运行指定的命令以启用交叉编译环境。我们可以通过编译一个演示程序来测试是否正确安装了Vitis AI。在本例中,我们采用的是demo/VART/Resnet50目录下提供的resnet50应用程序。请使用以下命令编译应用程序:

Bash -x build.sh

如果您在终端窗口中没有看到错误,并且可执行文件出现在目录中,则说明Vitis AI安装成功(见图26):

现在,我们需要开发数据集,以显示正确和错误黏贴的标签。

04

创建数据集

为了训练神经网络,我们首先需要一组正确和错误图像的数据集。我们以几个正确和错误地黏贴了贸泽标签的箱子为例。为了获得多样化的图像,我们从多个角度拍摄了正确和错误黏贴标签的箱子(见图27和28)。

这些图像被整理成两个目录——一个是正确的标签,另一个是错误的标签。对于捕获到的图像,我们需要训练一个神经网络。在本例中,我们将使用Edge Impulse。请注意,您需要为Edge Impulse创建一个免费的帐户。在Edge Impulse端,首先要创建一个新项目(见图29)。

新项目创建后,可以上传标记为正确和错误的图像文件夹。首先选择正确目录中的所有文件并进行上传,标记为Label_Correct。随后,上传错误的图像并将其标记为Label_Incorrect。

所有图像都上传完成后,接下来就要定义Impulse。选择宽度和高度均为224像素的输入图像。选择图像,输入Transfer Learning,然后保存Impulse。

然后,我们可以通过生成特征和训练Impulse来训练模型。

选择模型MobileNetV2 160x160 1.0,等效模型位于Xilinx Model Zoo下(见图33)。

可能需要几分钟的时间来训练模型。训练完成后,返回概览页面,选择下载迁移学习模型。这将包括保存的模型和.zip文件中的变量(检查点)。

05

量化并编译模型

接下来使用Vitis AI对模型进行量化和编译。在虚拟机中,我们可以通过发出以下命令来运行Vitis AI。

。/docker_runs.sh Xilinx/vitis-ai-cpu:latest

加载Vitis AI后,使用以下命令激活TensorFlow。

conda activate vitis-ai-tensorflow图36:激活Vitis AI TensorFlow

接下来,冻结将检查点的信息合并到冻结模型文件的模型。

一旦模型作为冻结模型输出,我们就可以使用编译器编译输出模型,以部署到系统中。

我们可以从Xilinx Model Zoo中包含的YAML文件中了解输出节点的信息。

要检查冻结的网表,则需要安装Netron。此外,理解量化过程的输入和输出节点名称也很重要。

80ce48aa-4756-11ec-b939-dac502259ad0.jpg

有了量化网表,我们可以将量化网表编译为部署在Kria SoM上的模型(见图40)。

借助于SCP/FTP,我们可以将编译后的模型上载到以下目录中的Kria文件系统:

/usr/share/vitis_ai_library/models/

上传好模型后,可以生成一个软件应用程序,用于测试神经网络。这时,我们可以将几个正确和错误的图像上载到Kria SoM,来测试应用程序(见图41和42)。

结语

该项目展示了对于工业AI/ML应用,在Kria SoM中训练和部署神经网络是一件非常简单的事情,其应用潜力也是无限的。未来可能需要更新软件以利用gstreamer框架,并像在生产线上一样对实时图像进行分类。责任

延伸 · 阅读