主要内容

标志识别网络

此示例演示如何创建、编译和部署一个dlhdl。工作流使用Xilinx FPGA和SoC的深度学习HDL工具箱™支持包,将Logo识别网络作为网络对象。使用MATLAB®从目标设备检索预测结果。

标识识别网络

标志有助于用户识别和识别品牌。许多公司在广告、文件材料和促销活动中使用他们的标识。logo识别网络(logonet)是用MATLAB开发的,可以在各种光照条件和摄像机运动下识别32个logo。因为这个网络只关注识别,所以您可以在不需要本地化的应用程序中使用它。

先决条件

  • Xilinx ZCU102 SoC开发工具包

  • 深度学习HDL工具箱™支持包Xilinx FPGA和SoC

  • 深度学习工具箱™

  • 深度学习HDL工具箱™

加载预训练的系列网络

要加载预训练的系列网络标识网,输入:

snet = getLogoNetwork;

要查看预训练序列网络的层数,输入:

analyzeNetwork (snet)

logonet_layers.png

创建目标对象

创建一个目标对象,该对象具有目标设备的自定义名称和用于将目标设备连接到主机的接口。接口选项为JTAG和Ethernet。要使用JTAG,请安装Xilinx™Vivado™Design Suite 2020.2。要设置Xilinx Vivado工具路径,输入:

% hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2020.2\bin\ Vivado .bat');

要创建目标对象,输入:

hTarget = dlhdl。目标(“Xilinx”“界面”“以太网”);

创建工作流对象

属性的对象dlhdl。工作流类。创建对象时,指定网络和位流名称。指定保存的预训练的标识网神经网络,snet,作为网络。请确保位流名称与数据类型和目标FPGA板匹配。本例中目标FPGA板为Xilinx ZCU102 SOC板。位流使用单一数据类型。

hW = dlhdl。工作流(“网络”snet,“比特流”“zcu102_single”“目标”, hTarget);如果在Xilinx ZC706板上运行,而不是上面的命令,取消下面命令的注释。% hW = dlhdl。工作流('Network', snet, 'Bitstream', 'zc706_single','Target',hTarget);

编制Logo识别网络

命令的compile函数编译logo识别网络dlhdl。工作流对象。

dn = hW.compile
offset_name offset_address allocated_space _______________________ ______________ _________________ "InputDataOffset" "0x00000000" "24.0 MB" "OutputResultOffset" "0x01800000" "4.0 MB" "SystemBufferOffset" "0x01c00000" "60.0 MB" "InstructionDataOffset" "0x05800000" "12.0 MB" "ConvWeightDataOffset" "0x06400000" "32.0 MB" "FCWeightDataOffset" "0x08400000" "44.0 MB" "EndOffset" "0x0b000000" "Total: 176.0 MB"
dn =带字段的结构:操作员:[1×1 struct] LayerConfigs: [1×1 struct] NetConfigs: [1×1 struct]

编程位流到FPGA和下载网络权值

要在Xilinx ZCU102 SoC硬件上部署网络,请运行dlhdl。工作流对象。该函数利用编译函数的输出,通过编程文件对FPGA板进行编程。它还下载网络权重和偏差。部署功能开始对FPGA设备进行编程,并显示进度消息和部署网络所需的时间。

hW.deploy
FPGA位流编程已经跳过,因为相同的位流已经加载到目标FPGA上。###加载权重到FC处理器。完成33%,当前时间是2020年6月28日12:40:14。67%完成,当前时间是2020年6月28日12:40:14。### FC权重加载。现在时间是2020年6月28日12:40:14

加载示例图像

加载示例图像。

图片= imread(“heineken.png”);inputImg = imresize(图像,[227,227]);imshow (inputImg);

运行预测

上执行预测函数dlhdl。工作流对象并显示结果:

[预测,速度]= hW.predict(single(inputImg),“配置文件”“上”);
###已完成输入激活。###运行单输入激活。
深度学习处理器性能分析结果LastLayerLatency(cycles) LastLayerLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 38865102 0.17666 1 38865144 5.7 conv_module 34299592 0.15591 conv_1 6955899 0.03162 maxpool_1 3306384 0.01503 conv_2 10396300 0.04726 maxpool_2 1207215 0.00549 conv_3 9269094 0.04213 maxpool_3 1367650 0.00622 conv_4 1774679 0.00807 maxpool_4 22464 0.00010 fc_module 4565510 0.02075 fc_1 27484780.01249 fc_2 1758315 0.00799 fc_3 58715 0.00027 * DL处理器时钟频率:220MHz
[val, idx] = max(预测);snet.Layers(结束).ClassNames {idx}
Ans =喜力啤酒
Baidu
map