用C++重新封装了一下NNIE的代码。把sample里面大部分的那坨垃圾代码全部弃用了,主要贡献如下:
1.高度模块化,主要分三步,1.load_model;2.run_model,3.postprocess。1,2所有的模型共用,通过2可以得到output的tensor,每个模型只需写自己的后处理来解析output的Tensor即可。
2.代码量是sample代码的几十分之一,结构清晰简单易懂
3.yolov3后处理完全自己重写,速度非常快
4.遗弃sample中所有的全局变量,防止多线程跑多个模型时出现的线程安全问题。亲测,在多线程跑多个模型正常,互不影响,重构的C++代码是线程安全的。
编译:
1.依赖环境: opencv4.0 需要用海思的交叉编译工具编译opencv4.0的库,然后替换掉third_party/opencv4
2.切换到nnie下目录下,make生成可执行文件
3.将可执行文件和模型以及测试图片考到板子上运行。