技术标签: MTK Neuropilot 人工智能
0. 简介:
Neuropilot是MTK AI ecosystem的中心。其目标是在终端设备(边缘设备)上运行AI程序,而非在服务器端运行。以此加强私密性和降低网络成本。
Neuropilot是一系列软件工具和API. 借助这些工具,用户可以在MTK设备上开发和部署AI程序。
借助这些工具,用户可以将Tensorflow, Tensorflow Lite, Caffe等格式模型检查,加载和转换为MTK优化过的模型格式。对于Android平台,Neuropilot为NNAPI做了扩展,使得AI程序在MTK设备上有更好的表现。
Neuropilot提供命令行工具组Neuropilot MLKit将模型转换为MTK 量化过的TF Lite模型。
NNAPI添加入NDK,可以在运行神经网络时使用GPU和MDLA内核, 而Neuropilot优化了NNAPI,使之在MTK设备上有更好的表现。
Neuropilot还包含一个模拟器----APU Simulator。
支持在Android操作系统和嵌入式Linux操作系统运行。
1. 总体开发流程如下:
1.1: 总体流程:
A.将训练好的模型(FP32)使用NeuroPilot各种工具进行优化。(MTK也有自己的TOCO工具)
B.加载此优化后的模型进行推理。
1.2. Android平台:
1.2.1: 程序方式:
三种方式选择:
A. Native C方式,使用C++开发,并使用Android NNAPI接口。(此方式比较特殊,直接dlopen libtflite_mtk.so libtflite_mtk_static.so, 从中取出符号 fn_ANeuroPilotTFLite_setInputTensorData等,fn_ANeuroPilotTFLite_invoke, fn_ANeuroPilotTFLite_getTensorCount等直接使用)
B. JNI方式。APP使用JNI方式访问TF Lite的C++版本。
C. Jave原生方式。使用Java版本的TF Lite接口。
1.3. 嵌入式Linux平台:
两种方式:
A. C++应用程序,使用 TF Lite C++ 接口来加载和执行 NN 模型。
B. C++应用程序, 使用Neuron C++ API 来加载和执行一个 NN 模型。
(MTK的Neuro SDK不需要对Tensorflow Lite, NNAPI, Android OS有依赖,可以显著提高模型性能)
Neuro SDK包括一个模型编译器工具,用于生成优化的网络模型格式 .dla,以及一个运行时 API,用于调用编译后的模型
附1:
NNAPI简介。
NNAPI在r17时被加入NDK. 作为底层,可以支撑上层深度学习框架Tensorflow, Caffe等高效完成推理。
对应用程序开发者,Google官方不推荐直接使用NNAPI, 而是只与TF Lite之类的机器学习框架打交道,构建出适用于TF Lite的模型并部署到Andoroid设备上,其余的工作交给TF Lite和NNAPI 完成。
NNAPI 具有机器学习框架的功能,只不过跟 TF Lite 比起来,NNAPI 更加底层,功能有限,没有那么多花哨的东西。不仅如此,NNAPI 还具有 NN Runtime 这个功能强大的执行引擎,能够利用安卓设备上各种 XPU,合理分配计算量,提高运算速度。
TF Lite 与 NNAPI 对接,使 TF Lite 的内部执行调用 NNAPI 完成
google 开源了 TensorFLow Lite,并且在 Android 8.1 版本上为 DSP、GPU、和神经网络芯片等硬件加速器支持了神经网络 API,为了在 Android 移动设备上全面支持 AI 做足了准备.
可以使用TOCO工具将Tensorflow PB模型转换为TF Lite模型。
转自:http://blog.jobbole.com/52819/原文出处: Nick Harbour 译文出处:IDF徐文博 背景有时候程序员们需要写一段独立于位置操作的代码,可当作一段数据写到其他进程或者网络中去。该类型代码在它诞生之初就被称为shellcode,在软件利用中黑客们以此获取到shell权限。方法就是通过这样或那样的恶意手法使得这段代码得以
不知道有没有同志和我一样按照步骤建立了第一个基于对话框的MFC程序,结果只有代码界面,没有对话框!!!!!之后发现一位博主悲恋花丶无心之人写的文章非常详细 https://blog.csdn.net/qq_36556893/article/details/83178202,才最终找到问题的根源和解决办法,非常感谢博主...
题目链接:传送门覆盖的面积Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6058 Accepted Submission(s): 3051Problem Description 给定平面上若干矩形,求出被这些矩形覆盖过至少两次
带有文件上传的form表单:由于enctype=”multipart/form-data”,所以不能使用request.getParameter()及相关方法获取,并且form表单具有上传文件功能,离不开io流,所以讲request.getInputStream()取到的输入流输出到指定位置。发现上传的图片已经损坏,并且比原来大了一点。当时感觉很奇怪:因为我的form表单还有普通的文本域,哪里去了...
英文文档:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)Open file and return a corresponding file object. If the file cannot be opened, an OSError i...
Qt4项目迁移Qt5项目一问题解决方法:#include ---> No such file or directory 1.pro文件里,QT += core gui 改为 QT += core gui widgets2..h文件里,#include 改为#include 原因是Qt5源文件位置的改动
在TDA2x平台中要新增link,除了上一篇中讲到要修改用例生成工具软件vsdk_linux.out外,还需要修改Ti软件框架中的内容。涉及到的文档主要包括: S.No File Name Location Description Comments 1 ...
Oracle 11G Client 客户端安装步骤,具体如下:下载地址:http://www.jb51.net/database/167737.html先将下载下来的ZIP文件解压,并运行setup.exe文件。执行到第四步之后,出现错误,直接点全部忽略就可以了。把上面的步骤执行完了,那么就该等待Oracle的安装了。现在这个就搞定了1。安装Oracle 11G Client后可以在开始菜单中找到...
Linux下使用shell命令时经常使用类似这样的Shell输出重定向:1>/dev/null 2>&1在Shell命令的结尾,我们可以通过>符号来重定向输出。1. 标准输入stdin文件描述符为0,标准输出stdout文件描述符为1,标准错误stderr文件描述符为22. /dev/null 空设备文件,相当于垃圾桶3. 重定向符号:>逐一
本来去年对比赛印象不错,所以今年还是在一堆事情的情况下挤了点时间强行通宵做了一下,题目本身还行,不过题目各种出错,主办方反馈极度慢也是无话可说。最后本来是打算等比赛结果公布后抽空好好整理下把 writeup 发出来的,不过现在竟然由于提交答案时附件附错了,自己没注意检查,主办方也没有任何提醒,导致直接没有得分,实在是非常郁闷(真的是打过这么多比赛,输赢都无所谓了,但真的从没有这么憋屈过),没有心情...
通信网文章目录通信网1. 图论1.1 图1.2 树1.2.1 破圈法求生成树1.2.2 避圈法求生成树1.3 图的割集1.3.1 基本割集的求法1.3.2 无向图与有向图矩阵表示1.4 避圈法求最小生成树1.4.1 避圈法-K算法1.4.2 避圈法-P算法1.5 求最短路径问题1.5.1 最短路径- Dijkstra算法1.5.2 最短路径-Floyd算法2. 流量分配2.1 流量优化的一般性问...
#region FileStream //FileStream继承Stream std1 = new FileStream("2.txt", FileMode.Open); //FileShare.ReadWrite允许之后打开文件的读写,初始文件256个字节 FileSt...