mace

做者:十岁的小男孩html

QQ:929994365java

心之安处便是吾乡。python

  本文主要的方向是终端移植。其主要又分两个小方向,理论和实践,即模型优化模型移植。下文为前期写的,较为潦草,如今基本框架思路已经搭起来了,如今没有时间,后期会更新完善。c++

-----------------------------------------------------------------------------后期更新-------------------------------------------------------------------------------------------网络

  本文对MACE当前的学习作一个总结,重心放在数据流的逻辑过程。首先经过对模型移植针对的问题解答为何咱们须要学习mace,和咱们在学习mace过程当中遇到的最主要的矛盾,以及咱们如何解决这些矛盾。对mace的学习主要分两个重点:框架

1、模型优化机器学习

  模型优化是模型移植的重心,最主要矛盾在于资源和性能的平衡,有限的资源状况下使得性能最大化。如今的模型都在电脑端进行训练,资源充足性能较好,可是在终端资源较少运算速率较低的前提下性能不能损失太多,这须要平衡。这个矛盾两种解决方法:工具

  第一种:模型放在服务端,经过在终端获取数据和展现数据,模型放在服务端进行运算,这样获得的性能较好,可是须要网络传输,浪费时间。性能

  第二种:将模型直接在终端运行,终端资源cpu/gpu,gpu运算较快,可是电脑端的模型如何在终端使用并且可以使用gpu加速计算?答案是小米mace,TensorFlow Lite,百度的paddle-mobile,还有腾讯的ncnn。因为mace可以采用gpu加速计算和社区活跃度较高,因此本文主要学习mace,其余的框架了解不深。学习

  模型压缩优化这是重心中的重心,要掌握更多的机器学习深度学习的概念知识,如下连接是我当前掌握压缩优化的一些信息,这在后期重点学习。

  TensorFlow优化工具包,模型压缩75%。

  腾讯框架模型压缩自动化加速50%。

2、模型工程化

  模型工程的重心在于掌握工程开发经验,熟练应用Java,Android和c++语言涉及NDK编译。如下三个连接是mace学习过程的分步总结,针对mace官方提供的mobilnet v2例子进行学习。

  MACE(1)-----环境搭建

  MACE(2)-----模型编译

  MACE(3)-----工程化

   如下的内容根据个人理解从数据流的角度串下整个过程。首先咱们采用python语言构建模型model.pb,进行模型的压缩和优化后,将model.pb打包在yaml文件中配置,这一步是上面连接的第二步,主要讲解了如何撰写yaml文件。以后在mace环境下进行编译生成静态库和头文件库,实际上是转换成了c++文件了,这步完成后就和mace没有什么关系了,接下来的难题是这些生成的库如何在工程中使用,这个工做是上面连接的第三步,重点是NDK编译,在c++端实如今java声明的native方法。

 

  文中介绍有可能局限我的的实践以及理解水平,存在不正确或不合理的地方,欢迎讨论。

相关文章
相关标签/搜索