4 ms·
I have previously seen Microsoft Embedded Learning Library[1] which requires LLVM support for the target arch IIRC, and uTensor[2] which runs TensorFlow models
by snops 8y ago
I have previously seen Microsoft Embedded Learning Library[1] which requires LLVM support for the target arch IIRC, and uTensor[2] which runs TensorFlow models on larger ARM cortex micros.
Nice to see another group in Microsoft is targeting smaller 8/16 bit processors, they can still be useful for very limited power budget applications, low cost devices, and some odd applications where they are built in to a specific purpose IC (e.g. a flash drive controller). There aren't many other alternatives in this space I think, other than manually porting your model to C and running unit tests against it, does anyone know of any competitors?
[1]https://github.com/Microsoft/ELL https://github.com/Microsoft/ELL
[2]https://github.com/uTensor/uTensor https://github.com/uTensor/uTensor
- jononor 8y agoAlso interested in more competitors, as I'm researching and developing machinelearning for microcontrollers. Two libraries I have made are: https://github.com/jonnor/emtrees https://github.com/jonnor/emtrees https://github.com/jonnor/embayes https://github.com/jonnor/embayes These are likely to be consolidated into one library/framework in some weeks, along with some other models and tools I have lying around. Like simple neural networks and audio feature extraction.
- jononor 8y agoMy brain dump with links can be found here, https://github.com/jonnor/datascience-master/blob/master/embeddedml/README.md https://github.com/jonnor/datascience-master/blob/master/emb...
- jononor 8y agosklearn-porter can be used to compile some scikit-learn models to C. For instance Support Vector Machines, both linear and RBF,polynomial kernels. https://github.com/nok/sklearn-porter/blob/master/readme.md#machine-learning-algorithms https://github.com/nok/sklearn-porter/blob/master/readme.md#...
- siekmanj 8y agoI've been working on a deep learning library in C, and have been thinking about optimizing it for embedded applications specifically. https://github.com/siekmanj/sieknet https://github.com/siekmanj/sieknet Other than that, I'm not sure if there are many libraries for machine learning on microcontrollers. Genann comes to mind: https://github.com/codeplea/genann https://github.com/codeplea/genann
- jononor 8y agoNice. What are you thinking for optimizing for embedded use? In my opinion the main challenge for neural networks on microcontrollers is the amount of memory needed for weights. - Quantizing the weights to lower precision is an easy gain. CMSISNN (which uTensor will use on Cortex-Mx) uses 8 bit fixed-point. - Utilizing sparse weights from regularization (L1,L0) may also give some gains. But apart from these I think more innovative things will be needed?
- jononor 8y agoLooks like state of the art can achieve up to 120x compression on CNNs for image classification. https://arxiv.org/abs/1802.02271 https://arxiv.org/abs/1802.02271
- fernandoalmeida 8y agoI used quantization of weights and an adaptation of the training, more information on the link above: https://www.researchgate.net/publication/304424659_Performance_Evaluation_of_an_Artificial_Neural_Network_Multilayer_Perceptron_with_Limited_Weights_for_Detecting_Denial_of_Service_Attack_on_Internet_of_Things https://www.researchgate.net/publication/304424659_Performan...
- jononor 8y agoProtoNN is another classifier especially for low-resource systems. http://proceedings.mlr.press/v70/gupta17a.html http://proceedings.mlr.press/v70/gupta17a.html