subzerofun / iOS_ML

List of Machine Learning, AI, NLP solutions for iOS. The most recent version of this article can be found on my blog.

Home Page:https://alexsosn.github.io/ml/2015/11/05/iOS-ML.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Machine Learning for iOS

Tools and resources to create really smart iOS applications.

Last Update: January 29, 2017.

Curated list of resources for iOS developers in following topics:

  • Machine Learning,
  • Artificial Intelligence,
  • Natural Language Processing (NLP),
  • Computer Vision,
  • General-Purpose GPU Computing (GPGPU),
  • Data Visualization,
  • Bioinformatics

Most of the de-facto standard tools in domains listed above are written in iOS-unfriendly languages (Python/Java/R/Matlab) so find something appropriate for your iOS application may be a challenging task. This list consists mainly of libraries written in Objective-C, Swift, C, C++, JavaScript and some other languages if they can be easily ported to iOS. Also links to some relevant web APIs, blog posts, videos and learning materials included.

Pull-requests are welcome here!

Where to learn about machine learning and related topics in general

Web APIs

General-Purpose Machine Learning Libraries

  • FANN - Fast Artifical Neural Network library; an implementation of neural networks.

  • lbimproved - DTW + kNN in C

  • Shark - provides libraries for the design of adaptive systems, including methods for linear and nonlinear optimization (e.g., evolutionary and gradient-based algorithms), kernel-based algorithms and neural networks, and other machine learning techniques. CocoaPods. Official site

  • YCML - A Machine Learning framework for Objective-C and Swift (OS X / iOS). The following algorithms are currently available: Gradient Descent Backpropagation, Resilient Backpropagation (RProp), Extreme Learning Machines (ELM), Forward Selection using Orthogonal Least Squares (for RBF Net), also with the PRESS statistic, Binary Restricted Boltzmann Machines (CD & PCD, Untested!). YCML also contains some optimization algorithms as support for deriving predictive models, although they can be used for any kind of problem: Gradient Descent (Single-Objective, Unconstrained), RProp Gradient Descent (Single-Objective, Unconstrained), NSGA-II (Multi-Objective, Constrained).

  • Swix - Swift implementation of NumPy.

  • Brain - Neural networks in JavaScript. Unmaintained.

  • April-ANN - APRIL-ANN toolkit (A Pattern Recognizer In Lua with ANNs). This toolkit incorporates ANN algorithms (as dropout, stacked denoising auto-encoders, convolutional NNs), with other pattern recognition methods as HMMs among others. Additionally, in experimental stage, it is possible to perform automatic differentiation, for advanced ML research. Potentially can be ported for iOS.

  • Recommender - A C library for product recommendations/suggestions using collaborative filtering (CF).

  • SNNeuralNet - A neural network library for Objective-C based on brain.js, for iOS and Mac OS X.

  • MLPNeuralNet - Fast multilayer perceptron neural network library for iOS and Mac OS X. MLPNeuralNet predicts new examples by trained neural network. It is built on top of the Apple's Accelerate Framework, using vectorized operations and hardware acceleration if available.

  • MAChineLearning - An Objective-C multilayer perceptron library, with full support for training through backpropagation. Implemented using vDSP and vecLib, it's 20 times faster than its Java equivalent. Includes sample code for use from Swift.

  • Swift-AI - 3-layer NN.

  • EERegression - General purpose multivaritate and quadratic Regression library for Swift 2.1

  • SwiftSimpleNeuralNetwork - Feed forward and back propagation.

  • STEM - Swift Tensor Engine for Machine-learning

  • multilinear-math - Swift library for tensor operations, machine learning and artificial intelligence

  • MLKit - regressions, cross-validation, data splitting.

  • dlib is a C++ framework which contains 30+ machine learning algorithms and different useful additions. It's relatively easy to port it to iOS: you just need to get rid of GUI and http-related source files.

  • Kalvar Lin's libraries

