You're ready to turn your idea of a machine learning app using image recognition into “the next best thing”! It's going to revolutionize mobile advertising, the education sector, the automobile industry, the world of finance... you name it.
But then, reality strikes you:
"How do I implement image recognition functionality into my application the... easy way?"
And the “easy-to-use” factor becomes particularly important if you have no machine learning background.
How do you incorporate such a service/API into your app? An app that should analyze, organize, alter different images?
Now, here's what you need to keep in mind when you build a machine learning-powered app, plus a selection of the best image recognition APIs.
So you can compare and experiment with in order to select the one that perfectly suits your goals and your machine learning background...
1. 4 Things to Keep in Mind When Building a Machine Learning App
Before you jump into enabling machine learning capabilities into your web or mobile app, make sure:
- that you've gained in-depth knowledge of that specific market that you're targeting
- that you've properly prepared your data: make sure you've selected the best data sources and data collecting techniques
- you've chosen the best algorithm for your app (run it, tune it, test it)
- you're using the right method: for on-device machine learning you'll need to pay attention to your model's size (make sure it's not oversized; otherwise, you'll need to rely on cloud services for machine learning)
Note: organize your dataset ensuring that your images are of different lengths, that they feature plenty of particularities, thus helping your custom model to identify the target objects/emotions/scenes more accurately.
2. Implement Image Recognition to Your App: Choosing the Best API
“What are the best image recognition APIs in the market?” you must be asking yourself right now.
“What's the best solution for me to incorporate image recognition into my machine learning app if:
- I have little to no machine learning background
- I'm looking for an image analysis software that's straightforward to implement, easy to use, yet powerful
- … one that should enable me to quickly train a custom model"
2.1. Mobile Vision API
A Google-powered framework equipped with the capability to detect objects in images and videos.
For this, it uses 3 types of detectors:
- a face detector
- a text detector
- a barcode detector
Image source: Google Developers.
The “face detector” is “loaded” with some great features such as:
- providing information about the state of the human faces in the analyzed images/videos: eyes open/closed, smiling, crying etc.
- identifying parts of a face: mouth, nose, eyes
- analyzing multiple faces on a single image
- identifying human faces on recorded videos, on mobile camera and still images
Note: do keep in mind that this API does not provide face recognition capabilities; it cannot tell whether 2 images, presenting human faces, are identical or not.
2.2. Google Vision API
Looking for something a bit more complex, more... refined that an "object detection” service?
For an image recognition software that does more than just:
- provide similar images
- “detect” faces and visual objects
… and detects “details” about the uploaded images instead? One that identifies whether:
- the being in the picture is a human or a dog
- the characters are sad or happy (sentiment analysis)
- they're racy or engaged activities marked as “not OK” in the Google Safe Search
… and labels the given images (“weather”, “autumn”, “dog walking”, “male”)?
Then, the Google Vision API (or “Cloud Vision API”) is what you're looking for.
Unlike other leading image recognition solutions available, it “spoils” you with:
- a simple REST API
- landmark detection functionality
How does it do it? The API connects the code of your machine learning app to Google's image recognition capabilities.
Now, here's how you set it up:
- Sign Up for a Google Compute Engine Account
- Select a Project (if you're a newly registered user, then the “My First Project” is selected by default)
- “Grab” an API key from the menu on the left side of the screen (save it to a text file) and run it in your project (just enable the API at this URL)
- Select your app project
- You're now ready to roll with your new image recognition API integrated to your app project; just save the text in a google_vision.json file:
It's this JSON request that will point out to Google Vision API the specific image to parse and the detection capabilities to trigger.
Note: remember that you should use this API in personal applications only!
Here's a custom image recognition software in our list to start experimenting with if:
- you're looking for a visual search tool with a video-analysis functionality added to, as well
- you need an easy to implement and to use API for tagging images; for recognizing and understanding the content features in your images/videos
- you're looking for an API with a strong concept modeling
- you're planning to incorporate an image recognition functionality that enables you to create and to train your own custom models to test against
“But how do I use Clarifai's Custom Training API to set up my own model?”
It's pretty straightforward:
- for declaring a positive you use: clarifai.positive('https://goo.gl/1Q8W8S 'dog', callback);
- for predicting an image you use: clarifai.predict('https://goo.gl/xNNRJg 'dog', callback);
- for declaring a negative you use: clarifai.predict('https://goo.gl/xNNRJg 'lion', callback);
2.4. Einstein Vision
Looking to get in on a little AI action?
To build an image recognition app leveraging AI and deep learning models trained to recognize images at scale?
Consider Einstein Vision then! Integrate it into your machine learning app and start to explore its two APIs:
- Einstein Object Detection: empowers you to train models that should recognize several distinct objects in an image (providing information such as the location and the size of each item)
- Einstein Image Classification: enables you to create and to train models to detect and classify images at scale
“Where would I use such an AI-enabled app?”
Here's one of its most common image-recognition use cases:
You can use all those contextual clues stored in your images (your customers' preferences, your products/services' level of quality, your inventory levels etc.) to empower your marketing, sales and/or service teams. This way, they'll gain more accurate insights about your customers.
2.5. Amazon Rekognition
What if you're not looking for the best tool for sentiment analysis, object and scene detection, but for one that rocks at facial recognition instead?
Then you go with Amazon Rekognition.
It's designed to:
- provide detailed information (e.g. beard recognition)
- run facial comparisons and assess the likelihood that 2 faces are of the very same person
2.6. Google Tensorflow Object Detection API
A non-complicated way to integrate image recognition functionality into your machine learning app.
Tensorflow Object Detection API is an open source framework designed around the idea that:
Building, training and deploying of object detection models should be quick and easy.
In this respect, the available guide supports the whole idea.
Image source: Github
Here's how to use the API:
- Download the frozen model (.pb — protobuf) and run it into memory
- Load categories, labels, visualization tools and so on using the built-in helper code
- Launch a new session and run the resulting model on one of your images
2 tips for incorporating and using this API in your machine learning app:
- figure out how you can speed up the API so you can use it for real-time object detection on mobile devices
- experiment with the more accurate models to see the difference
Have I managed to (at least partially) answer your questions:
- “What do I need to know for building a machine learning app?”
- “How do I build custom image recognition functionality into my web/mobile app?”
- “What are the best image recognition APIs in the market right now?”