• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 分类网部署及板端推理
2
3## 1.概述
4
5* wk模型生成之后,需要将生成的wk文件部署到板端,本文基于SDK sample的cnn分类网数字识别为例进行模型板端部署和调试,示例代码参考在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/nnie/sample路径下的sample_nnie.c,如下图所示:
6
7![](./figures/hispark_taurus_nnie_sample/142sample_nnie%E7%9A%84%E5%88%86%E7%B1%BB%E7%BD%91.png)
8
9* 接下来对该cnn数字识别的sample进行讲解,如下图所示:
10
11  ![](./figures/hispark_taurus_store_sample/099%E8%AE%B2%E8%A7%A3%E6%95%B0%E5%AD%97%E8%AF%86%E5%88%AB.png)
12
13  ![](./figures/hispark_taurus_store_sample/100%E8%AE%B2%E8%A7%A3%E6%95%B0%E5%AD%97%E8%AF%86%E5%88%AB.png)
14
15* 运行的主入口在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/nniesample_nnie_main.c文件中,如下图所示:
16
17![](./figures/hispark_taurus_nnie_sample/143sample_nnie_main%E7%9A%84%E5%88%86%E7%B1%BB%E7%BD%91.png)
18
19## 2.编译
20
21* 在编译sample_nnie_main.c之前,需确保OpenHarmony 小型系统的主干代码已经整编通过,**且已经按照《[修改源码及配置文件适配Taurus开发板](2.2.1.%E4%BF%AE%E6%94%B9%E6%BA%90%E7%A0%81%E5%8F%8A%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E9%80%82%E9%85%8DTaurus%E5%BC%80%E5%8F%91%E6%9D%BF.md)》的内容进行修改**。
22
23* 在单编sample_nnie_main.c前,需修改目录下的一处依赖,进入//device/soc/hisilicon/hi3516dv300/sdk_linux目录下,通过修改BUILD.gn,在deps下面新增target,``"sample/platform/svp/nnie:hi3516dv300_nnie_sample"``,如下图所示:
24
25![](./figures/hispark_taurus_nnie_sample/144sample_nnie%E7%9A%84buildgn%E4%BF%AE%E6%94%B9.png)
26
27* 点击Deveco Device Tool工具的Build按键进行编译,具体的编译过程这里不再赘述,编译成功后,如下图所示:
28
29![](./figures/hispark_taurus_helloworld_sample/0002-build%20success.png)
30
31* 编译成功后,即可在out/hispark_taurus/ipcamera_hispark_taurus_linux/rootfs/bin目录下,生成 ohos_nnie_demo可执行文件,如下图所示:
32
33![](./figures/hispark_taurus_nnie_sample/146%E7%94%9F%E6%88%90nnie%E7%9A%84%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F.png)
34
35## 3. 拷贝可执行程序和依赖文件至开发板的mnt目录下
36
37**方式一:使用SD卡进行资料文件的拷贝**
38
39* 首先需要自己准备一张SD卡
40* 步骤1:将编译后生成的可执行文件拷贝到SD卡中。
41* 步骤2:将code\device\soc\hisilicon\hi3516dv300\sdk_linux\out\lib\目录下的**libvb_server.solibmpp_vbs.so**拷贝至SD卡中
42* 步骤3:将device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/nnie/目录下的 data文件拷贝至SD卡中(前提是按照《[获取sample依赖的资源文件到本地](6.2.%E8%8E%B7%E5%8F%96sample%E4%BE%9D%E8%B5%96%E7%9A%84%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%AC%E5%9C%B0.md)》文档获取了资源文件)
43
44![](./figures/hispark_taurus_nnie_sample/135%E5%A4%8D%E5%88%B6nnie%E4%BE%9D%E8%B5%96%E6%96%87%E4%BB%B6%E8%87%B3SD%E5%8D%A1.png)
45
46* 步骤4:可执行文件拷贝成功后,将内存卡插入开发板的SD卡槽中,可通过挂载的方式挂载到板端,可选择SD卡 mount指令进行挂载。
47
48```shell
49mount -t vfat /dev/mmcblk1p1 /mnt
50# 其中/dev/mmcblk1p1需要根据实际块设备号修改
51```
52
53* 挂载成功后,如下图所示:
54
55![](./figures/hispark_taurus_nnie_sample/136%E6%8C%82%E8%BD%BDnnie%E4%BE%9D%E8%B5%96%E7%9A%84%E6%96%87%E4%BB%B6%E8%87%B3%E5%BC%80%E5%8F%91%E6%9D%BF%E7%9A%84mnt.png)
56
57**方式二:使用NFS挂载的方式进行资料文件的拷贝**
58
59* 首先需要自己准备一根网线
60* 步骤1:参考[博客链接](https://blog.csdn.net/Wu_GuiMing/article/details/115872995?spm=1001.2014.3001.5501)中的内容,进行nfs的环境搭建
61* 步骤2:将编译后生成的可执行文件拷贝到Windows的nfs共享路径下
62* 步骤3:将code\device\soc\hisilicon\hi3516dv300\sdk_linux\out\lib\目录下的**libvb_server.solibmpp_vbs.so**拷贝至Windows的nfs共享路径下
63* 步骤4:将device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/nnie/目录下的 data文件拷贝至Windows的nfs共享路径下(前提是按照《[获取sample依赖的资源文件到本地](6.2.%E8%8E%B7%E5%8F%96sample%E4%BE%9D%E8%B5%96%E7%9A%84%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%AC%E5%9C%B0.md)》文档获取了资源文件)
64
65![](./figures/hispark_taurus_nnie_sample/134%E5%A4%8D%E5%88%B6nnie%E7%9A%84%E4%BE%9D%E8%B5%96%E6%96%87%E4%BB%B6%E8%87%B3nfs.png)
66
67* 步骤5:执行下面的命令,将Windows的nfs共享路径挂载至开发板的mnt目录下
68
69```
70mount -o nolock,addr=192.168.200.1 -t nfs 192.168.200.1:/d/nfs /mnt
71```
72
73## 4.拷贝mnt目录下的文件至正确的目录下
74
75* 执行下面的命令,拷贝mnt目录下面的ohos_nnie_demo和data至userdata目录,拷贝mnt目录下面的libvb_server.solibmpp_vbs.so/usr/lib/目录下,
76
77```
78cp /mnt/ohos_nnie_demo  /userdata
79cp /mnt/*.so /usr/lib/
80cp /mnt/data /userdata -rf
81```
82
83![](./figures/hispark_taurus_nnie_sample/13%E5%A4%8D%E5%88%B6mnt%E4%B8%AD%E7%9A%84%E4%BE%9D%E8%B5%96%E6%96%87%E4%BB%B6%E8%87%B3userdate%E7%9B%AE%E5%BD%95.png)
84
85* 执行下面的命令,给ohos_nnie_demo文件可执行权限
86
87```
88chmod 777 /userdata/ohos_nnie_demo
89```
90
91## 5. 功能验证
92
93* 执行下面的命令,启动可执行文件
94
95```
96cd /userdata
97
98./ohos_nnie_demo 4
99```
100
101![](./figures/hispark_taurus_nnie_sample/137%E6%89%A7%E8%A1%8C%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8Fcnn%E5%88%86%E7%B1%BB%E7%BD%91.png)
102
103分析log可以看出,识别到的值为0,符合输入图片的逻辑。
104
105**注:当然也可以对自己转换出来的分类网cnn模型,替换现有的wk模型,并选择一张图片进行推理验证,思路跟该sample类似。**
106
107