Deep Learning

  • Torch-iOS - Torch port for iOS. Torch is a scientific computing framework with wide support for machine learning algorithms. One of the most popular deep learning frameworks.
  • Caffe - A deep learning framework developed with cleanliness, readability, and speed in mind. GitHub. [BSD]
  • Caffe2 - a cross-platform framework made with expression, speed, and modularity in mind.
  • Deep Belief SDK - The SDK for Jetpac's iOS Deep Belief image recognition framework
  • Convnet.js - ConvNetJS is a Javascript library for training Deep Learning models by Andrej Karpathy. GitHub
  • MXNet - MXNet is a deep learning framework designed for both efficiency and flexibility.
  • BNNS - Apple Basic neural network subroutines (BNNS) is a collection of functions that you use to implement and run neural networks, using previously obtained training data.
  • TensorFlow - an open source software library for numerical computation using data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicated between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server, or mobile device with a single API.
  • DeepLearningKit - Open Source Deep Learning Framework from Memkite for Apple's tvOS, iOS and OS X.
  • tiny-dnn - header only, dependency-free deep learning framework in C++11
  • NNPACK - Acceleration package for neural networks on multi-core CPUs. Prisma uses this library in the mobile app.
  • BrainCore - simple but fast neural network framework written in Swift. It uses Metal framework to be as fast as possible. ReLU, LSTM, L2 ...

AI

  • Mendel - Genetic algorithms in Swift.

Game AI

Natural Language Processing

  • Parsimmon
  • NSLinguisticTagger
  • Word2Vec - Original C implementation of Word2Vec Deep Learning algorithm. Works on iPhone like a charm.
  • Twitter text - An Objective-C implementation of Twitter's text processing library. The library includes methods for extracting user names, mentions headers, hashtags, and more – all the tweet specific language syntax you could ever want.

Speech Recognition (TTS) and Generation (STT)

Computer Vision

Text Recognition (OCR)

General Math

  • Surge from Mattt
  • Upsurge - tensors, matrices, Accelerate support
  • YCMatrix - A flexible Matrix library for Objective-C and Swift (OS X / iOS)
  • Eigen - A high-level C++ library of template headers for linear algebra, matrix and vector operations, numerical solvers and related algorithms. [MPL2]

Feature extraction

  • IntuneFeatures framework contains code to generate features from audio files and feature labels from the respective MIDI files.
  • matchbox - Mel-Frequency-Cepstral-Coefficients and Dynamic-Time-Warping for iOS/OSX
  • LibXtract is a simple, portable, lightweight library of audio feature extraction functions.

GPGPU

Articles

Metal

GPU-accelerated libraries

  • GPUImage is a GPU-accelerated image processing library.

Data Visualization

Bioinformatics

  • BioJS - a set of tools for bioinformatics in the browser. BioJS builds a infrastructure, guidelines and tools to avoid the reinvention of the wheel in life sciences. Community builds modules than can be reused by anyone.
  • BioCocoa - BioCocoa is an open source OpenStep (GNUstep/Cocoa) framework for bioinformatics written in Objective-C. [Dead project].
  • iBio - A Bioinformatics App for iPhone.

Big Data

  • HDF5Kit - This is a Swift wrapper for the HDF5 file format. HDF5 is used in the scientific comunity for managing large volumes of data. The objective is to make it easy to read and write HDF5 files from Swift, including playgrounds.

Opensource Applications

Other Lists

Articles, Blog posts, Papers

General

Deep Learning

Information security and ML

People to follow in iOS machine learning and related topics

(In alphabet order).

  • Alejandro - BrainCore and Caffe for iOS author. Blog. {% include icon-twitter.html username="aleph7" %}
  • Simon Gladman - Swift and Metal enthusiast and blogger. Blog. {% include icon-twitter.html username="flexmonkey" %}
  • Matthijs Hollemans - Swift, Metal and neural networks. Blog. {% include icon-twitter.html username="mhollemans" %}
  • Andrej Karpathy - Research Scientist at OpenAI. ConvNetJS author. Blog. {% include icon-twitter.html username="karpathy" %}
  • Kalvar Lin - Implemented a set of small machine learning libraries for iOS and Ruby. {% include icon-twitter.html username="ilovekalvar" %}
  • Memkite team - Memkite is a Deep Learning framework for iOS that can be used to support Artificial Intelligence (AI) in apps. {% include icon-twitter.html username="memkite" %}
    • Torbjørn Morland {% include icon-twitter.html username="torbmorland" %}
    • Amund Tveit {% include icon-twitter.html username="atveit" %}
  • Geppy Parziale - You can find several of his ML & iOS articles at www.invasivecode.com. {% include icon-twitter.html username="geppyp" %}

About

List of Machine Learning, AI, NLP solutions for iOS. The most recent version of this article can be found on my blog.

https://alexsosn.github.io/ml/2015/11/05/iOS-ML.html