HR CMGT Machine Learning
Traditionally, developers write sets of instructions, also known as a computer program, to solve complex problems. This traditional approach has its limitations, especially when we want the computer to solve human tasks, such as recognising a drawing, or talking on the phone.
By using a Machine Learning algorithm, the computer can learn to recognise patterns in complex data all by itself. A machine learning algorithm can reveal patterns that would otherwise not have been found. The computer can learn to make decisions and to improve itself.
Using an algorithm to train a model to recognise cat drawings
A model can compare new drawings to cats, and it can even imagine new cat drawings
Algorithms are used to find patterns in complex data. Surprisingly, the algorithm itself does not have to be all that complex. You can start a machine learning project just by using the good old Pythagorean theorem:
Our first Machine Learning algorithm: a2+b2=c2
By looking at your data and defining the goal of your project, you will have to decide on an algorithm that suits your purposes the best.
Simpler algorithms work faster, and allow for more introspection. As a developer you will have a lot of control on its output.
Neural networks can analyse very complex data, and can learn from itself. A neural net may take a lot of time to train, and will create a sort of "black box", making it less transparent to understand how it makes decisions.
In the Workshop you will learn the basics of using existing libraries and preparing data to train a neural network.
Below you will find links to popular libraries with tutorials, existing kits, books and demo projects.
BrainJS is a library that allows you to instantiate a Neural Network, train it and run a classification in just a few lines of code.
- Source code and examples for BrainJS
- Traversy BrainJS introduction
- Recognise letters
- Recognise a drawing and code
- Advanced Image feature detection using BrainJS
- Hello World in Tensorflow.JS
- Basic tutorial for setting up Tensorflow Neural Network
- Tutorial course for Audio recognition
- Tutorial course for Webcam recognition
- Tensorflow JS Quick Start
ML5 makes TensorFlowJS more accessible by supplying readymade examples with clear documentation for the most common Machine Learning projects, such as image classification, pose recogition, and text generation.
Pose Estimation using the Webcam with ML5 and TensorflowJS
- Magenta is a google library that uses tensorflow to generate images, music and sketches.
- Tutorial on drawing snowflakes with a Neural Network and Magenta
A perceptron is a Neural Network that has only one cell. You can code it by hand in just a few lines of code. This will help you to understand how one Neural Network cell calculates weights.
Python is used by data scientists and in many Machine Learning courses online. Python requires a bit more setup, especially when you want to visualise results graphically. Python can run on a Raspberry Pi!
- Creating your first neural network in Python
- Machine learning for artists: guides and examples
- Udacity course: Machine Learning with Python
- Building a perceptron from scratch and source code
- Building camera detection on a raspberry pi
Science Kit Learn
Science Kit Learn provides Python libraries, readymade datasets and algorithms for testing, and a visualisation tool. Get started running python with this tutorial:
Tensorflow is Google's Machine Learning API for Python
- Google Tensorflow tutorials
- Getting Started with TensorFlow
- Introduction to Deep Learning and Tensorflow
- Build a handwritten-text recognition system with Tensorflow
Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow
Wekinator is a GUI that can apply Machine Learning algorithms to Processing and Arduino sensor data.
- YOLO - you only look once Image recognition network, watch the cool intro movie!
- Imagga Image training API
- Vize.ai Recognize and automate your images
- Clarifai image and video recognition tool
- TensorFlow image recognition
- ImageNet - readymade training data for image recognition
- GoCV - Use the GO programming language for Computer Vision
Natural Language Processing
Understanding the meaning of written text
- What are word vectors?
- Understanding Word2Vec Video by Daniel Shiffman
- Natural Language Processing with Spacy.io
Converting spoken audio into text
- Tensorflow audio recognition
- Mozilla Deep Speech - blog post and code
- Google TacoTron Self-learning Speech Synthesizer
- Pocket Sphynx Speech Recognition
- Google's Do-it-yourself Raspberry Pi AI Kits
- Microsoft Machine Learning APIs
- Apple Core ML framework and tutorials
- Amazon Deep Racer
- Amazon Machine Learning and Free Course
- Add Machine Learning power to a Raspberry Pi with the Intel ML USB stick
- Machine Learning for Everyone
- The Mostly Complete Chart of Neural Networks
- Introduction to Deep Learning
- More algorithms for Machine Learning
- Neural Networks Wiki page
- Machine Learning for Humans
- Machine Learning for designers
- A visual introduction to Machine Learning
- Deep learning book
- Researching the use of ML in creative applications
- Design in the era of the algorithm
- Human-Centered Machine Learning
- The UX of AI (Google Design)
- Linear algebra - the math behind ML algorithms
- Maths for Programmers
- Paul G Allen Course on Machine Learning algorithms
- Mastering Machine Learning with MatLab for Python
- Deep Learning Simplified - Youtube series
- Neural Networks and Deep Learning - book recommended by Tensorflow
- Deep Learning Gone Wrong - How ML expectations don't always match with results
- Read Arduino Sensor data from Node
- Pytorch is an Open Source Deep Learning platform for Python
- Google Machine Learning Crash Course
- TensorFlow Lite for Microcontrollers and the new Edge Microcontroller to run it
- Human faces generated by AI
- Teleport Vision - generate HTML from UI sketches
- Build a perceptron in Processing
- Training a model in Unity using a neural network
- Neural Drum Machine and Voice-based beatbox created with MagentaJS
- Algorithm notes
- Google AI experiments
- Building a cat detector on a Raspberry Pi
- Quick Draw! - Can a Neural Network detect a doodle? and the open source drawing dataset
- Pyro - Uber's AI programming language
- Runway - An app that adds ML to creative projects
- Audio classification
- Pixling - Building a life simulation app with Neural Networks
- Imagine drawing a cat!
- Building a self-driving Mario Kart using TensorFlow and documentation
Data to create machine learning models
- UCI Machine Learning Repository
- Science Kit Learn Toy Datasets
- ImageNet labeled images
- QuickDraw doodle dataset
- Wikipedia List of Datasets
- The best 50 public datasets for Machine Learning
- Handwriting dataset
- MNIST handwritten digits dataset
- Kaggle Datasets such as Cats and Dogs
- Open AI Speech Data Collection