Skip to content

NPU Demo 使用说明

上一章节中配置 NPU 扩展包后可以在 menuconfig 里看到两个 Demo 测试应用程序。这里我们来介绍一下怎么使用这两个 Demo。

YOLOV3

在 NPU Package 中我们提供了一个较为完整的 YOLOV3 Demo 作为测试,程序源码位于:

openwrt/package/npu/yolov3/src

这个 Demo 相较于 Lenet 的 Demo 增加了图片前处理、数据处理、后处理与图片打框的功能。可以将上传的图片物体打框标记并输出打框后的图片。

首先我们在 menuconfig 里选中 YOLOV3 的相关选项

可以看到这里选择了 yolov3 会出现 yolov3-model 这个选项,这个选项是提供一个测试使用的模型到系统中,文件较大,如果编译打包出现错误请参阅【FAQ 常见问题 - V853】查看解决方法。

测试 YOLOV3

首先我们准备一张图片,并把图片转换为 416*416 分辨率的图片。

使用 ADB 将图片下载到 root 目录

adb push 2.jpg root

在开发板上,切换文件夹到 root 文件夹,使用 ls 列出看看有没有 2.jpg 这个图片文件

cd /root

ls

可以看到,这里已经下载成功了,接下来运行 yolov3,格式是:

yolov3 <模型文件> <图片文件>

之前我们选中了 yolov3-model 模型包,模型已经安装到/etc/models/yolov3_model.nb了,所以在这里我们直接可以使用这个模型,执行

yolov3 /etc/models/yolov3_model.nb 2.jpg

可以看到识别到了 carmotorbike ,此时 ls 可以看到打标完成的图片 yolo_v3_output.bmp

可以使用 adb 上传图片到主机查看。

adb pull /root/yolo_v3_output.bmp

打开图片即可查看标注情况

如果运行出现错误,请确认图片格式是否为jpg,图片分辨率是否为 416x416

Error: Input size mismatch for 2.jpg, file data size:516672, expected:519168

Lenet

如果说深度学习有什么 HelloWorld,那一定是 Lenet。

在 NPU 扩展包中提供了一个 Lenet 的 Demo 程序。

这个 Demo 较为基础,演示了模型转换生成的模板代码如何集成到 Tina Linux 里。由于没有前处理与后处理,所以输入数据与输出数据均为二进制 tensor 文件。也正因为如此,所以可以将输出的 tensor 与仿真输出的 tensor 进行对比,验证是否有错误。

如果想要更完善的包括前处理与后处理的 Demo 可以查看 yolov3 Demo。

我们先 make menuconfig 找到 Lenet 选项,这里提供 lenet 主程序与 lenet-model 模型两个包,可以只选中主程序使用自己转换的模型测试。

在这里我们就使用扩展包提供的模型进行验证。先去 扩展包里找到测试数据 lenet_input_0.dat 并上传到开发板。

使用 ls 列出上传的数据

使用 lenet 命令运行测试模型

lenet <模型文件> <数据文件>
lenet /etc/models/lenet_model.nb lenet_input_0.dat

可以看到这里输出了 tensor output0_10_1.dat 文件

如果需要实现图片的输入与输出,需要基于这个模板增加图片前处理与数据后处理部分的代码。前处理将图片转为 tensor 输入,后处理解析 tensor 输出数据。