海思AI芯片(Hi3519A/3559A)方案学习(九)wk格式的模型生成以及PC仿真
前言
《HiSVP开发指南》洋洋洒洒有258页之多,刚看很容易让人抓不住重点。本文结合自己的理解来对模型转换和仿真部分进行了一下梳理
wk模型生成
AI硬件加速器nnie只支持wk模型文件的加载。而SDK提供了 mapper工具来将caffe1.x 算法model转换成wk格式。该工具有linux和windows两个版本,我们这里只讨论windows版本,个人感觉它安装更方便,更容易使用。
一个重要注意点是,我们自己的算法模型很可能是差异很大的,比如darknet yolo3训练出来的模型格式*.weights, tensforflow训练模型格式*.ckpt等。而mapper工具的输入仅仅是caffe1 model, 所以需要我们自己想办法先把自身模型转换成caffe模型,然后才能mapper工具。这个会在后面的文章进行详细介绍。
windows nnie mapper工具已经集成在ruyistudio软件里面,关于ruyistudio的介绍和使用请见该系列第二篇文章。
双击打开ruyistudio IDE后,右击你想要转换模型所对应cfg文件,然后选择open with 再选择mapper configuration editor,就可以在一个可视化环境下阅读和编辑cfg文件,如下所示。
标红框的部分是生成wk文件必须要配置的。此外,如果想提高准确度等属性,需要对下面那一栏mapper setting进行调整。
最后点击make wk按钮如下图红框所示
仿真
windows仿真有两种方式,
第一种是直接在ruyistudio来进行。需要先安装和配置mingw编译器,详见开发指南。 然后import项目如下图所示。
然后点击下面按钮来进行debug或release版本的编译。当然,为了节省仿真时间,可以把main.cpp里面其它模型仿真函数注释掉,只保留你感兴趣模型的仿真,也如下图所示。
编译完成后生成binary如下图红框所示。
最后在工具栏点击按钮,选择Run as -> Local C/C++ Application就可以运行仿真程序。
第二种方式是直接运行vs工程文件,直接用visual studio来编译工程,并调试或运行它。 该项目文件为xx\software\sample_simulator\simulator_sample_vc14.sln。双击它就可以打开该项目来编辑和编译。
就个人而言,我更习惯第二种,毕竟对vs开发环境比较熟悉,调试跟踪起来很方便。 此外,这两种方式在release模式对yolo3模型进行仿真所花时间差不多,大概都需要15分钟左右。
指令级仿真和功能级仿真
仿真有两种运行模式:指令级和功能级。前者仿真时间显然比后者慢很多。 两种切换示意如下:
切换完毕需要把源代码重新编译一遍。注意:在功能 仿真切换到指令仿真后,点击仿真按钮,ruyisudio并不会自动开始重新编译,然后再仿真。所以这时需要先手动来clean and build。
点击仿真按钮后,仿真程序会根据不同模式去load相应的inst或func wk。 这个可以从仿真log看到。