注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
bloong的个人空间 http://home.eeworld.com.cn/space-uid-335941.html [收藏] [复制] [分享] [RSS]
日志

【米尔MYC-JX8MPQ评测】+ 运行 TensorFlow Lite(CPU和NPU对比)

已有 176 次阅读2022-3-27 23:23

TensorFlowLite是一个开源软件库,专注于在移动设备和嵌入式设备上运行机器学习模型(可在http://www.tensorflow.org/lite上获得)。它支持具有低延迟和小二进制大小的设备上的机器学习推断。张量流Lite还支持使用安卓操作系统神经网络API(NNAPI)进行硬件加速。 

我们试用一下TensorFlowLite,试用之前我们先介绍一位老前辈,当然也是BUG的出处。

 

Bug一词指在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题。但是Bug一词是如何由来的呢?这一切起源于1947年,从一只不小飞入Mark II计算机的飞虫说起。

1947年9月9日葛丽丝·霍普(Grace Hopper)发现了计算机史上第一只程序“Bug”

扩展阅读:

1947年9月9日,当人们测试Mark II计算机时,它突然发生了故障。经过几个小时的检查后,工作人员发现了一只飞蛾被打死在面板F的第70号继电器中。当把这个飞蛾取出后,机器便恢复了正常。

当时为Mark II计算机工作的著名女科学家Grace Hopper将这只飞蛾粘帖到当天的工作手册中,并在上面加了一行注释,

“First actual case of bug being found”

 

 

1947年9月9日葛丽丝·霍普(Grace Hopper)发现了计算机史上第一只程序“Bug”

当时的时间是15:45.随着这个故事的广为流传,越来越多的人开始使用Bug一词来指代计算机中的设计错误,并把Grace Hopper上登记的那只飞蛾看作是计算机里上第一个被记录在文档中的Bug.

这一称呼后来演变成表达缺陷漏洞的计算机专业术语,人们习惯地把排除程序故障叫做“debug”(除虫)。

 

今天我们测试TensorFlow的 image classification 的主角就是老前辈grace_hopper的相片。

 

1、在CPU上使用移动网络模型运行此示例,请使用以下命令:

root@myd-jx8mp:/usr/bin/tensorflow-lite-2.4.0/examples# ./label_image -m mobilenet_v1_1.0_224_quant.tflite -i grace_hopper.bmp -l labels.txt

运行结果如下

INFO: Loaded model mobilenet_v1_1.0_224_quant.tflite
INFO: resolved reporter
INFO: invoked
INFO: average time: 44.477 ms 
INFO: 0.780392: 653 military uniform
INFO: 0.105882: 907 Windsor tie
INFO: 0.0156863: 458 bow tie
INFO: 0.0117647: 466 bulletproof vest
INFO: 0.00784314: 835 suit

2、要使用xnnpack委托在CPU上运行示例应用程序,请使用-x1开关

./label_image -m mobilenet_v1_1.0_224_quant.tflite -i grace_hopper.bmp -l labels.txt -x 1

运行结果如下

INFO: Loaded model mobilenet_v1_1.0_224_quant.tflite
INFO: resolved reporter
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
INFO: Applied XNNPACK delegate.
INFO: invoked
INFO: average time: 44.514 ms 
INFO: 0.780392: 653 military uniform
INFO: 0.105882: 907 Windsor tie
INFO: 0.0156863: 458 bow tie
INFO: 0.0117647: 466 bulletproof vest
INFO: 0.00784314: 835 suit

3、若要在GPU/NPU硬件加速器上使用相同的模型运行该示例,请添加-a1命令行参数。要区分3DGPU和NPU,请使用USE_GPU_INFERENCE开关。例如,对于NPU硬件加速器,请使用以下命令:

USE_GPU_INFERENCE=0 ./label_image -m mobilenet_v1_1.0_224_quant.tflite -i grace_hopper.bmp -l labels.txt -a 1

运行结果如下

INFO: Loaded model mobilenet_v1_1.0_224_quant.tflite
INFO: resolved reporter
INFO: Created TensorFlow Lite delegate for NNAPI.
INFO: Applied NNAPI delegate.

INFO: invoked
INFO: average time: 2.773 ms 
INFO: 0.768627: 653 military uniform
INFO: 0.105882: 907 Windsor tie
INFO: 0.0196078: 458 bow tie
INFO: 0.0117647: 466 bulletproof vest
INFO: 0.00784314: 835 suit

3、使用Python3运行

root@myd-jx8mp:/usr/bin/tensorflow-lite-2.4.0/examples# python3 label_image.py 

运行结果

INFO: Created TensorFlow Lite delegate for NNAPI.
Applied NNAPI delegate.

Warm-up time: 6612.9 ms

Inference time: 3.0 ms

0.870588: military uniform
0.031373: Windsor tie
0.011765: mortarboard
0.007843: bow tie
0.007843: bulletproof vest

 

从运行结果来看同样的图片,NPU运行要比CPU快很多, NPU和CPU运算结果相差不大,NNAPI运行结果相似度更高。

 

 

 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册