这个例子展示了如何检索ResNet-18网络的预测和分析器结果。查看您预先训练的深度学习网络中的各层、卷积模块和全连接模块的网络预测和性能数据。
创建一个类的对象工作流
通过使用dlhdl。工作流
类。
看到的,使用属性名称值对创建工作流对象.
为工作流对象设置一个备用深度学习网络和比特流。
看到的,使用属性名称值对创建工作流对象.
创建一个类的对象dlhdl。目标
并指定目标供应商和接口。看到的,dlhdl。目标
.
要在指定的目标FPGA板上部署网络,调用部署
方法用于工作流对象。看到的,部署
.
调用预测
工作流对象的函数。提供一系列图像InputImage.
参数。提供参数来打开分析器。看到的,预测结果和概要结果.
分类图像的标签存储在一个结构中结构体
并显示在屏幕上。在结构中返回速度和延迟的性能参数结构体
.
使用此映像运行以下代码:
snet = resnet18;hT = dlhdl。目标(“Xilinx”,'界面',“以太网”);hw = dlhdl.workflow(“净”,斯内特,“比特流”,'zcu102_single',“目标”hT);hW.deploy;形象= imread (“zebra.jpeg”);inputImg = imresize(图像,[224,224]);imshow (inputImg);[prediction, speed] = hW.predict(single(inputImg),“配置文件”,“上”);[val, idx] = max(预测);snet.Layers(结束).ClassNames {idx}
###完成写入输入激活。###运行单输入激活。深度学习处理器Profiler性能结果LastFrameLatency(cycles) LastFrameLatency(seconds) FramesNum Total Latency Frames/s ------------- ------------- --------- --------- --------- Network 23659630 0.10754 1 23659630 9.3 conv1 2224115 0.01011 pool1 572867 0.00260 res2a_branch2a 972699 0.00442 res2a_branch2b 972568 0.00442 res2a 2093120.00095 res2b_branch2a 972733 0.00442 res2b_branch2b 973022 0.00442 res2b 209736 0.00095 res3a_branch2a 747507 0.00340 res3a_branch2b 904291 0.00411 res3a_branch1 538763 0.00245 res3a 104750 0.00048 res3b_branch2a 904389 0.00411 res3b_branch2b 904367 0.00411 res3b 104886 0.00048 res4a_branch2a 485682 0.00221 res4a_branch2b 880001 0.00400 res4a_branch1 486429 0.00221 res4a 52628 0.00024 res4b_branch2a 880053 0.00400 res4b_branch2b 880035 0.00400 res4b 52478 0.00024 res5a_branch2a 1056299 0.00480 res5a_branch2b 2056857 0.00935 res5a_branch1 1056510 0.00480 res5a 26170 0.00012 res5b_branch2a 2057203 0.00935 res5b_branch2b 2057659 0.00935 res5b 26381 0.00012 pool5 71405 0.00032 fc1000 216155 0.00098 * The clock frequency of the DL processor is: 220MHz
分析器数据返回以下参数及其值:
LastFrameLatency(周期)
-前一帧执行的总时钟周期数。
时钟频率 - 从用于将网络部署到目标板的比特流检索时钟频率信息。例如,Profiler返回* DL处理器的时钟频率为:220MHz
.时钟频率220兆赫从zcu102_single
比特流。
LastFrameLatency(秒)
- 前一帧执行的总秒数。总时间计算为LastFrameLatency /时钟频率(周期)
.例如conv_module
LastFrameLatency(秒)
是计算2224115 / (220 * 10 ^ 6)
.
FramesNum
—输入到网络的帧总数。该值将用于计算帧/秒
.
总延迟
—所有网络层和模块执行的时钟周期的总数FramesNum
.
帧/秒
- 由网络一秒钟处理的帧数。总数帧/秒
是计算(FramesNum *时钟频率)/总延迟
.例如帧/秒
在本例中计算为(1 * 220 * 10 ^ 6)/ 23659630
.