一种支持在基于微控制器的低功耗硬件中使用分类模型的工具
embml的Python项目详细描述
EmbML公司
EnbML是用Python编写的工具,将自动训练的板模型自动转换成可以在低功耗微控制器中编译和执行的C++源代码文件。EmbML的主要目标是使用裸机编程,生成专门在无资源硬件系统中运行的分类器源代码。在
此工具将使用WEKA或scikit learn库在台式机或服务器计算机中训练的分类模型作为输入。EMBML负责将输入模型转换成一个精心制作的C++代码,支持嵌入式硬件,例如避免不必要的使用主内存和实现非整数数字的定点操作。在
输入模型
EmbML通过包含其序列化对象的文件接受经过训练的模型。例如,使用WEKA构建的分类模型应使用ObjectOutputStream和FileOutputStream类(在Java中可用)序列化为一个文件。对于scikit学习模型,它们应该使用dump函数从pickle模块保存。在
支持的分类模型
embml
支持来自以下类的非车载训练分类器:
- 来自WEKA:
- MultilayerPerceptron用于MLP分类器
- Logistic用于Logistic回归分类器
- SMO用于支持向量机分类器——具有线性、多项式和RBF核
- J48用于决策树分类器。在
- 从scikit了解:
- mlpclassizer用于MLP分类器
- LogisticRegression用于logistic回归分类器
- LinearSVC线性核支持向量机分类器
- SVC用于支持向量机分类器——具有多项式和RBF核
- DecisionTreeClassifier用于决策树模型。在
安装
您可以从PyPi安装embml
:
pipinstallembml
Python2.7和Python3.5版本支持此工具,并依赖于javaobj
库。在
如何使用
^{pr2}$定点库
如果您决定使用定点格式生成一个分类器代码,则需要包括https://github.com/lucastsutsui/EmbML上提供的FixedNum.h
库。在
引文
如果您在科学研究中使用此工具,我们恳请您使用以下参考资料:
@inproceedings{da2019embml, title={EmbML Tool: supporting the use of supervised learning algorithms in low-cost embedded systems}, author={da Silva, Lucas Tsutsui and Souza, Vinicius MA and Batista, Gustavo EAPA}, booktitle={2019 IEEE 31st International Conference on Tools with Artificial Intelligence (ICTAI)}, pages={1633--1637}, year={2019}, organization={IEEE}}
- 项目
标签: