watersink / nnie

重构海思sample中的NNIE模块

Home Page:https://github.com/yangfei963158659/nnie

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

用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放在和海思nnie相同的路径下

3.切换到改目录下,make生成可执行文件

4.将可执行文件和模型以及测试图片考到板子上运行。

5.由于楼主精力有限,因此主要是针对yolov3的优化。后期会更新更多的模型。

About

重构海思sample中的NNIE模块

https://github.com/yangfei963158659/nnie


Languages

Language:C 91.0%Language:C++ 7.8%Language:Makefile 1.2%