Webster’s dictionary defines Artificial Intelligence (AI)… yeah, we’re not doing that. We are not discussing the basics of AI and technology behind it. There are plenty of resources online that will give you insight into the basics of AI’s and help you scratch the surface of a deep and broad ecosystem that is the AI.
First, let’s give it some structure by showing the different domains of AI.
We will cover the most widely implemented ones:
- Cognitive Science Applications — Neural Networks,
- Robotics Applications — Visual Perception,
- Natural Interface Applications — Natural Recognition.
AI dates back to the 1950’s and after decades of mostly theoretical work, we have only started seeing practical applications relatively recently. The growth in AI and Machine development we are experiencing today is the result of the following:
- Data availability — more than 3 billion people are using online services on estimated 17 billion devices. Companies provide services and collect data which is later used to train their algorithms.
- Computing power — the current stage in hardware development allows for broad implementation of AI algorithms that requires processing of large data sets.
- Innovations in algorithms — things like deep learning, or if you prefer, layered neural networks have a great impact on AI development growth.
Documentation is easy to understand and there are plenty of resources on their site that can show you where to begin with neural networks. However, bear in mind it is pretty low-level and not very ‘beginner friendly’. Even so, there is no doubt that the ConvNetJS is powerful.
You have the ability to build your own custom network with various types of layers. For instance, you could use convolutional type and create image recognizer. Other types you could include are general classifiers, regression prediction networks and more.
One of the most interesting examples of ConvNetJS usage I’ve came across is the project DeepTesla by a group of scientists gathered around MIT. Also, here you can find couple of implementations which will help you figure out how you might use ConvNetJS on your projects.
NeuroJs — what makes this framework interesting in terms of web development is that it was built with webpack and babel. Despite the lack of documentation and the fact that the latest commit occurred a year ago, you can still learn a lot about how this neural network works by checking out self-driving example code which is written in a very descriptive manner.
This article, for example, shows how it is fairly easy to setup your own neural network, train it and run it with brain.js. You can use any set of data like company’s online reviews, articles, emails and learn network to detect good or bad reviews, spam, urgent messages and more. You should try it and also give this demo a look.
Face-recognition.js — small but robust library whose API is so easy to read and use that in only 50 lines of code you can write your own script for face recognition and run with node. There is a really helpful blog post that will help you get started. It is a node library based on dlib a C++ library.
I’ve followed the aforementioned blog post and I now have an up and running face recognizer. I’ve run it on Mac, installed dlib, XQuartz, I’ve had node running and code written bellow, and, voila, it is working. Of course, this just basic implementation where you just scan the folder for images, extract faces, teach your model and preserve it in json file and then you can perform face recognition based on that model.
TensorFlow.js — yes, it is a machine learning framework developed by Google, very popular and very well maintained and yes, it can be used for many purposes, as you can see on their site. However, I’ve found this interesting implementation named deepSpeech developed by Mozilla and it is in fact a Natural Recognition implementation. It is a machine learning trained model based on Baidu’s Deep Speech research paper. You should really checkout TensorFlow.js, a lot of tutorials how to start, examples and documentation but, like with many mentioned here, pretty low-level.
So far only big companies like Google, Facebook, Amazon had the resources (time, money and data) to invest in AI development. And they did a great job, improving their search engines, ads management, face recognition algorithms etc.
That’s old news.
Over the last couple of years, with interest growing and all sorts of solutions emerging in Open Source community, it is not so expensive to try and apply one of the mentioned approaches. You could try training an AI algorithm with your own set of data and create great things that will bring value to your customer and, consequently, to you.
Easier said, than done, I agree, but you are a developer, you have to keep up with the good stuff. Just take a look at what AI did with Google Search, it is good and it is only going to get better.
Face it, sooner or later you will have to start learning, not necessarily to develop AI, but to apply and adjust existing solutions to your needs.
Oh, and also, be careful!